* Remove a node. * @param {string | import('./jsmind.node.js').Node} node * @returns {boolean}
(node)
| 679 | * @returns {boolean} |
| 680 | */ |
| 681 | remove_node(node) { |
| 682 | if (!Node.is_node(node)) { |
| 683 | var the_node = this.get_node(node); |
| 684 | if (!the_node) { |
| 685 | logger.error('the node[id=' + node + '] can not be found.'); |
| 686 | return false; |
| 687 | } else { |
| 688 | return this.remove_node(the_node); |
| 689 | } |
| 690 | } |
| 691 | if (this.get_editable()) { |
| 692 | if (node.isroot) { |
| 693 | logger.error('fail, can not remove root node'); |
| 694 | return false; |
| 695 | } |
| 696 | var node_id = node.id; |
| 697 | var parent_id = node.parent.id; |
| 698 | var parent_node = this.get_node(parent_id); |
| 699 | this.view.save_location(parent_node); |
| 700 | this.view.remove_node(node); |
| 701 | this.mind.remove_node(node); |
| 702 | this.layout.layout(); |
| 703 | this.view.show(false); |
| 704 | this.view.restore_location(parent_node); |
| 705 | this.invoke_event_handle(EventType.edit, { |
| 706 | evt: 'remove_node', |
| 707 | data: [node_id], |
| 708 | node: parent_id, |
| 709 | }); |
| 710 | return true; |
| 711 | } else { |
| 712 | logger.error('fail, this mind map is not editable'); |
| 713 | return false; |
| 714 | } |
| 715 | } |
| 716 | /** |
| 717 | * Update the topic (text content) of a node. |
| 718 | * @param {string} node_id |
no test coverage detected