(scheduler2)
| 203 | }); |
| 204 | } |
| 205 | function undoDelete(scheduler2) { |
| 206 | const undoableDeletes = {}; |
| 207 | scheduler2.attachEvent("onConfirmedBeforeEventDelete", function(id) { |
| 208 | undoableDeletes[id] = true; |
| 209 | return true; |
| 210 | }); |
| 211 | scheduler2.attachEvent("onEventDeleted", function(id, ev) { |
| 212 | if (undoableDeletes[id]) { |
| 213 | delete undoableDeletes[id]; |
| 214 | } else { |
| 215 | return; |
| 216 | } |
| 217 | let deletedEvent = scheduler2.copy(ev); |
| 218 | if (scheduler2.config.undo_deleted && !scheduler2.getState().new_event) { |
| 219 | scheduler2.message({ text: `<div class="dhx_info_message"> |
| 220 | <span class="undo_popup_text">Event deleted</span> |
| 221 | <button class="undo_button" data-deleted-event-id="${ev.id}">Undo</button> |
| 222 | </div>`, expire: 1e4, type: "popup_after_delete", callback: function(e) { |
| 223 | let undoBtn = e.target.closest(`[data-deleted-event-id="${ev.id}"]`); |
| 224 | if (undoBtn) { |
| 225 | if (deletedEvent.rrule && deletedEvent.duration) { |
| 226 | deletedEvent.end_date = new Date(deletedEvent.start_date.valueOf() + deletedEvent.duration * 1e3); |
| 227 | scheduler2.addEvent(deletedEvent); |
| 228 | } |
| 229 | scheduler2.addEvent(deletedEvent); |
| 230 | scheduler2.render(); |
| 231 | } |
| 232 | } }); |
| 233 | } |
| 234 | }); |
| 235 | } |
| 236 | function limitPlugin(scheduler2) { |
| 237 | scheduler2.config.mark_now = true; |
| 238 | scheduler2.config.display_marked_timespans = true; |
no test coverage detected