-
Notifications
You must be signed in to change notification settings - Fork 774
Create validation on node drop #273
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
If a backend service return an rejected promise, node should not be moved.
Example of usage from an agular directive:
oc.$chart
.on('validate.nodedropped.orgchart', event => {
let defer = $q.defer();
CustomerHierarchyService
.moveSection(event.draggedNode[0].id, event.dropZone[0].id)
.then(() => {
Message.showSuccess("Section was successfully moved!");
defer.resolve();
})
.catch((error) => {
Message.showError(error.data.responseStatus.message);
defer.reject();
});
return defer.promise;
})
.on('click','.node', function () {
var $this = $(this);
$('#selected-node').val($this.find('.title').text()).data('node', $this);
})
.on('dblclick','.node', function () {
editNode($(this));
})
.on('click', '.orgchart', event => {
if (!$(event.target).closest('.node').length) {
$('#selected-node').val('');
}
});
It would be nice to get some feedback on this PR. I saw it was not merged into the latest release.
dabeng
commented
Nov 3, 2017
maslunde
commented
Nov 3, 2017
Hi @dabeng, thank you for your answer. Let me be more precise in our need.
The dropCriteria option is a good thing when you know the valid dropZones nodes when you start dragging the node. In our case we don't know. It`s based on a lot of rules in another system, so the client must rely on the response it get. That happens asynchronous. Of course this could be implied to add, remove, edit as well. For now drop criteria is enough.
026c6b5 to
4381f68
Compare
If a backend service return an rejected promise, node should not be moved.
Example of usage from an agular directive:
oc.$chart
.on('validate.nodedropped.orgchart', event => {
let defer = $q.defer();
CustomerHierarchyService
.moveSection(event.draggedNode[0].id, event.dropZone[0].id)
.then(() => {
Message.showSuccess("Section was successfully moved!");
defer.resolve();
})
.catch((error) => {
Message.showError(error.data.responseStatus.message);
defer.reject();
});