update occurrences with getUrl and use CSS.escape function instead

This commit is contained in:
Arpit Jain
2025-05-10 05:12:48 +00:00
parent 28131bab98
commit e79147dcfc
7 changed files with 14 additions and 60 deletions

View File

@@ -4,7 +4,7 @@ import { createText } from '../rendering-util/createText.js';
import { line, curveBasis, select } from 'd3';
import { getConfig } from '../diagram-api/diagramAPI.js';
import utils from '../utils.js';
import { evaluate } from '../diagrams/common/common.js';
import { evaluate, getUrl } from '../diagrams/common/common.js';
import { getLineFunctionsWithOffset } from '../utils/lineWithOffset.js';
import { getSubGraphTitleMargins } from '../utils/subGraphTitleMargins.js';
import { addEdgeMarkers } from './edgeMarker.js';
@@ -440,15 +440,7 @@ export const insertEdge = function (elem, e, edge, clusterDb, diagramType, graph
let url = '';
// // TODO: Can we load this config only from the rendered graph type?
if (getConfig().flowchart.arrowMarkerAbsolute || getConfig().state.arrowMarkerAbsolute) {
url =
window.location.protocol +
'//' +
window.location.host +
window.location.pathname +
window.location.search;
url = url.replace(/\\/g, '\\\\');
url = url.replace(/\(/g, '\\(');
url = url.replace(/\)/g, '\\)');
url = getUrl(true);
}
addEdgeMarkers(svgPath, edge, url, id, diagramType);

View File

@@ -1,7 +1,7 @@
import { line, curveBasis } from 'd3';
import utils from '../../utils.js';
import { log } from '../../logger.js';
import { parseGenericTypes } from '../common/common.js';
import { parseGenericTypes, getUrl } from '../common/common.js';
let edgeCount = 0;
export const drawEdge = function (elem, path, relation, conf, diagObj) {
@@ -42,15 +42,7 @@ export const drawEdge = function (elem, path, relation, conf, diagObj) {
.attr('class', 'relation');
let url = '';
if (conf.arrowMarkerAbsolute) {
url =
window.location.protocol +
'//' +
window.location.host +
window.location.pathname +
window.location.search;
url = url.replace(/\\/g, '\\\\');
url = url.replace(/\(/g, '\\(');
url = url.replace(/\)/g, '\\)');
url = getUrl(true);
}
if (relation.relation.lineType == 1) {

View File

@@ -158,9 +158,8 @@ const getUrl = (useAbsolute: boolean): string => {
window.location.host +
window.location.pathname +
window.location.search;
url = url.replace(/\\/g, '\\\\');
url = url.replaceAll(/\(/g, '\\(');
url = url.replaceAll(/\)/g, '\\)');
url = CSS.escape(url);
}
return url;

View File

@@ -6,7 +6,7 @@ import { log } from '../../logger.js';
import utils from '../../utils.js';
import erMarkers from './erMarkers.js';
import { configureSvgSize } from '../../setupGraphViewbox.js';
import { parseGenericTypes } from '../common/common.js';
import { parseGenericTypes, getUrl } from '../common/common.js';
import { v5 as uuid5 } from 'uuid';
/** Regex used to remove chars from the entity name so the result can be used in an id */
@@ -451,15 +451,7 @@ const drawRelationshipFromLayout = function (svg, rel, g, insert, diagObj) {
// TODO: Understand this better
let url = '';
if (conf.arrowMarkerAbsolute) {
url =
window.location.protocol +
'//' +
window.location.host +
window.location.pathname +
window.location.search;
url = url.replace(/\\/g, '\\\\'); // Escape backslashes
url = url.replace(/\(/g, '\\(');
url = url.replace(/\)/g, '\\)');
url = getUrl(true);
}
// Decide which start and end markers it needs. It may be possible to be more concise here

View File

@@ -3,6 +3,7 @@ import { select } from 'd3';
import svgDraw, { drawKatex, ACTOR_TYPE_WIDTH, drawText, fixLifeLineHeights } from './svgDraw.js';
import { log } from '../../logger.js';
import common, { calculateMathMLDimensions, hasKatex } from '../common/common.js';
import { getUrl } from '../common/common.js';
import * as svgDrawCommon from '../common/svgDrawCommon.js';
import { getConfig } from '../../diagram-api/diagramAPI.js';
import assignWithDepth from '../../assignWithDepth.js';
@@ -449,15 +450,7 @@ const drawMessage = async function (diagram, msgModel, lineStartY: number, diagO
let url = '';
if (conf.arrowMarkerAbsolute) {
url =
window.location.protocol +
'//' +
window.location.host +
window.location.pathname +
window.location.search;
url = url.replace(/\\/g, '\\\\');
url = url.replace(/\(/g, '\\(');
url = url.replace(/\)/g, '\\)');
url = getUrl(true);
}
line.attr('stroke-width', 2);

View File

@@ -1,7 +1,7 @@
import { line, curveBasis } from 'd3';
import { StateDB } from './stateDb.js';
import utils from '../../utils.js';
import common from '../common/common.js';
import common, {getUrl} from '../common/common.js';
import { getConfig } from '../../diagram-api/diagramAPI.js';
import { log } from '../../logger.js';
@@ -444,15 +444,7 @@ export const drawEdge = function (elem, path, relation) {
.attr('class', 'transition');
let url = '';
if (getConfig().state.arrowMarkerAbsolute) {
url =
window.location.protocol +
'//' +
window.location.host +
window.location.pathname +
window.location.search;
url = url.replace(/\\/g, '\\\\');
url = url.replace(/\(/g, '\\(');
url = url.replace(/\)/g, '\\)');
url = getUrl(true);
}
svgPath.attr(

View File

@@ -1,5 +1,5 @@
import { getConfig } from '../../diagram-api/diagramAPI.js';
import { evaluate } from '../../diagrams/common/common.js';
import { evaluate, getUrl } from '../../diagrams/common/common.js';
import { log } from '../../logger.js';
import { createText } from '../createText.js';
import utils from '../../utils.js';
@@ -631,13 +631,7 @@ export const insertEdge = function (elem, edge, clusterDb, diagramType, startNod
let url = '';
if (getConfig().flowchart.arrowMarkerAbsolute || getConfig().state.arrowMarkerAbsolute) {
url =
window.location.protocol +
'//' +
window.location.host +
window.location.pathname +
window.location.search;
url = url.replace(/\\/g, '\\\\').replace(/\(/g, '\\(').replace(/\)/g, '\\)');
url = getUrl(true);
}
log.info('arrowTypeStart', edge.arrowTypeStart);
log.info('arrowTypeEnd', edge.arrowTypeEnd);