Skip to content

Commit 120c811

Browse files
author
Daniel Rudziński
committed
Different color for planned task
Instead of setting planned task the same color as executed task, it is now possible to set separate class.
1 parent f61c1a3 commit 120c811

File tree

9 files changed

+57
-21
lines changed

9 files changed

+57
-21
lines changed

Documentation.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ g.AddTaskItem(new JSGantt.TaskItem(1, 'Define Chart API','', '',
7373
7474
7575
Method definition:
76-
**TaskItem(_pID, pName, pStart, pEnd, pClass, pLink, pMile, pRes, pComp, pGroup, pParent, pOpen, pDepend, pCaption, pNotes, pGantt_, pCost = null, pPlanStart = null, pPlanEnd = null, pDuration = null, pBarText = null, pDataObject = null)**
76+
**TaskItem(_pID, pName, pStart, pEnd, pClass, pLink, pMile, pRes, pComp, pGroup, pParent, pOpen, pDepend, pCaption, pNotes, pGantt_, pCost = null, pPlanStart = null, pPlanEnd = null, pDuration = null, pBarText = null, pDataObject = null, pPlanClass = null)**
7777
7878
This method takes only the variables defined above and explained below. You can **NOT** pass custom variables this way.
7979
@@ -98,7 +98,8 @@ This method takes only the variables defined above and explained below. You can
9898
|_pNotes:_|(optional) Detailed task information that will be displayed in tool tip for this task|
9999
|_pGantt:_|(required) javascript JSGantt.GanttChart object from which to take settings. Defaults to "g" for backwards compatibility|
100100
|_pCost:_| cost of that task, numeric
101-
|_pBarText:_|(optional) Use to include text inside a task bar|
101+
|_pBarText:_|(optional) Use to include text inside a task bar|
102+
|_pPlanClass:_|(optional) the css class for planned date of this task
102103
103104
<sup>*</sup> Combined group tasks show all sub-tasks on one row. The information displayed in the task list and row caption are taken from the parent task. Tool tips are generated individually for each sub-task from its own information. Milestones are not valid as sub-tasks of a combined group task and will not be displayed. No bounds checking of start and end dates of sub-tasks is performed therefore it is possible for these task bars to overlap. Dependencies can be set to and from sub-tasks only.
104105
@@ -175,6 +176,7 @@ The structure of the native XML file:
175176
<pDepend>2,24</pDepend>
176177
<pCaption>A caption</pCaption>
177178
<pNotes>Text - can include limited HTML</pNotes>
179+
<pPlanClass>gtaskblue</pPlanClass>
178180
</task>
179181
</project>
180182
```

dist/jsgantt.js

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -589,7 +589,7 @@ exports.GanttChart = function (pDiv, pFormat) {
589589
// If exist and one of them are different, show plan bar... show if there is no real vStart as well (just plan dates)
590590
if (vTaskPlanLeftPx && ((vTaskPlanLeftPx != vTaskLeftPx_1 || vTaskPlanRightPx != vTaskRightPx) || !this.vTaskList[i].getStartVar())) {
591591
var vTmpPlanDiv = draw_utils_1.newNode(vTmpDivCell, 'div', this.vDivId + 'bardiv_' + vID, 'gtaskbarcontainer gplan', null, vTaskPlanRightPx, vTaskPlanLeftPx);
592-
var vTmpPlanDiv2 = draw_utils_1.newNode(vTmpPlanDiv, 'div', this.vDivId + 'taskbar_' + vID, this.vTaskList[i].getClass() + ' gplan', null, vTaskPlanRightPx);
592+
var vTmpPlanDiv2 = draw_utils_1.newNode(vTmpPlanDiv, 'div', this.vDivId + 'taskbar_' + vID, this.vTaskList[i].getPlanClass() + ' gplan', null, vTaskPlanRightPx);
593593
this.vTaskList[i].setPlanTaskDiv(vTmpPlanDiv2);
594594
}
595595
// and opaque completion div
@@ -1658,6 +1658,7 @@ exports.addJSONTask = function (pGanttVar, pJsonObj) {
16581658
var planstart = void 0;
16591659
var planend = void 0;
16601660
var itemClass = void 0;
1661+
var planClass = void 0;
16611662
var link = '';
16621663
var milestone = 0;
16631664
var resourceName = '';
@@ -1704,6 +1705,10 @@ exports.addJSONTask = function (pGanttVar, pJsonObj) {
17041705
case 'class':
17051706
itemClass = value;
17061707
break;
1708+
case 'pplanclass':
1709+
case 'planclass':
1710+
planClass = value;
1711+
break;
17071712
case 'plink':
17081713
case 'link':
17091714
link = value;
@@ -1761,7 +1766,7 @@ exports.addJSONTask = function (pGanttVar, pJsonObj) {
17611766
}
17621767
}
17631768
//if (id != undefined && !isNaN(parseInt(id)) && isFinite(id) && name && start && end && itemClass && completion != undefined && !isNaN(parseFloat(completion)) && isFinite(completion) && !isNaN(parseInt(parent)) && isFinite(parent)) {
1764-
pGanttVar.AddTaskItem(new task_1.TaskItem(id, name_1, start, end, itemClass, link, milestone, resourceName, completion, group, parent_1, open_1, dependsOn, caption, notes, pGanttVar, cost, planstart, planend, duration, bartext, additionalObject));
1769+
pGanttVar.AddTaskItem(new task_1.TaskItem(id, name_1, start, end, itemClass, link, milestone, resourceName, completion, group, parent_1, open_1, dependsOn, caption, notes, pGanttVar, cost, planstart, planend, duration, bartext, additionalObject, planClass));
17651770
//}
17661771
}
17671772
};
@@ -3308,15 +3313,16 @@ exports.TaskItemObject = function (object) {
33083313
general_utils_1.internalProperties.forEach(function (property) {
33093314
delete pDataObject[property];
33103315
});
3311-
return new exports.TaskItem(object.pID, object.pName, object.pStart, object.pEnd, object.pClass, object.pLink, object.pMile, object.pRes, object.pComp, object.pGroup, object.pParent, object.pOpen, object.pDepend, object.pCaption, object.pNotes, object.pGantt, object.pCost, object.pPlanStart, object.pPlanEnd, object.pDuration, object.pBarText, object);
3316+
return new exports.TaskItem(object.pID, object.pName, object.pStart, object.pEnd, object.pClass, object.pLink, object.pMile, object.pRes, object.pComp, object.pGroup, object.pParent, object.pOpen, object.pDepend, object.pCaption, object.pNotes, object.pGantt, object.pCost, object.pPlanStart, object.pPlanEnd, object.pDuration, object.pBarText, object, object.pPlanClass);
33123317
};
3313-
exports.TaskItem = function (pID, pName, pStart, pEnd, pClass, pLink, pMile, pRes, pComp, pGroup, pParent, pOpen, pDepend, pCaption, pNotes, pGantt, pCost, pPlanStart, pPlanEnd, pDuration, pBarText, pDataObject) {
3318+
exports.TaskItem = function (pID, pName, pStart, pEnd, pClass, pLink, pMile, pRes, pComp, pGroup, pParent, pOpen, pDepend, pCaption, pNotes, pGantt, pCost, pPlanStart, pPlanEnd, pDuration, pBarText, pDataObject, pPlanClass) {
33143319
if (pCost === void 0) { pCost = null; }
33153320
if (pPlanStart === void 0) { pPlanStart = null; }
33163321
if (pPlanEnd === void 0) { pPlanEnd = null; }
33173322
if (pDuration === void 0) { pDuration = null; }
33183323
if (pBarText === void 0) { pBarText = null; }
33193324
if (pDataObject === void 0) { pDataObject = null; }
3325+
if (pPlanClass === void 0) { pPlanClass = null; }
33203326
var vGantt = pGantt ? pGantt : this;
33213327
var _id = document.createTextNode(pID).data;
33223328
var vID = general_utils_1.hashKey(document.createTextNode(pID).data);
@@ -3330,6 +3336,7 @@ exports.TaskItem = function (pID, pName, pStart, pEnd, pClass, pLink, pMile, pRe
33303336
var vGroupMinPlanStart = null;
33313337
var vGroupMinPlanEnd = null;
33323338
var vClass = document.createTextNode(pClass).data;
3339+
var vPlanClass = document.createTextNode(pPlanClass).data;
33333340
var vLink = document.createTextNode(pLink).data;
33343341
var vMile = parseInt(document.createTextNode(pMile).data);
33353342
var vRes = document.createTextNode(pRes).data;
@@ -3467,6 +3474,7 @@ exports.TaskItem = function (pID, pName, pStart, pEnd, pClass, pLink, pMile, pRe
34673474
return vEnd;
34683475
};
34693476
this.getPlanStart = function () { return vPlanStart ? vPlanStart : vStart; };
3477+
this.getPlanClass = function () { return vPlanClass && vPlanClass !== "null" ? vPlanClass : vClass; };
34703478
this.getPlanEnd = function () { return vPlanEnd ? vPlanEnd : vEnd; };
34713479
this.getCost = function () { return vCost; };
34723480
this.getGroupMinStart = function () { return vGroupMinStart; };
@@ -3602,6 +3610,7 @@ exports.TaskItem = function (pID, pName, pStart, pEnd, pClass, pLink, pMile, pRe
36023610
this.setName = function (pName) { vName = pName; };
36033611
this.setNotes = function (pNotes) { vNotes = pNotes; };
36043612
this.setClass = function (pClass) { vClass = pClass; };
3613+
this.setPlanClass = function (pPlanClass) { vPlanClass = pPlanClass; };
36053614
this.setCost = function (pCost) { vCost = pCost; };
36063615
this.setResource = function (pRes) { vRes = pRes; };
36073616
this.setDuration = function (pDuration) { vDuration = pDuration; };
@@ -3708,7 +3717,8 @@ exports.TaskItem = function (pID, pName, pStart, pEnd, pClass, pLink, pMile, pRe
37083717
pComp: vComp,
37093718
pCost: vCost,
37103719
pGroup: vGroup,
3711-
pDataObjec: vDataObject
3720+
pDataObjec: vDataObject,
3721+
pPlanClass: vPlanClass
37123722
};
37133723
};
37143724
};
@@ -4440,7 +4450,7 @@ exports.drawSelector = function (pPos) {
44404450
Object.defineProperty(exports, "__esModule", { value: true });
44414451
exports.printChart = exports.calculateStartEndFromDepend = exports.makeRequestOldBrowsers = exports.makeRequest = exports.moveToolTip = exports.updateFlyingObj = exports.isParentElementOrSelf = exports.criticalPath = exports.hashKey = exports.hashString = exports.fadeToolTip = exports.hideToolTip = exports.isIE = exports.getOffset = exports.calculateCurrentDateOffset = exports.getScrollbarWidth = exports.getScrollPositions = exports.benchMark = exports.getZoomFactor = exports.delayedHide = exports.stripUnwanted = exports.stripIds = exports.changeFormat = exports.findObj = exports.internalPropertiesLang = exports.internalProperties = void 0;
44424452
exports.internalProperties = ['pID', 'pName', 'pStart', 'pEnd', 'pClass', 'pLink', 'pMile', 'pRes', 'pComp', 'pGroup', 'pParent',
4443-
'pOpen', 'pDepend', 'pCaption', 'pNotes', 'pGantt', 'pCost', 'pPlanStart', 'pPlanEnd'];
4453+
'pOpen', 'pDepend', 'pCaption', 'pNotes', 'pGantt', 'pCost', 'pPlanStart', 'pPlanEnd', 'pPlanClass'];
44444454
exports.internalPropertiesLang = {
44454455
'pID': 'id',
44464456
'pName': 'name',
@@ -4459,7 +4469,8 @@ exports.internalPropertiesLang = {
44594469
'pNotes': 'notes',
44604470
'pCost': 'cost',
44614471
'pPlanStart': 'planstartdate',
4462-
'pPlanEnd': 'planenddate'
4472+
'pPlanEnd': 'planenddate',
4473+
'pPlanClass': 'planclass'
44634474
};
44644475
exports.findObj = function (theObj, theDoc) {
44654476
if (theDoc === void 0) { theDoc = null; }
@@ -5137,7 +5148,7 @@ exports.AddXMLTask = function (pGanttVar, pXmlDoc) {
51375148
if (vSubCreated)
51385149
pDepend = '';
51395150
// Finally add the task
5140-
pGanttVar.AddTaskItem(new task_1.TaskItem(pID, pName, pStart, pEnd, pClass, pLink, pMile, pRes, pComp, pGroup, pParent, pOpen, pDepend, pCaption, pNotes, pGanttVar, pCost, pPlanStart, pPlanEnd, pDuration));
5151+
pGanttVar.AddTaskItem(new task_1.TaskItem(pID, pName, pStart, pEnd, pClass, pLink, pMile, pRes, pComp, pGroup, pParent, pOpen, pDepend, pCaption, pNotes, pGanttVar, pCost, pPlanStart, pPlanEnd, pDuration, undefined, undefined, pClass));
51415152
}
51425153
}
51435154
}
@@ -5167,6 +5178,7 @@ exports.AddXMLTask = function (pGanttVar, pXmlDoc) {
51675178
var pCaption = exports.getXMLNodeValue(Task[i], 'pCaption', 2, '');
51685179
var pNotes = exports.getXMLNodeValue(Task[i], 'pNotes', 2, '');
51695180
var pClass = exports.getXMLNodeValue(Task[i], 'pClass', 2, '');
5181+
var pPlanClass = exports.getXMLNodeValue(Task[i], 'pPlanClass', 2, '');
51705182
if (typeof pClass == 'undefined') {
51715183
if (pGroup > 0)
51725184
pClass = 'ggroupblack';
@@ -5175,8 +5187,10 @@ exports.AddXMLTask = function (pGanttVar, pXmlDoc) {
51755187
else
51765188
pClass = 'gtaskblue';
51775189
}
5190+
if (typeof pPlanClass == 'undefined')
5191+
pPlanClass = pClass;
51785192
// Finally add the task
5179-
pGanttVar.AddTaskItem(new task_1.TaskItem(pID, pName, pStart, pEnd, pClass, pLink, pMile, pRes, pComp, pGroup, pParent, pOpen, pDepend, pCaption, pNotes, pGanttVar, pCost, pPlanStart, pPlanEnd, pDuration));
5193+
pGanttVar.AddTaskItem(new task_1.TaskItem(pID, pName, pStart, pEnd, pClass, pLink, pMile, pRes, pComp, pGroup, pParent, pOpen, pDepend, pCaption, pNotes, pGanttVar, pCost, pPlanStart, pPlanEnd, pDuration, undefined, undefined, pPlanClass));
51805194
}
51815195
}
51825196
}
@@ -5237,6 +5251,7 @@ exports.getXMLTask = function (pID, pIdx) {
52375251
var vTmpFrag = document.createDocumentFragment();
52385252
var vTmpDiv = draw_utils_1.newNode(vTmpFrag, 'div', null, null, this.vTaskList[vIdx].getNotes().innerHTML);
52395253
vTask += '<pNotes>' + vTmpDiv.innerHTML + '</pNotes>';
5254+
vTask += '<pPlanClass>' + this.vTaskList[vIdx].getPlanClass() + '</pPlanClass>';
52405255
vTask += '</task>';
52415256
}
52425257
return vTask;

docs/fixes/data.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,7 @@
346346
"pName": "Just plan dates",
347347
"pPlanStart": "2019-07-17",
348348
"pPlanEnd": "2021-09-15",
349+
"pPlanClass": "gtaskblue",
349350
"pClass": "gtaskpurple",
350351
"pLink": "",
351352
"pMile": 0,
@@ -363,11 +364,14 @@
363364
"pName": "Just dates",
364365
"pStart": "2019-07-17",
365366
"pEnd": "2021-09-15",
367+
"pPlanStart": "2021-09-16",
368+
"pPlanEnd": "2021-09-20",
369+
"pPlanClass": "gtaskgreen",
366370
"pClass": "gtaskpurple",
367371
"pLink": "",
368372
"pMile": 0,
369373
"pRes": "Mario",
370-
"pComp": 0,
374+
"pComp": 100,
371375
"pGroup": 0,
372376
"pParent": 3,
373377
"pOpen": 1,

docs/project.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,5 +127,6 @@
127127
<pOpen>1</pOpen>
128128
<pDepend>60,70</pDepend>
129129
<pCaption>Eduardo</pCaption>
130+
<pPlanClass>gtaskyellow</pPlanClass>
130131
</task>
131132
</project>

src/draw.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -657,7 +657,7 @@ export const GanttChart = function (pDiv, pFormat) {
657657
// If exist and one of them are different, show plan bar... show if there is no real vStart as well (just plan dates)
658658
if (vTaskPlanLeftPx && ((vTaskPlanLeftPx != vTaskLeftPx || vTaskPlanRightPx != vTaskRightPx) || !this.vTaskList[i].getStartVar())) {
659659
const vTmpPlanDiv = newNode(vTmpDivCell, 'div', this.vDivId + 'bardiv_' + vID, 'gtaskbarcontainer gplan', null, vTaskPlanRightPx, vTaskPlanLeftPx);
660-
const vTmpPlanDiv2 = newNode(vTmpPlanDiv, 'div', this.vDivId + 'taskbar_' + vID, this.vTaskList[i].getClass() + ' gplan', null, vTaskPlanRightPx);
660+
const vTmpPlanDiv2 = newNode(vTmpPlanDiv, 'div', this.vDivId + 'taskbar_' + vID, this.vTaskList[i].getPlanClass() + ' gplan', null, vTaskPlanRightPx);
661661
this.vTaskList[i].setPlanTaskDiv(vTmpPlanDiv2);
662662
}
663663

src/json.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ export const addJSONTask = function (pGanttVar, pJsonObj) {
3737
let planstart;
3838
let planend;
3939
let itemClass;
40+
let planClass;
4041
let link = '';
4142
let milestone = 0;
4243
let resourceName = '';
@@ -84,6 +85,10 @@ export const addJSONTask = function (pGanttVar, pJsonObj) {
8485
case 'class':
8586
itemClass = value;
8687
break;
88+
case 'pplanclass':
89+
case 'planclass':
90+
planClass = value;
91+
break;
8792
case 'plink':
8893
case 'link':
8994
link = value;
@@ -145,7 +150,7 @@ export const addJSONTask = function (pGanttVar, pJsonObj) {
145150
pGanttVar.AddTaskItem(new TaskItem(id, name, start, end, itemClass, link,
146151
milestone, resourceName, completion, group, parent, open, dependsOn,
147152
caption, notes, pGanttVar, cost, planstart, planend, duration, bartext,
148-
additionalObject));
153+
additionalObject, planClass));
149154
//}
150155
}
151156
};

src/task.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,13 @@ export const TaskItemObject = function (object) {
7171
object.pPlanEnd,
7272
object.pDuration,
7373
object.pBarText,
74-
object
74+
object,
75+
object.pPlanClass
7576
);
7677
}
7778

7879
export const TaskItem = function (pID, pName, pStart, pEnd, pClass, pLink, pMile, pRes, pComp, pGroup, pParent, pOpen,
79-
pDepend, pCaption, pNotes, pGantt, pCost = null, pPlanStart = null, pPlanEnd = null, pDuration = null, pBarText = null, pDataObject = null) {
80+
pDepend, pCaption, pNotes, pGantt, pCost = null, pPlanStart = null, pPlanEnd = null, pDuration = null, pBarText = null, pDataObject = null, pPlanClass = null) {
8081
let vGantt = pGantt ? pGantt : this;
8182
let _id = document.createTextNode(pID).data;
8283
let vID = hashKey(document.createTextNode(pID).data);
@@ -90,6 +91,7 @@ export const TaskItem = function (pID, pName, pStart, pEnd, pClass, pLink, pMile
9091
let vGroupMinPlanStart = null;
9192
let vGroupMinPlanEnd = null;
9293
let vClass = document.createTextNode(pClass).data;
94+
let vPlanClass = document.createTextNode(pPlanClass).data;
9395
let vLink = document.createTextNode(pLink).data;
9496
let vMile = parseInt(document.createTextNode(pMile).data);
9597
let vRes = document.createTextNode(pRes).data;
@@ -223,6 +225,7 @@ export const TaskItem = function (pID, pName, pStart, pEnd, pClass, pLink, pMile
223225
return vEnd;
224226
};
225227
this.getPlanStart = function () { return vPlanStart ? vPlanStart : vStart; };
228+
this.getPlanClass = function () { return vPlanClass && vPlanClass !== "null" ? vPlanClass : vClass; };
226229
this.getPlanEnd = function () { return vPlanEnd ? vPlanEnd : vEnd; };
227230
this.getCost = function () { return vCost; };
228231
this.getGroupMinStart = function () { return vGroupMinStart; };
@@ -310,6 +313,7 @@ export const TaskItem = function (pID, pName, pStart, pEnd, pClass, pLink, pMile
310313
this.setName = function (pName) { vName = pName; };
311314
this.setNotes = function (pNotes) { vNotes = pNotes; };
312315
this.setClass = function (pClass) { vClass = pClass; };
316+
this.setPlanClass = function (pPlanClass) { vPlanClass = pPlanClass; };
313317
this.setCost = function (pCost) { vCost = pCost; };
314318
this.setResource = function (pRes) { vRes = pRes; };
315319
this.setDuration = function (pDuration) { vDuration = pDuration; };
@@ -395,7 +399,8 @@ export const TaskItem = function (pID, pName, pStart, pEnd, pClass, pLink, pMile
395399
pComp: vComp,
396400
pCost: vCost,
397401
pGroup: vGroup,
398-
pDataObjec: vDataObject
402+
pDataObjec: vDataObject,
403+
pPlanClass: vPlanClass
399404
}
400405
}
401406
};

src/utils/general_utils.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export const internalProperties = ['pID', 'pName', 'pStart', 'pEnd', 'pClass', 'pLink', 'pMile', 'pRes', 'pComp', 'pGroup', 'pParent',
2-
'pOpen', 'pDepend', 'pCaption', 'pNotes', 'pGantt', 'pCost', 'pPlanStart', 'pPlanEnd'];
2+
'pOpen', 'pDepend', 'pCaption', 'pNotes', 'pGantt', 'pCost', 'pPlanStart', 'pPlanEnd', 'pPlanClass'];
33

44
export const internalPropertiesLang = {
55
'pID': 'id',
@@ -19,7 +19,8 @@ export const internalPropertiesLang = {
1919
'pNotes': 'notes',
2020
'pCost': 'cost',
2121
'pPlanStart': 'planstartdate',
22-
'pPlanEnd': 'planenddate'
22+
'pPlanEnd': 'planenddate',
23+
'pPlanClass': 'planclass'
2324
};
2425

2526
export const findObj = function (theObj, theDoc = null) {

src/xml.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ export const AddXMLTask = function (pGanttVar, pXmlDoc) {
218218

219219
// Finally add the task
220220
pGanttVar.AddTaskItem(new TaskItem(pID, pName, pStart, pEnd, pClass, pLink, pMile, pRes, pComp, pGroup,
221-
pParent, pOpen, pDepend, pCaption, pNotes, pGanttVar, pCost, pPlanStart, pPlanEnd, pDuration));
221+
pParent, pOpen, pDepend, pCaption, pNotes, pGanttVar, pCost, pPlanStart, pPlanEnd, pDuration, undefined, undefined, pClass));
222222
}
223223
}
224224
}
@@ -250,15 +250,17 @@ export const AddXMLTask = function (pGanttVar, pXmlDoc) {
250250
let pCaption = getXMLNodeValue(Task[i], 'pCaption', 2, '');
251251
let pNotes = getXMLNodeValue(Task[i], 'pNotes', 2, '');
252252
let pClass = getXMLNodeValue(Task[i], 'pClass', 2, '');
253+
let pPlanClass = getXMLNodeValue(Task[i], 'pPlanClass', 2, '');
253254
if (typeof pClass == 'undefined') {
254255
if (pGroup > 0) pClass = 'ggroupblack';
255256
else if (pMile > 0) pClass = 'gmilestone';
256257
else pClass = 'gtaskblue';
257258
}
259+
if (typeof pPlanClass == 'undefined') pPlanClass = pClass;
258260

259261
// Finally add the task
260262
pGanttVar.AddTaskItem(new TaskItem(pID, pName, pStart, pEnd, pClass, pLink, pMile, pRes, pComp,
261-
pGroup, pParent, pOpen, pDepend, pCaption, pNotes, pGanttVar, pCost, pPlanStart, pPlanEnd, pDuration));
263+
pGroup, pParent, pOpen, pDepend, pCaption, pNotes, pGanttVar, pCost, pPlanStart, pPlanEnd, pDuration, undefined, undefined, pPlanClass));
262264
}
263265
}
264266
}
@@ -318,6 +320,7 @@ export const getXMLTask = function (pID, pIdx) {
318320
let vTmpFrag = document.createDocumentFragment();
319321
let vTmpDiv = newNode(vTmpFrag, 'div', null, null, this.vTaskList[vIdx].getNotes().innerHTML);
320322
vTask += '<pNotes>' + vTmpDiv.innerHTML + '</pNotes>';
323+
vTask += '<pPlanClass>' + this.vTaskList[vIdx].getPlanClass() + '</pPlanClass>';
321324
vTask += '</task>';
322325
}
323326
return vTask;

0 commit comments

Comments
 (0)