From df7418a89c90146ccb9e05d7bdec1eb2717a492f Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Tue, 11 Aug 2020 11:07:04 -0400 Subject: [PATCH] LP1839562 Ang Vandelay Match Set Replace Mode Recover "Replace Mode" functionality in the Vandelay Match Set editor interface, so existing nodes (e.g. And) may be replaced with other nodes (e.g. Or) without modifying the rest of the tree structure. Values (Record Attrs / MARC Fields) can replace other values. Booleans can replace any type of tree node. Signed-off-by: Bill Erickson Signed-off-by: Mary Llewellyn Signed-off-by: Christine Morgan Signed-off-by: Galen Charlton --- .../vandelay/match-set-expression.component.html | 7 ++++ .../cat/vandelay/match-set-expression.component.ts | 48 +++++++++++++++------- 2 files changed, 41 insertions(+), 14 deletions(-) diff --git a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-expression.component.html b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-expression.component.html index 9a5ee0ce19..004b7c1cb3 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-expression.component.html +++ b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-expression.component.html @@ -35,6 +35,13 @@ [disabled]="!selectedIsBool()" i18n> Add To Selected Node + + +
    diff --git a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-expression.component.ts b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-expression.component.ts index f93c1e7d41..8eb22f9108 100644 --- a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-expression.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-expression.component.ts @@ -161,16 +161,27 @@ export class MatchSetExpressionComponent implements OnInit { return false; } - addChildNode() { + addChildNode(replace?: boolean) { this.changesMade = true; - const pnode = this.tree.selectedNode(); - const point = this.idl.create('vmsp'); - point.id(this.newId--); - point.isnew(true); - point.parent(pnode.id); - point.match_set(this.matchSet_.id()); - point.children([]); + const targetNode: TreeNode = this.tree.selectedNode(); + let point; + + if (replace) { + point = targetNode.callerData.point; + point.ischanged(true); + // Clear previous data + ['bool_op', 'svf', 'tag', 'subfield', 'heading'] + .forEach(f => point[f](null)); + + } else { + point = this.idl.create('vmsp'); + point.id(this.newId--); + point.isnew(true); + point.parent(targetNode.id); + point.match_set(this.matchSet_.id()); + point.children([]); + } const ptype = this.newPoint.values.pointType; @@ -193,13 +204,22 @@ export class MatchSetExpressionComponent implements OnInit { point.quality(this.newPoint.values.matchScore); } - const node: TreeNode = new TreeNode({ - id: point.id(), - callerData: {point: point} - }); + if (replace) { + + targetNode.label = null; + this.setNodeLabel(targetNode, point); + + } else { - // Match points are added to the DB only when the tree is saved. - this.setNodeLabel(node, point).then(() => pnode.children.push(node)); + const node: TreeNode = new TreeNode({ + id: point.id(), + callerData: {point: point} + }); + + // Match points are added to the DB only when the tree is saved. + this.setNodeLabel(node, point) + .then(() => targetNode.children.push(node)); + } } expressionAsString(): string { -- 2.11.0