Hey,
I have debugged yours demo.
Seems like I'm missing something in the configuration.
When I comment out all fields from ProjectManager:
// resourceStore: {
// fields: [
// { name: 'id', dataSource: 'Id' },
// { name: 'name', dataSource: 'name' }
// ]
// },
// eventStore: {
// fields: [
// { name: 'id', dataSource: 'Id' },
// { name: 'name', dataSource: 'name' },
// { name: 'startDate', dataSource: 'startDate', type: 'date' },
// { name: 'endDate', dataSource: 'endDate', type: 'date' },
// { name: 'cls', dataSource: 'cls' },
// { name: 'draggable', dataSource: 'draggable' },
// { name: 'resizable', dataSource: 'resizable' },
// { name: 'planed', dataSource: 'planed' },
// { name: 'resource', dataSource: 'resource' },
// { name: 'assignments', dataSource: 'assignments' }
// ]
// },
// assignmentStore: {
// fields: [
// { name: 'resourceId', dataSource: 'resourceId' },
// { name: 'event', dataSource: 'event' },
// { name: 'eventId', dataSource: 'eventId' },
// { name: 'id', dataSource: 'Id' },
// { name: 'units', dataSource: 'units' }
// ]
// }
If commented out, split looks like that:
me.id and copy.id are different, thats why I'm able to split event.
split(splitPoint = 0.5) {
const me = this, //here me.id === "_generatedClassDefEx24"
clone = me.copy(), // and clone.id === "_generatedClassDefEx25"
{
eventStore,
assignmentStore
} = me,
ownNewDuration = me.duration * splitPoint,
cloneDuration = me.duration - ownNewDuration;
if (splitPoint <= 0 || splitPoint >= 1) {
throw new Error('Split point must be > 0 and < 1');
}
// clone.id = 0; //--
clone.startDate = _Core_helper_DateHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"].add(me.startDate, ownNewDuration, me.durationUnit);
clone.duration = cloneDuration;
me.duration = ownNewDuration;
if (eventStore) {
debugger;
eventStore.add(clone);
if (assignmentStore && !eventStore.usesSingleAssignment) {
assignmentStore.add(me.assignments.map(assignment => {
debugger; // dodano
const clonedData = Object.assign({}, assignment.data, {
eventId: clone.id,
// From engine
event: null,
resource: null
});
delete clonedData.id;
return clonedData;
}));
}
}
return clone;
}
On the other hand, when stores are uncommeted:
resourceStore: {
fields: [
{ name: 'id', dataSource: 'Id' },
{ name: 'name', dataSource: 'name' }
]
},
eventStore: {
fields: [
{ name: 'id', dataSource: 'Id' },
{ name: 'name', dataSource: 'name' },
{ name: 'startDate', dataSource: 'startDate', type: 'date' },
{ name: 'endDate', dataSource: 'endDate', type: 'date' },
{ name: 'cls', dataSource: 'cls' },
{ name: 'draggable', dataSource: 'draggable' },
{ name: 'resizable', dataSource: 'resizable' },
{ name: 'planed', dataSource: 'planed' },
{ name: 'resource', dataSource: 'resource' },
{ name: 'assignments', dataSource: 'assignments' }
]
},
assignmentStore: {
fields: [
{ name: 'resourceId', dataSource: 'resourceId' },
{ name: 'event', dataSource: 'event' },
{ name: 'eventId', dataSource: 'eventId' },
{ name: 'id', dataSource: 'Id' },
{ name: 'units', dataSource: 'units' }
]
}
Debugged split code when uncommented:
In my case:
me.id === 177
copy.id === 177
I bet, thats why my split doesnt work, because in the result I'm getting two events with identical ID.
I wonder, why in Your demo the id is generated, and in my case it isn't?
split(splitPoint = 0.5) {
const me = this,
clone = me.copy(),
{
eventStore,
assignmentStore
} = me,
ownNewDuration = me.duration * splitPoint,
cloneDuration = me.duration - ownNewDuration;
if (splitPoint <= 0 || splitPoint >= 1) {
throw new Error('Split point must be > 0 and < 1');
}
// clone.id = 0; //--
clone.startDate = _Core_helper_DateHelper_js__WEBPACK_IMPORTED_MODULE_2__["default"].add(me.startDate, ownNewDuration, me.durationUnit);
clone.duration = cloneDuration;
me.duration = ownNewDuration;
if (eventStore) {
debugger;
eventStore.add(clone);
if (assignmentStore && !eventStore.usesSingleAssignment) {
assignmentStore.add(me.assignments.map(assignment => {
debugger; // dodano
const clonedData = Object.assign({}, assignment.data, {
eventId: clone.id,
// From engine
event: null,
resource: null
});
delete clonedData.id;
return clonedData;
}));
}
}
return clone;
}