Compare commits

...
Author SHA1 Message Date
ohif-bot aeb7d5edcc chore(release): publish [skip ci]
- @ohif/extension-vtk@1.8.0
 - @ohif/i18n@0.53.0
 - @ohif/viewer@4.5.28
2020-11-30 13:09:54 +00:00
qqalexqq d5b89748c9 feat(i18n): Added Russian language localization.
Fixes in translation, also a few new words added.

Changed 'Study List' translation (spelling changed).
2020-11-30 14:08:11 +01:00
Erik Ziegler b161016edb fix: Add syncTranslations script 2020-11-30 14:08:11 +01:00
Matthias Goetzke 2fff2d511f feat(i18n): Added de (German) translations
improved translations

Update StudyList.json

Fixed typo
2020-11-30 14:08:11 +01:00
ohif-bot cc92f91c1f chore(release): publish [skip ci]
- @ohif/viewer@4.5.27
2020-11-30 12:19:35 +00:00
matthiasg d2e777bafc fix: added MAX_CONCURRENCY limit as each webworker costs RAM, and machines with e.g 24 cores crash the process (#2161) 2020-11-30 13:17:27 +01:00
ohif-bot 5121913ee6 chore(release): publish [skip ci]
- @ohif/extension-vtk@1.7.16
 - @ohif/viewer@4.5.26
2020-11-19 11:28:20 +00:00
Davide Punzo 6ef2b19925 Update vtk crosshairs logic (#2177) 2020-11-19 12:26:56 +01:00
ohif-bot f2450be255 chore(release): publish [skip ci]
- @ohif/viewer@4.5.25
2020-11-13 14:57:31 +00:00
DanielandDaniel Schiffl 04ca32a93e chore: OpenID Connect: Remove hard-coded loadUserInfo to make it configurable (#2167)
* removed hard-coded loadUserInfo

* undo styling

Co-authored-by: Daniel Schiffl <daniel.schiffl@stryker.com>
2020-11-13 15:55:43 +01:00
ohif-bot c92de6c647 chore(release): publish [skip ci]
- @ohif/viewer@4.5.24
2020-11-02 10:40:06 +00:00
Orlando Brea 5b302843d4 fix issue #2130 - With config.showStudyList : false -> Still showing hyperlink to StudyList on Not Found Component 2020-11-02 11:37:55 +01:00
ohif-bot 7eb8c4c641 chore(release): publish [skip ci]
- @ohif/extension-vtk@1.7.15
 - @ohif/ui@1.5.7
 - @ohif/viewer@4.5.23
2020-11-02 10:35:07 +00:00
matthiasg 619f361510 fix: Reordered definitions in providers to prevent uninitialized var access (#2108) 2020-11-02 11:33:16 +01:00
ohif-bot 330eeaa216 chore(release): publish [skip ci]
- @ohif/extension-vtk@1.7.14
 - @ohif/viewer@4.5.22
2020-10-20 12:49:10 +00:00
James Petts d627dee3b2 Update crosshairs UI and fix bug where you could scroll offscreen. (#2126)
* Update crosshairs UI and fix bug where you could scroll offscreen.

* Update tests for removed rotate tool.
2020-10-20 14:45:52 +02:00
ohif-bot d8714ea9c4 chore(release): publish [skip ci]
- @ohif/extension-vtk@1.7.13
 - @ohif/viewer@4.5.21
2020-10-15 14:17:26 +00:00
James Petts 3c05920705 [IDC-2098] Update RVTKJSV (#2107)
* Update RVTKJSV

* Update react-vtkjs-viewport

* Fix WWWC tool with new rvtkjsv version
2020-10-15 16:15:28 +02:00
ohif-bot c6629bda75 chore(release): publish [skip ci]
- @ohif/extension-vtk@1.7.12
 - @ohif/viewer@4.5.20
2020-10-13 16:25:26 +00:00
James Petts 588bcc9d17 Throw error if data too large in WebGL 1 enabled browser (#2106) 2020-10-13 18:23:14 +02:00
86 changed files with 736 additions and 134 deletions

No files matched your search

+51
View File
@@ -3,6 +3,57 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
# [1.8.0](https://github.com/OHIF/Viewers/compare/@ohif/extension-vtk@1.7.16...@ohif/extension-vtk@1.8.0) (2020-11-30)
### Features
* **i18n:** Added de (German) translations ([2fff2d5](https://github.com/OHIF/Viewers/commit/2fff2d511fa1d36bdd6476da4ffa5684bf55374f))
## [1.7.16](https://github.com/OHIF/Viewers/compare/@ohif/extension-vtk@1.7.15...@ohif/extension-vtk@1.7.16) (2020-11-19)
**Note:** Version bump only for package @ohif/extension-vtk
## [1.7.15](https://github.com/OHIF/Viewers/compare/@ohif/extension-vtk@1.7.14...@ohif/extension-vtk@1.7.15) (2020-11-02)
**Note:** Version bump only for package @ohif/extension-vtk
## [1.7.14](https://github.com/OHIF/Viewers/compare/@ohif/extension-vtk@1.7.13...@ohif/extension-vtk@1.7.14) (2020-10-20)
**Note:** Version bump only for package @ohif/extension-vtk
## [1.7.13](https://github.com/OHIF/Viewers/compare/@ohif/extension-vtk@1.7.12...@ohif/extension-vtk@1.7.13) (2020-10-15)
**Note:** Version bump only for package @ohif/extension-vtk
## [1.7.12](https://github.com/OHIF/Viewers/compare/@ohif/extension-vtk@1.7.11...@ohif/extension-vtk@1.7.12) (2020-10-13)
**Note:** Version bump only for package @ohif/extension-vtk
## [1.7.11](https://github.com/OHIF/Viewers/compare/@ohif/extension-vtk@1.7.10...@ohif/extension-vtk@1.7.11) (2020-10-13)
**Note:** Version bump only for package @ohif/extension-vtk
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/extension-vtk",
"version": "1.7.11",
"version": "1.8.0",
"description": "OHIF extension for VTK.js",
"author": "OHIF",
"license": "MIT",
@@ -50,11 +50,11 @@
"dependencies": {
"@babel/runtime": "^7.5.5",
"lodash.throttle": "^4.1.1",
"react-vtkjs-viewport": "^0.13.1"
"react-vtkjs-viewport": "^0.14.2"
},
"devDependencies": {
"@ohif/core": "^2.10.7",
"@ohif/ui": "^1.5.6",
"@ohif/ui": "^1.5.7",
"cornerstone-tools": "^4.20.1",
"cornerstone-wado-image-loader": "^3.1.0",
"dicom-parser": "^1.8.3",
+46 -4
View File
@@ -14,7 +14,7 @@ import OHIFVTKViewport from './OHIFVTKViewport';
const { BlendMode } = Constants;
const commandsModule = ({ commandsManager }) => {
const commandsModule = ({ commandsManager, UINotificationService }) => {
// TODO: Put this somewhere else
let apis = {};
@@ -270,7 +270,10 @@ const commandsModule = ({ commandsManager }) => {
apis.forEach((api, apiIndex) => {
const istyle = vtkInteractorStyleMPRRotate.newInstance();
api.setInteractorStyle({ istyle, configuration: { apis, apiIndex } });
api.setInteractorStyle({
istyle,
configuration: { apis, apiIndex, uid: api.uid },
});
});
},
enableCrosshairsTool: () => {
@@ -318,10 +321,14 @@ const commandsModule = ({ commandsManager }) => {
},
};
apis.forEach(api => {
apis.forEach((api, apiIndex) => {
const istyle = vtkInteractorStyleMPRWindowLevel.newInstance();
api.setInteractorStyle({ istyle, callbacks });
api.setInteractorStyle({
istyle,
callbacks,
configuration: { apis, apiIndex, uid: api.uid },
});
});
},
setSlabThickness: ({ slabThickness }) => {
@@ -434,8 +441,43 @@ const commandsModule = ({ commandsManager }) => {
api.svgWidgets.rotatableCrosshairsWidget.setApis(apis);
});
const firstApi = apis[0];
// Initialise crosshairs
apis[0].svgWidgets.rotatableCrosshairsWidget.resetCrosshairs(apis, 0);
// Check if we have full WebGL 2 support
const openGLRenderWindow = apis[0].genericRenderWindow.getOpenGLRenderWindow();
if (!openGLRenderWindow.getWebgl2()) {
// Throw a warning if we don't have WebGL 2 support,
// And the volume is too big to fit in a 2D texture
const openGLContext = openGLRenderWindow.getContext();
const maxTextureSizeInBytes = openGLContext.getParameter(
openGLContext.MAX_TEXTURE_SIZE
);
const maxBufferLengthFloat32 =
(maxTextureSizeInBytes * maxTextureSizeInBytes) / 4;
const dimensions = firstApi.volumes[0]
.getMapper()
.getInputData()
.getDimensions();
const volumeLength = dimensions[0] * dimensions[1] * dimensions[2];
if (volumeLength > maxBufferLengthFloat32) {
UINotificationService.show({
title: 'Browser does not support WebGL 2',
message:
'This volume is too large to fit in WebGL 1 textures and will display incorrectly. Please use a different browser to view this data',
type: 'error',
autoClose: false,
});
}
}
},
};
+3 -2
View File
@@ -27,8 +27,9 @@ const vtkExtension = {
getToolbarModule() {
return toolbarModule;
},
getCommandsModule({ commandsManager }) {
return commandsModule({ commandsManager });
getCommandsModule({ commandsManager, servicesManager }) {
const { UINotificationService } = servicesManager.services;
return commandsModule({ commandsManager, UINotificationService });
},
};
@@ -0,0 +1,3 @@
{
"Rotate": "Drehen"
}
+7
View File
@@ -0,0 +1,7 @@
import Buttons from './Buttons.json';
export default {
de: {
Buttons,
},
};
+3 -1
View File
@@ -1,7 +1,9 @@
import en from './en';
import es from './es';
import de from './de';
export default {
...en,
...es
...es,
...de,
};
+2
View File
@@ -34,6 +34,7 @@ const definitions = [
commandName: 'resetMPRView',
commandOptions: {},
},
/*
{
id: 'Rotate',
label: 'Rotate',
@@ -43,6 +44,7 @@ const definitions = [
commandName: 'enableRotateTool',
commandOptions: {},
},
*/
/*
{
id: 'setBlendModeToComposite',
+17
View File
@@ -3,6 +3,23 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
# [0.53.0](https://github.com/OHIF/Viewers/compare/@ohif/i18n@0.52.8...@ohif/i18n@0.53.0) (2020-11-30)
### Bug Fixes
* Add syncTranslations script ([b161016](https://github.com/OHIF/Viewers/commit/b161016edb8808ff0d17ea637820837dca1ca3ce))
### Features
* **i18n:** Added de (German) translations ([2fff2d5](https://github.com/OHIF/Viewers/commit/2fff2d511fa1d36bdd6476da4ffa5684bf55374f))
* **i18n:** Added Russian language localization. ([d5b8974](https://github.com/OHIF/Viewers/commit/d5b89748c92c2cf5a88f54ae491adc31a1679705))
## [0.52.8](https://github.com/OHIF/Viewers/compare/@ohif/i18n@0.52.7...@ohif/i18n@0.52.8) (2020-04-07)
**Note:** Version bump only for package @ohif/i18n
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/i18n",
"version": "0.52.8",
"version": "0.53.0",
"description": "Internationalization library for The OHIF Viewer",
"author": "OHIF",
"license": "MIT",
@@ -1,3 +0,0 @@
{
"No hotkeys found": "Nenhuma tecla de atalho está configurada para este aplicativo. As teclas de atalho podem ser configuradas no arquivo app-config.js do aplicativo."
}
-7
View File
@@ -1,7 +0,0 @@
import UserPreferencesModal from './UserPreferencesModal.json';
export default {
'ar': {
UserPreferencesModal,
}
};
@@ -0,0 +1,14 @@
{
"Browser": "Browser",
"Build Number": "Build Number",
"Latest Master Commits": "Letzter Master Commit",
"More details": "Mehr Details",
"Name": "Name",
"OHIF Viewer - About": "OHIF Viewer",
"OS": "OS",
"Report an issue": "Problem melden",
"Repository URL": "Repository URL",
"Value": "Wert",
"Version Information": "Versionsinformation",
"Visit the forum": "Das Forum besuchen"
}
+43
View File
@@ -0,0 +1,43 @@
{
"Acquired": "Akquiriert",
"Angle": "Winkel",
"Axial": "Axial",
"Bidirectional": "Bidirektional",
"Brush": "Pinsel",
"CINE": "CINE",
"Cancel": "Abbruch",
"Circle": "Kreis",
"Clear": "Entfernen",
"Coronal": "Coronal",
"Crosshairs": "Kreuzlinien",
"Download": "Herunterladen",
"Ellipse": "Ellipse",
"Elliptical": "Elliptisch",
"Flip H": "Spiegeln H",
"Flip V": "Spiegeln V",
"Freehand": "Freihand",
"Invert": "Invertieren",
"Layout": "$t(Common:Layout)",
"Length": "Länge",
"Levels": "Levels",
"Magnify": "Vergrössern",
"Manual": "Manuell",
"Measurements": "Messungen",
"More": "$t(Common:More)",
"Next": "$t(Common:Next)",
"Pan": "Verschieben",
"Play": "$t(Common:Play)",
"Previous": "$t(Common:Previous)",
"Probe": "Messung",
"ROI Window": "ROI Fenster",
"Rectangle": "Rechteck",
"Reset": "$t(Common:Reset)",
"Reset to Defaults": "Standardwerte",
"Rotate Right": "Rechts drehen",
"Sagittal": "Sagittal",
"Save": "Speichern",
"Stack Scroll": "Stapel",
"Stop": "$t(Common:Stop)",
"Themes": "Themes",
"Zoom": "Zoom"
}
@@ -0,0 +1,8 @@
{
"Next image": "$t(Common:Next) $t(Common:Image)",
"Play / Stop": "$t(Common:Play) / $t(Common:Stop)",
"Previous image": "$t(Common:Previous) $t(Common:Image)",
"Skip to first image": "Zum ersten $t(Common:Image)",
"Skip to last image": "Zum letzten $t(Common:Image)",
"fps": "fps"
}
+16
View File
@@ -0,0 +1,16 @@
{
"Close": "Schliessen",
"Image": "Bild",
"Layout": "Layout",
"Measurements": "Messungen",
"More": "Mehr",
"Next": "Nächstes",
"Play": "Abspielen",
"Previous": "Zurück",
"Reset": "Zurücksetzen",
"RowsPerPage": "Zeilen pro Seite",
"Series": "Serie",
"Show": "Zeigen",
"Stop": "Stopp",
"StudyDate": "Studien Datum"
}
@@ -0,0 +1,5 @@
{
"Clear dates": "Zeiträume löschen",
"End Date": "Bis",
"Start Date": "Ab"
}
+8
View File
@@ -0,0 +1,8 @@
{
"About": "Über",
"Back to Viewer": "Zurück zum Viewer",
"INVESTIGATIONAL USE ONLY": "NICHT ZUR BEFUNDUNG FREIGEGEBEN",
"Options": "Optionen",
"Preferences": "Einstellungen",
"Study list": "Studienliste"
}
@@ -0,0 +1,9 @@
{
"Criteria nonconformities": "Kriterien für Nichtkonformität",
"Delete": "Löschen",
"Description": "Beschreibung",
"MAX": "MAX",
"NonTargets": "NichtZiele",
"Relabel": "Umbenennen",
"Targets": "Ziele"
}
@@ -0,0 +1,10 @@
{
"AccessionNumber": "Accession #",
"Empty": "Leer",
"MRN": "MRN",
"Modality": "Modalität",
"PatientName": "Patientenname",
"StudyDate": "Studiendatum",
"StudyDescription": "Beschreibung",
"StudyList": "Studienliste"
}
@@ -0,0 +1,9 @@
{
"Cancel": "$t(Buttons:Cancel)",
"No hotkeys found": "Keine Tastaturkürzel konfiguriert. Tastaturkürzel können in der app-config.js Datei der Anwendung konfiguriert werden.",
"Reset to Defaults": "$t(Buttons:Reset to Defaults)",
"ResetDefaultMessage": "Einstellungen erfolgreich zurückgesetzt. <br /> Sie müssen <strong>Speichern</strong> um dieses abzuschliessen.",
"Save": "$t(Buttons:Save)",
"SaveMessage": "Einstellungen gesichert",
"User Preferences": "Benutzereinstellungen"
}
@@ -0,0 +1,14 @@
{
"emptyFilenameError": "Dateiname kann nicht leer sein.",
"fileType": "Dateityp",
"filename": "Dateiname",
"formTitle": "Bitte geben Sie die Dimensionen, Dateiname und den gewünschten Dateityp an.",
"imageHeight": "Bildhöhe (px)",
"imagePreview": "Bild Vorschau",
"imageWidth": "Bildbreite (px)",
"keepAspectRatio": "Seitenverhältnis erbehalten",
"loadingPreview": "Bildvorschau laden...",
"minHeightError": "Die minimale Höhe beträgt 100 Pixel.",
"minWidthError": "Die minimale Breiete beträgt 100 Pixel.",
"showAnnotations": "Annotationen anzeigen"
}
+25
View File
@@ -0,0 +1,25 @@
import AboutModal from './AboutModal.json';
import Buttons from './Buttons.json';
import CineDialog from './CineDialog.json';
import Common from './Common.json';
import DatePicker from './DatePicker.json';
import Header from './Header.json';
import MeasurementTable from './MeasurementTable.json';
import StudyList from './StudyList.json';
import UserPreferencesModal from './UserPreferencesModal.json';
import ViewportDownloadForm from './ViewportDownloadForm.json';
export default {
'de': {
AboutModal,
Buttons,
CineDialog,
Common,
DatePicker,
Header,
MeasurementTable,
StudyList,
UserPreferencesModal,
ViewportDownloadForm,
}
};
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
+6
View File
@@ -1,19 +1,25 @@
import AboutModal from './AboutModal.json';
import Buttons from './Buttons.json';
import CineDialog from './CineDialog.json';
import Common from './Common.json';
import DatePicker from './DatePicker.json';
import Header from './Header.json';
import MeasurementTable from './MeasurementTable.json';
import StudyList from './StudyList.json';
import UserPreferencesModal from './UserPreferencesModal.json';
import ViewportDownloadForm from './ViewportDownloadForm.json';
export default {
'es': {
AboutModal,
Buttons,
CineDialog,
Common,
DatePicker,
Header,
MeasurementTable,
StudyList,
UserPreferencesModal,
ViewportDownloadForm,
}
};
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
+10
View File
@@ -1,15 +1,25 @@
import AboutModal from './AboutModal.json';
import Buttons from './Buttons.json';
import CineDialog from './CineDialog.json';
import Common from './Common.json';
import DatePicker from './DatePicker.json';
import Header from './Header.json';
import MeasurementTable from './MeasurementTable.json';
import StudyList from './StudyList.json';
import UserPreferencesModal from './UserPreferencesModal.json';
import ViewportDownloadForm from './ViewportDownloadForm.json';
export default {
'fr': {
AboutModal,
Buttons,
CineDialog,
Common,
DatePicker,
Header,
MeasurementTable,
StudyList,
UserPreferencesModal,
ViewportDownloadForm,
}
};
+4 -2
View File
@@ -1,21 +1,23 @@
import ar from './ar/';
import de from './de/';
import en_US from './en-US/';
import es from './es/';
import fr from './fr/';
import ja_JP from './ja-JP/';
import nl from './nl/';
import pt_BR from './pt-BR/';
import ru from './ru/';
import vi from './vi/';
import zh from './zh/';
export default {
...ar,
...de,
...en_US,
...es,
...fr,
...ja_JP,
...nl,
...pt_BR,
...ru,
...vi,
...zh,
};
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
+10
View File
@@ -1,15 +1,25 @@
import AboutModal from './AboutModal.json';
import Buttons from './Buttons.json';
import CineDialog from './CineDialog.json';
import Common from './Common.json';
import DatePicker from './DatePicker.json';
import Header from './Header.json';
import MeasurementTable from './MeasurementTable.json';
import StudyList from './StudyList.json';
import UserPreferencesModal from './UserPreferencesModal.json';
import ViewportDownloadForm from './ViewportDownloadForm.json';
export default {
'ja-JP': {
AboutModal,
Buttons,
CineDialog,
Common,
DatePicker,
Header,
MeasurementTable,
StudyList,
UserPreferencesModal,
ViewportDownloadForm,
}
};
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
+14
View File
@@ -1,11 +1,25 @@
import AboutModal from './AboutModal.json';
import Buttons from './Buttons.json';
import CineDialog from './CineDialog.json';
import Common from './Common.json';
import DatePicker from './DatePicker.json';
import Header from './Header.json';
import MeasurementTable from './MeasurementTable.json';
import StudyList from './StudyList.json';
import UserPreferencesModal from './UserPreferencesModal.json';
import ViewportDownloadForm from './ViewportDownloadForm.json';
export default {
'nl': {
AboutModal,
Buttons,
CineDialog,
Common,
DatePicker,
Header,
MeasurementTable,
StudyList,
UserPreferencesModal,
ViewportDownloadForm,
}
};
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
+6
View File
@@ -4,7 +4,10 @@ import CineDialog from './CineDialog.json';
import Common from './Common.json';
import DatePicker from './DatePicker.json';
import Header from './Header.json';
import MeasurementTable from './MeasurementTable.json';
import StudyList from './StudyList.json';
import UserPreferencesModal from './UserPreferencesModal.json';
import ViewportDownloadForm from './ViewportDownloadForm.json';
export default {
'pt-BR': {
@@ -14,6 +17,9 @@ export default {
Common,
DatePicker,
Header,
MeasurementTable,
StudyList,
UserPreferencesModal,
ViewportDownloadForm,
}
};
@@ -0,0 +1,14 @@
{
"Browser": "Браузер",
"Build Number": "Номер сборки",
"Latest Master Commits": "Последние коммиты в мастер",
"More details": "Больше подробностей",
"Name": "Имя",
"OHIF Viewer - About": "OHIF Viewer - помощь",
"OS": "ОС",
"Report an issue": "Сообщить о проблеме",
"Repository URL": "Ссылка репозитория",
"Value": "Значение",
"Version Information": "Информация о версии",
"Visit the forum": "Посетить форум"
}
+44
View File
@@ -0,0 +1,44 @@
{
"Acquired": "Полученные",
"Angle": "Угол",
"Annotate": "Примечание",
"Axial": "По оси",
"Bidirectional": "Двунаправленная",
"Brush": "Кисть",
"CINE": "Видео",
"Cancel": "Отменить",
"Circle": "Круг",
"Clear": "Очистить",
"Coronal": "Корональный",
"Crosshairs": "Перекрестие",
"Download": "Скачать",
"Ellipse": "Эллипс",
"Elliptical": "Эллиптический",
"Flip H": "Перевернуть ↔",
"Flip V": "Перевернуть ↕",
"Freehand": "От руки",
"Invert": "Инвертировать",
"Layout": "$t(Common:Layout)",
"Length": "Длина",
"Levels": "Уровни",
"Magnify": "Увеличить",
"Manual": "Ручной",
"Measurements": "Измерения",
"More": "$t(Common:More)",
"Next": "$t(Common:Next)",
"Pan": "Переместить",
"Play": "$t(Common:Play)",
"Previous": "$t(Common:Previous)",
"Probe": "Проба",
"ROI Window": "Главная область",
"Rectangle": "Прямоугольник",
"Reset": "$t(Common:Reset)",
"Reset to Defaults": "$t(Common:Reset) к настройкам по-умолчанию",
"Rotate Right": "Повернуть вправо",
"Sagittal": "Сагиттальный",
"Save": "Сохранить",
"Stack Scroll": "Прокрутка серии",
"Stop": "$t(Common:Stop)",
"Themes": "Темы",
"Zoom": "Лупа"
}
@@ -0,0 +1,8 @@
{
"Next image": "$t(Common:Next) $t(Common:Image)",
"Play / Stop": "$t(Common:Play) / $t(Common:Stop)",
"Previous image": "$t(Common:Previous) $t(Common:Image)",
"Skip to first image": "Пропустить к первому $t(Common:Image)",
"Skip to last image": "Пропустить к последнему $t(Common:Image)",
"fps": "fps"
}
+20
View File
@@ -0,0 +1,20 @@
{
"Close": "Закрыть",
"Image": "Изображение",
"Last 30 days": "30 дней",
"Last 7 days": "7 дней",
"Layout": "Разбивка",
"Measurements": "Измерения",
"More": "Больше",
"Next": "Следующая",
"Play": "Проиграть",
"Previous": "Предыдущая",
"Reset": "Сбросить",
"RowsPerPage": "строк на странице",
"Series": "Серия",
"Show": "Показать",
"Stop": "Остановить",
"StudyDate": "Дата исследования",
"StudyList": "Список исследований",
"Today": "Сегодня"
}
@@ -0,0 +1,5 @@
{
"Clear dates": "Очистить даты",
"End Date": "Дата конца",
"Start Date": "Дата начала"
}
+8
View File
@@ -0,0 +1,8 @@
{
"About": "Справка",
"Back to Viewer": "Назад к Просмотрщику",
"INVESTIGATIONAL USE ONLY": "ТОЛЬКО ДЛЯ ИССЛЕДОВАНИЙ",
"Options": "Опции",
"Preferences": "Настройки",
"Study List": "Список исследований"
}
@@ -0,0 +1,11 @@
{
"Criteria nonconformities": "Критерии несоответствия",
"Delete": "Удалить",
"Description": "Описание",
"MAX": "МАКС",
"Measurements": "Измерения",
"NonTargets": "Нецелевые",
"Relabel": "Переназначить",
"StudyDate": "Дата исследования",
"Targets": "Цели"
}
@@ -0,0 +1,10 @@
{
"AccessionNumber": "Номер доступа",
"Description": "Описание",
"Empty": "Пусто",
"MRN": "MRN",
"Modality": "Модальность",
"PatientName": "Имя пациента",
"StudyDate": "Дата исследования",
"StudyDescription": "Описание"
}
@@ -0,0 +1,9 @@
{
"Cancel": "$t(Buttons:Cancel)",
"No hotkeys found": "Не найдено горячих клавиш",
"Reset to Defaults": "$t(Buttons:Reset to Defaults)",
"ResetDefaultMessage": "Настройки успешно сброшены. <br /> Вы должны <strong>Сохранить</strong> это действие нажав на кнопку.",
"Save": "$t(Buttons:Save)",
"SaveMessage": "Настройки сохранены",
"User Preferences": "Пользовательские настройки"
}
@@ -0,0 +1,14 @@
{
"emptyFilenameError": "Имя файла не может быть пустым.",
"fileType": "Тип файла",
"filename": "Имя файла",
"formTitle": "Пожалуйста, укажите разрешение, имя файла и желаемый тип изображения.",
"imageHeight": "Высота картинки (px)",
"imagePreview": "Предпросмотр",
"imageWidth": "Ширина картинки (px)",
"keepAspectRatio": "Сохранить соотношение сторон",
"loadingPreview": "Загружаю предпросмотр картинки...",
"minHeightError": "Минимальная высота - 100px.",
"minWidthError": "Минимальная ширина - 100px.",
"showAnnotations": "Показать аннотации"
}
+25
View File
@@ -0,0 +1,25 @@
import AboutModal from './AboutModal.json';
import Buttons from './Buttons.json';
import CineDialog from './CineDialog.json';
import Common from './Common.json';
import DatePicker from './DatePicker.json';
import Header from './Header.json';
import MeasurementTable from './MeasurementTable.json';
import StudyList from './StudyList.json';
import UserPreferencesModal from './UserPreferencesModal.json';
import ViewportDownloadForm from './ViewportDownloadForm.json';
export default {
'ru': {
AboutModal,
Buttons,
CineDialog,
Common,
DatePicker,
Header,
MeasurementTable,
StudyList,
UserPreferencesModal,
ViewportDownloadForm,
}
};
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
+8
View File
@@ -1,17 +1,25 @@
import AboutModal from './AboutModal.json';
import Buttons from './Buttons.json';
import CineDialog from './CineDialog.json';
import Common from './Common.json';
import DatePicker from './DatePicker.json';
import Header from './Header.json';
import MeasurementTable from './MeasurementTable.json';
import StudyList from './StudyList.json';
import UserPreferencesModal from './UserPreferencesModal.json';
import ViewportDownloadForm from './ViewportDownloadForm.json';
export default {
'vi': {
AboutModal,
Buttons,
CineDialog,
Common,
DatePicker,
Header,
MeasurementTable,
StudyList,
UserPreferencesModal,
ViewportDownloadForm,
}
};
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
+6
View File
@@ -1,19 +1,25 @@
import AboutModal from './AboutModal.json';
import Buttons from './Buttons.json';
import CineDialog from './CineDialog.json';
import Common from './Common.json';
import DatePicker from './DatePicker.json';
import Header from './Header.json';
import MeasurementTable from './MeasurementTable.json';
import StudyList from './StudyList.json';
import UserPreferencesModal from './UserPreferencesModal.json';
import ViewportDownloadForm from './ViewportDownloadForm.json';
export default {
'zh': {
AboutModal,
Buttons,
CineDialog,
Common,
DatePicker,
Header,
MeasurementTable,
StudyList,
UserPreferencesModal,
ViewportDownloadForm,
}
};
+4
View File
@@ -0,0 +1,4 @@
cd src/locales/
npx locize --config-path ../../.locize sync --ver latest --update-values true --reference-language-only false
cd ../../
node ./writeLocaleIndexFiles.js
+11
View File
@@ -3,6 +3,17 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.5.7](https://github.com/OHIF/Viewers/compare/@ohif/ui@1.5.6...@ohif/ui@1.5.7) (2020-11-02)
### Bug Fixes
* Reordered definitions in providers to prevent uninitialized var access ([#2108](https://github.com/OHIF/Viewers/issues/2108)) ([619f361](https://github.com/OHIF/Viewers/commit/619f3615109d6cc4c69ff2f9fedbf83bd9309719))
## [1.5.6](https://github.com/OHIF/Viewers/compare/@ohif/ui@1.5.5...@ohif/ui@1.5.6) (2020-10-06)
**Note:** Version bump only for package @ohif/ui
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/ui",
"version": "1.5.6",
"version": "1.5.7",
"description": "A set of React components for Medical Imaging Viewers",
"author": "OHIF Contributors",
"license": "MIT",
@@ -45,36 +45,6 @@ const DialogProvider = ({ children, service }) => {
};
};
/**
* Sets the implementation of a dialog service that can be used by extensions.
*
* @returns void
*/
useEffect(() => {
if (service) {
service.setServiceImplementation({ create, dismiss, dismissAll });
}
}, [create, dismiss, service]);
/**
* UI Dialog
*
* @typedef {Object} DialogProps
* @property {string} id The dialog id.
* @property {DialogContent} content The dialog content.
* @property {Object} contentProps The dialog content props.
* @property {boolean} isDraggable Controls if dialog content is draggable or not.
* @property {boolean} showOverlay Controls dialog overlay.
* @property {boolean} centralize Center the dialog on the screen.
* @property {boolean} preservePosition Use last position instead of default.
* @property {ElementPosition} defaultPosition Specifies the `x` and `y` that the dragged item should start at.
* @property {Function} onStart Called when dragging starts. If `false` is returned any handler, the action will cancel.
* @property {Function} onStop Called when dragging stops.
* @property {Function} onDrag Called while dragging.
*/
useEffect(() => _bringToFront(lastDialogId), [_bringToFront, lastDialogId]);
/**
* Creates a new dialog and return its id.
*
@@ -109,20 +79,15 @@ const DialogProvider = ({ children, service }) => {
);
/**
* Dismisses all dialogs.
* Sets the implementation of a dialog service that can be used by extensions.
*
* @returns void
*/
const dismissAll = () => {
setDialogs([]);
};
/**
* Indicate if there are no dialogs present.
*
* @returns True if no dialogs are present.
*/
const isEmpty = () => dialogs && dialogs.length < 1;
useEffect(() => {
if (service) {
service.setServiceImplementation({ create, dismiss, dismissAll });
}
}, [create, dismiss, service]);
/**
* Moves the dialog to the foreground if clicked.
@@ -139,6 +104,41 @@ const DialogProvider = ({ children, service }) => {
});
}, []);
/**
* UI Dialog
*
* @typedef {Object} DialogProps
* @property {string} id The dialog id.
* @property {DialogContent} content The dialog content.
* @property {Object} contentProps The dialog content props.
* @property {boolean} isDraggable Controls if dialog content is draggable or not.
* @property {boolean} showOverlay Controls dialog overlay.
* @property {boolean} centralize Center the dialog on the screen.
* @property {boolean} preservePosition Use last position instead of default.
* @property {ElementPosition} defaultPosition Specifies the `x` and `y` that the dragged item should start at.
* @property {Function} onStart Called when dragging starts. If `false` is returned any handler, the action will cancel.
* @property {Function} onStop Called when dragging stops.
* @property {Function} onDrag Called while dragging.
*/
useEffect(() => _bringToFront(lastDialogId), [_bringToFront, lastDialogId]);
/**
* Dismisses all dialogs.
*
* @returns void
*/
const dismissAll = () => {
setDialogs([]);
};
/**
* Indicate if there are no dialogs present.
*
* @returns True if no dialogs are present.
*/
const isEmpty = () => dialogs && dialogs.length < 1;
const renderDialogs = () =>
dialogs.map(dialog => {
const {
@@ -219,14 +219,12 @@ const DialogProvider = ({ children, service }) => {
</Draggable>
);
return (
showOverlay ? (
<div className="Overlay" key={id}>
{dragableItem()}
</div>
) : (
dragableItem()
)
return showOverlay ? (
<div className="Overlay" key={id}>
{dragableItem()}
</div>
) : (
dragableItem()
);
});
@@ -249,11 +247,7 @@ const DialogProvider = ({ children, service }) => {
return (
<DialogContext.Provider value={{ create, dismiss, dismissAll, isEmpty }}>
{!isEmpty() &&
<div className="DraggableArea">
{renderDialogs()}
</div>
}
{!isEmpty() && <div className="DraggableArea">{renderDialogs()}</div>}
{children}
</DialogContext.Provider>
);
@@ -41,17 +41,6 @@ const ModalProvider = ({ children, modal: Modal, service }) => {
const [options, setOptions] = useState(DEFAULT_OPTIONS);
/**
* Sets the implementation of a modal service that can be used by extensions.
*
* @returns void
*/
useEffect(() => {
if (service) {
service.setServiceImplementation({ hide, show });
}
}, [hide, service, show]);
/**
* Show the modal and override its configuration props.
*
@@ -71,6 +60,17 @@ const ModalProvider = ({ children, modal: Modal, service }) => {
DEFAULT_OPTIONS,
]);
/**
* Sets the implementation of a modal service that can be used by extensions.
*
* @returns void
*/
useEffect(() => {
if (service) {
service.setServiceImplementation({ hide, show });
}
}, [hide, service, show]);
const {
content: ModalContent,
contentProps,
@@ -27,17 +27,6 @@ const SnackbarProvider = ({ children, service }) => {
const [count, setCount] = useState(1);
const [snackbarItems, setSnackbarItems] = useState([]);
/**
* Sets the implementation of a notification service that can be used by extensions.
*
* @returns void
*/
useEffect(() => {
if (service) {
service.setServiceImplementation({ hide, show });
}
}, [service, hide, show]);
const show = useCallback(
options => {
if (!options || (!options.title && !options.message)) {
@@ -92,6 +81,17 @@ const SnackbarProvider = ({ children, service }) => {
setSnackbarItems(() => []);
};
/**
* Sets the implementation of a notification service that can be used by extensions.
*
* @returns void
*/
useEffect(() => {
if (service) {
service.setServiceImplementation({ hide, show });
}
}, [service, hide, show]);
/**
* expose snackbar methods to window for debug purposes
* TODO: Check if it's really necessary
+75
View File
@@ -3,6 +3,81 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [4.5.28](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.5.27...@ohif/viewer@4.5.28) (2020-11-30)
**Note:** Version bump only for package @ohif/viewer
## [4.5.27](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.5.26...@ohif/viewer@4.5.27) (2020-11-30)
### Bug Fixes
* added MAX_CONCURRENCY limit as each webworker costs RAM, and machines with e.g 24 cores crash the process ([#2161](https://github.com/OHIF/Viewers/issues/2161)) ([d2e777b](https://github.com/OHIF/Viewers/commit/d2e777bafc70895fad15b91c47517e0eea622405))
## [4.5.26](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.5.25...@ohif/viewer@4.5.26) (2020-11-19)
**Note:** Version bump only for package @ohif/viewer
## [4.5.25](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.5.24...@ohif/viewer@4.5.25) (2020-11-13)
**Note:** Version bump only for package @ohif/viewer
## [4.5.24](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.5.23...@ohif/viewer@4.5.24) (2020-11-02)
**Note:** Version bump only for package @ohif/viewer
## [4.5.23](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.5.22...@ohif/viewer@4.5.23) (2020-11-02)
**Note:** Version bump only for package @ohif/viewer
## [4.5.22](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.5.21...@ohif/viewer@4.5.22) (2020-10-20)
**Note:** Version bump only for package @ohif/viewer
## [4.5.21](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.5.20...@ohif/viewer@4.5.21) (2020-10-15)
**Note:** Version bump only for package @ohif/viewer
## [4.5.20](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.5.19...@ohif/viewer@4.5.20) (2020-10-13)
**Note:** Version bump only for package @ohif/viewer
## [4.5.19](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.5.18...@ohif/viewer@4.5.19) (2020-10-13)
**Note:** Version bump only for package @ohif/viewer
@@ -36,9 +36,6 @@ describe('OHIF VTK Extension', () => {
cy.get('@wwwcBtn')
.should('be.visible')
.contains('WWWC');
cy.get('@rotateBtn')
.should('be.visible')
.contains('Rotate');
cy.get('@slabSlider')
.should('be.visible')
.contains('Slab Thickness');
@@ -90,23 +87,4 @@ describe('OHIF VTK Extension', () => {
);
});
});
it('checks Rotate tool', () => {
cy.get('@rotateBtn').click();
// Click and Move the mouse inside the viewport
cy.get('[data-cy="viewport-container-0"]')
.trigger('mousedown', 'center', {
which: 1,
})
.trigger('mousemove', 'top', { which: 1 })
.trigger('mousedown', 'center', {
which: 1,
})
.trigger('mousemove', 'top', { which: 1 })
.trigger('mouseup', { which: 1 });
//Take Screenshot
cy.screenshot('VTK Rotate tool - Should rotate image');
});
});
@@ -47,7 +47,6 @@ export function initVTKToolsAliases() {
cy.get('[data-cy="exit 2d mpr"]').as('exit2dmprBtn');
cy.get('[data-cy="crosshairs"]').as('crosshairsBtn');
cy.get('[data-cy="wwwc"]').as('wwwcBtn');
cy.get('[data-cy="rotate"]').as('rotateBtn');
cy.get('.slab-thickness').as('slabSlider');
cy.get('.select-ohif').as('modeDropdown');
cy.get('.ohif-check-label').as('modeCheckbox');
+4 -4
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/viewer",
"version": "4.5.19",
"version": "4.5.28",
"description": "OHIF Viewer",
"author": "OHIF Contributors",
"license": "MIT",
@@ -57,9 +57,9 @@
"@ohif/extension-dicom-rt": "^0.4.9",
"@ohif/extension-dicom-segmentation": "^0.4.7",
"@ohif/extension-lesion-tracker": "^0.2.1",
"@ohif/extension-vtk": "^1.7.11",
"@ohif/i18n": "^0.52.8",
"@ohif/ui": "^1.5.6",
"@ohif/extension-vtk": "^1.8.0",
"@ohif/i18n": "^0.53.0",
"@ohif/ui": "^1.5.7",
"@tanem/react-nprogress": "^1.1.25",
"classnames": "^2.2.6",
"core-js": "^3.2.1",
+5 -1
View File
@@ -1,13 +1,17 @@
import React from 'react';
import './NotFound.css';
import { Link } from 'react-router-dom';
import { useAppContext } from '../context/AppContext';
export default function NotFound({ message = 'Sorry, this page does not exist.', showGoBackButton = true }) {
const context = useAppContext();
return (
<div className={'not-found'}>
<div>
<h4>{message}</h4>
{showGoBackButton && (
{showGoBackButton && context.appConfig.showStudyList && (
<h5>
<Link to={'/'}>Go back to the Study List</Link>
</h5>
@@ -25,7 +25,6 @@ export default function(store, oidcSettings) {
automaticSilentRenew: true,
revokeAccessTokenOnSignout: true,
filterProtocolClaims: true,
loadUserInfo: true,
};
const userManager = createUserManager(settings);
+3 -1
View File
@@ -2,9 +2,11 @@ import cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader';
let initialized = false;
const MAX_CONCURRENCY = 6;
export default function initWebWorkers() {
const config = {
maxWebWorkers: Math.max(navigator.hardwareConcurrency - 1, 1),
maxWebWorkers: Math.max(Math.min(navigator.hardwareConcurrency - 1, MAX_CONCURRENCY), 1),
startWebWorkersOnDemand: true,
taskConfiguration: {
decodeTask: {
+4 -4
View File
@@ -16061,10 +16061,10 @@ react-transition-group@^4.1.1:
loose-envify "^1.4.0"
prop-types "^15.6.2"
react-vtkjs-viewport@^0.13.1:
version "0.13.1"
resolved "https://registry.yarnpkg.com/react-vtkjs-viewport/-/react-vtkjs-viewport-0.13.1.tgz#11b69873377cd66b6522079eb05d54317c2e8903"
integrity sha512-P2jmv0rZtas9+pZCzVBr0R/EqmXpWqPP8JA1DScwKgFoYj4ApqnQeLXSVz2VHXi58q87k2uay9k7xcchLiStrQ==
react-vtkjs-viewport@^0.14.2:
version "0.14.2"
resolved "https://registry.yarnpkg.com/react-vtkjs-viewport/-/react-vtkjs-viewport-0.14.2.tgz#8b3363e4fc0b2084e72d59b3bb6246c27b08b6a4"
integrity sha512-sIUU2Om0O4mby9tubjeVRPCNDGSKh2OM7tgpd+wxxjvAqOGRIab51jL+mZTP4ijTMRzZ8Gvl6c4ywOuXnH4RJA==
dependencies:
date-fns "^2.2.1"
gl-matrix "^3.1.0"