diff --git a/apps/web/lib/features/daily-plan/create-daily-plan-form-modal.tsx b/apps/web/lib/features/daily-plan/create-daily-plan-form-modal.tsx index a483882c7..f3ca4f409 100644 --- a/apps/web/lib/features/daily-plan/create-daily-plan-form-modal.tsx +++ b/apps/web/lib/features/daily-plan/create-daily-plan-form-modal.tsx @@ -13,6 +13,8 @@ import { ScrollArea } from '@components/ui/scroll-bar'; import { clsxm, isValidUrl } from '@app/utils'; import stc from 'string-to-color'; import { Check } from 'lucide-react'; +import { cn } from 'lib/utils'; +import { MdOutlineKeyboardArrowDown } from 'react-icons/md'; export function CreateDailyPlanFormModal({ open, @@ -46,11 +48,24 @@ export function CreateDailyPlanFormModal({ const [date, setDate] = useState(new Date(tomorrowDate)); const [selectedEmployee, setSelectedEmployee] = useState(isManagerConnectedUser); + const [isOpen, setIsOpen] = useState(false); const handleMemberClick = useCallback((member: OT_Member) => { setSelectedEmployee(member); }, []); + const handleCloseModal = useCallback(() => { + closeModal(); + }, [closeModal]); + + const handleSelect = useCallback(() => { + reset(); + }, [reset]); + + const handleSelectAndClose = useCallback(() => { + handleCloseModal(); + }, [handleCloseModal]); + const onSubmit = useCallback( async (values: any) => { const toDay = new Date(); @@ -69,7 +84,6 @@ export function CreateDailyPlanFormModal({ organizationId: user?.employee.organizationId }).then(() => { reset(); - closeModal(); }); }, [ @@ -81,20 +95,19 @@ export function CreateDailyPlanFormModal({ user?.employee.organizationId, employeeId, selectedEmployee?.employeeId, - reset, - closeModal + reset ] ); return ( - +
{/* Form header */}
- Plan this task for {moment(date).format('DD.MM.YYYY').toString()} + Select Date
@@ -135,15 +148,56 @@ export function CreateDailyPlanFormModal({ > Cancel - +
+ + {isOpen && ( +
+
+ + +
+
+ )} +
diff --git a/apps/web/lib/features/daily-plan/suggest-daily-plan-modal.tsx b/apps/web/lib/features/daily-plan/suggest-daily-plan-modal.tsx index 7c5718ae3..af8d982f2 100644 --- a/apps/web/lib/features/daily-plan/suggest-daily-plan-modal.tsx +++ b/apps/web/lib/features/daily-plan/suggest-daily-plan-modal.tsx @@ -30,7 +30,7 @@ export function SuggestDailyPlanModal(props: ISuggestDailyPlanModalProps) { }, [closeModal, currentDate]); return ( - +
diff --git a/apps/web/lib/features/integrations/activity-calendar/index.tsx b/apps/web/lib/features/integrations/activity-calendar/index.tsx index 96e5ef7f1..10f6e9289 100644 --- a/apps/web/lib/features/integrations/activity-calendar/index.tsx +++ b/apps/web/lib/features/integrations/activity-calendar/index.tsx @@ -5,6 +5,7 @@ import { useEffect, useState } from 'react'; import { CalendarDatum, ResponsiveCalendar } from '@nivo/calendar'; import Skeleton from 'react-loading-skeleton'; import moment from 'moment'; +import Separator from '@components/ui/separator'; export function ActivityCalendar() { const { timerLogsDailyReport, timerLogsDailyReportLoading } = useTimeLogs(); @@ -15,48 +16,69 @@ export function ActivityCalendar() { ); }, [timerLogsDailyReport]); + const colorRange = [ + '#9370DB', + '#6A5ACD', + '#4169E1', + '#0000FF', + '#1E90FF', + '#87CEEB', + '#FFA500', + '#FF8C00', + '#FF4500', + '#FF0000' + ]; + return ( -
+
{timerLogsDailyReportLoading ? ( ) : ( -
+
- d.toLocaleString('en-US', { month: 'short' })} - /> - - +
+ ( +
+ + {value.day} +
+ )} + yearLegend={(value) => value} + data={calendarData} + from={moment().startOf('year').toDate()} + to={moment().startOf('year').toDate()} + emptyColor="#ffffff" + colors={colorRange} + yearSpacing={40} + monthBorderWidth={0} + dayBorderWidth={0} + daySpacing={2} + monthLegendPosition="before" + margin={{ top: 0, right: 5, bottom: 0, left: 5 }} + legends={[ + { + anchor: 'bottom-right', + direction: 'row', + translateY: 36, + itemCount: 4, + itemWidth: 70, + itemHeight: 20, + itemsSpacing: 14, + itemDirection: 'left-to-right', + symbolSize: 20, + data: [ + { color: '#9370DB', label: '0 - 4 Hours', id: 'legend-purple' }, + { color: '#0000FF', label: '4 - 10 Hours', id: 'legend-blue' }, + { color: '#FFA500', label: '10 - 18 Hours', id: 'legend-orange' }, + { color: '#FF0000', label: '18 - 24 Hours', id: 'legend-red' } + ] + } + ]} + monthSpacing={20} + monthLegend={(_, __, d) => d.toLocaleString('en-US', { month: 'short' })} + /> +
)}
@@ -84,24 +106,28 @@ function ActivityCalendarSkeleton() { function ActivityLegend() { return ( -
+

Legend

-
- - 8 Hours or more + +
+ + 0 - 4 Hours
-
- - 6 Hours + +
+ + 4 - 10 Hours
-
- - 4 Hours + +
+ + 10 - 18 Hours
-
- - 2 Hours + +
+ + 18 - 24 Hours
- ) + ); } diff --git a/apps/web/lib/features/task/task-card.tsx b/apps/web/lib/features/task/task-card.tsx index 7ccd4b84a..6f3e6de8d 100644 --- a/apps/web/lib/features/task/task-card.tsx +++ b/apps/web/lib/features/task/task-card.tsx @@ -537,13 +537,14 @@ function TaskCardMenu({ ); const allPlans = [...todayPlan, ...futurePlans]; - const isTaskPlannedMultipleTimes = allPlans.reduce((count, plan) => { - if (plan?.tasks) { - const taskCount = plan.tasks.filter(_task => _task.id === task.id).length; - return count + taskCount; - } - return count; - }, 0) > 1; + const isTaskPlannedMultipleTimes = + allPlans.reduce((count, plan) => { + if (plan?.tasks) { + const taskCount = plan.tasks.filter((_task) => _task.id === task.id).length; + return count + taskCount; + } + return count; + }, 0) > 1; const taskPlannedTomorrow = useMemo( () => @@ -604,7 +605,8 @@ function TaskCardMenu({ - {viewType == 'default' && ( + {(viewType == 'default' || + (viewType === 'dailyplan' && planMode === 'Outstanding')) && ( <>
@@ -638,16 +640,6 @@ function TaskCardMenu({ )} - {viewType === 'dailyplan' && planMode === 'Outstanding' && ( - <> - {canSeeActivity ? ( - - ) : ( - <> - )} - - )} - {viewType === 'dailyplan' && (planMode === 'Today Tasks' || planMode === 'Future Tasks') && ( <> @@ -667,7 +659,8 @@ function TaskCardMenu({ task={task} member={profile?.member} /> -
)} +
+ )}
) : ( <> @@ -753,7 +746,15 @@ export function PlanTask({ }; return ( - <> +
+ - +
); } diff --git a/apps/web/lib/features/task/task-filters.tsx b/apps/web/lib/features/task/task-filters.tsx index 7fbe716f4..e484ed377 100644 --- a/apps/web/lib/features/task/task-filters.tsx +++ b/apps/web/lib/features/task/task-filters.tsx @@ -28,6 +28,8 @@ import { TaskDatePickerWithRange } from './task-date-range'; import '../../../styles/style.css'; import { AddManualTimeModal } from '../manual-time/add-manual-time-modal'; import { useTimeLogs } from '@app/hooks/features/useTimeLogs'; +import { estimatedTotalTime, getTotalTasks } from './daily-plan'; +import { DAILY_PLAN_SUGGESTION_MODAL_DATE } from '@app/constants'; export type ITab = 'worked' | 'assigned' | 'unassigned' | 'dailyplan' | 'stats'; @@ -55,7 +57,7 @@ export function useTaskFilter(profile: I_UserProfilePage) { ); const { activeTeamManagers, activeTeam } = useOrganizationTeams(); const { user } = useAuthenticateUser(); - const { profileDailyPlans } = useDailyPlan(); + const { profileDailyPlans, outstandingPlans, todayPlan } = useDailyPlan(); const { timerLogsDailyReport } = useTimeLogs(); const isManagerConnectedUser = useMemo( () => activeTeamManagers.findIndex((member) => member.employee?.user?.id == user?.id), @@ -87,6 +89,7 @@ export function useTaskFilter(profile: I_UserProfilePage) { ); const tasks = useMemo(() => tasksFiltered[tab], [tab, tasksFiltered]); + const dailyPlanSuggestionModalDate = window && window?.localStorage.getItem(DAILY_PLAN_SUGGESTION_MODAL_DATE); const outclickFilterCard = useOutsideClick(() => { if (filterType === 'search' && taskName.trim().length === 0) { @@ -111,24 +114,22 @@ export function useTaskFilter(profile: I_UserProfilePage) { name: t('common.UNASSIGNED'), description: t('task.tabFilter.UNASSIGNED_DESCRIPTION'), count: profile.tasksGrouped.unassignedTasks.length - }, - + } ]; // For tabs on profile page, display "Worked" and "Daily Plan" only for the logged in user or managers if (activeTeam?.shareProfileView || canSeeActivity) { - tabs.push({ tab: 'dailyplan', - name: 'Planned', - description: 'This tab shows all yours tasks planned', + name: t('common.DAILYPLAN'), + description: t('task.tabFilter.DAILYPLAN_DESCRIPTION'), count: profile.tasksGrouped.planned }); tabs.push({ tab: 'stats', name: 'Stats', description: 'This tab shows all stats', - count: timerLogsDailyReport.length, + count: timerLogsDailyReport.length }); tabs.unshift({ tab: 'worked', @@ -167,6 +168,21 @@ export function useTaskFilter(profile: I_UserProfilePage) { [setStatusFilter] ); + // Set the tab to assigned if user has not planned tasks (if outstanding is empty) (on first load) + useEffect(() => { + if (dailyPlanSuggestionModalDate) { + if (!getTotalTasks(todayPlan)) { + if (estimatedTotalTime(outstandingPlans).totalTasks) { + setTab('dailyplan'); + } else { + setTab('assigned'); + } + } + } + + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [dailyPlanSuggestionModalDate]); + // Reset status applied filter status when filter changed useEffect(() => { if (filterType !== 'status') { @@ -202,9 +218,9 @@ export function useTaskFilter(profile: I_UserProfilePage) { .every((k) => { return k === 'label' ? intersection( - statusFilters[k], - task['tags'].map((item) => item.name) - ).length === statusFilters[k].length + statusFilters[k], + task['tags'].map((item) => item.name) + ).length === statusFilters[k].length : statusFilters[k].includes(task[k]); }); }); diff --git a/apps/web/lib/features/user-profile-plans.tsx b/apps/web/lib/features/user-profile-plans.tsx index 98810a9e7..ec452d4ea 100644 --- a/apps/web/lib/features/user-profile-plans.tsx +++ b/apps/web/lib/features/user-profile-plans.tsx @@ -71,6 +71,16 @@ export function UserProfilePlans() { const [filterPastPlanData, setFilteredPastPlanData] = useState(pastPlans); const [filterAllPlanData, setFilterAllPlanData] = useState(sortedPlans); + // Set the tab plan tab to outstanding if user has no daily plan and there are outstanding tasks (on first load) + useEffect(() => { + if (!getTotalTasks(todayPlan)) { + if (estimatedTotalTime(outstandingPlans).totalTasks) { + setCurrentTab('Outstanding'); + } + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + useEffect(() => { window.localStorage.setItem('daily-plan-tab', currentTab); if (!currentDataDailyPlan) return; diff --git a/apps/web/locales/ar.json b/apps/web/locales/ar.json index 907c33e68..bc2cd96ae 100644 --- a/apps/web/locales/ar.json +++ b/apps/web/locales/ar.json @@ -198,7 +198,8 @@ "WORKING": "يعمل", "PAUSED": "متوقف", "ONLINE": "متصل", - "SKIP_ADD_LATER": "أضف لاحقًا" + "SKIP_ADD_LATER": "أضف لاحقًا", + "DAILYPLAN": "مخطط" }, "hotkeys": { "HELP": "مساعدة", @@ -553,7 +554,8 @@ "WORKED_DESCRIPTION": "يعرض هذا التبويب جميع المهام التي بدأت العمل عليها", "ASSIGNED_DESCRIPTION": "يعرض هذا التبويب جميع المهام المعينة لك", "UNASSIGNED_DESCRIPTION": "يعرض هذا التبويب جميع المهام غير المعينة لك", - "NO_TASK_USER_ASSIGNED": "لم يتم تعيين أحد لهذه المهمة" + "NO_TASK_USER_ASSIGNED": "لم يتم تعيين أحد لهذه المهمة", + "DAILYPLAN_DESCRIPTION": "تعرض علامة التبويب هذه جميع مهامك المخطط لها" }, "taskTableHead": { "TASK_NAME": "الاسم", diff --git a/apps/web/locales/bg.json b/apps/web/locales/bg.json index d0c28566c..3f5091c1f 100644 --- a/apps/web/locales/bg.json +++ b/apps/web/locales/bg.json @@ -198,7 +198,8 @@ "WORKING": "Работи", "PAUSED": "Пауза", "ONLINE": "Онлайн", - "SKIP_ADD_LATER": "Добави по-късно" + "SKIP_ADD_LATER": "Добави по-късно", + "DAILYPLAN": "Планирано" }, "hotkeys": { "HELP": "Помощ", @@ -553,7 +554,8 @@ "WORKED_DESCRIPTION": "Тази раздел показва всички задачи, по които сте започнали да работите", "ASSIGNED_DESCRIPTION": "Тази раздел показва всички задачи, които са възложени на вас", "UNASSIGNED_DESCRIPTION": "Тази раздел показва всички задачи, които не са възложени на вас", - "NO_TASK_USER_ASSIGNED": "Никой не е възложен на тази задача" + "NO_TASK_USER_ASSIGNED": "Никой не е възложен на тази задача", + "DAILYPLAN_DESCRIPTION": "Този раздел показва всички планирани задачи." }, "taskTableHead": { "TASK_NAME": "Име", diff --git a/apps/web/locales/de.json b/apps/web/locales/de.json index 4ba01dee8..eae3d5c82 100644 --- a/apps/web/locales/de.json +++ b/apps/web/locales/de.json @@ -198,7 +198,8 @@ "WORKING": "Arbeiten", "PAUSED": "Pausiert", "ONLINE": "Online", - "SKIP_ADD_LATER": "Später hinzufügen" + "SKIP_ADD_LATER": "Später hinzufügen", + "DAILYPLAN": "Plan dzienny" }, "hotkeys": { "HELP": "Hilfe", @@ -553,7 +554,8 @@ "WORKED_DESCRIPTION": "Dieser Tab zeigt alle Aufgaben, an denen Sie gearbeitet haben", "ASSIGNED_DESCRIPTION": "Dieser Tab zeigt alle Aufgaben, die Ihnen zugewiesen sind", "UNASSIGNED_DESCRIPTION": "Dieser Tab zeigt alle Aufgaben, die Ihnen nicht zugewiesen sind", - "NO_TASK_USER_ASSIGNED": "Niemandem dieser Aufgabe zugewiesen" + "NO_TASK_USER_ASSIGNED": "Niemandem dieser Aufgabe zugewiesen", + "DAILYPLAN_DESCRIPTION": "Diese Registerkarte zeigt alle Ihre geplanten Aufgaben" }, "taskTableHead": { "TASK_NAME": "Name", diff --git a/apps/web/locales/en.json b/apps/web/locales/en.json index 5e3b4424a..99b0ecab2 100644 --- a/apps/web/locales/en.json +++ b/apps/web/locales/en.json @@ -9,7 +9,7 @@ "TOMORROW": "Tomorrow", "YESTERDAY": "Yesterday", "REJECTED": "Rejected", - "VERIFY": "verify", + "VERIFY": "Verify", "CARDS": "Cards", "TABLE": "Table", "KANBAN": "Kanban", @@ -26,7 +26,7 @@ "POSITION": "Position", "ROLES": "Roles", "JOIN_OR_LEFT": "Joined / Left", - "PLEASE": "please", + "PLEASE": "Please", "HERE": "here", "PEOPLE": "People", "COLLABORATE": "Collaborate", @@ -52,7 +52,7 @@ "MAKE_A_MANAGER": "Make a Manager", "UNMAKE_A_MANAGER": "Unmake a Manager", "TRANSFERT_OWNERSHIP": "Transfer Ownership", - "TRANSFERT_OWNERSHIP_TO": "Transfer full ownership of team to another user", + "TRANSFERT_OWNERSHIP_TO": "Transfer full ownership of the team to another user", "REMOVE": "Remove", "REMOVE_TEAM": "Remove Team", "DISPOSE_TEAM": "Dispose Team", @@ -142,7 +142,7 @@ "TRANSFER": "Transfer", "TRANSFER_TEAM": "Transfer Team", "TEAM_MEMBERS": "Team Members", - "NO_TEAM": "Create your own team or join existed", + "NO_TEAM": "Create your team or join existing", "NO_TEAM_SUB": "It's great to work with others so create a team and invite everyone to collaborate!", "NO_TEAM_TOOLTIP": "You need to verify your email address", "CANCEL": "Cancel", @@ -183,7 +183,7 @@ "GITHUB_LOADING_TEXT": "We are now installing your GitHub Integration, hold on...", "GITHUB_INTEGRATION_SUBTITLE_TEXT": "Activate GitHub Integration for project & repository sync", "GITHUB_INTEGRATION_AUTO_SYNC_TASK_TEXT": "Automatically synchronize tasks in your application for seamless and efficient updates.", - "GITHUB_INTEGRATION_LABEL_SYNC_TASK_TEXT": "Synchronize tasks selectively by associating them with specific label.", + "GITHUB_INTEGRATION_LABEL_SYNC_TASK_TEXT": "Synchronize tasks selectively by associating them with specific labels.", "GITHUB_AUTO_SYNC_LABEL": "Select Auto-Sync Label", "THERE_IS_NO_TASK_ASSIGNED": "There is no task assigned", "NO_USERS_ONLINE": "There are no users online", @@ -198,7 +198,8 @@ "WORKING": "Working", "PAUSED": "Paused", "ONLINE": "Online", - "SKIP_ADD_LATER": "Add later" + "SKIP_ADD_LATER": "Add later", + "DAILYPLAN": "Planned" }, "hotkeys": { "HELP": "Help", @@ -214,8 +215,8 @@ "REAL_TIME_ON_WORKING": "We are working on Real-Time Sync at the moment, please check on this feature later.", "ALERT_DELETE_ACCOUNT": "You will be removed from all teams, except where you are the only manager in the team", "ALERT_ACCOUNT_PERMANENT_DELETE": "Your Account will be deleted permanently with removing from all teams", - "ALERT_REMOVE_ALL_DATA": "All Account Data will be removed from all teams where you are ONLY one existed manager", - "ALERT_REMOVE_TEAM": "Team will be completely removed for the system and team members lost access", + "ALERT_REMOVE_ALL_DATA": "All Account Data will be removed from all teams where you are ONLY one existing manager", + "ALERT_REMOVE_TEAM": "Team will be completely removed from the system and team members will lose access", "ALERT_QUIT_TEAM": "You are about to quit the team", "ALERT_USER_DELETED_FROM_TEAM": "You have been deleted from the team" }, @@ -224,8 +225,8 @@ "BREADCRUMB": "[\"Dashboard\"]", "SENT_EMAIL_VERIFICATION": "Code Verification has been sent to your email", "SENT_EMAIL_VERIFICATION_YOU_NEED_TO": "You need to ", - "SENT_EMAIL_VERIFICATION_YOUR_EMAIL_ADDRESS": " your email address. The verification code should already be send to your email, but feel free to click ", - "SENT_EMAIL_VERIFICATION_RESEND": " to resend the code, if you did not received it.", + "SENT_EMAIL_VERIFICATION_YOUR_EMAIL_ADDRESS": " your email address. The verification code should already be sent to your email, but feel free to click ", + "SENT_EMAIL_VERIFICATION_RESEND": " to resend the code, if you did not receive it.", "INVITATIONS": "You've been invited to join", "CONFIRM_ACCEPT_INVITATION": "Are you sure you want to accept the invitation?", "CONFIRM_REJECT_INVITATION": "Are you sure you want to reject the invitation?", @@ -238,7 +239,7 @@ }, "profile": { "BREADCRUMB": "[\"Member Tasks\"]", - "MEMBER_NOT_FOUND_MSG_1": "Member you are looking is not exist in a team please try to search with different query.", + "MEMBER_NOT_FOUND_MSG_1": "The member you are looking is not exist in a team please try to search with a different query.", "MEMBER_NOT_FOUND_MSG_2": "If you are looking for a member in a different team, please select the team from the dropdown above.", "GO_TO_HOME": "Go to Home" }, @@ -296,14 +297,14 @@ }, "authPasscode": { "HEADING_TITLE": "Join existing Team", - "HEADING_DESCRIPTION": "Please enter email and invitation code to join existing team." + "HEADING_DESCRIPTION": "Please enter your email and invitation code to join an existing team." }, "authLogin": { "HEADING_TITLE": "Log In to Ever Teams", "HEADING_DESCRIPTION": "Please enter your email below to begin the login process.", "WORKSPACE": "Workspace", "HEADING_WORKSPACE_LINE1": "The email associated with multiple workspaces,", - "HEADING_WORKSPACE_LINE2": "please select one to continue", + "HEADING_WORKSPACE_LINE2": "Please select one to continue", "HAVE_PASSWORD": "Have Password?", "LOGIN_WITH_PASSWORD": "Login with the Password", "LOGIN_WITH_MAGIC_CODE": "Log in with a magic code", @@ -326,7 +327,7 @@ "settings": { "BREADCRUMB": "[\"Dashboard\", \"Settings\"]", "DANDER_ZONE": "Danger Zone", - "HEADING_DESCRIPTION": "Setting dan manage your personal dashboard here", + "HEADING_DESCRIPTION": "Setting dan manage your dashboard here", "ARE_YOU_SURE_TO_DELETE_USER": "Are you sure you want to delete this user?" }, "settingsPersonal": { @@ -338,7 +339,7 @@ "ABOUT_TO_CHANGE_EMAIL": "You are about to change Email", "ABOUT_TO_DELETE_ACCOUNT": "You are about to Delete your account ?", "TIMEZONE_SEARCH_PLACEHOLDER": "Your Timezone", - "ABOUT_TO_REMOVE_FROM_ALL_TEAMS": "You're about to be removed from all teams, unless you're the only manager ?", + "ABOUT_TO_REMOVE_FROM_ALL_TEAMS": "You're about to be removed from all teams unless you're the only manager ?", "DATA_SYNCHRONIZATION": "Data Synchronization", "ABOUT_TO_DELETE_ALL_ACCOUNT_DATA": "You are about to Delete your account and all your data ?", "ABOUT_TO_REMOVE_ACCOUNT": "You are about to remove your account" @@ -428,7 +429,7 @@ "COPY_NUMBER": "Copy Number", "IN_PROGRESS": "In Progress", "FINAL": "Final", - "DISPOSE_TEAM": "You are about to Dispose team ?", + "DISPOSE_TEAM": "You are about to Dispose the team ?", "QUIT_TEAM": "You are about to Quit team ?", "TEAM_COLOR": "Team Color", "TEAM_SIZE": "Team Size", @@ -449,7 +450,7 @@ }, "invite": { "HEADING_TITLE": "Invite member to your team", - "HEADING_DESCRIPTION": "Send invitation to a team member by email", + "HEADING_DESCRIPTION": "Send an invitation to a team member by email", "TEAM_MEMBER_EMAIL": "Team Member's Email", "TEAM_MEMBER_FULLNAME": "Team Member's Full Name", "SEND_INVITE": "Send Invitation", @@ -460,7 +461,7 @@ "NAME_AND_EMAIL": "Name & Email", "POSITION": "Position", "DATE_AND_TIME_REQUEST": "Date & Time Request", - "CV_OR_ATTACHMENT": "CV / Attachement" + "CV_OR_ATTACHMENT": "CV / Attachment" } }, "permissions": { @@ -479,7 +480,7 @@ }, "offline": { "HEADING_TITLE": "Network Disconnected!", - "HEADING_DESCRIPTION": "You are currently Offline, please check your internet connection..." + "HEADING_DESCRIPTION": "Your network is offline, please check your internet connection..." }, "error": { "TITLE": "Error !", @@ -488,7 +489,7 @@ }, "maintenance": { "HEADING_TITLE": "We are Under Maintenance", - "HEADING_DESCRIPTION": "We are currently updating our website to serve you better. Please check back later." + "HEADING_DESCRIPTION": "We are updating our website to serve you better. Please check back later." } }, "timer": { @@ -510,13 +511,13 @@ ], "TIME_ACTIVITY": "Activity", "TOTAL_HOURS": "Total Hours", - "NO_SCREENSHOOT": "No Screenshoots", + "NO_SCREENSHOOT": "No Screenshots", "PERCENT_OF_MINUTES": " % of 10 Minutes", "APPS": "Apps", "VISITED_DATES": "Visited Dates", "PERCENT_USED": "Percent Used", "TIME_SPENT_IN_HOURS": "Time spent (Hours)", - "THERE_IS_NO_APPS_VISITED": "There is no Apps Visited.", + "THERE_IS_NO_APPS_VISITED": "There are no Apps Visited.", "OTHER_DETAILS": "Other details", "KEYBOARD": "keyboard", "MOUSE": "Mouse", @@ -529,7 +530,7 @@ "TITLE": "TODAY'S PLAN", "WORK_TIME_PLANNED": "Add planned working hours", "WORK_TIME_PLANNED_PLACEHOLDER": "Working time planned for today", - "TASKS_WITH_NO_ESTIMATIONS": "Taks with no time estimations", + "TASKS_WITH_NO_ESTIMATIONS": "Tasks with no time estimations", "START_WORKING_BUTTON": "Start working", "WARNING_PLAN_ESTIMATION": "Please correct planned work hours or re-estimate task(s)" } @@ -553,7 +554,8 @@ "WORKED_DESCRIPTION": "This tab shows all tasks you started working on", "ASSIGNED_DESCRIPTION": "This tab shows all tasks that are assigned to you", "UNASSIGNED_DESCRIPTION": "This tab shows all tasks that are not assigned to you", - "NO_TASK_USER_ASSIGNED": "No one assigned to this Task" + "NO_TASK_USER_ASSIGNED": "No one assigned to this Task", + "DAILYPLAN_DESCRIPTION": "This tab shows all your planned tasks" }, "taskTableHead": { "TASK_NAME": "Name", @@ -569,15 +571,15 @@ "DESCRIPTION": "Today", "LABEL": "Total worked Today" }, - "TOTAL_WORKED_TODAY_HEADER_TOOLTIP": "How many hours employee worked for total and today on task", - "WORKED_ON_TASK_HEADER_TOOLTIP": "How many hours employee worked today on all tasks for selected Team" + "TOTAL_WORKED_TODAY_HEADER_TOOLTIP": "How many hours an employee worked for total and today on task", + "WORKED_ON_TASK_HEADER_TOOLTIP": "How many hours did employees work today on all tasks for the selected Team" }, "CONFIRM_CLOSE_TASK": "Please confirm if you want to close the task" }, "dailyPlan": { "PLAN_FOR_TODAY": "Plan for today", "PLAN_FOR_TOMORROW": "Plan for tomorrow", - "PLAN_FOR_SOME_DAY": "Plan for some day", + "PLAN_FOR_SOME_DAY": "Plan for selected day", "ADD_TASK_TO_PLAN": "Add this task to a plan", "REMOVE_FROM_THIS_PLAN": "Remove from this plan", "CREATE_A_PLAN_FOR_TODAY": "Create a Plan for Today", @@ -604,7 +606,7 @@ "SET_THEME": "Set Theme", "CHANGE_AVATAR": "Change Avatar", "SELECT_TEAM_SIZE": "Select Team Size", - "INVALID_ALLOWED_CHARACTER": "Invalid value for allowedCharacters. Use alpha, numeric, or alphanumeric" + "INVALID_ALLOWED_CHARACTER": "Invalid value for allowed characters. Use alpha, numeric, or alphanumeric" }, "layout": { "footer": { @@ -620,10 +622,10 @@ } }, "errors": { - "NETWORK_ISSUE": "network issue, please try again later", + "NETWORK_ISSUE": "Network issue, please try again later", "ERROR_WHILE_VERIFY_CODE": "Error while verifying code.", "LENGTH_NUMBER_ERROR": "Length should be a number and greater than 0", - "INVALID_ALLOWED_CHARACTER": "Invalid value for allowedCharacters. Use alpha, numeric, or alphanumeric", + "INVALID_ALLOWED_CHARACTER": "Invalid value for allowed characters. Use alpha, numeric, or alphanumeric", "VALID_EMAIL": "Please enter valid email" }, "placeholders": { @@ -647,7 +649,7 @@ "manualTime": { "reasons": { "DEFAULT": "Only manual time", - "LOST_ELECTRICITY": "Lost elelctricity", + "LOST_ELECTRICITY": "Lost electricity", "LOST_INTERNET": "Lost internet", "FORGOT_TO_START_TIMER": "Forgot to start timer", "ERROR": "Error", diff --git a/apps/web/locales/es.json b/apps/web/locales/es.json index 1f0a9b30c..dbe03add2 100644 --- a/apps/web/locales/es.json +++ b/apps/web/locales/es.json @@ -198,7 +198,8 @@ "WORKING": "Trabajando", "PAUSED": "Pausado", "ONLINE": "En línea", - "SKIP_ADD_LATER": "Agregar más tarde" + "SKIP_ADD_LATER": "Agregar más tarde", + "DAILYPLAN": "Planificado" }, "hotkeys": { "HELP": "Ayuda", @@ -553,7 +554,8 @@ "WORKED_DESCRIPTION": "Esta pestaña muestra todas las tareas en las que comenzaste a trabajar", "ASSIGNED_DESCRIPTION": "Esta pestaña muestra todas las tareas que te han sido asignadas", "UNASSIGNED_DESCRIPTION": "Esta pestaña muestra todas las tareas que no te han sido asignadas", - "NO_TASK_USER_ASSIGNED": "Nadie asignado a esta tarea" + "NO_TASK_USER_ASSIGNED": "Nadie asignado a esta tarea", + "DAILYPLAN_DESCRIPTION": "Esta pestaña muestra todas sus tareas planificadas" }, "taskTableHead": { "TASK_NAME": "Nombre", diff --git a/apps/web/locales/fr.json b/apps/web/locales/fr.json index c34816f44..44398ca9c 100644 --- a/apps/web/locales/fr.json +++ b/apps/web/locales/fr.json @@ -198,7 +198,8 @@ "WORKING": "Actif", "PAUSED": "En pause", "ONLINE": "En ligne", - "SKIP_ADD_LATER": "Ajouter plus tard" + "SKIP_ADD_LATER": "Ajouter plus tard", + "DAILYPLAN": "Planifié" }, "hotkeys": { "HELP": "Aide", @@ -553,7 +554,8 @@ "WORKED_DESCRIPTION": "Cet onglet affiche toutes les tâches sur lesquelles vous avez commencé à travailler", "ASSIGNED_DESCRIPTION": "Cet onglet affiche toutes les tâches qui vous sont assignées", "UNASSIGNED_DESCRIPTION": "Cet onglet affiche toutes les tâches qui ne vous sont pas assignées", - "NO_TASK_USER_ASSIGNED": "Personne n'est assigné à cette tâche" + "NO_TASK_USER_ASSIGNED": "Personne n'est assigné à cette tâche", + "DAILYPLAN_DESCRIPTION": "Cet onglet présente toutes vos tâches planifiées" }, "taskTableHead": { "TASK_NAME": "Nom", diff --git a/apps/web/locales/he.json b/apps/web/locales/he.json index 33af41f78..35ed7b16e 100644 --- a/apps/web/locales/he.json +++ b/apps/web/locales/he.json @@ -198,7 +198,8 @@ "WORKING": "עובד", "PAUSED": "מושהה", "ONLINE": "מחובר", - "SKIP_ADD_LATER": "הוסף מאוחר יותר" + "SKIP_ADD_LATER": "הוסף מאוחר יותר", + "DAILYPLAN": "מְתוּכנָן" }, "hotkeys": { "HELP": "עזרה", @@ -553,7 +554,8 @@ "WORKED_DESCRIPTION": "לשונית זו מציגה את כל המשימות שהתחלת לעבוד עליהן", "ASSIGNED_DESCRIPTION": "לשונית זו מציגה את כל המשימות שהוקצו לך", "UNASSIGNED_DESCRIPTION": "לשונית זו מציגה את כל המשימות שלא הוקצו לך", - "NO_TASK_USER_ASSIGNED": "אף אחד לא הוקצה למשימה הזאת" + "NO_TASK_USER_ASSIGNED": "אף אחד לא הוקצה למשימה הזאת", + "DAILYPLAN_DESCRIPTION": "כרטיסייה זו מציגה את כל המשימות המתוכננות שלך" }, "taskTableHead": { "TASK_NAME": "שם", diff --git a/apps/web/locales/it.json b/apps/web/locales/it.json index 81a7eac5c..bde6a56d8 100644 --- a/apps/web/locales/it.json +++ b/apps/web/locales/it.json @@ -198,7 +198,8 @@ "WORKING": "Lavora", "PAUSED": "In Pausa", "ONLINE": "Online", - "SKIP_ADD_LATER": "Aggiungi dopo" + "SKIP_ADD_LATER": "Aggiungi dopo", + "DAILYPLAN": "Pianificato" }, "hotkeys": { "HELP": "Aiuto", @@ -553,7 +554,8 @@ "WORKED_DESCRIPTION": "Questa scheda mostra tutte le attività su cui hai iniziato a lavorare", "ASSIGNED_DESCRIPTION": "Questa scheda mostra tutti i compiti assegnati a te", "UNASSIGNED_DESCRIPTION": "Questa scheda mostra tutti i compiti che non sono assegnati a te", - "NO_TASK_USER_ASSIGNED": "Nessuno assegnato a questo compito" + "NO_TASK_USER_ASSIGNED": "Nessuno assegnato a questo compito", + "DAILYPLAN_DESCRIPTION": "Questa scheda mostra tutte le attività pianificate" }, "taskTableHead": { "TASK_NAME": "Nome", diff --git a/apps/web/locales/nl.json b/apps/web/locales/nl.json index bf44821df..490bc70dd 100644 --- a/apps/web/locales/nl.json +++ b/apps/web/locales/nl.json @@ -198,7 +198,8 @@ "WORKING": "Aan het werk", "PAUSED": "Gepauzeerd", "ONLINE": "Online", - "SKIP_ADD_LATER": "Later toevoegen" + "SKIP_ADD_LATER": "Later toevoegen", + "DAILYPLAN": "Gepland" }, "hotkeys": { "HELP": "Help", @@ -553,7 +554,8 @@ "WORKED_DESCRIPTION": "Dit tabblad toont alle taken waar u aan begonnen bent", "ASSIGNED_DESCRIPTION": "Dit tabblad toont alle taken die aan u zijn toegewezen", "UNASSIGNED_DESCRIPTION": "Dit tabblad toont alle taken die niet aan u zijn toegewezen", - "NO_TASK_USER_ASSIGNED": "Niemand toegewezen aan deze taak" + "NO_TASK_USER_ASSIGNED": "Niemand toegewezen aan deze taak", + "DAILYPLAN_DESCRIPTION": "Dit tabblad toont alle door jou geplande taken" }, "taskTableHead": { "TASK_NAME": "Naam", diff --git a/apps/web/locales/pl.json b/apps/web/locales/pl.json index ad9bc06e9..0f2806115 100644 --- a/apps/web/locales/pl.json +++ b/apps/web/locales/pl.json @@ -198,7 +198,8 @@ "WORKING": "Pracujący", "PAUSED": "Wstrzymany", "ONLINE": "Online", - "SKIP_ADD_LATER": "Dodaj później" + "SKIP_ADD_LATER": "Dodaj później", + "DAILYPLAN": "Planowane" }, "hotkeys": { "HELP": "Pomoc", @@ -553,7 +554,8 @@ "WORKED_DESCRIPTION": "Ta karta pokazuje wszystkie zadania, nad którymi rozpocząłeś pracę", "ASSIGNED_DESCRIPTION": "Ta karta pokazuje wszystkie zadania przypisane do ciebie", "UNASSIGNED_DESCRIPTION": "Ta karta pokazuje wszystkie zadania, które nie są przypisane do ciebie", - "NO_TASK_USER_ASSIGNED": "Nikt nie jest przypisany do tego zadania" + "NO_TASK_USER_ASSIGNED": "Nikt nie jest przypisany do tego zadania", + "DAILYPLAN_DESCRIPTION": "Na tej karcie wyświetlane są wszystkie zaplanowane zadania" }, "taskTableHead": { "TASK_NAME": "Nazwa", diff --git a/apps/web/locales/pt.json b/apps/web/locales/pt.json index 8f8cb7003..23e6d61ad 100644 --- a/apps/web/locales/pt.json +++ b/apps/web/locales/pt.json @@ -198,7 +198,8 @@ "WORKING": "Trabalhando", "PAUSED": "Pausado", "ONLINE": "Online", - "SKIP_ADD_LATER": "Adicionar depois" + "SKIP_ADD_LATER": "Adicionar depois", + "DAILYPLAN": "Planeado" }, "hotkeys": { "HELP": "Ajuda", @@ -553,7 +554,8 @@ "WORKED_DESCRIPTION": "Esta aba mostra todas as tarefas nas quais você começou a trabalhar", "ASSIGNED_DESCRIPTION": "Esta aba mostra todas as tarefas atribuídas a você", "UNASSIGNED_DESCRIPTION": "Esta aba mostra todas as tarefas que não estão atribuídas a você", - "NO_TASK_USER_ASSIGNED": "Ninguém atribuído a esta tarefa" + "NO_TASK_USER_ASSIGNED": "Ninguém atribuído a esta tarefa", + "DAILYPLAN_DESCRIPTION": "Este separador mostra todas as suas tarefas planeadas" }, "taskTableHead": { "TASK_NAME": "Nome", diff --git a/apps/web/locales/ru.json b/apps/web/locales/ru.json index f10419b14..c949c3c1f 100644 --- a/apps/web/locales/ru.json +++ b/apps/web/locales/ru.json @@ -198,7 +198,8 @@ "WORKING": "Работает", "PAUSED": "Приостановлено", "ONLINE": "Онлайн", - "SKIP_ADD_LATER": "Добавить позже" + "SKIP_ADD_LATER": "Добавить позже", + "DAILYPLAN": "Планируется" }, "hotkeys": { "HELP": "Помощь", @@ -553,7 +554,8 @@ "WORKED_DESCRIPTION": "Этот раздел показывает все задачи, над которыми вы начали работу", "ASSIGNED_DESCRIPTION": "Этот раздел показывает все задачи, которые назначены вам", "UNASSIGNED_DESCRIPTION": "Этот раздел показывает все задачи, которые не назначены вам", - "NO_TASK_USER_ASSIGNED": "Никто не назначен на эту задачу" + "NO_TASK_USER_ASSIGNED": "Никто не назначен на эту задачу", + "DAILYPLAN_DESCRIPTION": "На этой вкладке отображаются все запланированные вами задачи" }, "taskTableHead": { "TASK_NAME": "Название", diff --git a/apps/web/locales/zh.json b/apps/web/locales/zh.json index 0203c99fb..1ce6281c0 100644 --- a/apps/web/locales/zh.json +++ b/apps/web/locales/zh.json @@ -198,7 +198,8 @@ "WORKING": "工作", "PAUSED": "暂停", "ONLINE": "在线", - "SKIP_ADD_LATER": "稍后添加" + "SKIP_ADD_LATER": "稍后添加", + "DAILYPLAN": "計劃中" }, "hotkeys": { "HELP": "帮助", @@ -553,7 +554,8 @@ "WORKED_DESCRIPTION": "此标签显示您开始处理的所有任务", "ASSIGNED_DESCRIPTION": "此标签显示分配给您的所有任务", "UNASSIGNED_DESCRIPTION": "此标签显示未分配给您的任务", - "NO_TASK_USER_ASSIGNED": "此任务未分配" + "NO_TASK_USER_ASSIGNED": "此任务未分配", + "DAILYPLAN_DESCRIPTION": "此標籤顯示您已規劃的所有任務" }, "taskTableHead": { "TASK_NAME": "名称",