Release v2.5.3
This commit is contained in:
@@ -478,9 +478,18 @@
|
||||
});
|
||||
}
|
||||
|
||||
function closeScheduleModal() {
|
||||
function closeScheduleModal(options) {
|
||||
var dialog = document.getElementById('slide-schedule-dialog');
|
||||
var content = document.getElementById('slide-schedule-content');
|
||||
var shouldDiscardDraft = Boolean(options && options.discardDraft);
|
||||
var shouldPreserveChanges = Boolean(options && options.preserveChanges);
|
||||
|
||||
if (shouldDiscardDraft && !shouldPreserveChanges && typeof window.restorePlaylistScheduleDraft === 'function') {
|
||||
window.restorePlaylistScheduleDraft();
|
||||
}
|
||||
if (shouldDiscardDraft && typeof window.clearPlaylistScheduleDraft === 'function') {
|
||||
window.clearPlaylistScheduleDraft();
|
||||
}
|
||||
|
||||
if (content) {
|
||||
content.innerHTML = '';
|
||||
@@ -629,6 +638,7 @@
|
||||
var isDraftMode = Boolean(form.getAttribute('data-schedule-draft') === 'true');
|
||||
var rowKeyInput = form.querySelector('[name="row_key"]');
|
||||
var draftStore = window.__playlistScheduleDraftStore = window.__playlistScheduleDraftStore || {};
|
||||
var draftSnapshotStore = window.__playlistScheduleDraftSnapshotStore = window.__playlistScheduleDraftSnapshotStore || {};
|
||||
var cancelButton = scope.querySelector('[data-schedule-cancel]');
|
||||
|
||||
// Draft state is keyed by the row being edited so cancel/save can restore it later.
|
||||
@@ -659,6 +669,41 @@
|
||||
};
|
||||
}
|
||||
|
||||
function captureScheduleDraftState() {
|
||||
return getRuleCards().map(function (card) {
|
||||
return {
|
||||
rule: readRuleDraftFromCard(card),
|
||||
isCollapsed: Boolean(card && card.classList && card.classList.contains('collapsed-card'))
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function renderScheduleDraftState(ruleStates) {
|
||||
var states = Array.isArray(ruleStates) ? ruleStates : [];
|
||||
|
||||
scheduleRuleList.innerHTML = '';
|
||||
states.forEach(function (ruleState, index) {
|
||||
var card = createRuleCardElement(ruleState && ruleState.rule ? ruleState.rule : {}, index + 1, { isCollapsed: Boolean(ruleState && ruleState.isCollapsed) });
|
||||
|
||||
if (card) {
|
||||
scheduleRuleList.appendChild(card);
|
||||
}
|
||||
});
|
||||
refreshRuleNumbers();
|
||||
syncScheduleRulesField();
|
||||
}
|
||||
|
||||
function restoreScheduleDraft() {
|
||||
var draftKey = getScheduleDraftKey();
|
||||
var snapshot = draftKey && Object.prototype.hasOwnProperty.call(draftSnapshotStore, draftKey) ? draftSnapshotStore[draftKey] : null;
|
||||
|
||||
if (!draftKey || !Array.isArray(snapshot)) {
|
||||
return;
|
||||
}
|
||||
|
||||
renderScheduleDraftState(snapshot);
|
||||
}
|
||||
|
||||
function getScheduleDraftRules() {
|
||||
var draftKey = getScheduleDraftKey();
|
||||
if (!draftKey || !Object.prototype.hasOwnProperty.call(draftStore, draftKey)) {
|
||||
@@ -687,9 +732,18 @@
|
||||
if (draftKey && Object.prototype.hasOwnProperty.call(draftStore, draftKey)) {
|
||||
delete draftStore[draftKey];
|
||||
}
|
||||
if (draftKey && Object.prototype.hasOwnProperty.call(draftSnapshotStore, draftKey)) {
|
||||
delete draftSnapshotStore[draftKey];
|
||||
}
|
||||
}
|
||||
|
||||
window.clearPlaylistScheduleDraft = clearScheduleDraft;
|
||||
window.restorePlaylistScheduleDraft = restoreScheduleDraft;
|
||||
|
||||
var draftKey = getScheduleDraftKey();
|
||||
if (draftKey && !Object.prototype.hasOwnProperty.call(draftSnapshotStore, draftKey)) {
|
||||
draftSnapshotStore[draftKey] = captureScheduleDraftState();
|
||||
}
|
||||
|
||||
function getRuleCards() {
|
||||
return Array.prototype.slice.call(scheduleRuleList.querySelectorAll('[data-schedule-rule-card]'));
|
||||
@@ -1047,11 +1101,7 @@
|
||||
|
||||
var draftRules = getScheduleDraftRules();
|
||||
if (draftRules !== null) {
|
||||
scheduleRuleList.innerHTML = '';
|
||||
draftRules.forEach(function (rule) {
|
||||
addRule(rule && rule.rule ? rule.rule : {}, { isCollapsed: Boolean(rule && rule.isCollapsed) });
|
||||
});
|
||||
syncScheduleRulesField();
|
||||
renderScheduleDraftState(draftRules);
|
||||
} else if (!getRuleCards().length) {
|
||||
syncScheduleRulesField();
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user