Skip to content

Commit

Permalink
Allow to override label text, fixes #1429
Browse files Browse the repository at this point in the history
  • Loading branch information
ivmartel committed Jun 29, 2023
1 parent efd5dfd commit ce0092c
Show file tree
Hide file tree
Showing 12 changed files with 119 additions and 80 deletions.
2 changes: 2 additions & 0 deletions src/app/defaults.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
// Overridable default object.
export const defaults = {};
2 changes: 2 additions & 0 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// app
import {App} from './app/application';
import {defaults} from './app/defaults';
import {ViewController} from './app/viewController';
// dicom
import {
Expand Down Expand Up @@ -86,6 +87,7 @@ export {
Point3D,
Vector3D,
Matrix33,
defaults,
logger,
decoderScripts,
customUI,
Expand Down
24 changes: 13 additions & 11 deletions src/tools/arrow.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
import {Point2D} from '../math/point';
import {Line, getPerpendicularLine, getAngle} from '../math/line';
import {defaults} from '../app/defaults';
import {getDefaultAnchor} from './editor';

// external
import Konva from 'konva';

/**
* Default draw label text.
* Default label text for arrow.
*/
const defaultArrowLabelText = '';
defaults.labelText.arrow = {
'*': ''
};

/**
* Arrow factory.
Expand Down Expand Up @@ -56,10 +58,10 @@ export class ArrowFactory {
*
* @param {Array} points The points from which to extract the line.
* @param {object} style The drawing style.
* @param {object} _viewController The associated view controller.
* @param {object} viewController The associated view controller.
* @returns {object} The Konva object.
*/
create(points, style, _viewController) {
create(points, style, viewController) {
// physical shape
const line = new Line(points[0], points[1]);
// draw shape
Expand Down Expand Up @@ -117,12 +119,12 @@ export class ArrowFactory {
name: 'text'
});
let textExpr = '';
// TODO: allow override?
// if (typeof arrowLabelText !== 'undefined') {
// textExpr = arrowLabelText;
// } else {
textExpr = defaultArrowLabelText;
// }
const modality = viewController.getModality();
if (typeof defaults.labelText.arrow[modality] !== 'undefined') {
textExpr = defaults.labelText.arrow[modality];
} else {
textExpr = defaults.labelText.arrow['*'];
}
ktext.setText(textExpr);
// augment text with meta data
// @ts-ignore
Expand Down
22 changes: 12 additions & 10 deletions src/tools/circle.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,18 @@ import {Circle} from '../math/circle';
import {Point2D} from '../math/point';
import {getFlags, replaceFlags} from '../utils/string';
import {logger} from '../utils/logger';
import {defaults} from '../app/defaults';
import {getDefaultAnchor} from './editor';
import {DRAW_DEBUG} from './draw';
// external
import Konva from 'konva';

/**
* Default draw label text.
* Default label text for circle.
*/
const defaultCircleLabelText = '{surface}';
defaults.labelText.circle = {
'*': '{surface}'
};

/**
* Circle factory.
Expand Down Expand Up @@ -61,8 +64,7 @@ export class CircleFactory {
* @param {object} viewController The associated view controller.
* @returns {object} The Konva group.
*/
create(
points, style, viewController) {
create(points, style, viewController) {
// calculate radius
const a = Math.abs(points[0].getX() - points[1].getX());
const b = Math.abs(points[0].getY() - points[1].getY());
Expand Down Expand Up @@ -90,12 +92,12 @@ export class CircleFactory {
name: 'text'
});
let textExpr = '';
// TODO: allow override?
// if (typeof circleLabelText !== 'undefined') {
// textExpr = circleLabelText;
// } else {
textExpr = defaultCircleLabelText;
// }
const modality = viewController.getModality();
if (typeof defaults.labelText.circle[modality] !== 'undefined') {
textExpr = defaults.labelText.circle[modality];
} else {
textExpr = defaults.labelText.circle['*'];
}
const quant = circle.quantify(
viewController,
getFlags(textExpr));
Expand Down
6 changes: 6 additions & 0 deletions src/tools/draw.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
} from '../app/drawController';
import {ScrollWheel} from './scrollWheel';
import {ShapeEditor} from './editor';
import {defaults} from '../app/defaults';
// external
import Konva from 'konva';

Expand All @@ -29,6 +30,11 @@ import {Style} from '../gui/style';
import {LayerGroup} from '../gui/layerGroup';
/* eslint-enable no-unused-vars */

/**
* Default label text object.
*/
defaults.labelText = {};

/**
* Draw Debug flag.
*/
Expand Down
25 changes: 14 additions & 11 deletions src/tools/ellipse.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
import {DRAW_DEBUG} from './draw';
import {getDefaultAnchor} from './editor';
import {Ellipse} from '../math/ellipse';
import {Point2D} from '../math/point';
import {logger} from '../utils/logger';
import {getFlags, replaceFlags} from '../utils/string';
import {logger} from '../utils/logger';
import {defaults} from '../app/defaults';
import {getDefaultAnchor} from './editor';
import {DRAW_DEBUG} from './draw';
// external
import Konva from 'konva';

/**
* Default draw label text.
* Default label text for ellipse.
*/
const defaultEllipseLabelText = '{surface}';
defaults.labelText.ellipse = {
'*': '{surface}'
};

/**
* Ellipse factory.
Expand Down Expand Up @@ -92,12 +95,12 @@ export class EllipseFactory {
name: 'text'
});
let textExpr = '';
// TODO: allow override?
// if (typeof ellipseLabelText !== 'undefined') {
// textExpr = ellipseLabelText;
// } else {
textExpr = defaultEllipseLabelText;
// }
const modality = viewController.getModality();
if (typeof defaults.labelText.ellipse[modality] !== 'undefined') {
textExpr = defaults.labelText.ellipse[modality];
} else {
textExpr = defaults.labelText.ellipse['*'];
}
const quant = ellipse.quantify(
viewController,
getFlags(textExpr));
Expand Down
25 changes: 14 additions & 11 deletions src/tools/freeHand.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
import {defaults} from '../app/defaults';
import {getDefaultAnchor} from './editor';
// external
import Konva from 'konva';

/**
* Default draw label text.
* Default label text for freeHand.
* (not modality dependent, only one value)
*/
const defaultFreeHandLabelText = '';
defaults.labelText.freeHand = {
'*': ''
};

/**
* FreeHand factory.
Expand Down Expand Up @@ -54,11 +58,10 @@ export class FreeHandFactory {
*
* @param {Array} points The points from which to extract the line.
* @param {object} style The drawing style.
* @param {object} _viewController The associated view controller.
* @param {object} viewController The associated view controller.
* @returns {object} The Konva group.
*/
create(
points, style, _viewController) {
create(points, style, viewController) {
// points stored the Konvajs way
const arr = [];
for (let i = 0; i < points.length; ++i) {
Expand All @@ -83,12 +86,12 @@ export class FreeHandFactory {
name: 'text'
});
let textExpr = '';
// TODO: allow override?
// if (typeof freeHandLabelText !== 'undefined') {
// textExpr = freeHandLabelText;
// } else {
textExpr = defaultFreeHandLabelText;
// }
const modality = viewController.getModality();
if (typeof defaults.labelText.freeHand[modality] !== 'undefined') {
textExpr = defaults.labelText.freeHand[modality];
} else {
textExpr = defaults.labelText.freeHand['*'];
}
ktext.setText(textExpr);
// augment text with meta
// @ts-ignore
Expand Down
24 changes: 14 additions & 10 deletions src/tools/protractor.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
import {Line, getAngle} from '../math/line';
import {Point2D} from '../math/point';
import {replaceFlags} from '../utils/string';
import {defaults} from '../app/defaults';
import {i18n} from '../utils/i18n';
import {getDefaultAnchor} from './editor';
// external
import Konva from 'konva';

/**
* Default draw label text.
* Default label text for protractor.
* (not modality dependent, only one value)
*/
const defaultProtractorLabelText = '{angle}';
defaults.labelText.protractor = {
'*': '{angle}'
};

/**
* Protractor factory.
Expand Down Expand Up @@ -57,10 +61,10 @@ export class ProtractorFactory {
*
* @param {Array} points The points from which to extract the protractor.
* @param {object} style The drawing style.
* @param {object} _viewController The associated view controller.
* @param {object} viewController The associated view controller.
* @returns {object} The Konva group.
*/
create(points, style, _viewController) {
create(points, style, viewController) {
// physical shape
const line0 = new Line(points[0], points[1]);
// points stored the Konvajs way
Expand Down Expand Up @@ -110,12 +114,12 @@ export class ProtractorFactory {
name: 'text'
});
let textExpr = '';
// TODO: allow override?
// if (typeof protractorLabelText !== 'undefined') {
// textExpr = protractorLabelText;
// } else {
textExpr = defaultProtractorLabelText;
// }
const modality = viewController.getModality();
if (typeof defaults.labelText.protractor[modality] !== 'undefined') {
textExpr = defaults.labelText.protractor[modality];
} else {
textExpr = defaults.labelText.protractor['*'];
}
const quant = {
angle: {
value: angle,
Expand Down
21 changes: 12 additions & 9 deletions src/tools/rectangle.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,18 @@ import {Rectangle} from '../math/rectangle';
import {Point2D} from '../math/point';
import {getFlags, replaceFlags} from '../utils/string';
import {logger} from '../utils/logger';
import {DRAW_DEBUG} from './draw';
import {defaults} from '../app/defaults';
import {getDefaultAnchor} from './editor';
import {DRAW_DEBUG} from './draw';
// external
import Konva from 'konva';

/**
* Default draw label text.
* Default label text for rectangle.
*/
const defaultRectangleLabelText = '{surface}';
defaults.labelText.rectangle = {
'*': '{surface}'
};

/**
* Rectangle factory.
Expand Down Expand Up @@ -86,12 +89,12 @@ export class RectangleFactory {
name: 'text'
});
let textExpr = '';
// TODO: allow override?
// if (typeof rectangleLabelText !== 'undefined') {
// textExpr = rectangleLabelText;
// } else {
textExpr = defaultRectangleLabelText;
// }
const modality = viewController.getModality();
if (typeof defaults.labelText.rectangle[modality] !== 'undefined') {
textExpr = defaults.labelText.rectangle[modality];
} else {
textExpr = defaults.labelText.rectangle['*'];
}
const quant = rectangle.quantify(
viewController,
getFlags(textExpr));
Expand Down
23 changes: 13 additions & 10 deletions src/tools/roi.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
import {ROI} from '../math/roi';
import {defaults} from '../app/defaults';
import {getDefaultAnchor} from './editor';
// external
import Konva from 'konva';

/**
* Default draw label text.
* Default label text for roi.
*/
const defaultRoiLabelText = '';
defaults.labelText.roi = {
'*': ''
};

/**
* ROI factory.
Expand Down Expand Up @@ -55,10 +58,10 @@ export class RoiFactory {
*
* @param {Array} points The points from which to extract the line.
* @param {object} style The drawing style.
* @param {object} _viewController The associated view controller.
* @param {object} viewController The associated view controller.
* @returns {object} The Konva group.
*/
create(points, style, _viewController) {
create(points, style, viewController) {
// physical shape
const roi = new ROI();
// add input points to the ROI
Expand Down Expand Up @@ -87,12 +90,12 @@ export class RoiFactory {
name: 'text'
});
let textExpr = '';
// todo: allow overrride?
// if (typeof roiLabelText !== 'undefined') {
// textExpr = roiLabelText;
// } else {
textExpr = defaultRoiLabelText;
// }
const modality = viewController.getModality();
if (typeof defaults.labelText.roi[modality] !== 'undefined') {
textExpr = defaults.labelText.roi[modality];
} else {
textExpr = defaults.labelText.roi['*'];
}
ktext.setText(textExpr);
// augment text with meta
// @ts-ignore
Expand Down
Loading

0 comments on commit ce0092c

Please sign in to comment.