wisemapping-frontend/packages/mindplot/lib/components/widget/IMenu.js
2021-10-04 17:05:34 -07:00

113 lines
3.1 KiB
JavaScript

/*
* Copyright [2015] [wisemapping]
*
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
* It is basically the Apache License, Version 2.0 (the "License") plus the
* "powered by wisemapping" text requirement on every single page;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the license at
*
* http://www.wisemapping.org/license
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
const PersistenceManager = require('../PersistenceManager').default;
const IMenu = new Class({
initialize(designer, containerId, mapId) {
$assert(designer, 'designer can not be null');
$assert(containerId, 'containerId can not be null');
this._designer = designer;
this._toolbarElems = [];
this._containerId = containerId;
this._mapId = mapId;
this._mindmapUpdated = false;
const me = this;
// Register update events ...
this._designer.addEvent('modelUpdate', () => {
me.setRequireChange(true);
});
},
clear() {
_.each(this._toolbarElems, (item) => {
item.hide();
});
},
discardChanges(designer) {
// Avoid autosave before leaving the page ....
this.setRequireChange(false);
// Finally call discard function ...
const persistenceManager = PersistenceManager.getInstance();
const mindmap = designer.getMindmap();
persistenceManager.discardChanges(mindmap.getId());
// Unlock map ...
this.unlockMap(designer);
// Reload the page ...
window.location.reload();
},
unlockMap(designer) {
const mindmap = designer.getMindmap();
const persistenceManager = PersistenceManager.getInstance();
persistenceManager.unlockMap(mindmap);
},
save(saveElem, designer, saveHistory, sync) {
// Load map content ...
const mindmap = designer.getMindmap();
const mindmapProp = designer.getMindmapProperties();
// Display save message ..
if (saveHistory) {
$notify($msg('SAVING'));
saveElem.css('cursor', 'wait');
}
// Call persistence manager for saving ...
const menu = this;
const persistenceManager = PersistenceManager.getInstance();
persistenceManager.save(mindmap, mindmapProp, saveHistory, {
onSuccess() {
if (saveHistory) {
saveElem.css('cursor', 'pointer');
$notify($msg('SAVE_COMPLETE'));
}
menu.setRequireChange(false);
},
onError(error) {
if (saveHistory) {
saveElem.css('cursor', 'pointer');
if (error.severity != 'FATAL') {
$notify(error.message);
} else {
$notifyModal(error.message);
}
}
},
}, sync);
},
isSaveRequired() {
return this._mindmapUpdated;
},
setRequireChange(value) {
this._mindmapUpdated = value;
},
});
export default IMenu;