* feat: 🎸 Load spinner when selecting gcloud store. Add key on td * feat: 🎸 Code review. Translate loading study status * feat: 🎸 Code review. Minor code refactoring * fix: add missing study and index declerations * Newer version of react-dates (calendar input component) * Add useMedia hook * Add useDebounce hook * Export hooks for consumption * Pull search filter into own component * StudyListWithData to StudyListRoute * Rename pagination component * Rename Toolbar * CustomeDateRangePicker to plain ol' css * Remove unused styles * Misc * Magic to make our "OR" filters work * Play w/ Mobile styles * Fix pagination pushing out max width for viewport * Tidy up small and medium templates * Remove unecessary nesting * Better mobile header and logo styles * Fix studyList font size * Remove unused code * hookup on click * Fix table search selectors * Cypress uses medium width * Remove irrelevant test * Fix primary sort * Fix sort for our smaller displays * fix study list sometimes longer than specified rowsPerPage * Simplify date picker styles * restore study date filters * Fix about table styling * fix take value for search * Fix header sizing for viewer and list route * Remove dead code * Restore isLoading * Update platform/ui/src/components/studyList/StudyList.styl Co-Authored-By: Rodrigo Antinarelli <rodrigoantinarelli@gmail.com> * Attempt first usage of translations w/ hooks * Pull from react-i18n library * Fit presets on to a single line * add no results message * Show error message in studyList table * Update input selectors for e2e tests * Make sure messages span all columns * fix test selector for table results * Skip hover for result rows * fix imports * Date filtering w/ config * Default export * Pushed to PageComponent * Remove DropZone This previously only worked for null/undefined studies. I'm unable to trigger the state by testing the data. This "might" have happened when using a fresh/empty PACS; but even an empty array of studies would not show
97 lines
2.4 KiB
JavaScript
97 lines
2.4 KiB
JavaScript
// If you want to continue using CSS stylesheets and classes...
|
|
// https://github.com/airbnb/react-dates#initialize
|
|
import 'react-dates/initialize';
|
|
import 'react-dates/lib/css/_datepicker.css';
|
|
import './CustomDateRangePicker.css';
|
|
|
|
import React from 'react';
|
|
import PropTypes from 'prop-types';
|
|
import { DateRangePicker } from 'react-dates';
|
|
|
|
export default class CustomDateRangePicker extends React.Component {
|
|
static propTypes = {
|
|
presets: PropTypes.arrayOf(
|
|
PropTypes.shape({
|
|
text: PropTypes.string,
|
|
start: PropTypes.required,
|
|
end: PropTypes.required,
|
|
})
|
|
),
|
|
};
|
|
|
|
constructor(props) {
|
|
super(props);
|
|
this.state = {
|
|
startDate: this.props.startDate,
|
|
endDate: this.props.endDate,
|
|
};
|
|
|
|
this.renderDatePresets = this.renderDatePresets.bind(this);
|
|
this.onDatesChange = this.onDatesChange.bind(this);
|
|
}
|
|
|
|
onDatesChange({ startDate, endDate, preset }) {
|
|
this.setState({ startDate, endDate });
|
|
if (this.props.onDatesChange) {
|
|
this.props.onDatesChange({ startDate, endDate, preset });
|
|
}
|
|
}
|
|
|
|
renderDatePresets() {
|
|
const { presets } = this.props;
|
|
const { startDate, endDate } = this.state;
|
|
|
|
return (
|
|
<div className="PresetDateRangePicker_panel">
|
|
{presets.map(({ text, start, end }) => {
|
|
const isSelected = startDate === start && endDate === end;
|
|
|
|
return (
|
|
<button
|
|
key={text}
|
|
type="button"
|
|
className={`PresetDateRangePicker_button ${
|
|
isSelected ? 'PresetDateRangePicker_button__selected' : ''
|
|
}`}
|
|
onClick={() =>
|
|
this.onDatesChange({
|
|
startDate: start,
|
|
endDate: end,
|
|
preset: true,
|
|
})
|
|
}
|
|
>
|
|
{text}
|
|
</button>
|
|
);
|
|
})}
|
|
</div>
|
|
);
|
|
}
|
|
|
|
render() {
|
|
let {
|
|
autoFocus,
|
|
autoFocusEndDate,
|
|
initialStartDate,
|
|
initialEndDate,
|
|
stateDateWrapper,
|
|
onDatesChange,
|
|
startDate,
|
|
endDate,
|
|
presets,
|
|
...dateRangePickerProps
|
|
} = this.props;
|
|
|
|
return (
|
|
<DateRangePicker
|
|
{...dateRangePickerProps}
|
|
startDate={this.state.startDate}
|
|
endDate={this.state.endDate}
|
|
renderCalendarInfo={this.renderDatePresets}
|
|
onDatesChange={this.onDatesChange}
|
|
/>
|
|
);
|
|
}
|
|
}
|