Graph operations extraction
Created by: BarabanovaIrina
New GraphOperator class was implemented, which contains all the operations with graph structure. New NodeOperator class was implemented, which contains implementation of Node.distance_to_primary_level, Node.ordered_subnodes_hierarchy. These classes were created to separate implementation of all the operations on the graph structure from Chain and Node classes.
- Chain still has base methods for add, delete, update nodes/subtrees, but implementation is moved.
- Chain has new field called 'operator' which is now used to call some methods: node_children, nodes_from_layer (former nodes_from_height), distance_to_root_level(former node_height), sort_nodes, actualise_old_node_children. You may use them from chain.operator.defined_method()
- Node has new property distance_to_primary_level.
- Deletion of nodes with multiple parents and children now works without redirections all-to-all.