|
|
@ -62,6 +62,8 @@ import { |
|
|
} from '@shared/models/rule-chain.models'; |
|
|
} from '@shared/models/rule-chain.models'; |
|
|
import { FcItemInfo, FlowchartConstants, NgxFlowchartComponent, UserCallbacks } from 'ngx-flowchart'; |
|
|
import { FcItemInfo, FlowchartConstants, NgxFlowchartComponent, UserCallbacks } from 'ngx-flowchart'; |
|
|
import { |
|
|
import { |
|
|
|
|
|
FC_RULE_NOTE_DEFAULT_APPLY_MARKDOWN_STYLE, |
|
|
|
|
|
FC_RULE_NOTE_DEFAULT_BACKGROUND_COLOR, |
|
|
FcRuleEdge, |
|
|
FcRuleEdge, |
|
|
FcRuleNode, |
|
|
FcRuleNode, |
|
|
FcRuleNodeType, |
|
|
FcRuleNodeType, |
|
|
@ -377,12 +379,15 @@ export class RuleChainPageComponent extends PageComponent |
|
|
this.selectedObjects = []; |
|
|
this.selectedObjects = []; |
|
|
this.ruleChainModel.nodes = []; |
|
|
this.ruleChainModel.nodes = []; |
|
|
this.ruleChainModel.edges = []; |
|
|
this.ruleChainModel.edges = []; |
|
|
|
|
|
this.ruleChainModel.notes = []; |
|
|
this.ruleNodeTypesModel = {}; |
|
|
this.ruleNodeTypesModel = {}; |
|
|
if (this.ruleChainCanvas) { |
|
|
if (this.ruleChainCanvas) { |
|
|
this.ruleChainCanvas.adjustCanvasSize(true); |
|
|
this.ruleChainCanvas.adjustCanvasSize(true); |
|
|
} |
|
|
} |
|
|
this.isEditingRuleNode = false; |
|
|
this.isEditingRuleNode = false; |
|
|
this.isEditingRuleNodeLink = false; |
|
|
this.isEditingRuleNodeLink = false; |
|
|
|
|
|
this.isEditingNote = false; |
|
|
|
|
|
this.editingNote = null; |
|
|
this.updateRuleNodesHighlight(); |
|
|
this.updateRuleNodesHighlight(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -733,7 +738,8 @@ export class RuleChainPageComponent extends PageComponent |
|
|
subtitle: this.translate.instant('rulechain.rulechain'), |
|
|
subtitle: this.translate.instant('rulechain.rulechain'), |
|
|
menuItems: [] |
|
|
menuItems: [] |
|
|
}; |
|
|
}; |
|
|
if (this.ruleChainCanvas.modelService.nodes.getSelectedNodes().length) { |
|
|
if (this.ruleChainCanvas.modelService.nodes.getSelectedNodes().length || |
|
|
|
|
|
this.ruleChainCanvas.modelService.notes.getSelectedNotes().length) { |
|
|
contextInfo.menuItems.push( |
|
|
contextInfo.menuItems.push( |
|
|
{ |
|
|
{ |
|
|
action: () => { |
|
|
action: () => { |
|
|
@ -964,15 +970,13 @@ export class RuleChainPageComponent extends PageComponent |
|
|
} |
|
|
} |
|
|
}).afterClosed().subscribe((ruleChain) => { |
|
|
}).afterClosed().subscribe((ruleChain) => { |
|
|
if (ruleChain) { |
|
|
if (ruleChain) { |
|
|
|
|
|
const selectedNotes: FcRuleNote[] = this.ruleChainCanvas.modelService.notes.getSelectedNotes(); |
|
|
this.ruleChainCanvas.modelService.deselectAll(); |
|
|
this.ruleChainCanvas.modelService.deselectAll(); |
|
|
const selectedNotes: FcRuleNote[] = (this.ruleChainModel.notes || []).filter( |
|
|
|
|
|
note => this.ruleChainCanvas.modelService.notes.isSelected(note) |
|
|
|
|
|
); |
|
|
|
|
|
const ruleChainMetaData: RuleChainMetaData = { |
|
|
const ruleChainMetaData: RuleChainMetaData = { |
|
|
ruleChainId: ruleChain.id, |
|
|
ruleChainId: ruleChain.id, |
|
|
nodes: [], |
|
|
nodes: [], |
|
|
connections: [], |
|
|
connections: [], |
|
|
notes: selectedNotes.map(note => ({ ...note })) |
|
|
notes: deepClone(selectedNotes) |
|
|
}; |
|
|
}; |
|
|
let outputEdges: FcRuleEdge[] = []; |
|
|
let outputEdges: FcRuleEdge[] = []; |
|
|
let minX: number = null; |
|
|
let minX: number = null; |
|
|
@ -1137,6 +1141,9 @@ export class RuleChainPageComponent extends PageComponent |
|
|
selectedNodes.forEach((node) => { |
|
|
selectedNodes.forEach((node) => { |
|
|
this.ruleChainCanvas.modelService.nodes.delete(node); |
|
|
this.ruleChainCanvas.modelService.nodes.delete(node); |
|
|
}); |
|
|
}); |
|
|
|
|
|
selectedNotes.forEach((note) => { |
|
|
|
|
|
this.ruleChainCanvas.modelService.notes.delete(note); |
|
|
|
|
|
}); |
|
|
this.onModelChanged(); |
|
|
this.onModelChanged(); |
|
|
this.updateRuleNodesHighlight(); |
|
|
this.updateRuleNodesHighlight(); |
|
|
}); |
|
|
}); |
|
|
@ -1317,15 +1324,15 @@ export class RuleChainPageComponent extends PageComponent |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private addNote(event?: MouseEvent): void { |
|
|
addNote(event?: MouseEvent): void { |
|
|
this.dialog.open<AddNoteDialogComponent, FcRuleNote, Partial<FcRuleNote>>(AddNoteDialogComponent, { |
|
|
this.dialog.open<AddNoteDialogComponent, FcRuleNote, Partial<FcRuleNote>>(AddNoteDialogComponent, { |
|
|
disableClose: false, |
|
|
disableClose: true, |
|
|
panelClass: ['tb-dialog', 'tb-fullscreen-dialog'], |
|
|
panelClass: ['tb-dialog', 'tb-fullscreen-dialog'], |
|
|
data: { |
|
|
data: { |
|
|
id: '', x: 0, y: 0, width: 200, height: 120, |
|
|
id: '', x: 0, y: 0, width: 200, height: 120, |
|
|
content: '', |
|
|
content: '', |
|
|
backgroundColor: '#FFF9C4', |
|
|
backgroundColor: FC_RULE_NOTE_DEFAULT_BACKGROUND_COLOR, |
|
|
applyDefaultMarkdownStyle: true, |
|
|
applyDefaultMarkdownStyle: FC_RULE_NOTE_DEFAULT_APPLY_MARKDOWN_STYLE, |
|
|
markdownCss: '' |
|
|
markdownCss: '' |
|
|
} |
|
|
} |
|
|
}).afterClosed().subscribe((noteData) => { |
|
|
}).afterClosed().subscribe((noteData) => { |
|
|
@ -1364,10 +1371,6 @@ export class RuleChainPageComponent extends PageComponent |
|
|
headerClass: 'tb-rulechain-header', |
|
|
headerClass: 'tb-rulechain-header', |
|
|
icon: 'sticky_note_2', |
|
|
icon: 'sticky_note_2', |
|
|
title: this.translate.instant('rulechain.note'), |
|
|
title: this.translate.instant('rulechain.note'), |
|
|
subtitle: (() => { |
|
|
|
|
|
const plain = (note.content || '').replace(/[#*_`>[\]!\\~]/g, '').trim(); |
|
|
|
|
|
return plain.length > 24 ? plain.substring(0, 24) + '…' : plain; |
|
|
|
|
|
})(), |
|
|
|
|
|
menuItems: [] |
|
|
menuItems: [] |
|
|
}; |
|
|
}; |
|
|
if (!note.readonly) { |
|
|
if (!note.readonly) { |
|
|
@ -1600,7 +1603,8 @@ export class RuleChainPageComponent extends PageComponent |
|
|
|
|
|
|
|
|
objectsSelected(): boolean { |
|
|
objectsSelected(): boolean { |
|
|
return this.ruleChainCanvas.modelService.nodes.getSelectedNodes().length > 0 || |
|
|
return this.ruleChainCanvas.modelService.nodes.getSelectedNodes().length > 0 || |
|
|
this.ruleChainCanvas.modelService.edges.getSelectedEdges().length > 0; |
|
|
this.ruleChainCanvas.modelService.edges.getSelectedEdges().length > 0 || |
|
|
|
|
|
this.ruleChainCanvas.modelService.notes.getSelectedNotes().length > 0; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
deleteSelected() { |
|
|
deleteSelected() { |
|
|
@ -1658,7 +1662,7 @@ export class RuleChainPageComponent extends PageComponent |
|
|
ruleChainId: this.ruleChain.id, |
|
|
ruleChainId: this.ruleChain.id, |
|
|
nodes: [], |
|
|
nodes: [], |
|
|
connections: [], |
|
|
connections: [], |
|
|
notes: this.ruleChainModel.notes || [], |
|
|
notes: deepClone(this.ruleChainModel.notes) || [], |
|
|
version: ruleChain.version |
|
|
version: ruleChain.version |
|
|
}; |
|
|
}; |
|
|
const nodes: FcRuleNode[] = []; |
|
|
const nodes: FcRuleNode[] = []; |
|
|
@ -2181,6 +2185,8 @@ export class AddNoteDialogComponent extends DialogComponent<AddNoteDialogCompone |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
save(): void { |
|
|
save(): void { |
|
|
this.dialogRef.close(this.ruleNoteComponent.noteForm.value); |
|
|
if (this.ruleNoteComponent.noteForm.valid) { |
|
|
|
|
|
this.dialogRef.close(this.ruleNoteComponent.noteForm.value); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|