support icon indicating copy to clipboard operation
support copied to clipboard

Recurrence event disappear after changing one specific multi-assigned event

Open marciogurka opened this issue 8 months ago • 1 comments

Forum post

Check the video using our demo - https://bryntum.com/products/schedulerpro/examples-scheduler/frameworks/angular/recurring-events/dist/recurring-events/ - to see how to reproduce the error

"Hey,

I'm using the recurring events and one thing I've noticed is that when editing a recurring event that has multiple assignments it is removing one of the assignments and keeping the other in. I tested this in this example and it does the same. https://bryntum.com/products/schedulerpro/examples-scheduler/frameworks/angular/recurring-events/dist/recurring-events/

Do I have to configure something so it doesn't do that when I only want to edit that event or is it something you guys have to look into?"

marciogurka avatar Apr 17 '25 16:04 marciogurka

This one may be related to https://github.com/bryntum/support/issues/11138

nickryall avatar Apr 23 '25 20:04 nickryall

RecurringTimeSpanMixin.js needs

    convertToRealEvent(wasSet, silent) {
        if (!this.isOccurrence) {
            return;
        }

        const
            me = this,
            {
                recurringTimeSpan,
                resources,
                occurrenceIndex,
                recurrence
            }               = me,
            count           = recurrence && recurringTimeSpan.recurrence.count,
            // resourceRecords is a temporary property of occurrence events to handle cases
            // if only resources has been updated. (change only resources won't mark record as dirty)
            newResource     = wasSet?.resourceRecords?.value || me.data.newResource;

        recurringTimeSpan.beginBatch();

        me.detachFromRecurringEvent();

        me.internalClearChanges();

        // Must silently set our own ID, not be the key generated from our parent id and occurrence date.
        // Must not result in the id field being in the modified state.
        me._id = me.generateId(recurringTimeSpan.eventStore);
        me.setData('id', me._id);

        if (newResource) {
            // clear resourceId to avoid auto-adding to assignmentStore, it is handled manually below
            delete me.data.resourceId;
        }

        // The impending changes to the former parent recurring event trigger a full refresh.
        recurringTimeSpan.eventStore.add(me, silent);

        // Ensure that the original count is honoured.
        // If we are the 8th occurrence of 10, OUR repeat count must be 3.
        if (count) {
            me.recurrence.count = count - occurrenceIndex;
        }

        if (newResource || resources?.length) {
            me.assign(newResource || resource);
        }

        // remove data after apply
        if (newResource) {
            delete me.data.resourceRecords;
        }
        if (wasSet) {
            delete wasSet.resourceRecords;
        }

        // Any change to a recurring events triggers a store refresh event.
        recurringTimeSpan.endBatch();
    }

ExtAnimal avatar May 05 '25 08:05 ExtAnimal

As part of this ticket, this exception should be fixed: https://github.com/bryntum/support/issues/11285

Image

Edit the "Daily" base event, and Assign to Rob in addition to Team Tasks. Change all occurrences when prompted.

Then drag the start side of one of the occurrences in the "Team Tasks" row. It throws this error.

ExtAnimal avatar May 05 '25 08:05 ExtAnimal