New: Calendar option for full color events

(cherry picked from commit 0210b5c5c1b5c56dce6f4c9f3f56366adba950d3)
pull/9174/head
Mark McDowall 4 years ago committed by Bogdan
parent e3abda9afc
commit 4e827e726f

@ -1,3 +1,5 @@
$fullColorGradient: rgba(244, 245, 246, 0.2);
.event { .event {
overflow-x: hidden; overflow-x: hidden;
margin: 4px 2px; margin: 4px 2px;
@ -44,6 +46,11 @@
font-size: $defaultFontSize; font-size: $defaultFontSize;
} }
.statusContainer {
display: flex;
align-items: center;
}
.statusIcon { .statusIcon {
margin-left: 3px; margin-left: 3px;
} }
@ -55,35 +62,84 @@
.downloaded { .downloaded {
border-left-color: var(--successColor) !important; border-left-color: var(--successColor) !important;
&:global(.fullColor) {
background-color: rgba(39, 194, 76, 0.4) !important;
}
&:global(.colorImpaired) { &:global(.colorImpaired) {
border-left-color: color(var(--successColor), saturation(+15%)) !important; border-left-color: color(#27c24c saturation(+15%)) !important;
} }
} }
.queue { .queue {
border-left-color: var(--purple) !important; border-left-color: var(--purple) !important;
&:global(.fullColor) {
background-color: rgba(122, 67, 182, 0.4) !important;
}
} }
.unmonitored { .unmonitored {
border-left-color: var(--gray) !important; border-left-color: var(--gray) !important;
&:global(.fullColor) {
background-color: rgba(173, 173, 173, 0.5) !important;
}
&:global(.colorImpaired) {
background: repeating-linear-gradient(45deg, var(--colorImpairedGradientDark), var(--colorImpairedGradientDark) 5px, var(--colorImpairedGradient) 5px, var(--colorImpairedGradient) 10px);
}
&:global(.fullColor.colorImpaired) {
background: repeating-linear-gradient(45deg, $fullColorGradient, $fullColorGradient 5px, transparent 5px, transparent 10px);
}
} }
.missingUnmonitored { .missingUnmonitored {
border-left-color: var(--warningColor) !important; border-left-color: var(--warningColor) !important;
&:global(.fullColor) {
background-color: rgba(255, 165, 0, 0.6) !important;
}
&:global(.colorImpaired) { &:global(.colorImpaired) {
background: repeating-linear-gradient(45deg, var(--colorImpairedGradientDark), var(--colorImpairedGradientDark) 5px, var(--colorImpairedGradient) 5px, var(--colorImpairedGradient) 10px); background: repeating-linear-gradient(90deg, var(--colorImpairedGradientDark), var(--colorImpairedGradientDark) 5px, var(--colorImpairedGradient) 5px, var(--colorImpairedGradient) 10px);
}
&:global(.fullColor.colorImpaired) {
background: repeating-linear-gradient(90deg, $fullColorGradient, $fullColorGradient 5px, transparent 5px, transparent 10px);
} }
} }
.missingMonitored { .missingMonitored {
border-left-color: var(--dangerColor) !important; border-left-color: var(--dangerColor) !important;
&:global(.fullColor) {
background-color: rgba(240, 80, 80, 0.6) !important;
}
&:global(.colorImpaired) { &:global(.colorImpaired) {
border-left-color: color(#f05050 saturation(+15%)) !important;
background: repeating-linear-gradient(90deg, var(--colorImpairedGradientDark), var(--colorImpairedGradientDark) 5px, var(--colorImpairedGradient) 5px, var(--colorImpairedGradient) 10px); background: repeating-linear-gradient(90deg, var(--colorImpairedGradientDark), var(--colorImpairedGradientDark) 5px, var(--colorImpairedGradient) 5px, var(--colorImpairedGradient) 10px);
} }
&:global(.fullColor.colorImpaired) {
background: repeating-linear-gradient(90deg, $fullColorGradient, $fullColorGradient 5px, transparent 5px, transparent 10px);
}
} }
.continuing { .continuing {
border-left-color: var(--primaryColor) !important; border-left-color: var(--primaryColor) !important;
&:global(.fullColor) {
background-color: rgba(93, 156, 236, 0.4) !important;
}
&:global(.colorImpaired) {
background: repeating-linear-gradient(90deg, var(--colorImpairedGradientDark), var(--colorImpairedGradientDark) 5px, var(--colorImpairedGradient) 5px, var(--colorImpairedGradient) 10px);
}
&:global(.fullColor.colorImpaired) {
background: repeating-linear-gradient(90deg, $fullColorGradient, $fullColorGradient 5px, transparent 5px, transparent 10px);
}
} }

@ -12,6 +12,7 @@ interface CssExports {
'movieInfo': string; 'movieInfo': string;
'movieTitle': string; 'movieTitle': string;
'queue': string; 'queue': string;
'statusContainer': string;
'statusIcon': string; 'statusIcon': string;
'unmonitored': string; 'unmonitored': string;
} }

@ -1,7 +1,7 @@
import classNames from 'classnames'; import classNames from 'classnames';
import moment from 'moment'; import moment from 'moment';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import React, { Component } from 'react'; import React, { Component, Fragment } from 'react';
import Icon from 'Components/Icon'; import Icon from 'Components/Icon';
import Link from 'Components/Link/Link'; import Link from 'Components/Link/Link';
import { icons, kinds } from 'Helpers/Props'; import { icons, kinds } from 'Helpers/Props';
@ -32,6 +32,7 @@ class CalendarEvent extends Component {
queueItem, queueItem,
showMovieInformation, showMovieInformation,
showCutoffUnmetIcon, showCutoffUnmetIcon,
fullColorEvents,
colorImpairedMode, colorImpairedMode,
date date
} = this.props; } = this.props;
@ -56,13 +57,14 @@ class CalendarEvent extends Component {
} }
return ( return (
<div> <Fragment>
<Link <Link
className={classNames( className={classNames(
styles.event, styles.event,
styles.link, styles.link,
styles[statusStyle], styles[statusStyle],
colorImpairedMode && 'colorImpaired' colorImpairedMode && 'colorImpaired',
fullColorEvents && 'fullColor'
)} )}
// component="div" // component="div"
to={link} to={link}
@ -72,48 +74,52 @@ class CalendarEvent extends Component {
{title} {title}
</div> </div>
{ <div className={styles.statusContainer}>
!!queueItem && {
<span className={styles.statusIcon}> queueItem ?
<CalendarEventQueueDetails <span className={styles.statusIcon}>
{...queueItem} <CalendarEventQueueDetails
/> {...queueItem}
</span> />
} </span> :
null
{ }
!queueItem && grabbed &&
<Icon {
className={styles.statusIcon} !queueItem && grabbed ?
name={icons.DOWNLOADING} <Icon
title={translate('MovieIsDownloading')} className={styles.statusIcon}
/> name={icons.DOWNLOADING}
} title={translate('MovieIsDownloading')}
/> :
{ null
showCutoffUnmetIcon && }
!!movieFile &&
movieFile.qualityCutoffNotMet && {
<Icon showCutoffUnmetIcon && !!movieFile && movieFile.qualityCutoffNotMet ?
className={styles.statusIcon} <Icon
name={icons.MOVIE_FILE} className={styles.statusIcon}
kind={kinds.WARNING} name={icons.MOVIE_FILE}
title={translate('QualityCutoffHasNotBeenMet')} kind={kinds.WARNING}
/> title={translate('QualityCutoffHasNotBeenMet')}
} /> :
null
}
</div>
</div> </div>
{ {
showMovieInformation && showMovieInformation ?
<div className={styles.movieInfo}> <div className={styles.movieInfo}>
<div className={styles.genres}> <div className={styles.genres}>
{joinedGenres} {joinedGenres}
</div> </div>
</div> </div> :
null
} }
{ {
showMovieInformation && showMovieInformation ?
<div className={styles.movieInfo}> <div className={styles.movieInfo}>
<div className={styles.genres}> <div className={styles.genres}>
{eventType.join(', ')} {eventType.join(', ')}
@ -121,11 +127,11 @@ class CalendarEvent extends Component {
<div> <div>
{certification} {certification}
</div> </div>
</div> </div> :
null
} }
</Link> </Link>
</Fragment>
</div>
); );
} }
} }
@ -147,6 +153,7 @@ CalendarEvent.propTypes = {
queueItem: PropTypes.object, queueItem: PropTypes.object,
showMovieInformation: PropTypes.bool.isRequired, showMovieInformation: PropTypes.bool.isRequired,
showCutoffUnmetIcon: PropTypes.bool.isRequired, showCutoffUnmetIcon: PropTypes.bool.isRequired,
fullColorEvents: PropTypes.bool.isRequired,
timeFormat: PropTypes.string.isRequired, timeFormat: PropTypes.string.isRequired,
colorImpairedMode: PropTypes.bool.isRequired, colorImpairedMode: PropTypes.bool.isRequired,
date: PropTypes.string.isRequired date: PropTypes.string.isRequired

@ -8,18 +8,21 @@ import styles from './Legend.css';
function Legend(props) { function Legend(props) {
const { const {
view,
showCutoffUnmetIcon, showCutoffUnmetIcon,
fullColorEvents,
colorImpairedMode colorImpairedMode
} = props; } = props;
const iconsToShow = []; const iconsToShow = [];
const isAgendaView = view === 'agenda';
if (showCutoffUnmetIcon) { if (showCutoffUnmetIcon) {
iconsToShow.push( iconsToShow.push(
<LegendIconItem <LegendIconItem
name={translate('CutoffUnmet')} name={translate('CutoffUnmet')}
icon={icons.MOVIE_FILE} icon={icons.MOVIE_FILE}
kind={kinds.WARNING} kind={fullColorEvents ? kinds.DEFAULT : kinds.WARNING}
tooltip={translate('QualityOrLangCutoffHasNotBeenMet')} tooltip={translate('QualityOrLangCutoffHasNotBeenMet')}
/> />
); );
@ -29,45 +32,58 @@ function Legend(props) {
<div className={styles.legend}> <div className={styles.legend}>
<div> <div>
<LegendItem <LegendItem
style='ended' status="downloaded"
name={translate('DownloadedAndMonitored')} name={translate('DownloadedAndMonitored')}
isAgendaView={isAgendaView}
fullColorEvents={fullColorEvents}
colorImpairedMode={colorImpairedMode} colorImpairedMode={colorImpairedMode}
/> />
<LegendItem <LegendItem
style='availNotMonitored' status="unmonitored"
name={translate('DownloadedButNotMonitored')} name={translate('DownloadedButNotMonitored')}
isAgendaView={isAgendaView}
fullColorEvents={fullColorEvents}
colorImpairedMode={colorImpairedMode} colorImpairedMode={colorImpairedMode}
/> />
</div> </div>
<div> <div>
<LegendItem <LegendItem
style='missingMonitored' status="missingMonitored"
name={translate('MissingMonitoredAndConsideredAvailable')} name={translate('MissingMonitoredAndConsideredAvailable')}
isAgendaView={isAgendaView}
fullColorEvents={fullColorEvents}
colorImpairedMode={colorImpairedMode} colorImpairedMode={colorImpairedMode}
/> />
<LegendItem <LegendItem
style='missingUnmonitored' status="missingUnmonitored"
name={translate('MissingNotMonitored')} name={translate('MissingNotMonitored')}
isAgendaView={isAgendaView}
fullColorEvents={fullColorEvents}
colorImpairedMode={colorImpairedMode} colorImpairedMode={colorImpairedMode}
/> />
</div> </div>
<div> <div>
<LegendItem <LegendItem
style='queue' status="queue"
name={translate('Queued')} name={translate('Queued')}
isAgendaView={isAgendaView}
fullColorEvents={fullColorEvents}
colorImpairedMode={colorImpairedMode} colorImpairedMode={colorImpairedMode}
/> />
<LegendItem <LegendItem
style='continuing' status="continuing"
name={translate('Unreleased')} name={translate('Unreleased')}
isAgendaView={isAgendaView}
fullColorEvents={fullColorEvents}
colorImpairedMode={colorImpairedMode} colorImpairedMode={colorImpairedMode}
/> />
</div> </div>
{ {
iconsToShow.length > 0 && iconsToShow.length > 0 &&
<div> <div>
@ -79,7 +95,9 @@ function Legend(props) {
} }
Legend.propTypes = { Legend.propTypes = {
view: PropTypes.string.isRequired,
showCutoffUnmetIcon: PropTypes.bool.isRequired, showCutoffUnmetIcon: PropTypes.bool.isRequired,
fullColorEvents: PropTypes.bool.isRequired,
colorImpairedMode: PropTypes.bool.isRequired colorImpairedMode: PropTypes.bool.isRequired
}; };

@ -6,10 +6,12 @@ import Legend from './Legend';
function createMapStateToProps() { function createMapStateToProps() {
return createSelector( return createSelector(
(state) => state.calendar.options, (state) => state.calendar.options,
(state) => state.calendar.view,
createUISettingsSelector(), createUISettingsSelector(),
(calendarOptions, uiSettings) => { (calendarOptions, view, uiSettings) => {
return { return {
...calendarOptions, ...calendarOptions,
view,
colorImpairedMode: uiSettings.enableColorImpairedMode colorImpairedMode: uiSettings.enableColorImpairedMode
}; };
} }

@ -8,6 +8,7 @@ function LegendIconItem(props) {
name, name,
icon, icon,
kind, kind,
darken,
tooltip tooltip
} = props; } = props;
@ -19,6 +20,7 @@ function LegendIconItem(props) {
<Icon <Icon
className={styles.icon} className={styles.icon}
name={icon} name={icon}
darken={darken}
kind={kind} kind={kind}
/> />
@ -31,7 +33,12 @@ LegendIconItem.propTypes = {
name: PropTypes.string.isRequired, name: PropTypes.string.isRequired,
icon: PropTypes.object.isRequired, icon: PropTypes.object.isRequired,
kind: PropTypes.string.isRequired, kind: PropTypes.string.isRequired,
darken: PropTypes.bool.isRequired,
tooltip: PropTypes.string.isRequired tooltip: PropTypes.string.isRequired
}; };
LegendIconItem.defaultProps = {
darken: false
};
export default LegendIconItem; export default LegendIconItem;

@ -1,74 +1,37 @@
.legendItemContainer { .legendItem {
margin-right: 5px; margin: 3px 0;
margin-right: 6px;
padding-left: 5px;
width: 220px; width: 220px;
border-left-width: 4px;
border-left-style: solid;
cursor: default;
} }
.legendItem { /*
display: inline-flex; * Status
margin-top: -1px; */
vertical-align: middle;
line-height: 16px;
}
.legendItemColor { .downloaded {
margin-right: 8px; composes: downloaded from '~Calendar/Events/CalendarEvent.css';
width: 30px;
height: 16px;
border-radius: 4px;
} }
.queue { .queue {
composes: legendItemColor; composes: queue from '~Calendar/Events/CalendarEvent.css';
background-color: var(--queueColor);
}
.continuing {
composes: legendItemColor;
background-color: var(--primaryColor);
}
.availNotMonitored {
composes: legendItemColor;
background-color: var(--darkGray);
} }
.ended { .unmonitored {
composes: legendItemColor; composes: unmonitored from '~Calendar/Events/CalendarEvent.css';
background-color: var(--successColor);
}
.missingMonitored {
composes: legendItemColor;
background-color: var(--dangerColor);
&:global(.colorImpaired) {
background: repeating-linear-gradient(90deg, color(var(--dangerColor) shade(5%)), color(var(--dangerColor) shade(5%)) 5px, color(var(--dangerColor) shade(15%)) 5px, color(var(--dangerColor) shade(15%)) 10px);
}
} }
.missingUnmonitored { .missingUnmonitored {
composes: legendItemColor; composes: missingUnmonitored from '~Calendar/Events/CalendarEvent.css';
background-color: var(--warningColor);
&:global(.colorImpaired) {
background: repeating-linear-gradient(45deg, var(--warningColor), var(--warningColor) 5px, color(var(--warningColor) tint(15%)) 5px, color(var(--warningColor) tint(15%)) 10px);
}
}
.missingMonitoredColorImpaired {
background: repeating-linear-gradient(90deg, var(--colorImpairedGradientDark), var(--colorImpairedGradientDark) 5px, var(--colorImpairedGradient) 5px, var(--colorImpairedGradient) 10px);
} }
.missingUnmonitoredColorImpaired { .missingMonitored {
background: repeating-linear-gradient(45deg, var(--colorImpairedGradientDark), var(--colorImpairedGradientDark) 5px, var(--colorImpairedGradient) 5px, var(--colorImpairedGradient) 10px); composes: missingMonitored from '~Calendar/Events/CalendarEvent.css';
} }
.legendItemText { .continuing {
display: inline-block; composes: continuing from '~Calendar/Events/CalendarEvent.css';
} }

@ -1,18 +1,13 @@
// This file is automatically generated. // This file is automatically generated.
// Please do not change this file! // Please do not change this file!
interface CssExports { interface CssExports {
'availNotMonitored': string;
'continuing': string; 'continuing': string;
'ended': string; 'downloaded': string;
'legendItem': string; 'legendItem': string;
'legendItemColor': string;
'legendItemContainer': string;
'legendItemText': string;
'missingMonitored': string; 'missingMonitored': string;
'missingMonitoredColorImpaired': string;
'missingUnmonitored': string; 'missingUnmonitored': string;
'missingUnmonitoredColorImpaired': string;
'queue': string; 'queue': string;
'unmonitored': string;
} }
export const cssExports: CssExports; export const cssExports: CssExports;
export default cssExports; export default cssExports;

@ -6,29 +6,31 @@ import styles from './LegendItem.css';
function LegendItem(props) { function LegendItem(props) {
const { const {
name, name,
style, status,
isAgendaView,
fullColorEvents,
colorImpairedMode colorImpairedMode
} = props; } = props;
return ( return (
<div className={styles.legendItemContainer}> <div
<div className={classNames(
className={classNames( styles.legendItem,
styles.legendItem, styles[status],
styles[style], colorImpairedMode && 'colorImpaired',
colorImpairedMode && 'colorImpaired' fullColorEvents && !isAgendaView && 'fullColor'
)} )}
/> >
<div className={classNames(styles.legendItemText, colorImpairedMode && styles[`${style}ColorImpaired`])}> {name}
{name}
</div>
</div> </div>
); );
} }
LegendItem.propTypes = { LegendItem.propTypes = {
name: PropTypes.string.isRequired, name: PropTypes.string.isRequired,
style: PropTypes.string.isRequired, status: PropTypes.string.isRequired,
isAgendaView: PropTypes.bool.isRequired,
fullColorEvents: PropTypes.bool.isRequired,
colorImpairedMode: PropTypes.bool.isRequired colorImpairedMode: PropTypes.bool.isRequired
}; };

@ -26,14 +26,16 @@ class CalendarOptionsModalContent extends Component {
firstDayOfWeek, firstDayOfWeek,
calendarWeekColumnHeader, calendarWeekColumnHeader,
timeFormat, timeFormat,
enableColorImpairedMode enableColorImpairedMode,
fullColorEvents
} = props; } = props;
this.state = { this.state = {
firstDayOfWeek, firstDayOfWeek,
calendarWeekColumnHeader, calendarWeekColumnHeader,
timeFormat, timeFormat,
enableColorImpairedMode enableColorImpairedMode,
fullColorEvents
}; };
} }
@ -94,6 +96,7 @@ class CalendarOptionsModalContent extends Component {
const { const {
showMovieInformation, showMovieInformation,
showCutoffUnmetIcon, showCutoffUnmetIcon,
fullColorEvents,
onModalClose onModalClose
} = this.props; } = this.props;
@ -136,6 +139,18 @@ class CalendarOptionsModalContent extends Component {
onChange={this.onOptionInputChange} onChange={this.onOptionInputChange}
/> />
</FormGroup> </FormGroup>
<FormGroup>
<FormLabel>{translate('FullColorEvents')}</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="fullColorEvents"
value={fullColorEvents}
helpText={translate('FullColorEventsHelpText')}
onChange={this.onOptionInputChange}
/>
</FormGroup>
</Form> </Form>
</FieldSet> </FieldSet>
@ -176,7 +191,9 @@ class CalendarOptionsModalContent extends Component {
value={timeFormat} value={timeFormat}
onChange={this.onGlobalInputChange} onChange={this.onGlobalInputChange}
/> />
</FormGroup><FormGroup> </FormGroup>
<FormGroup>
<FormLabel>{translate('EnableColorImpairedMode')}</FormLabel> <FormLabel>{translate('EnableColorImpairedMode')}</FormLabel>
<FormInputGroup <FormInputGroup
@ -187,7 +204,6 @@ class CalendarOptionsModalContent extends Component {
onChange={this.onGlobalInputChange} onChange={this.onGlobalInputChange}
/> />
</FormGroup> </FormGroup>
</Form> </Form>
</FieldSet> </FieldSet>
</ModalBody> </ModalBody>
@ -209,6 +225,7 @@ CalendarOptionsModalContent.propTypes = {
calendarWeekColumnHeader: PropTypes.string.isRequired, calendarWeekColumnHeader: PropTypes.string.isRequired,
timeFormat: PropTypes.string.isRequired, timeFormat: PropTypes.string.isRequired,
enableColorImpairedMode: PropTypes.bool.isRequired, enableColorImpairedMode: PropTypes.bool.isRequired,
fullColorEvents: PropTypes.bool.isRequired,
dispatchSetCalendarOption: PropTypes.func.isRequired, dispatchSetCalendarOption: PropTypes.func.isRequired,
dispatchSaveUISettings: PropTypes.func.isRequired, dispatchSaveUISettings: PropTypes.func.isRequired,
onModalClose: PropTypes.func.isRequired onModalClose: PropTypes.func.isRequired

@ -12,10 +12,18 @@
.info { .info {
color: var(--infoColor); color: var(--infoColor);
&:global(.darken) {
color: color(var(--infoColor) shade(30%));
}
} }
.pink { .pink {
color: var(--pink); color: var(--pink);
&:global(.darken) {
color: color(var(--pink) shade(30%));
}
} }
.success { .success {

@ -18,6 +18,7 @@ class Icon extends PureComponent {
kind, kind,
size, size,
title, title,
darken,
isSpinning, isSpinning,
...otherProps ...otherProps
} = this.props; } = this.props;
@ -26,7 +27,8 @@ class Icon extends PureComponent {
<FontAwesomeIcon <FontAwesomeIcon
className={classNames( className={classNames(
className, className,
styles[kind] styles[kind],
darken && 'darken'
)} )}
icon={name} icon={name}
spin={isSpinning} spin={isSpinning}
@ -59,6 +61,7 @@ Icon.propTypes = {
kind: PropTypes.string.isRequired, kind: PropTypes.string.isRequired,
size: PropTypes.number.isRequired, size: PropTypes.number.isRequired,
title: PropTypes.oneOfType([PropTypes.string, PropTypes.func]), title: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),
darken: PropTypes.bool.isRequired,
isSpinning: PropTypes.bool.isRequired, isSpinning: PropTypes.bool.isRequired,
fixedWidth: PropTypes.bool.isRequired fixedWidth: PropTypes.bool.isRequired
}; };
@ -66,6 +69,7 @@ Icon.propTypes = {
Icon.defaultProps = { Icon.defaultProps = {
kind: kinds.DEFAULT, kind: kinds.DEFAULT,
size: 14, size: 14,
darken: false,
isSpinning: false, isSpinning: false,
fixedWidth: false fixedWidth: false
}; };

@ -43,7 +43,8 @@ export const defaultState = {
options: { options: {
showMovieInformation: true, showMovieInformation: true,
showCutoffUnmetIcon: false showCutoffUnmetIcon: false,
fullColorEvents: false
}, },
selectedFilterKey: 'monitored', selectedFilterKey: 'monitored',

@ -86,6 +86,10 @@ module.exports = {
inputWarningBoxShadowColor: 'rgba(255, 165, 0, 0.6)', inputWarningBoxShadowColor: 'rgba(255, 165, 0, 0.6)',
colorImpairedGradient: '#707070', colorImpairedGradient: '#707070',
colorImpairedGradientDark: '#424242', colorImpairedGradientDark: '#424242',
colorImpairedDangerGradient: '#d84848',
colorImpairedWarningGradient: '#e59400',
colorImpairedPrimaryGradient: '#538cd4',
colorImpairedGrayGradient: '#9b9b9b',
// //
// Buttons // Buttons

@ -87,6 +87,10 @@ module.exports = {
inputWarningBoxShadowColor: 'rgba(255, 165, 0, 0.6)', inputWarningBoxShadowColor: 'rgba(255, 165, 0, 0.6)',
colorImpairedGradient: '#ffffff', colorImpairedGradient: '#ffffff',
colorImpairedGradientDark: '#f4f5f6', colorImpairedGradientDark: '#f4f5f6',
colorImpairedDangerGradient: '#d84848',
colorImpairedWarningGradient: '#e59400',
colorImpairedPrimaryGradient: '#538cd4',
colorImpairedGrayGradient: '#9b9b9b',
// //
// Buttons // Buttons
@ -210,7 +214,7 @@ module.exports = {
calendarBackgroundColor: '#e4eaec', calendarBackgroundColor: '#e4eaec',
calendarBorderColor: '#cecece', calendarBorderColor: '#cecece',
calendarTextDim: '#666', calendarTextDim: '#666',
calendarTextDimAlternate: '#000', calendarTextDimAlternate: '#242424',
// //
// Table // Table

@ -422,6 +422,8 @@
"Formats": "Formats", "Formats": "Formats",
"FreeSpace": "Free Space", "FreeSpace": "Free Space",
"From": "from", "From": "from",
"FullColorEvents": "Full Color Events",
"FullColorEventsHelpText": "Altered style to color the entire event with the status color, instead of just the left edge. Does not apply to Agenda",
"General": "General", "General": "General",
"GeneralSettings": "General Settings", "GeneralSettings": "General Settings",
"GeneralSettingsSummary": "Port, SSL, username/password, proxy, analytics and updates", "GeneralSettingsSummary": "Port, SSL, username/password, proxy, analytics and updates",

Loading…
Cancel
Save