OrgChart icon indicating copy to clipboard operation
OrgChart copied to clipboard

Create validation on node drop

Open maslunde opened this issue 8 years ago • 3 comments

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('');
                        }
                    });

maslunde avatar Sep 21 '17 12:09 maslunde

It would be nice to get some feedback on this PR. I saw it was not merged into the latest release.

maslunde avatar Nov 02 '17 11:11 maslunde

Hi @maslunde , sorry for late replay. I guess I got your points. I still have the following concerns:

  1. We already have dropCriteria option. Please try out this demo and drag/drop one node with "manager" word.
  2. Is it a good practice to check whether a node is droppable depending on deferred object?

dabeng avatar Nov 03 '17 05:11 dabeng

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.

maslunde avatar Nov 03 '17 08:11 maslunde