From f7f916cb7386cf60474a7ba773380e907a772665 Mon Sep 17 00:00:00 2001 From: Sergiusz Date: Thu, 8 Feb 2024 09:09:28 +0100 Subject: [PATCH] Split timer into entry and timer --- _locales/en/messages.json | 3 + package.json | 2 +- scripts-2.0/components/Billable/styles.scss | 2 +- scripts-2.0/components/ContextMenu/index.tsx | 54 ++++-- .../components/ContextMenu/styles.scss | 10 +- scripts-2.0/components/ContextMenu/types.ts | 4 + scripts-2.0/components/Footer/index.tsx | 80 +++++---- scripts-2.0/components/Footer/styles.scss | 25 ++- scripts-2.0/components/Header/styles.scss | 1 + scripts-2.0/components/InfoBox/InfoBox.tsx | 35 ++++ scripts-2.0/components/InfoBox/index.tsx | 1 + .../infoboxesContent/InfoBoxErrorContent.tsx | 11 ++ .../InfoBoxSuccessContent.tsx | 24 +++ .../InfoBox/infoboxesContent/index.tsx | 7 + scripts-2.0/components/InfoBox/styles.scss | 37 ++++ scripts-2.0/components/InfoBox/types.ts | 4 + .../components/PopupMenu/Footer/index.tsx | 134 +++++--------- .../components/PopupMenu/Footer/styles.scss | 134 +++++--------- .../components/PopupMenu/Header/Header.tsx | 62 +++++++ .../components/PopupMenu/Header/UserPopup.tsx | 77 ++++++++ .../components/PopupMenu/Header/index.tsx | 1 + .../components/PopupMenu/Header/styles.scss | 164 ++++++++++++++++++ .../PopupMenu/WorkingTimerSection/index.tsx | 8 +- .../PopupMenu/WorkingTimerSection/styles.scss | 16 +- scripts-2.0/components/PopupMenu/index.tsx | 149 +++++++++------- .../components/TimeSelectors/index.tsx | 53 +++--- scripts-2.0/helpers/Gravatar.js | 5 +- scripts-2.0/icons/index.tsx | 21 ++- scripts-2.0/icons/shutdown-icon.svg | 3 + scripts-2.0/icons/types.tsx | 3 + scripts-2.0/icons/user-circle-fas.svg | 3 + 31 files changed, 789 insertions(+), 344 deletions(-) create mode 100644 scripts-2.0/components/ContextMenu/types.ts create mode 100644 scripts-2.0/components/InfoBox/InfoBox.tsx create mode 100644 scripts-2.0/components/InfoBox/index.tsx create mode 100644 scripts-2.0/components/InfoBox/infoboxesContent/InfoBoxErrorContent.tsx create mode 100644 scripts-2.0/components/InfoBox/infoboxesContent/InfoBoxSuccessContent.tsx create mode 100644 scripts-2.0/components/InfoBox/infoboxesContent/index.tsx create mode 100644 scripts-2.0/components/InfoBox/styles.scss create mode 100644 scripts-2.0/components/InfoBox/types.ts create mode 100644 scripts-2.0/components/PopupMenu/Header/Header.tsx create mode 100644 scripts-2.0/components/PopupMenu/Header/UserPopup.tsx create mode 100644 scripts-2.0/components/PopupMenu/Header/index.tsx create mode 100644 scripts-2.0/components/PopupMenu/Header/styles.scss create mode 100644 scripts-2.0/icons/shutdown-icon.svg create mode 100644 scripts-2.0/icons/user-circle-fas.svg diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 6d82d89..a313082 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -231,6 +231,9 @@ "go_to_timesheet": { "message": "Go to Timesheet" }, + "see_full_timesheet": { + "message": "See full Timesheet" + }, "go_to_subscriton_page": { "message": "Go to subscription page" }, diff --git a/package.json b/package.json index c95592b..e98a479 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "timecamp-chrome-extension", - "version": "2.85.2", + "version": "2.85.74", "description": "TimeCamp Google Chrome Time Tracking Extension", "main": "index.js", "scripts": { diff --git a/scripts-2.0/components/Billable/styles.scss b/scripts-2.0/components/Billable/styles.scss index 35258e8..34a0faf 100644 --- a/scripts-2.0/components/Billable/styles.scss +++ b/scripts-2.0/components/Billable/styles.scss @@ -45,7 +45,7 @@ height: 16px; border-radius: 100%; background: #fff; - display: block;; + display: block; } input:checked ~ .checkmark { diff --git a/scripts-2.0/components/ContextMenu/index.tsx b/scripts-2.0/components/ContextMenu/index.tsx index 76ee817..8dbd703 100644 --- a/scripts-2.0/components/ContextMenu/index.tsx +++ b/scripts-2.0/components/ContextMenu/index.tsx @@ -38,7 +38,7 @@ export interface ContextMenuInterface { note: string, billable: boolean, startTimerCallback: Function, - addTimeEntryCallback: Function, + addTimeEntryCallback?: Function, onCloseCallback: Function, billableInputVisibility: boolean|null, externalTaskId: string, @@ -91,6 +91,19 @@ const ContextMenu: React.FC = (props) => { const THIRTY_DAYS_IN_MILISEC = 2592000000; + const isTimeEntryInValid = + props.service === "chrome_plugin" && + props.addTimeEntryCallback && + !stopTime; + + const shouldShowAddEntryButton = + props.service !== "chrome_plugin" + ? false + : props.addTimeEntryCallback + ? true + : false; + + useEffect(() => { setNote(props.note); @@ -298,7 +311,7 @@ const ContextMenu: React.FC = (props) => { }; const addTimeEntry = (startTime, stopTime) => { - addTimeEntryCallback( + addTimeEntryCallback?.( taskId, note, service, @@ -336,6 +349,7 @@ const ContextMenu: React.FC = (props) => { setClearTriggerForTimePicker(!clearTriggerForTimePicker); setOpen(false); setTaskId(0); + onCloseCallback() }; const renderTagPicker = () => { @@ -382,6 +396,13 @@ const ContextMenu: React.FC = (props) => { .replace('*linkClose*', ''))); }; + const onStopTimeValueChange = (value) => { + if (value !== null) { + setWrongDatesErrorMessage(''); + } + setStopTime(value); + } + //data-elevation is fix for trello card modal (it close when click on context menu) return (
= (props) => { const now = dateTime.getNow(); setWrongDatesErrorMessage((now < value && stopTime === null) ? translate('Start time cannot be greater than now') : ''); }} - onStopTimeValueChange={(value) => { - if (value !== null) { - setWrongDatesErrorMessage(''); - } - setStopTime(value); - }} + onStopTimeValueChange={ props.addTimeEntryCallback? onStopTimeValueChange : undefined} /> { billableInputVisibility && - {setBillable(newBillable)}} - /> +
+ {setBillable(newBillable)}} + /> +
}