* fix: Combined Hotkeys for special characters * add record method to hotkey manager * fix record plugin * remove unused component * add record to modal props * rename record method * replace handlers to use hotkeyRecord * fix combined keys * change expected result count from 18 to 17 * autoformat * Remove duplicate test, that was testing the wrong things; fix label; update configs * Revert "Remove duplicate test, that was testing the wrong things; fix label; update configs" This reverts commit 4292f4fe67351962d61cae623b920dcbd87dd71d. * Fix the record plugin's registration * fix exposed record method usage * adding logging for info level items * Hotkey definitions don't need to be globally reactive; use localstorage/appconfig as sources of truth; not redux * Tidy up test * Remove unused code from UserPreferencesForm * Log info when we run a command * fix hotkey preference restore * use application configured hotkeys if there are no user preferred * Avoid logging circular ref * Fix callouts * Fix small issue with array * Fix langua issue after refactor and merge * Refactor on recordCurrentCombo as Rodrigo did before * Separating components in 2 files * WIP Refactor to simplify the user preferences and move into each form the save and controll functionalities * Remove context * Remove unused import * Initial work on Field treatment * Refactor General preferences * Small refactor removing type from HotkeyField * small update on style * Refactor and layout fixed * Make hotkeys preferences working with old hotkeys row * Move error handling out of hotkey row/input component * WIP custom form * Moving validation function to component * Exposing hotkeyRecord as it does not depend on HotkeyManager Class * Making hotkeyField as much detached possible from parent component * Small refactors * Refactor on user preferences * Clean up into the changes * Small fix to let save working * Style finish * move about docs into about folder * Fix double tap on single keys * Style refactor * Remove log * Fix log issues on unit tests * Fix unit test breaking on ohif/core index * Fixing hotkeys unpause unit test issue * Rename file to adopt lowercase * Rename file to adopt lowercase * Fixing callouts * Big refactor miving some of the components into viewer and creating small components into ohif/ui * Typo on folder name * Updating ohif ui docs * Remove comments * Fix binding of combo keys * Fix some cypress tests failures * Fixing onCancel button * Fixing e2e tests * Small style update * Fixing unit tests failing after fix issue * Remove some not used code * Remove left over after debug * Adding prevent default on hotkeys events * Fixinf existing hotkeys validator with 3 keys pressed * Exposing hotkeys as root level on ohif-core * Clean up * Exposing all availableLanguages with labels and fixing an issue on language switcher * Fixing e2e cypress tests * Preveinting some simple errors * Treating error once we try to set hotkey definitions * Adding ui notification on setHotkeys errors * Implementing a service queue request to hold until functions are implemented * Making sure toFixed is only called on Numbers Co-authored-by: Danny Brown <danny.ri.brown@gmail.com> Co-authored-by: Gustavo André Lelis <galelis@gmail.com>
125 lines
3.0 KiB
JavaScript
125 lines
3.0 KiB
JavaScript
import React, { useState, useEffect } from 'react';
|
|
import { Link, withRouter } from 'react-router-dom';
|
|
import { withTranslation } from 'react-i18next';
|
|
|
|
import PropTypes from 'prop-types';
|
|
|
|
import { Dropdown, AboutContent, withModal } from '@ohif/ui';
|
|
|
|
import { UserPreferences } from './../UserPreferences';
|
|
import OHIFLogo from '../OHIFLogo/OHIFLogo.js';
|
|
import './Header.css';
|
|
|
|
// Context
|
|
import AppContext from './../../context/AppContext';
|
|
|
|
function Header(props) {
|
|
const {
|
|
t,
|
|
user,
|
|
userManager,
|
|
modal: { show },
|
|
home,
|
|
location,
|
|
children,
|
|
} = props;
|
|
|
|
const [options, setOptions] = useState([]);
|
|
|
|
useEffect(() => {
|
|
const optionsValue = [
|
|
{
|
|
title: t('About'),
|
|
icon: { name: 'info' },
|
|
onClick: () =>
|
|
show({
|
|
content: AboutContent,
|
|
title: t('OHIF Viewer - About'),
|
|
}),
|
|
},
|
|
{
|
|
title: t('Preferences'),
|
|
icon: {
|
|
name: 'user',
|
|
},
|
|
onClick: () =>
|
|
show({
|
|
content: UserPreferences,
|
|
title: t('User Preferences'),
|
|
}),
|
|
},
|
|
];
|
|
|
|
if (user && userManager) {
|
|
optionsValue.push({
|
|
title: t('Logout'),
|
|
icon: { name: 'power-off' },
|
|
onClick: () => userManager.signoutRedirect(),
|
|
});
|
|
}
|
|
|
|
setOptions(optionsValue);
|
|
}, [setOptions, show, t, user, userManager]);
|
|
|
|
const { appConfig = {} } = AppContext;
|
|
const showStudyList =
|
|
appConfig.showStudyList !== undefined ? appConfig.showStudyList : true;
|
|
|
|
// ANTD -- Hamburger, Drawer, Menu
|
|
return (
|
|
<>
|
|
<div className="notification-bar">{t('INVESTIGATIONAL USE ONLY')}</div>
|
|
<div className={`entry-header ${home ? 'header-big' : ''}`}>
|
|
<div className="header-left-box">
|
|
{location && location.studyLink && (
|
|
<Link
|
|
to={location.studyLink}
|
|
className="header-btn header-viewerLink"
|
|
>
|
|
{t('Back to Viewer')}
|
|
</Link>
|
|
)}
|
|
|
|
{children}
|
|
|
|
{showStudyList && !home && (
|
|
<Link
|
|
className="header-btn header-studyListLinkSection"
|
|
to={{
|
|
pathname: '/',
|
|
state: { studyLink: location.pathname },
|
|
}}
|
|
>
|
|
{t('Study list')}
|
|
</Link>
|
|
)}
|
|
</div>
|
|
|
|
<div className="header-menu">
|
|
<span className="research-use">{t('INVESTIGATIONAL USE ONLY')}</span>
|
|
<Dropdown title={t('Options')} list={options} align="right" />
|
|
</div>
|
|
</div>
|
|
</>
|
|
);
|
|
}
|
|
|
|
Header.propTypes = {
|
|
home: PropTypes.bool.isRequired,
|
|
location: PropTypes.object.isRequired,
|
|
children: PropTypes.node,
|
|
t: PropTypes.func.isRequired,
|
|
userManager: PropTypes.object,
|
|
user: PropTypes.object,
|
|
modal: PropTypes.object,
|
|
};
|
|
|
|
Header.defaultProps = {
|
|
home: true,
|
|
children: OHIFLogo(),
|
|
};
|
|
|
|
export default withTranslation(['Header', 'AboutModal'])(
|
|
withRouter(withModal(Header))
|
|
);
|