Merge branch 'development' of https://github.com/Worklenz/worklenz into release/v2.0.4-bug-fix

This commit is contained in:
chamikaJ
2025-07-08 13:12:22 +05:30
74 changed files with 1669 additions and 79 deletions

View File

@@ -76,6 +76,8 @@ const InfoTabFooter = () => {
setIsCommentBoxExpand(false);
setSelectedFiles([]);
setAttachmentComment(false);
setCommentValue('');
setSelectedMembers([]);
};
// Check if comment is valid (either has text or files)
@@ -157,7 +159,8 @@ const InfoTabFooter = () => {
setAttachmentComment(false);
setIsCommentBoxExpand(false);
setCommentValue('');
setSelectedMembers([]);
// Dispatch event to notify that a comment was created
// This will trigger the task comments component to refresh and update Redux
document.dispatchEvent(new CustomEvent('task-comment-create', {
@@ -454,31 +457,27 @@ const InfoTabFooter = () => {
<Flex align="center" justify="space-between" style={{ width: '100%', marginTop: 8 }}>
<Tooltip
title={
taskFormViewModel?.task?.created_at
? formatDateTimeWithLocale(taskFormViewModel.task.created_at)
taskFormViewModel?.task?.created_from_now
? `Created ${taskFormViewModel.task.created_from_now}`
: 'N/A'
}
>
<Typography.Text type="secondary" style={{ fontSize: 12 }}>
Created{' '}
{taskFormViewModel?.task?.created_at
? calculateTimeDifference(taskFormViewModel.task.created_at)
: 'N/A'}{' '}
{taskFormViewModel?.task?.created_from_now || 'N/A'}{' '}
by {taskFormViewModel?.task?.reporter}
</Typography.Text>
</Tooltip>
<Tooltip
title={
taskFormViewModel?.task?.updated_at
? formatDateTimeWithLocale(taskFormViewModel.task.updated_at)
taskFormViewModel?.task?.updated_from_now
? `Updated ${taskFormViewModel.task.updated_from_now}`
: 'N/A'
}
>
<Typography.Text type="secondary" style={{ fontSize: 12 }}>
Updated{' '}
{taskFormViewModel?.task?.updated_at
? calculateTimeDifference(taskFormViewModel.task.updated_at)
: 'N/A'}
{taskFormViewModel?.task?.updated_from_now || 'N/A'}
</Typography.Text>
</Tooltip>
</Flex>

View File

@@ -17,6 +17,7 @@ const LanguageSelector = () => {
{ key: 'pt', label: 'Português' },
{ key: 'alb', label: 'Shqip' },
{ key: 'de', label: 'Deutsch' },
{ key: 'zh_cn', label: '简体中文' },
];
const languageLabels = {
@@ -25,6 +26,7 @@ const LanguageSelector = () => {
pt: 'Pt',
alb: 'Sq',
de: 'de',
zh_cn: 'zh_cn',
};
return (

View File

@@ -7,6 +7,7 @@ export enum Language {
PT = 'pt',
ALB = 'alb',
DE = 'de',
ZH_CN = 'zh_cn',
}
export type ILanguageType = `${Language}`;

View File

@@ -55,6 +55,10 @@ const LanguageAndRegionSettings = () => {
value: Language.DE,
label: 'Deutsch',
},
{
value: Language.ZH_CN,
label: '简体中文',
},
];
const handleLanguageChange = async (values: { language?: ILanguageType; timezone?: string }) => {

View File

@@ -41,6 +41,12 @@ export const greetingString = (name: string): string => {
morning = 'Morgen';
afternoon = 'Tag';
evening = 'Abend';
} else if (language === 'zh_cn') {
greetingPrefix = '你好';
greetingSuffix = '';
morning = '早上好';
afternoon = '下午好';
evening = '晚上好';
}
return `${greetingPrefix} ${name}, ${greetingSuffix} ${greet}!`;