1
0
Fork 0
mirror of https://github.com/plankanban/planka.git synced 2025-07-18 20:59:44 +02:00

fix: Rename timer to stopwatch

Closes #392
This commit is contained in:
Maksim Eltyshev 2023-02-27 19:09:51 +01:00
parent d627a5660a
commit 22ec8707ac
35 changed files with 179 additions and 161 deletions

View file

@ -8,11 +8,11 @@ export const transformCard = (card) => ({
...(card.dueDate && { ...(card.dueDate && {
dueDate: new Date(card.dueDate), dueDate: new Date(card.dueDate),
}), }),
...(card.timer && { ...(card.stopwatch && {
timer: { stopwatch: {
...card.timer, ...card.stopwatch,
...(card.timer.startedAt && { ...(card.stopwatch.startedAt && {
startedAt: new Date(card.timer.startedAt), startedAt: new Date(card.stopwatch.startedAt),
}), }),
}, },
}), }),
@ -23,11 +23,11 @@ export const transformCardData = (data) => ({
...(data.dueDate && { ...(data.dueDate && {
dueDate: data.dueDate.toISOString(), dueDate: data.dueDate.toISOString(),
}), }),
...(data.timer && { ...(data.stopwatch && {
timer: { stopwatch: {
...data.timer, ...data.stopwatch,
...(data.timer.startedAt && { ...(data.stopwatch.startedAt && {
startedAt: data.timer.startedAt.toISOString(), startedAt: data.stopwatch.startedAt.toISOString(),
}), }),
}, },
}), }),

View file

@ -9,7 +9,7 @@ import { useSteps } from '../../hooks';
import BoardMembershipsStep from '../BoardMembershipsStep'; import BoardMembershipsStep from '../BoardMembershipsStep';
import LabelsStep from '../LabelsStep'; import LabelsStep from '../LabelsStep';
import DueDateEditStep from '../DueDateEditStep'; import DueDateEditStep from '../DueDateEditStep';
import TimerEditStep from '../TimerEditStep'; import StopwatchEditStep from '../StopwatchEditStep';
import CardMoveStep from '../CardMoveStep'; import CardMoveStep from '../CardMoveStep';
import DeleteStep from '../DeleteStep'; import DeleteStep from '../DeleteStep';
@ -19,7 +19,7 @@ const StepTypes = {
USERS: 'USERS', USERS: 'USERS',
LABELS: 'LABELS', LABELS: 'LABELS',
EDIT_DUE_DATE: 'EDIT_DUE_DATE', EDIT_DUE_DATE: 'EDIT_DUE_DATE',
EDIT_TIMER: 'EDIT_TIMER', EDIT_STOPWATCH: 'EDIT_STOPWATCH',
MOVE: 'MOVE', MOVE: 'MOVE',
DELETE: 'DELETE', DELETE: 'DELETE',
}; };
@ -68,8 +68,8 @@ const ActionsStep = React.memo(
openStep(StepTypes.EDIT_DUE_DATE); openStep(StepTypes.EDIT_DUE_DATE);
}, [openStep]); }, [openStep]);
const handleEditTimerClick = useCallback(() => { const handleEditStopwatchClick = useCallback(() => {
openStep(StepTypes.EDIT_TIMER); openStep(StepTypes.EDIT_STOPWATCH);
}, [openStep]); }, [openStep]);
const handleMoveClick = useCallback(() => { const handleMoveClick = useCallback(() => {
@ -89,10 +89,10 @@ const ActionsStep = React.memo(
[onUpdate], [onUpdate],
); );
const handleTimerUpdate = useCallback( const handleStopwatchUpdate = useCallback(
(timer) => { (stopwatch) => {
onUpdate({ onUpdate({
timer, stopwatch,
}); });
}, },
[onUpdate], [onUpdate],
@ -133,11 +133,11 @@ const ActionsStep = React.memo(
onClose={onClose} onClose={onClose}
/> />
); );
case StepTypes.EDIT_TIMER: case StepTypes.EDIT_STOPWATCH:
return ( return (
<TimerEditStep <StopwatchEditStep
defaultValue={card.timer} defaultValue={card.stopwatch}
onUpdate={handleTimerUpdate} onUpdate={handleStopwatchUpdate}
onBack={handleBack} onBack={handleBack}
onClose={onClose} onClose={onClose}
/> />
@ -197,8 +197,8 @@ const ActionsStep = React.memo(
context: 'title', context: 'title',
})} })}
</Menu.Item> </Menu.Item>
<Menu.Item className={styles.menuItem} onClick={handleEditTimerClick}> <Menu.Item className={styles.menuItem} onClick={handleEditStopwatchClick}>
{t('action.editTimer', { {t('action.editStopwatch', {
context: 'title', context: 'title',
})} })}
</Menu.Item> </Menu.Item>

View file

@ -6,7 +6,7 @@ import { Link } from 'react-router-dom';
import { Draggable } from 'react-beautiful-dnd'; import { Draggable } from 'react-beautiful-dnd';
import { usePopup } from '../../lib/popup'; import { usePopup } from '../../lib/popup';
import { startTimer, stopTimer } from '../../utils/timer'; import { startStopwatch, stopStopwatch } from '../../utils/stopwatch';
import Paths from '../../constants/Paths'; import Paths from '../../constants/Paths';
import Tasks from './Tasks'; import Tasks from './Tasks';
import NameEdit from './NameEdit'; import NameEdit from './NameEdit';
@ -14,7 +14,7 @@ import ActionsStep from './ActionsStep';
import User from '../User'; import User from '../User';
import Label from '../Label'; import Label from '../Label';
import DueDate from '../DueDate'; import DueDate from '../DueDate';
import Timer from '../Timer'; import Stopwatch from '../Stopwatch';
import styles from './Card.module.scss'; import styles from './Card.module.scss';
@ -24,7 +24,7 @@ const Card = React.memo(
index, index,
name, name,
dueDate, dueDate,
timer, stopwatch,
coverUrl, coverUrl,
boardId, boardId,
listId, listId,
@ -60,15 +60,15 @@ const Card = React.memo(
} }
}, []); }, []);
const handleToggleTimerClick = useCallback( const handleToggleStopwatchClick = useCallback(
(event) => { (event) => {
event.preventDefault(); event.preventDefault();
onUpdate({ onUpdate({
timer: timer.startedAt ? stopTimer(timer) : startTimer(timer), stopwatch: stopwatch.startedAt ? stopStopwatch(stopwatch) : startStopwatch(stopwatch),
}); });
}, },
[timer, onUpdate], [stopwatch, onUpdate],
); );
const handleNameUpdate = useCallback( const handleNameUpdate = useCallback(
@ -104,7 +104,7 @@ const Card = React.memo(
)} )}
<div className={styles.name}>{name}</div> <div className={styles.name}>{name}</div>
{tasks.length > 0 && <Tasks items={tasks} />} {tasks.length > 0 && <Tasks items={tasks} />}
{(dueDate || timer || notificationsTotal > 0) && ( {(dueDate || stopwatch || notificationsTotal > 0) && (
<span className={styles.attachments}> <span className={styles.attachments}>
{notificationsTotal > 0 && ( {notificationsTotal > 0 && (
<span <span
@ -122,14 +122,14 @@ const Card = React.memo(
<DueDate value={dueDate} size="tiny" /> <DueDate value={dueDate} size="tiny" />
</span> </span>
)} )}
{timer && ( {stopwatch && (
<span className={classNames(styles.attachment, styles.attachmentLeft)}> <span className={classNames(styles.attachment, styles.attachmentLeft)}>
<Timer <Stopwatch
as="span" as="span"
startedAt={timer.startedAt} startedAt={stopwatch.startedAt}
total={timer.total} total={stopwatch.total}
size="tiny" size="tiny"
onClick={canEdit ? handleToggleTimerClick : undefined} onClick={canEdit ? handleToggleStopwatchClick : undefined}
/> />
</span> </span>
)} )}
@ -171,7 +171,7 @@ const Card = React.memo(
<ActionsPopup <ActionsPopup
card={{ card={{
dueDate, dueDate,
timer, stopwatch,
boardId, boardId,
listId, listId,
projectId, projectId,
@ -219,7 +219,7 @@ Card.propTypes = {
index: PropTypes.number.isRequired, index: PropTypes.number.isRequired,
name: PropTypes.string.isRequired, name: PropTypes.string.isRequired,
dueDate: PropTypes.instanceOf(Date), dueDate: PropTypes.instanceOf(Date),
timer: PropTypes.object, // eslint-disable-line react/forbid-prop-types stopwatch: PropTypes.object, // eslint-disable-line react/forbid-prop-types
coverUrl: PropTypes.string, coverUrl: PropTypes.string,
boardId: PropTypes.string.isRequired, boardId: PropTypes.string.isRequired,
listId: PropTypes.string.isRequired, listId: PropTypes.string.isRequired,
@ -252,7 +252,7 @@ Card.propTypes = {
Card.defaultProps = { Card.defaultProps = {
dueDate: undefined, dueDate: undefined,
timer: undefined, stopwatch: undefined,
coverUrl: undefined, coverUrl: undefined,
}; };

View file

@ -6,7 +6,7 @@ import { Button, Grid, Icon, Modal } from 'semantic-ui-react';
import { usePopup } from '../../lib/popup'; import { usePopup } from '../../lib/popup';
import { Markdown } from '../../lib/custom-ui'; import { Markdown } from '../../lib/custom-ui';
import { startTimer, stopTimer } from '../../utils/timer'; import { startStopwatch, stopStopwatch } from '../../utils/stopwatch';
import NameField from './NameField'; import NameField from './NameField';
import DescriptionEdit from './DescriptionEdit'; import DescriptionEdit from './DescriptionEdit';
import Tasks from './Tasks'; import Tasks from './Tasks';
@ -17,11 +17,11 @@ import Activities from './Activities';
import User from '../User'; import User from '../User';
import Label from '../Label'; import Label from '../Label';
import DueDate from '../DueDate'; import DueDate from '../DueDate';
import Timer from '../Timer'; import Stopwatch from '../Stopwatch';
import BoardMembershipsStep from '../BoardMembershipsStep'; import BoardMembershipsStep from '../BoardMembershipsStep';
import LabelsStep from '../LabelsStep'; import LabelsStep from '../LabelsStep';
import DueDateEditStep from '../DueDateEditStep'; import DueDateEditStep from '../DueDateEditStep';
import TimerEditStep from '../TimerEditStep'; import StopwatchEditStep from '../StopwatchEditStep';
import CardMoveStep from '../CardMoveStep'; import CardMoveStep from '../CardMoveStep';
import DeleteStep from '../DeleteStep'; import DeleteStep from '../DeleteStep';
@ -32,7 +32,7 @@ const CardModal = React.memo(
name, name,
description, description,
dueDate, dueDate,
timer, stopwatch,
isSubscribed, isSubscribed,
isActivitiesFetching, isActivitiesFetching,
isAllActivitiesFetched, isAllActivitiesFetched,
@ -83,11 +83,11 @@ const CardModal = React.memo(
const isGalleryOpened = useRef(false); const isGalleryOpened = useRef(false);
const handleToggleTimerClick = useCallback(() => { const handleToggleStopwatchClick = useCallback(() => {
onUpdate({ onUpdate({
timer: timer.startedAt ? stopTimer(timer) : startTimer(timer), stopwatch: stopwatch.startedAt ? stopStopwatch(stopwatch) : startStopwatch(stopwatch),
}); });
}, [timer, onUpdate]); }, [stopwatch, onUpdate]);
const handleNameUpdate = useCallback( const handleNameUpdate = useCallback(
(newName) => { (newName) => {
@ -116,10 +116,10 @@ const CardModal = React.memo(
[onUpdate], [onUpdate],
); );
const handleTimerUpdate = useCallback( const handleStopwatchUpdate = useCallback(
(newTimer) => { (newStopwatch) => {
onUpdate({ onUpdate({
timer: newTimer, stopwatch: newStopwatch,
}); });
}, },
[onUpdate], [onUpdate],
@ -160,7 +160,7 @@ const CardModal = React.memo(
const BoardMembershipsPopup = usePopup(BoardMembershipsStep); const BoardMembershipsPopup = usePopup(BoardMembershipsStep);
const LabelsPopup = usePopup(LabelsStep); const LabelsPopup = usePopup(LabelsStep);
const DueDateEditPopup = usePopup(DueDateEditStep); const DueDateEditPopup = usePopup(DueDateEditStep);
const TimerEditPopup = usePopup(TimerEditStep); const StopwatchEditPopup = usePopup(StopwatchEditStep);
const CardMovePopup = usePopup(CardMoveStep); const CardMovePopup = usePopup(CardMoveStep);
const DeletePopup = usePopup(DeleteStep); const DeletePopup = usePopup(DeleteStep);
@ -185,7 +185,7 @@ const CardModal = React.memo(
</Grid.Row> </Grid.Row>
<Grid.Row className={styles.modalPadding}> <Grid.Row className={styles.modalPadding}>
<Grid.Column width={canEdit ? 12 : 16} className={styles.contentPadding}> <Grid.Column width={canEdit ? 12 : 16} className={styles.contentPadding}>
{(users.length > 0 || labels.length > 0 || dueDate || timer) && ( {(users.length > 0 || labels.length > 0 || dueDate || stopwatch) && (
<div className={styles.moduleWrapper}> <div className={styles.moduleWrapper}>
{users.length > 0 && ( {users.length > 0 && (
<div className={styles.attachments}> <div className={styles.attachments}>
@ -294,30 +294,33 @@ const CardModal = React.memo(
</span> </span>
</div> </div>
)} )}
{timer && ( {stopwatch && (
<div className={styles.attachments}> <div className={styles.attachments}>
<div className={styles.text}> <div className={styles.text}>
{t('common.timer', { {t('common.stopwatch', {
context: 'title', context: 'title',
})} })}
</div> </div>
<span className={styles.attachment}> <span className={styles.attachment}>
{canEdit ? ( {canEdit ? (
<TimerEditPopup defaultValue={timer} onUpdate={handleTimerUpdate}> <StopwatchEditPopup
<Timer startedAt={timer.startedAt} total={timer.total} /> defaultValue={stopwatch}
</TimerEditPopup> onUpdate={handleStopwatchUpdate}
>
<Stopwatch startedAt={stopwatch.startedAt} total={stopwatch.total} />
</StopwatchEditPopup>
) : ( ) : (
<Timer startedAt={timer.startedAt} total={timer.total} /> <Stopwatch startedAt={stopwatch.startedAt} total={stopwatch.total} />
)} )}
</span> </span>
{canEdit && ( {canEdit && (
<button <button
onClick={handleToggleTimerClick} onClick={handleToggleStopwatchClick}
type="button" type="button"
className={classNames(styles.attachment, styles.dueDate)} className={classNames(styles.attachment, styles.dueDate)}
> >
<Icon <Icon
name={timer.startedAt ? 'pause' : 'play'} name={stopwatch.startedAt ? 'pause' : 'play'}
size="small" size="small"
className={styles.addAttachment} className={styles.addAttachment}
/> />
@ -447,12 +450,12 @@ const CardModal = React.memo(
})} })}
</Button> </Button>
</DueDateEditPopup> </DueDateEditPopup>
<TimerEditPopup defaultValue={timer} onUpdate={handleTimerUpdate}> <StopwatchEditPopup defaultValue={stopwatch} onUpdate={handleStopwatchUpdate}>
<Button fluid className={styles.actionButton}> <Button fluid className={styles.actionButton}>
<Icon name="clock outline" className={styles.actionIcon} /> <Icon name="clock outline" className={styles.actionIcon} />
{t('common.timer')} {t('common.stopwatch')}
</Button> </Button>
</TimerEditPopup> </StopwatchEditPopup>
<AttachmentAddPopup onCreate={onAttachmentCreate}> <AttachmentAddPopup onCreate={onAttachmentCreate}>
<Button fluid className={styles.actionButton}> <Button fluid className={styles.actionButton}>
<Icon name="attach" className={styles.actionIcon} /> <Icon name="attach" className={styles.actionIcon} />
@ -524,7 +527,7 @@ CardModal.propTypes = {
name: PropTypes.string.isRequired, name: PropTypes.string.isRequired,
description: PropTypes.string, description: PropTypes.string,
dueDate: PropTypes.instanceOf(Date), dueDate: PropTypes.instanceOf(Date),
timer: PropTypes.object, // eslint-disable-line react/forbid-prop-types stopwatch: PropTypes.object, // eslint-disable-line react/forbid-prop-types
isSubscribed: PropTypes.bool.isRequired, isSubscribed: PropTypes.bool.isRequired,
isActivitiesFetching: PropTypes.bool.isRequired, isActivitiesFetching: PropTypes.bool.isRequired,
isAllActivitiesFetched: PropTypes.bool.isRequired, isAllActivitiesFetched: PropTypes.bool.isRequired,
@ -577,7 +580,7 @@ CardModal.propTypes = {
CardModal.defaultProps = { CardModal.defaultProps = {
description: undefined, description: undefined,
dueDate: undefined, dueDate: undefined,
timer: undefined, stopwatch: undefined,
}; };
export default CardModal; export default CardModal;

View file

@ -4,9 +4,9 @@ import PropTypes from 'prop-types';
import classNames from 'classnames'; import classNames from 'classnames';
import { useForceUpdate, usePrevious } from '../../lib/hooks'; import { useForceUpdate, usePrevious } from '../../lib/hooks';
import { formatTimer } from '../../utils/timer'; import { formatStopwatch } from '../../utils/stopwatch';
import styles from './Timer.module.scss'; import styles from './Stopwatch.module.scss';
const SIZES = { const SIZES = {
TINY: 'tiny', TINY: 'tiny',
@ -14,7 +14,7 @@ const SIZES = {
MEDIUM: 'medium', MEDIUM: 'medium',
}; };
const Timer = React.memo(({ as, startedAt, total, size, isDisabled, onClick }) => { const Stopwatch = React.memo(({ as, startedAt, total, size, isDisabled, onClick }) => {
const prevStartedAt = usePrevious(startedAt); const prevStartedAt = usePrevious(startedAt);
const forceUpdate = useForceUpdate(); const forceUpdate = useForceUpdate();
@ -56,7 +56,7 @@ const Timer = React.memo(({ as, startedAt, total, size, isDisabled, onClick }) =
onClick && styles.wrapperHoverable, onClick && styles.wrapperHoverable,
)} )}
> >
{formatTimer({ startedAt, total })} {formatStopwatch({ startedAt, total })}
</span> </span>
); );
@ -71,7 +71,7 @@ const Timer = React.memo(({ as, startedAt, total, size, isDisabled, onClick }) =
); );
}); });
Timer.propTypes = { Stopwatch.propTypes = {
as: PropTypes.elementType, as: PropTypes.elementType,
startedAt: PropTypes.instanceOf(Date), startedAt: PropTypes.instanceOf(Date),
total: PropTypes.number.isRequired, // eslint-disable-line react/no-unused-prop-types total: PropTypes.number.isRequired, // eslint-disable-line react/no-unused-prop-types
@ -80,7 +80,7 @@ Timer.propTypes = {
onClick: PropTypes.func, onClick: PropTypes.func,
}; };
Timer.defaultProps = { Stopwatch.defaultProps = {
as: 'button', as: 'button',
startedAt: undefined, startedAt: undefined,
size: SIZES.MEDIUM, size: SIZES.MEDIUM,
@ -88,4 +88,4 @@ Timer.defaultProps = {
onClick: undefined, onClick: undefined,
}; };
export default Timer; export default Stopwatch;

View file

@ -0,0 +1,3 @@
import Stopwatch from './Stopwatch';
export default Stopwatch;

View file

@ -7,12 +7,18 @@ import { useToggle } from '../../lib/hooks';
import { Input, Popup } from '../../lib/custom-ui'; import { Input, Popup } from '../../lib/custom-ui';
import { useForm } from '../../hooks'; import { useForm } from '../../hooks';
import { createTimer, getTimerParts, startTimer, stopTimer, updateTimer } from '../../utils/timer'; import {
createStopwatch,
getStopwatchParts,
startStopwatch,
stopStopwatch,
updateStopwatch,
} from '../../utils/stopwatch';
import styles from './TimerEditStep.module.scss'; import styles from './StopwatchEditStep.module.scss';
const createData = (timer) => { const createData = (stopwatch) => {
if (!timer) { if (!stopwatch) {
return { return {
hours: '0', hours: '0',
minutes: '0', minutes: '0',
@ -20,7 +26,7 @@ const createData = (timer) => {
}; };
} }
const { hours, minutes, seconds } = getTimerParts(timer); const { hours, minutes, seconds } = getStopwatchParts(stopwatch);
return { return {
hours: `${hours}`, hours: `${hours}`,
@ -29,7 +35,7 @@ const createData = (timer) => {
}; };
}; };
const TimerEditStep = React.memo(({ defaultValue, onUpdate, onBack, onClose }) => { const StopwatchEditStep = React.memo(({ defaultValue, onUpdate, onBack, onClose }) => {
const [t] = useTranslation(); const [t] = useTranslation();
const [data, handleFieldChange, setData] = useForm(() => createData(defaultValue)); const [data, handleFieldChange, setData] = useForm(() => createData(defaultValue));
const [isEditing, toggleEditing] = useToggle(); const [isEditing, toggleEditing] = useToggle();
@ -39,12 +45,12 @@ const TimerEditStep = React.memo(({ defaultValue, onUpdate, onBack, onClose }) =
const secondsField = useRef(null); const secondsField = useRef(null);
const handleStartClick = useCallback(() => { const handleStartClick = useCallback(() => {
onUpdate(startTimer(defaultValue)); onUpdate(startStopwatch(defaultValue));
onClose(); onClose();
}, [defaultValue, onUpdate, onClose]); }, [defaultValue, onUpdate, onClose]);
const handleStopClick = useCallback(() => { const handleStopClick = useCallback(() => {
onUpdate(stopTimer(defaultValue)); onUpdate(stopStopwatch(defaultValue));
}, [defaultValue, onUpdate]); }, [defaultValue, onUpdate]);
const handleClearClick = useCallback(() => { const handleClearClick = useCallback(() => {
@ -83,11 +89,11 @@ const TimerEditStep = React.memo(({ defaultValue, onUpdate, onBack, onClose }) =
} }
if (defaultValue) { if (defaultValue) {
if (!dequal(parts, getTimerParts(defaultValue))) { if (!dequal(parts, getStopwatchParts(defaultValue))) {
onUpdate(updateTimer(defaultValue, parts)); onUpdate(updateStopwatch(defaultValue, parts));
} }
} else { } else {
onUpdate(createTimer(parts)); onUpdate(createStopwatch(parts));
} }
onClose(); onClose();
@ -102,7 +108,7 @@ const TimerEditStep = React.memo(({ defaultValue, onUpdate, onBack, onClose }) =
return ( return (
<> <>
<Popup.Header onBack={onBack}> <Popup.Header onBack={onBack}>
{t('common.editTimer', { {t('common.editStopwatch', {
context: 'title', context: 'title',
})} })}
</Popup.Header> </Popup.Header>
@ -171,16 +177,16 @@ const TimerEditStep = React.memo(({ defaultValue, onUpdate, onBack, onClose }) =
); );
}); });
TimerEditStep.propTypes = { StopwatchEditStep.propTypes = {
defaultValue: PropTypes.object, // eslint-disable-line react/forbid-prop-types defaultValue: PropTypes.object, // eslint-disable-line react/forbid-prop-types
onUpdate: PropTypes.func.isRequired, onUpdate: PropTypes.func.isRequired,
onBack: PropTypes.func, onBack: PropTypes.func,
onClose: PropTypes.func.isRequired, onClose: PropTypes.func.isRequired,
}; };
TimerEditStep.defaultProps = { StopwatchEditStep.defaultProps = {
defaultValue: undefined, defaultValue: undefined,
onBack: undefined, onBack: undefined,
}; };
export default TimerEditStep; export default StopwatchEditStep;

View file

@ -0,0 +1,3 @@
import StopwatchEditStep from './StopwatchEditStep';
export default StopwatchEditStep;

View file

@ -1,3 +0,0 @@
import Timer from './Timer';
export default Timer;

View file

@ -1,3 +0,0 @@
import TimerEditStep from './TimerEditStep';
export default TimerEditStep;

View file

@ -20,7 +20,7 @@ const makeMapStateToProps = () => {
const allLabels = selectors.selectLabelsForCurrentBoard(state); const allLabels = selectors.selectLabelsForCurrentBoard(state);
const currentUserMembership = selectors.selectCurrentUserMembershipForCurrentBoard(state); const currentUserMembership = selectors.selectCurrentUserMembershipForCurrentBoard(state);
const { name, dueDate, timer, coverUrl, boardId, listId, isPersisted } = selectCardById( const { name, dueDate, stopwatch, coverUrl, boardId, listId, isPersisted } = selectCardById(
state, state,
id, id,
); );
@ -38,7 +38,7 @@ const makeMapStateToProps = () => {
index, index,
name, name,
dueDate, dueDate,
timer, stopwatch,
coverUrl, coverUrl,
boardId, boardId,
listId, listId,

View file

@ -21,7 +21,7 @@ const mapStateToProps = (state) => {
name, name,
description, description,
dueDate, dueDate,
timer, stopwatch,
isSubscribed, isSubscribed,
isActivitiesFetching, isActivitiesFetching,
isAllActivitiesFetched, isAllActivitiesFetched,
@ -49,7 +49,7 @@ const mapStateToProps = (state) => {
name, name,
description, description,
dueDate, dueDate,
timer, stopwatch,
isSubscribed, isSubscribed,
isActivitiesFetching, isActivitiesFetching,
isAllActivitiesFetched, isAllActivitiesFetched,

View file

@ -76,7 +76,7 @@ export default {
editEmail_title: 'Upravit e-mail', editEmail_title: 'Upravit e-mail',
editLabel_title: 'Upravit štítek', editLabel_title: 'Upravit štítek',
editPassword_title: 'Upravit heslo', editPassword_title: 'Upravit heslo',
editTimer_title: 'Upravit časovač', editStopwatch_title: 'Upravit časovač',
editUsername_title: 'Upravit uživatelské jméno', editUsername_title: 'Upravit uživatelské jméno',
email: 'E-mail', email: 'E-mail',
emailAlreadyInUse: 'E-mail se již používá', emailAlreadyInUse: 'E-mail se již používá',
@ -127,11 +127,11 @@ export default {
selectList: 'Vybrat seznam', selectList: 'Vybrat seznam',
selectProject: 'Vybrat projekt', selectProject: 'Vybrat projekt',
settings: 'Nastavení', settings: 'Nastavení',
stopwatch: 'Časovač',
subscribeToMyOwnCardsByDefault: 'Ve výchozím nastavení odebírat vlastní karty', subscribeToMyOwnCardsByDefault: 'Ve výchozím nastavení odebírat vlastní karty',
taskActions_title: 'Akce na úkolu', taskActions_title: 'Akce na úkolu',
tasks: 'Úkoly', tasks: 'Úkoly',
time: 'Čas', time: 'Čas',
timer: 'Časovač',
title: 'Titulek', title: 'Titulek',
userActions_title: 'Akce na uživateli', userActions_title: 'Akce na uživateli',
userAddedThisCardToList: '<0>{{user}}</0><1> přidal kartu do {{list}}</1>', userAddedThisCardToList: '<0>{{user}}</0><1> přidal kartu do {{list}}</1>',
@ -183,7 +183,7 @@ export default {
editDescription_title: 'Upravit popis', editDescription_title: 'Upravit popis',
editEmail_title: 'Upravit e-mail', editEmail_title: 'Upravit e-mail',
editPassword_title: 'Upravit heslo', editPassword_title: 'Upravit heslo',
editTimer_title: 'Upravit časovač', editStopwatch_title: 'Upravit časovač',
editTitle_title: 'Upravit titulek', editTitle_title: 'Upravit titulek',
editUsername_title: 'Upravit uživatelské jméno', editUsername_title: 'Upravit uživatelské jméno',
leaveBoard: 'Opustit tabuli', leaveBoard: 'Opustit tabuli',

View file

@ -75,7 +75,7 @@ export default {
editEmail_title: 'Ændre E-mail', editEmail_title: 'Ændre E-mail',
editLabel_title: 'ændre mærkat', editLabel_title: 'ændre mærkat',
editPassword_title: 'Ændre løsen', editPassword_title: 'Ændre løsen',
editTimer_title: 'Ændre timer', editStopwatch_title: 'Ændre timer',
editUsername_title: 'Ændre brugernavn', editUsername_title: 'Ændre brugernavn',
email: 'E-mail', email: 'E-mail',
emailAlreadyInUse: 'E-mail allerede i brug', emailAlreadyInUse: 'E-mail allerede i brug',
@ -126,11 +126,11 @@ export default {
selectList: 'Vælg liste', selectList: 'Vælg liste',
selectProject: 'Vælg projekt', selectProject: 'Vælg projekt',
settings: 'Indstillinger', settings: 'Indstillinger',
stopwatch: 'Tidsmåler',
subscribeToMyOwnCardsByDefault: 'Abonnér på egne kort som standard', subscribeToMyOwnCardsByDefault: 'Abonnér på egne kort som standard',
taskActions_title: 'Opgave handlinger', taskActions_title: 'Opgave handlinger',
tasks: 'Opgaver', tasks: 'Opgaver',
time: 'Tid', time: 'Tid',
timer: 'Tidsmåler',
title: 'Overskrift', title: 'Overskrift',
userActions_title: 'Brugerhandlinger', userActions_title: 'Brugerhandlinger',
userAddedThisCardToList: '<0>{{user}}</0><1> tilføjede kortet til {{list}}</1>', userAddedThisCardToList: '<0>{{user}}</0><1> tilføjede kortet til {{list}}</1>',
@ -183,7 +183,7 @@ export default {
editDescription_title: 'Ændre beskrivelse', editDescription_title: 'Ændre beskrivelse',
editEmail_title: 'Ændre e-mail', editEmail_title: 'Ændre e-mail',
editPassword_title: 'Ændre Løsen', editPassword_title: 'Ændre Løsen',
editTimer_title: 'Ændre tidstager', editStopwatch_title: 'Ændre tidstager',
editTitle_title: 'Ændre overskrift', editTitle_title: 'Ændre overskrift',
editUsername_title: 'Ændre brugernavn', editUsername_title: 'Ændre brugernavn',
leaveBoard: 'Forlad bræt', leaveBoard: 'Forlad bræt',

View file

@ -82,7 +82,7 @@ export default {
editEmail_title: 'E-Mail-Adresse bearbeiten', editEmail_title: 'E-Mail-Adresse bearbeiten',
editLabel_title: 'Label bearbeiten', editLabel_title: 'Label bearbeiten',
editPassword_title: 'Passwort ändern', editPassword_title: 'Passwort ändern',
editTimer_title: 'Timer bearbeiten', editStopwatch_title: 'Stoppuhr bearbeiten',
editUsername_title: 'Benutzername ändern', editUsername_title: 'Benutzername ändern',
email: 'E-Mail-Adresse', email: 'E-Mail-Adresse',
emailAlreadyInUse: 'E-Mail-Adresse bereits in Verwendung', emailAlreadyInUse: 'E-Mail-Adresse bereits in Verwendung',
@ -134,12 +134,12 @@ export default {
selectList: 'Liste auswählen', selectList: 'Liste auswählen',
selectProject: 'Projekt auswählen', selectProject: 'Projekt auswählen',
settings: 'Einstellungen', settings: 'Einstellungen',
stopwatch: 'Stoppuhr',
subscribeToMyOwnCardsByDefault: 'Standardmäßig meine eigenen Karten abonnieren', subscribeToMyOwnCardsByDefault: 'Standardmäßig meine eigenen Karten abonnieren',
taskActions_title: 'Aufgabenaktionen', taskActions_title: 'Aufgabenaktionen',
tasks: 'Aufgaben', tasks: 'Aufgaben',
thereIsNoPreviewAvailableForThisAttachment: 'Für diesen Anhang ist keine Vorschau verfügbar', thereIsNoPreviewAvailableForThisAttachment: 'Für diesen Anhang ist keine Vorschau verfügbar',
time: 'Zeit', time: 'Zeit',
timer: 'Timer',
title: 'Titel', title: 'Titel',
userActions_title: 'Benutzeraktionen', userActions_title: 'Benutzeraktionen',
userAddedThisCardToList: '<0>{{user}}</0><1> hat diese Karte hinzugefügt zu {{list}}</1>', userAddedThisCardToList: '<0>{{user}}</0><1> hat diese Karte hinzugefügt zu {{list}}</1>',
@ -193,7 +193,7 @@ export default {
editDescription_title: 'Beschreibung ändern', editDescription_title: 'Beschreibung ändern',
editEmail_title: 'E-Mail-Adresse bearbeiten', editEmail_title: 'E-Mail-Adresse bearbeiten',
editPassword_title: 'Passwort ändern', editPassword_title: 'Passwort ändern',
editTimer_title: 'Timer bearbeiten', editStopwatch_title: 'Stoppuhr bearbeiten',
editTitle_title: 'Titel bearbeiten', editTitle_title: 'Titel bearbeiten',
editUsername_title: 'Benutzername ändern', editUsername_title: 'Benutzername ändern',
hideDetails: 'Details ausblenden', hideDetails: 'Details ausblenden',

View file

@ -80,7 +80,7 @@ export default {
editLabel_title: 'Edit Label', editLabel_title: 'Edit Label',
editPassword_title: 'Edit Password', editPassword_title: 'Edit Password',
editPermissions_title: 'Edit Permissions', editPermissions_title: 'Edit Permissions',
editTimer_title: 'Edit Timer', editStopwatch_title: 'Edit Stopwatch',
editUsername_title: 'Edit Username', editUsername_title: 'Edit Username',
email: 'E-mail', email: 'E-mail',
emailAlreadyInUse: 'E-mail already in use', emailAlreadyInUse: 'E-mail already in use',
@ -138,13 +138,13 @@ export default {
selectPermissions_title: 'Select Permissions', selectPermissions_title: 'Select Permissions',
selectProject: 'Select project', selectProject: 'Select project',
settings: 'Settings', settings: 'Settings',
stopwatch: 'Stopwatch',
subscribeToMyOwnCardsByDefault: 'Subscribe to my own cards by default', subscribeToMyOwnCardsByDefault: 'Subscribe to my own cards by default',
taskActions_title: 'Task Actions', taskActions_title: 'Task Actions',
tasks: 'Tasks', tasks: 'Tasks',
thereIsNoPreviewAvailableForThisAttachment: thereIsNoPreviewAvailableForThisAttachment:
'There is no preview available for this attachment', 'There is no preview available for this attachment',
time: 'Time', time: 'Time',
timer: 'Timer',
title: 'Title', title: 'Title',
userActions_title: 'User Actions', userActions_title: 'User Actions',
userAddedThisCardToList: '<0>{{user}}</0><1> added this card to {{list}}</1>', userAddedThisCardToList: '<0>{{user}}</0><1> added this card to {{list}}</1>',
@ -201,7 +201,7 @@ export default {
editInformation_title: 'Edit Information', editInformation_title: 'Edit Information',
editPassword_title: 'Edit Password', editPassword_title: 'Edit Password',
editPermissions: 'Edit permissions', editPermissions: 'Edit permissions',
editTimer_title: 'Edit Timer', editStopwatch_title: 'Edit Stopwatch',
editTitle_title: 'Edit Title', editTitle_title: 'Edit Title',
editUsername_title: 'Edit Username', editUsername_title: 'Edit Username',
hideDetails: 'Hide details', hideDetails: 'Hide details',

View file

@ -69,7 +69,7 @@ export default {
editEmail_title: 'Editar Correo', editEmail_title: 'Editar Correo',
editLabel_title: 'Editar Etiqueta', editLabel_title: 'Editar Etiqueta',
editPassword_title: 'Editar Contraseña', editPassword_title: 'Editar Contraseña',
editTimer_title: 'Editar Temporizador', editStopwatch_title: 'Editar Temporizador',
editUsername_title: 'Edit nombre de usuario', editUsername_title: 'Edit nombre de usuario',
email: 'Correo', email: 'Correo',
emailAlreadyInUse: 'El correo ya está en uso', emailAlreadyInUse: 'El correo ya está en uso',
@ -115,11 +115,11 @@ export default {
selectList: 'Seleccionar Lista', selectList: 'Seleccionar Lista',
selectProject: 'Seleccionar Proyecto', selectProject: 'Seleccionar Proyecto',
settings: 'Configuraciones', settings: 'Configuraciones',
stopwatch: 'Temporizador',
subscribeToMyOwnCardsByDefault: 'Suscribirme a mis propias tarjetas por defecto', subscribeToMyOwnCardsByDefault: 'Suscribirme a mis propias tarjetas por defecto',
taskActions_title: 'Acciones de Tareas', taskActions_title: 'Acciones de Tareas',
tasks: 'Tareas', tasks: 'Tareas',
time: 'Tiempo', time: 'Tiempo',
timer: 'Temporizador',
title: 'Título', title: 'Título',
userActions_title: 'Acciones de Usuario', userActions_title: 'Acciones de Usuario',
userAddedThisCardToList: '<0>{{user}}</0><1> añadido a esta tarjeta en {{list}}</1>', userAddedThisCardToList: '<0>{{user}}</0><1> añadido a esta tarjeta en {{list}}</1>',
@ -172,7 +172,7 @@ export default {
editDescription_title: 'Editar Descripción', editDescription_title: 'Editar Descripción',
editEmail_title: 'Editar Correo', editEmail_title: 'Editar Correo',
editPassword_title: 'Editar Contraseña', editPassword_title: 'Editar Contraseña',
editTimer_title: 'Edit Temporizador', editStopwatch_title: 'Edit Temporizador',
editTitle_title: 'Edit Título', editTitle_title: 'Edit Título',
editUsername_title: 'Editar Nombre de Usuario', editUsername_title: 'Editar Nombre de Usuario',
logOut_title: 'Cerrar Sesión', logOut_title: 'Cerrar Sesión',

View file

@ -69,7 +69,7 @@ export default {
editEmail_title: "Modifier l'e-mail", editEmail_title: "Modifier l'e-mail",
editLabel_title: "Modifier l'étiquette", editLabel_title: "Modifier l'étiquette",
editPassword_title: 'Modifier le mot de passe', editPassword_title: 'Modifier le mot de passe',
editTimer_title: 'Modifier la minuterie', editStopwatch_title: 'Modifier la minuterie',
editUsername_title: "Modifier le nom d'utilisateur", editUsername_title: "Modifier le nom d'utilisateur",
email: 'E-mail', email: 'E-mail',
emailAlreadyInUse: 'Email déjà utilisé', emailAlreadyInUse: 'Email déjà utilisé',
@ -114,11 +114,11 @@ export default {
selectList: 'Sélectionner une liste', selectList: 'Sélectionner une liste',
selectProject: 'Sélectionner un projet', selectProject: 'Sélectionner un projet',
settings: 'Réglages', settings: 'Réglages',
stopwatch: 'Minuteur',
subscribeToMyOwnCardsByDefault: 'Abonnez-vous à mes propres cartes par défaut', subscribeToMyOwnCardsByDefault: 'Abonnez-vous à mes propres cartes par défaut',
taskActions_title: 'Actions de tâche', taskActions_title: 'Actions de tâche',
tasks: 'Tâches', tasks: 'Tâches',
time: 'Temps', time: 'Temps',
timer: 'Minuteur',
title: 'Titre', title: 'Titre',
userActions_title: "Actions de l'utilisateur", userActions_title: "Actions de l'utilisateur",
userAddedThisCardToList: '<0> {{user}} </0> <1> a ajouté cette carte à {{list}} </1>', userAddedThisCardToList: '<0> {{user}} </0> <1> a ajouté cette carte à {{list}} </1>',
@ -172,7 +172,7 @@ export default {
editDescription_title: 'Éditer la description', editDescription_title: 'Éditer la description',
editEmail_title: "Modifier l'e-mail", editEmail_title: "Modifier l'e-mail",
editPassword_title: 'Modifier le mot de passe', editPassword_title: 'Modifier le mot de passe',
editTimer_title: 'Modifier la minuterie', editStopwatch_title: 'Modifier la minuterie',
editTitle_title: 'Modifier le titre', editTitle_title: 'Modifier le titre',
editUsername_title: "Modifier le nom d'utilisateur", editUsername_title: "Modifier le nom d'utilisateur",
logOut_title: 'Se déconnecter', logOut_title: 'Se déconnecter',

View file

@ -79,7 +79,7 @@ export default {
editLabel_title: 'Modifica Etichetta', editLabel_title: 'Modifica Etichetta',
editPassword_title: 'Modifica Password', editPassword_title: 'Modifica Password',
editPermissions_title: 'Modifica Permessi', editPermissions_title: 'Modifica Permessi',
editTimer_title: 'Modifica Timer', editStopwatch_title: 'Modifica Timer',
editUsername_title: 'Modifica Username', editUsername_title: 'Modifica Username',
email: 'E-mail', email: 'E-mail',
emailAlreadyInUse: 'E-mail già in uso', emailAlreadyInUse: 'E-mail già in uso',
@ -135,13 +135,13 @@ export default {
selectPermissions_title: 'Seleziona Permessi', selectPermissions_title: 'Seleziona Permessi',
selectProject: 'Seleziona progetto', selectProject: 'Seleziona progetto',
settings: 'Impostazioni', settings: 'Impostazioni',
stopwatch: 'Timer',
subscribeToMyOwnCardsByDefault: 'Abbonati alle mie card per impostazione predefinita', subscribeToMyOwnCardsByDefault: 'Abbonati alle mie card per impostazione predefinita',
taskActions_title: 'Task Azioni', taskActions_title: 'Task Azioni',
tasks: 'Tasks', tasks: 'Tasks',
thereIsNoPreviewAvailableForThisAttachment: thereIsNoPreviewAvailableForThisAttachment:
'Non è disponibile alcuna anteprima per questo allegato', 'Non è disponibile alcuna anteprima per questo allegato',
time: 'Tempo', time: 'Tempo',
timer: 'Timer',
title: 'Titolo', title: 'Titolo',
userActions_title: 'Azioni Utente', userActions_title: 'Azioni Utente',
userAddedThisCardToList: '<0>{{user}}</0><1> ha aggiunto questa card a {{list}}</1>', userAddedThisCardToList: '<0>{{user}}</0><1> ha aggiunto questa card a {{list}}</1>',
@ -198,7 +198,7 @@ export default {
editInformation_title: 'Modifca Informazioni', editInformation_title: 'Modifca Informazioni',
editPassword_title: 'Modifica Password', editPassword_title: 'Modifica Password',
editPermissions: 'Modifica permessi', editPermissions: 'Modifica permessi',
editTimer_title: 'Modifica Timer', editStopwatch_title: 'Modifica Timer',
editTitle_title: 'Modifica Titolo', editTitle_title: 'Modifica Titolo',
editUsername_title: 'Modifica Username', editUsername_title: 'Modifica Username',
hideDetails: 'Nascondi dettagli', hideDetails: 'Nascondi dettagli',

View file

@ -76,7 +76,7 @@ export default {
editEmail_title: 'Eメールを編集', editEmail_title: 'Eメールを編集',
editLabel_title: 'ラベルを編集', editLabel_title: 'ラベルを編集',
editPassword_title: 'パスワードを編集', editPassword_title: 'パスワードを編集',
editTimer_title: 'タイマーを編集', editStopwatch_title: 'タイマーを編集',
editUsername_title: 'ユーザー名を編集', editUsername_title: 'ユーザー名を編集',
email: 'Eメール', email: 'Eメール',
emailAlreadyInUse: 'Eメールは既に使われています', emailAlreadyInUse: 'Eメールは既に使われています',
@ -127,11 +127,11 @@ export default {
selectList: 'リストを選択', selectList: 'リストを選択',
selectProject: 'プロジェクトを選択', selectProject: 'プロジェクトを選択',
settings: '設定', settings: '設定',
stopwatch: 'タイマー',
subscribeToMyOwnCardsByDefault: '自分のカードをデフォルトで購読する', subscribeToMyOwnCardsByDefault: '自分のカードをデフォルトで購読する',
taskActions_title: 'タスクのアクション', taskActions_title: 'タスクのアクション',
tasks: 'タスク', tasks: 'タスク',
time: '時間', time: '時間',
timer: 'タイマー',
title: 'タイトル', title: 'タイトル',
userActions_title: 'ユーザーのアクション', userActions_title: 'ユーザーのアクション',
userAddedThisCardToList: '<0>{{user}}</0> は <1>{{list}} をこのカードに追加しました</1>', userAddedThisCardToList: '<0>{{user}}</0> は <1>{{list}} をこのカードに追加しました</1>',
@ -185,7 +185,7 @@ export default {
editDescription_title: '説明を編集', editDescription_title: '説明を編集',
editEmail_title: 'Eメールを編集', editEmail_title: 'Eメールを編集',
editPassword_title: 'パスワードの編集', editPassword_title: 'パスワードの編集',
editTimer_title: 'タイマーの編集', editStopwatch_title: 'タイマーの編集',
editTitle_title: 'タイトルの編集', editTitle_title: 'タイトルの編集',
editUsername_title: 'ユーザー名の編集', editUsername_title: 'ユーザー名の編集',
leaveBoard: 'ボードから退出', leaveBoard: 'ボードから退出',

View file

@ -78,7 +78,7 @@ export default {
editInformation_title: '정보 수정', editInformation_title: '정보 수정',
editLabel_title: '라벨 수정', editLabel_title: '라벨 수정',
editPassword_title: '비밀번호 수정', editPassword_title: '비밀번호 수정',
editTimer_title: '타이머 수정', editStopwatch_title: '타이머 수정',
editUsername_title: '사용자이름 수정', editUsername_title: '사용자이름 수정',
email: '메일', email: '메일',
emailAlreadyInUse: '기 가입된 이메일이 존재합니다.', emailAlreadyInUse: '기 가입된 이메일이 존재합니다.',
@ -130,13 +130,13 @@ export default {
selectList: '리스트 선택', selectList: '리스트 선택',
selectProject: '프로젝트 선택', selectProject: '프로젝트 선택',
settings: '설정', settings: '설정',
stopwatch: '활동시간',
subscribeToMyOwnCardsByDefault: '내 항목카드는 기본으로 구독', subscribeToMyOwnCardsByDefault: '내 항목카드는 기본으로 구독',
taskActions_title: '태스크 활동', taskActions_title: '태스크 활동',
tasks: '태스크', tasks: '태스크',
thereIsNoPreviewAvailableForThisAttachment: thereIsNoPreviewAvailableForThisAttachment:
'이 첨부 파일에 사용할 수 있는 미리보기가 없습니다.', '이 첨부 파일에 사용할 수 있는 미리보기가 없습니다.',
time: '시간', time: '시간',
timer: '활동시간',
title: '제목', title: '제목',
userActions_title: '', userActions_title: '',
userAddedThisCardToList: '<0>{{user}}</0><1>이 카드를 {{list}}</1>에 추가했습니다.', userAddedThisCardToList: '<0>{{user}}</0><1>이 카드를 {{list}}</1>에 추가했습니다.',
@ -190,7 +190,7 @@ export default {
editEmail_title: '메일 수정', editEmail_title: '메일 수정',
editInformation_title: '정보 수정', editInformation_title: '정보 수정',
editPassword_title: '패스워드 수정', editPassword_title: '패스워드 수정',
editTimer_title: '시간 수정', editStopwatch_title: '시간 수정',
editTitle_title: '제목 수정', editTitle_title: '제목 수정',
editUsername_title: '이름 수정', editUsername_title: '이름 수정',
leaveBoard: '보드에서 나가기', leaveBoard: '보드에서 나가기',

View file

@ -69,7 +69,7 @@ export default {
editEmail_title: 'Edytuj E-mail', editEmail_title: 'Edytuj E-mail',
editLabel_title: 'Edytuj Oznaczenie', editLabel_title: 'Edytuj Oznaczenie',
editPassword_title: 'Edytuj Hasło', editPassword_title: 'Edytuj Hasło',
editTimer_title: 'Edytuj Odliczanie', editStopwatch_title: 'Edytuj Odliczanie',
editUsername_title: 'Edytuj Nazwę Użytkownika', editUsername_title: 'Edytuj Nazwę Użytkownika',
email: 'E-mail', email: 'E-mail',
emailAlreadyInUse: 'E-mail jest już używany', emailAlreadyInUse: 'E-mail jest już używany',
@ -115,11 +115,11 @@ export default {
selectList: 'Wybierz listę', selectList: 'Wybierz listę',
selectProject: 'Wybierz projekt', selectProject: 'Wybierz projekt',
settings: 'Ustawienia', settings: 'Ustawienia',
stopwatch: 'Odliczanie',
subscribeToMyOwnCardsByDefault: 'Zapisz mnie do moich kart automatycznie', subscribeToMyOwnCardsByDefault: 'Zapisz mnie do moich kart automatycznie',
taskActions_title: 'Akcje Zadania', taskActions_title: 'Akcje Zadania',
tasks: 'Zadania', tasks: 'Zadania',
time: 'Czas', time: 'Czas',
timer: 'Odliczanie',
title: 'Tytuł', title: 'Tytuł',
userActions_title: 'Akcje użytkownika', userActions_title: 'Akcje użytkownika',
userAddedThisCardToList: '<0>{{user}}</0><1> dodał tę kartę w {{list}}</1>', userAddedThisCardToList: '<0>{{user}}</0><1> dodał tę kartę w {{list}}</1>',
@ -172,7 +172,7 @@ export default {
editDescription_title: 'Edytuj Opis', editDescription_title: 'Edytuj Opis',
editEmail_title: 'Edytuj E-mail', editEmail_title: 'Edytuj E-mail',
editPassword_title: 'Edytuj Hasło', editPassword_title: 'Edytuj Hasło',
editTimer_title: 'Edytuj Odliczanie', editStopwatch_title: 'Edytuj Odliczanie',
editTitle_title: 'Edytuj Tytuł', editTitle_title: 'Edytuj Tytuł',
editUsername_title: 'Edytuj Nazwę Użytkownika', editUsername_title: 'Edytuj Nazwę Użytkownika',
logOut_title: 'Wyloguj', logOut_title: 'Wyloguj',

View file

@ -77,7 +77,7 @@ export default {
editLabel: 'Изменения метки', editLabel: 'Изменения метки',
editPassword: 'Изменение пароля', editPassword: 'Изменение пароля',
editPermissions: 'Редактирование разрешений', editPermissions: 'Редактирование разрешений',
editTimer: 'Изменение таймера', editStopwatch: 'Изменение секундомера',
editTitle: 'Изменение названия', editTitle: 'Изменение названия',
editUsername: 'Изменение имени пользователя', editUsername: 'Изменение имени пользователя',
email: 'E-mail', email: 'E-mail',
@ -130,12 +130,12 @@ export default {
selectPermissions: 'Выбор разрешений', selectPermissions: 'Выбор разрешений',
selectProject: 'Выберите проект', selectProject: 'Выберите проект',
settings: 'Настройки', settings: 'Настройки',
stopwatch: 'Секундомер',
subscribeToMyOwnCardsByDefault: 'По умолчанию подписаться на мои собственные карточки', subscribeToMyOwnCardsByDefault: 'По умолчанию подписаться на мои собственные карточки',
taskActions: 'Действия с задачей', taskActions: 'Действия с задачей',
tasks: 'Задачи', tasks: 'Задачи',
thereIsNoPreviewAvailableForThisAttachment: 'Предпросмотр для этого вложения недоступен', thereIsNoPreviewAvailableForThisAttachment: 'Предпросмотр для этого вложения недоступен',
time: 'Время', time: 'Время',
timer: 'Таймер',
title: 'Название', title: 'Название',
userActions: 'Действия с пользователем', userActions: 'Действия с пользователем',
userAddedThisCardToList: '<0>{{user}}</0><1> добавил(а) эту карточку в {{list}}</1>', userAddedThisCardToList: '<0>{{user}}</0><1> добавил(а) эту карточку в {{list}}</1>',
@ -187,8 +187,8 @@ export default {
editEmail: 'Изменить e-mail', editEmail: 'Изменить e-mail',
editPassword: 'Изменить пароль', editPassword: 'Изменить пароль',
editPermissions: 'Изменить разрешения', editPermissions: 'Изменить разрешения',
editStopwatch: 'Изменить секундомер',
editTask: 'Изменить задачу', editTask: 'Изменить задачу',
editTimer: 'Изменить таймер',
editTitle: 'Изменить название', editTitle: 'Изменить название',
editUsername: 'Изменить имя пользователя', editUsername: 'Изменить имя пользователя',
hideDetails: 'Скрыть подробности', hideDetails: 'Скрыть подробности',

View file

@ -77,7 +77,7 @@ export default {
editInformation_title: 'Upraviť informácie', editInformation_title: 'Upraviť informácie',
editLabel_title: 'Upraviť štítok', editLabel_title: 'Upraviť štítok',
editPassword_title: 'Upraviť heslo', editPassword_title: 'Upraviť heslo',
editTimer_title: 'Upraviť časovač', editStopwatch_title: 'Upraviť časovač',
editUsername_title: 'Upraviť používateľské meno', editUsername_title: 'Upraviť používateľské meno',
email: 'E-mail', email: 'E-mail',
emailAlreadyInUse: 'E-mail je už použitý', emailAlreadyInUse: 'E-mail je už použitý',
@ -128,11 +128,11 @@ export default {
selectList: 'Vybrať zoznam', selectList: 'Vybrať zoznam',
selectProject: 'Vybrať projekt', selectProject: 'Vybrať projekt',
settings: 'Nastavenia', settings: 'Nastavenia',
stopwatch: 'Časovač',
subscribeToMyOwnCardsByDefault: 'Predvolene odoberať vlastné karty', subscribeToMyOwnCardsByDefault: 'Predvolene odoberať vlastné karty',
taskActions_title: 'Akcie na úlohe', taskActions_title: 'Akcie na úlohe',
tasks: 'Úlohy', tasks: 'Úlohy',
time: 'Čas', time: 'Čas',
timer: 'Časovač',
title: 'Názov', title: 'Názov',
userActions_title: 'Akcie na používateľovi', userActions_title: 'Akcie na používateľovi',
userAddedThisCardToList: '<0>{{user}}</0><1> pridal kartu do {{list}}</1>', userAddedThisCardToList: '<0>{{user}}</0><1> pridal kartu do {{list}}</1>',
@ -185,7 +185,7 @@ export default {
editEmail_title: 'Upraviť e-mail', editEmail_title: 'Upraviť e-mail',
editInformation_title: 'Upraviť informácie', editInformation_title: 'Upraviť informácie',
editPassword_title: 'Upraviť heslo', editPassword_title: 'Upraviť heslo',
editTimer_title: 'Upraviť časovač', editStopwatch_title: 'Upraviť časovač',
editTitle_title: 'Upraviť názov', editTitle_title: 'Upraviť názov',
editUsername_title: 'Upraviť používateľské meno', editUsername_title: 'Upraviť používateľské meno',
leaveBoard: 'Opustiť tabuľu', leaveBoard: 'Opustiť tabuľu',

View file

@ -78,7 +78,7 @@ export default {
editEmail_title: 'Redigera E-mail', editEmail_title: 'Redigera E-mail',
editLabel_title: 'Redigera Etikett', editLabel_title: 'Redigera Etikett',
editPassword_title: 'Redigera Lösenord', editPassword_title: 'Redigera Lösenord',
editTimer_title: 'Redigera Timer', editStopwatch_title: 'Redigera Timer',
editUsername_title: 'Redigera Användarnamn', editUsername_title: 'Redigera Användarnamn',
email: 'E-mail', email: 'E-mail',
emailAlreadyInUse: 'E-mail används redan', emailAlreadyInUse: 'E-mail används redan',
@ -129,11 +129,11 @@ export default {
selectList: 'Välj lista', selectList: 'Välj lista',
selectProject: 'Välj projekt', selectProject: 'Välj projekt',
settings: 'Inställningar', settings: 'Inställningar',
stopwatch: 'Timer',
subscribeToMyOwnCardsByDefault: 'Prenumerera på mina egna kort som standard', subscribeToMyOwnCardsByDefault: 'Prenumerera på mina egna kort som standard',
taskActions_title: 'Uppgiftsåtgärder', taskActions_title: 'Uppgiftsåtgärder',
tasks: 'Uppgifter', tasks: 'Uppgifter',
time: 'Tid', time: 'Tid',
timer: 'Timer',
title: 'Titel', title: 'Titel',
userActions_title: 'Användaråtgärder', userActions_title: 'Användaråtgärder',
userAddedThisCardToList: '<0>{{user}}</0><1> lade till detta kort i {{list}}</1>', userAddedThisCardToList: '<0>{{user}}</0><1> lade till detta kort i {{list}}</1>',
@ -186,7 +186,7 @@ export default {
editDescription_title: 'Redigera Beskrivning', editDescription_title: 'Redigera Beskrivning',
editEmail_title: 'Redigera E-mail', editEmail_title: 'Redigera E-mail',
editPassword_title: 'Redigera Lösenord', editPassword_title: 'Redigera Lösenord',
editTimer_title: 'Redigera Timer', editStopwatch_title: 'Redigera Timer',
editTitle_title: 'Redigera Titel', editTitle_title: 'Redigera Titel',
editUsername_title: 'Redigera Användarnamn', editUsername_title: 'Redigera Användarnamn',
leaveBoard: 'Lämna tavla', leaveBoard: 'Lämna tavla',

View file

@ -71,7 +71,7 @@ export default {
editEmail_title: 'E-mail ni Tahrirlash', editEmail_title: 'E-mail ni Tahrirlash',
editLabel_title: 'Yorliqni Tahrirlash', editLabel_title: 'Yorliqni Tahrirlash',
editPassword_title: 'Parolni Tahrirlash', editPassword_title: 'Parolni Tahrirlash',
editTimer_title: 'Taymerni Tahrirlash', editStopwatch_title: 'Taymerni Tahrirlash',
editUsername_title: 'Foydalanuvchi nomini Tahrirlash', editUsername_title: 'Foydalanuvchi nomini Tahrirlash',
email: 'E-mail', email: 'E-mail',
emailAlreadyInUse: 'E-mail allaqachon mavjud', emailAlreadyInUse: 'E-mail allaqachon mavjud',
@ -122,11 +122,11 @@ export default {
selectList: "Ro'yxatni tanlash", selectList: "Ro'yxatni tanlash",
selectProject: "Loyihani '", selectProject: "Loyihani '",
settings: 'Sozlamalar', settings: 'Sozlamalar',
stopwatch: 'Taymer',
subscribeToMyOwnCardsByDefault: "Odatiy holda o'z kartalarimga obuna bo'ling", subscribeToMyOwnCardsByDefault: "Odatiy holda o'z kartalarimga obuna bo'ling",
taskActions_title: 'Vazifa Amallari', taskActions_title: 'Vazifa Amallari',
tasks: 'Vazifalar', tasks: 'Vazifalar',
time: 'Vaqt', time: 'Vaqt',
timer: 'Taymer',
title: 'Sarlavha', title: 'Sarlavha',
userActions_title: 'Foydalanuvchi Amallari', userActions_title: 'Foydalanuvchi Amallari',
userAddedThisCardToList: "<1>Ushbu kartani {{list}} ga</1><0>{{user}}</0> qo'shdi", userAddedThisCardToList: "<1>Ushbu kartani {{list}} ga</1><0>{{user}}</0> qo'shdi",
@ -179,7 +179,7 @@ export default {
editDescription_title: 'Izohni Tahrirlash', editDescription_title: 'Izohni Tahrirlash',
editEmail_title: 'E-mailni Tahrirlash', editEmail_title: 'E-mailni Tahrirlash',
editPassword_title: 'Parolni Tahrirlash', editPassword_title: 'Parolni Tahrirlash',
editTimer_title: 'Taymerni Tahrirlash', editStopwatch_title: 'Taymerni Tahrirlash',
editTitle_title: 'Sarlavhani Tahrirlash', editTitle_title: 'Sarlavhani Tahrirlash',
editUsername_title: 'Foydalanuvchi nomini Tahrirlash', editUsername_title: 'Foydalanuvchi nomini Tahrirlash',
leaveBoard: 'Doskadan chiqish', leaveBoard: 'Doskadan chiqish',

View file

@ -69,7 +69,7 @@ export default {
editEmail_title: '编辑邮箱', editEmail_title: '编辑邮箱',
editLabel_title: '编辑标签', editLabel_title: '编辑标签',
editPassword_title: '修改密码', editPassword_title: '修改密码',
editTimer_title: '修改时间', editStopwatch_title: '修改时间',
editUsername_title: '修改用户名', editUsername_title: '修改用户名',
email: '邮箱', email: '邮箱',
emailAlreadyInUse: '邮箱已使用', emailAlreadyInUse: '邮箱已使用',
@ -120,11 +120,11 @@ export default {
selectList: '选择列表', selectList: '选择列表',
selectProject: '选择项目', selectProject: '选择项目',
settings: '设置', settings: '设置',
stopwatch: '计时器',
subscribeToMyOwnCardsByDefault: '默认关注自己创建的卡片', subscribeToMyOwnCardsByDefault: '默认关注自己创建的卡片',
taskActions_title: '任务操作', taskActions_title: '任务操作',
tasks: '任务', tasks: '任务',
time: '时间', time: '时间',
timer: '计时器',
title: '标题', title: '标题',
userActions_title: '用户操作', userActions_title: '用户操作',
userAddedThisCardToList: '<0>{{user}}</0><1> 向列表 {{list}} 添加了该卡片</1>', userAddedThisCardToList: '<0>{{user}}</0><1> 向列表 {{list}} 添加了该卡片</1>',
@ -177,7 +177,7 @@ export default {
editDescription_title: '编辑描述', editDescription_title: '编辑描述',
editEmail_title: '编辑邮箱', editEmail_title: '编辑邮箱',
editPassword_title: '编辑密码', editPassword_title: '编辑密码',
editTimer_title: '编辑实践', editStopwatch_title: '编辑实践',
editTitle_title: '编辑标题', editTitle_title: '编辑标题',
editUsername_title: '编辑用户名', editUsername_title: '编辑用户名',
leaveBoard: '离开面板', leaveBoard: '离开面板',

View file

@ -14,7 +14,7 @@ export default class extends BaseModel {
name: attr(), name: attr(),
description: attr(), description: attr(),
dueDate: attr(), dueDate: attr(),
timer: attr(), stopwatch: attr(),
isSubscribed: attr({ isSubscribed: attr({
getDefault: () => false, getDefault: () => false,
}), }),

View file

@ -6,28 +6,28 @@ const getFullSeconds = ({ startedAt, total }) => {
return total; return total;
}; };
export const createTimer = ({ hours, minutes, seconds }) => ({ export const createStopwatch = ({ hours, minutes, seconds }) => ({
startedAt: null, startedAt: null,
total: hours * 60 * 60 + minutes * 60 + seconds, total: hours * 60 * 60 + minutes * 60 + seconds,
}); });
export const updateTimer = ({ startedAt }, parts) => ({ export const updateStopwatch = ({ startedAt }, parts) => ({
...createTimer(parts), ...createStopwatch(parts),
startedAt: startedAt && new Date(), startedAt: startedAt && new Date(),
}); });
export const startTimer = (timer) => ({ export const startStopwatch = (stopwatch) => ({
startedAt: new Date(), startedAt: new Date(),
total: timer ? timer.total : 0, total: stopwatch ? stopwatch.total : 0,
}); });
export const stopTimer = (timer) => ({ export const stopStopwatch = (stopwatch) => ({
startedAt: null, startedAt: null,
total: getFullSeconds(timer), total: getFullSeconds(stopwatch),
}); });
export const getTimerParts = (timer) => { export const getStopwatchParts = (stopwatch) => {
const fullSeconds = getFullSeconds(timer); const fullSeconds = getFullSeconds(stopwatch);
const hours = Math.floor(fullSeconds / 3600); const hours = Math.floor(fullSeconds / 3600);
const minutes = Math.floor((fullSeconds - hours * 3600) / 60); const minutes = Math.floor((fullSeconds - hours * 3600) / 60);
@ -40,8 +40,8 @@ export const getTimerParts = (timer) => {
}; };
}; };
export const formatTimer = (timer) => { export const formatStopwatch = (stopwatch) => {
const { hours, minutes, seconds } = getTimerParts(timer); const { hours, minutes, seconds } = getStopwatchParts(stopwatch);
return [hours, ...[minutes, seconds].map((part) => (part < 10 ? `0${part}` : part))].join(':'); return [hours, ...[minutes, seconds].map((part) => (part < 10 ? `0${part}` : part))].join(':');
}; };

View file

@ -14,7 +14,7 @@ const Errors = {
const dueDateValidator = (value) => moment(value, moment.ISO_8601, true).isValid(); const dueDateValidator = (value) => moment(value, moment.ISO_8601, true).isValid();
const timerValidator = (value) => { const stopwatchValidator = (value) => {
if (!_.isPlainObject(value) || _.size(value) !== 2) { if (!_.isPlainObject(value) || _.size(value) !== 2) {
return false; return false;
} }
@ -57,9 +57,9 @@ module.exports = {
type: 'string', type: 'string',
custom: dueDateValidator, custom: dueDateValidator,
}, },
timer: { stopwatch: {
type: 'json', type: 'json',
custom: timerValidator, custom: stopwatchValidator,
}, },
}, },
@ -95,7 +95,7 @@ module.exports = {
throw Errors.NOT_ENOUGH_RIGHTS; throw Errors.NOT_ENOUGH_RIGHTS;
} }
const values = _.pick(inputs, ['position', 'name', 'description', 'dueDate', 'timer']); const values = _.pick(inputs, ['position', 'name', 'description', 'dueDate', 'stopwatch']);
const card = await sails.helpers.cards.createOne const card = await sails.helpers.cards.createOne
.with({ .with({

View file

@ -23,7 +23,7 @@ const Errors = {
const dueDateValidator = (value) => moment(value, moment.ISO_8601, true).isValid(); const dueDateValidator = (value) => moment(value, moment.ISO_8601, true).isValid();
const timerValidator = (value) => { const stopwatchValidator = (value) => {
if (!_.isPlainObject(value) || _.size(value) !== 2) { if (!_.isPlainObject(value) || _.size(value) !== 2) {
return false; return false;
} }
@ -80,9 +80,9 @@ module.exports = {
custom: dueDateValidator, custom: dueDateValidator,
allowNull: true, allowNull: true,
}, },
timer: { stopwatch: {
type: 'json', type: 'json',
custom: timerValidator, custom: stopwatchValidator,
}, },
isSubscribed: { isSubscribed: {
type: 'boolean', type: 'boolean',
@ -171,7 +171,7 @@ module.exports = {
'name', 'name',
'description', 'description',
'dueDate', 'dueDate',
'timer', 'stopwatch',
'isSubscribed', 'isSubscribed',
]); ]);

View file

@ -28,7 +28,7 @@ module.exports = {
type: 'ref', type: 'ref',
columnName: 'due_date', columnName: 'due_date',
}, },
timer: { stopwatch: {
type: 'json', type: 'json',
}, },

View file

@ -0,0 +1,9 @@
module.exports.up = (knex) =>
knex.schema.table('card', (table) => {
table.renameColumn('timer', 'stopwatch');
});
module.exports.down = (knex) =>
knex.schema.table('card', (table) => {
table.renameColumn('stopwatch', 'timer');
});