feat: Add ability to display card ages
This commit is contained in:
@@ -43,6 +43,14 @@ const Others = React.memo(() => {
|
|||||||
className={styles.radio}
|
className={styles.radio}
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
/>
|
/>
|
||||||
|
<Radio
|
||||||
|
toggle
|
||||||
|
name="displayCardAges"
|
||||||
|
checked={board.displayCardAges}
|
||||||
|
label={t('common.displayCardAges')}
|
||||||
|
className={styles.radio}
|
||||||
|
onChange={handleChange}
|
||||||
|
/>
|
||||||
<Radio
|
<Radio
|
||||||
toggle
|
toggle
|
||||||
name="expandTaskListsByDefault"
|
name="expandTaskListsByDefault"
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import { BoardMembershipRoles, BoardViews } from '../../../constants/Enums';
|
|||||||
import TaskList from './TaskList';
|
import TaskList from './TaskList';
|
||||||
import DueDateChip from '../DueDateChip';
|
import DueDateChip from '../DueDateChip';
|
||||||
import StopwatchChip from '../StopwatchChip';
|
import StopwatchChip from '../StopwatchChip';
|
||||||
|
import TimeAgo from '../../common/TimeAgo';
|
||||||
import UserAvatar from '../../users/UserAvatar';
|
import UserAvatar from '../../users/UserAvatar';
|
||||||
import LabelChip from '../../labels/LabelChip';
|
import LabelChip from '../../labels/LabelChip';
|
||||||
import CustomFieldValueChip from '../../custom-field-values/CustomFieldValueChip';
|
import CustomFieldValueChip from '../../custom-field-values/CustomFieldValueChip';
|
||||||
@@ -75,12 +76,13 @@ const ProjectContent = React.memo(({ cardId }) => {
|
|||||||
return attachment && attachment.data.thumbnailUrls.outside360;
|
return attachment && attachment.data.thumbnailUrls.outside360;
|
||||||
});
|
});
|
||||||
|
|
||||||
const { listName, withCreator } = useSelector((state) => {
|
const { listName, withCreator, withAge } = useSelector((state) => {
|
||||||
const board = selectors.selectCurrentBoard(state);
|
const board = selectors.selectCurrentBoard(state);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
listName: list.name && (board.view === BoardViews.KANBAN ? null : list.name),
|
listName: list.name && (board.view === BoardViews.KANBAN ? null : list.name),
|
||||||
withCreator: board.alwaysDisplayCardCreator,
|
withCreator: board.alwaysDisplayCardCreator,
|
||||||
|
withAge: board.displayCardAges,
|
||||||
};
|
};
|
||||||
}, shallowEqual);
|
}, shallowEqual);
|
||||||
|
|
||||||
@@ -115,6 +117,7 @@ const ProjectContent = React.memo(({ cardId }) => {
|
|||||||
card.dueDate ||
|
card.dueDate ||
|
||||||
card.stopwatch ||
|
card.stopwatch ||
|
||||||
card.commentsTotal > 0 ||
|
card.commentsTotal > 0 ||
|
||||||
|
withAge ||
|
||||||
attachmentsTotal > 0 ||
|
attachmentsTotal > 0 ||
|
||||||
notificationsTotal > 0 ||
|
notificationsTotal > 0 ||
|
||||||
listName;
|
listName;
|
||||||
@@ -236,6 +239,14 @@ const ProjectContent = React.memo(({ cardId }) => {
|
|||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
|
{withAge && card.createdAt && (
|
||||||
|
<span className={classNames(styles.attachment, styles.attachmentLeft)}>
|
||||||
|
<span className={styles.attachmentContent}>
|
||||||
|
<Icon name="history" />
|
||||||
|
<TimeAgo date={card.createdAt} />
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
{!isCompact && usersNode}
|
{!isCompact && usersNode}
|
||||||
|
|||||||
@@ -6,12 +6,13 @@
|
|||||||
import React, { useMemo } from 'react';
|
import React, { useMemo } from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import { useSelector } from 'react-redux';
|
import { shallowEqual, useSelector } from 'react-redux';
|
||||||
import { Icon } from 'semantic-ui-react';
|
import { Icon } from 'semantic-ui-react';
|
||||||
|
|
||||||
import selectors from '../../../selectors';
|
import selectors from '../../../selectors';
|
||||||
import markdownToText from '../../../utils/markdown-to-text';
|
import markdownToText from '../../../utils/markdown-to-text';
|
||||||
import { BoardViews } from '../../../constants/Enums';
|
import { BoardViews } from '../../../constants/Enums';
|
||||||
|
import TimeAgo from '../../common/TimeAgo';
|
||||||
import LabelChip from '../../labels/LabelChip';
|
import LabelChip from '../../labels/LabelChip';
|
||||||
import CustomFieldValueChip from '../../custom-field-values/CustomFieldValueChip';
|
import CustomFieldValueChip from '../../custom-field-values/CustomFieldValueChip';
|
||||||
|
|
||||||
@@ -52,19 +53,14 @@ const StoryContent = React.memo(({ cardId }) => {
|
|||||||
selectNotificationsTotalByCardId(state, cardId),
|
selectNotificationsTotalByCardId(state, cardId),
|
||||||
);
|
);
|
||||||
|
|
||||||
const listName = useSelector((state) => {
|
const { listName, withAge } = useSelector((state) => {
|
||||||
if (!list.name) {
|
const board = selectors.selectCurrentBoard(state);
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
const { view } = selectors.selectCurrentBoard(state);
|
return {
|
||||||
|
listName: list.name && (board.view === BoardViews.KANBAN ? null : list.name),
|
||||||
if (view === BoardViews.KANBAN) {
|
withAge: board.displayCardAges,
|
||||||
return null;
|
};
|
||||||
}
|
}, shallowEqual);
|
||||||
|
|
||||||
return list.name;
|
|
||||||
});
|
|
||||||
|
|
||||||
const coverUrl = useSelector((state) => {
|
const coverUrl = useSelector((state) => {
|
||||||
const attachment = selectAttachmentById(state, card.coverAttachmentId);
|
const attachment = selectAttachmentById(state, card.coverAttachmentId);
|
||||||
@@ -109,7 +105,7 @@ const StoryContent = React.memo(({ cardId }) => {
|
|||||||
{card.name}
|
{card.name}
|
||||||
</div>
|
</div>
|
||||||
{card.description && <div className={styles.descriptionText}>{descriptionText}</div>}
|
{card.description && <div className={styles.descriptionText}>{descriptionText}</div>}
|
||||||
{(attachmentsTotal > 0 || notificationsTotal > 0 || listName) && (
|
{(withAge || attachmentsTotal > 0 || notificationsTotal > 0 || listName) && (
|
||||||
<span className={styles.attachments}>
|
<span className={styles.attachments}>
|
||||||
{notificationsTotal > 0 && (
|
{notificationsTotal > 0 && (
|
||||||
<span
|
<span
|
||||||
@@ -138,6 +134,14 @@ const StoryContent = React.memo(({ cardId }) => {
|
|||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
|
{withAge && card.createdAt && (
|
||||||
|
<span className={classNames(styles.attachment, styles.attachmentLeft)}>
|
||||||
|
<span className={styles.attachmentContent}>
|
||||||
|
<Icon name="history" />
|
||||||
|
<TimeAgo date={card.createdAt} />
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -166,6 +166,7 @@ export default {
|
|||||||
deletedUser_title: 'مستخدم محذوف',
|
deletedUser_title: 'مستخدم محذوف',
|
||||||
description: 'الوصف',
|
description: 'الوصف',
|
||||||
display: 'عرض',
|
display: 'عرض',
|
||||||
|
displayCardAges: 'عرض أعمار البطاقات',
|
||||||
dropFileToUpload: 'أفلت الملف لرفعه',
|
dropFileToUpload: 'أفلت الملف لرفعه',
|
||||||
dueDate_title: 'تاريخ الاستحقاق',
|
dueDate_title: 'تاريخ الاستحقاق',
|
||||||
dynamicAndUnevenlySpacedLayout: 'تخطيط ديناميكي وغير متساوي المسافات.',
|
dynamicAndUnevenlySpacedLayout: 'تخطيط ديناميكي وغير متساوي المسافات.',
|
||||||
|
|||||||
@@ -178,6 +178,7 @@ export default {
|
|||||||
deletedUser_title: 'Изтрит потребител',
|
deletedUser_title: 'Изтрит потребител',
|
||||||
description: 'Описание',
|
description: 'Описание',
|
||||||
display: 'Показване',
|
display: 'Показване',
|
||||||
|
displayCardAges: 'Показвай възрастта на картите',
|
||||||
dropFileToUpload: 'Пуснете файл за качване',
|
dropFileToUpload: 'Пуснете файл за качване',
|
||||||
dueDate_title: 'Краен срок',
|
dueDate_title: 'Краен срок',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Динамично и неравномерно разположение.',
|
dynamicAndUnevenlySpacedLayout: 'Динамично и неравномерно разположение.',
|
||||||
|
|||||||
@@ -177,6 +177,7 @@ export default {
|
|||||||
deletedUser_title: 'Usuari eliminat',
|
deletedUser_title: 'Usuari eliminat',
|
||||||
description: 'Descripció',
|
description: 'Descripció',
|
||||||
display: 'Mostrar',
|
display: 'Mostrar',
|
||||||
|
displayCardAges: "Mostrar l'antiguitat de les targetes",
|
||||||
dropFileToUpload: 'Arrossega fitxer per pujar-lo',
|
dropFileToUpload: 'Arrossega fitxer per pujar-lo',
|
||||||
dueDate_title: 'Data de venciment',
|
dueDate_title: 'Data de venciment',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Disseny dinàmic i amb espaiat irregular.',
|
dynamicAndUnevenlySpacedLayout: 'Disseny dinàmic i amb espaiat irregular.',
|
||||||
|
|||||||
@@ -169,6 +169,7 @@ export default {
|
|||||||
deletedUser_title: 'Smazaný uživatel',
|
deletedUser_title: 'Smazaný uživatel',
|
||||||
description: 'Popis',
|
description: 'Popis',
|
||||||
display: 'Zobrazit',
|
display: 'Zobrazit',
|
||||||
|
displayCardAges: 'Zobrazit stáří karet',
|
||||||
dropFileToUpload: 'Přetažením nahrát soubor',
|
dropFileToUpload: 'Přetažením nahrát soubor',
|
||||||
dueDate_title: 'Termín',
|
dueDate_title: 'Termín',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Dynamické a nerovnoměrné rozložení.',
|
dynamicAndUnevenlySpacedLayout: 'Dynamické a nerovnoměrné rozložení.',
|
||||||
|
|||||||
@@ -173,6 +173,7 @@ export default {
|
|||||||
deletedUser_title: 'Slettet bruger',
|
deletedUser_title: 'Slettet bruger',
|
||||||
description: 'Beskrivelse',
|
description: 'Beskrivelse',
|
||||||
display: 'Vis',
|
display: 'Vis',
|
||||||
|
displayCardAges: 'Vis kortalder',
|
||||||
dropFileToUpload: 'Slip fil for at uploade',
|
dropFileToUpload: 'Slip fil for at uploade',
|
||||||
dueDate_title: 'Frist',
|
dueDate_title: 'Frist',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Dynamisk og ujævnt fordelt layout.',
|
dynamicAndUnevenlySpacedLayout: 'Dynamisk og ujævnt fordelt layout.',
|
||||||
|
|||||||
@@ -188,6 +188,7 @@ export default {
|
|||||||
deletedUser_title: 'Gelöschter Benutzer',
|
deletedUser_title: 'Gelöschter Benutzer',
|
||||||
description: 'Beschreibung',
|
description: 'Beschreibung',
|
||||||
display: 'Anzeige',
|
display: 'Anzeige',
|
||||||
|
displayCardAges: 'Kartenalter anzeigen',
|
||||||
dropFileToUpload: 'Datei für Upload ablegen',
|
dropFileToUpload: 'Datei für Upload ablegen',
|
||||||
dueDate_title: 'Fälligkeitsdatum',
|
dueDate_title: 'Fälligkeitsdatum',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Dynamisches und ungleichmäßig verteiltes Layout.',
|
dynamicAndUnevenlySpacedLayout: 'Dynamisches und ungleichmäßig verteiltes Layout.',
|
||||||
|
|||||||
@@ -186,6 +186,7 @@ export default {
|
|||||||
deletedUser_title: 'Διαγραμμένος χρήστης',
|
deletedUser_title: 'Διαγραμμένος χρήστης',
|
||||||
description: 'Περιγραφή',
|
description: 'Περιγραφή',
|
||||||
display: 'Εμφάνιση',
|
display: 'Εμφάνιση',
|
||||||
|
displayCardAges: 'Εμφάνιση ηλικίας καρτών',
|
||||||
dropFileToUpload: 'Σύρετε το αρχείο για μεταφόρτωση',
|
dropFileToUpload: 'Σύρετε το αρχείο για μεταφόρτωση',
|
||||||
dueDate_title: 'Ημερομηνία λήξης',
|
dueDate_title: 'Ημερομηνία λήξης',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Δυναμική και άνισα κατανεμημένη διάταξη.',
|
dynamicAndUnevenlySpacedLayout: 'Δυναμική και άνισα κατανεμημένη διάταξη.',
|
||||||
|
|||||||
@@ -172,6 +172,7 @@ export default {
|
|||||||
deletedUser_title: 'Deleted User',
|
deletedUser_title: 'Deleted User',
|
||||||
description: 'Description',
|
description: 'Description',
|
||||||
display: 'Display',
|
display: 'Display',
|
||||||
|
displayCardAges: 'Display card ages',
|
||||||
dropFileToUpload: 'Drop file to upload',
|
dropFileToUpload: 'Drop file to upload',
|
||||||
dueDate_title: 'Due Date',
|
dueDate_title: 'Due Date',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Dynamic and unevenly spaced layout.',
|
dynamicAndUnevenlySpacedLayout: 'Dynamic and unevenly spaced layout.',
|
||||||
|
|||||||
@@ -167,6 +167,7 @@ export default {
|
|||||||
deletedUser_title: 'Deleted User',
|
deletedUser_title: 'Deleted User',
|
||||||
description: 'Description',
|
description: 'Description',
|
||||||
display: 'Display',
|
display: 'Display',
|
||||||
|
displayCardAges: 'Display card ages',
|
||||||
dropFileToUpload: 'Drop file to upload',
|
dropFileToUpload: 'Drop file to upload',
|
||||||
dueDate_title: 'Due Date',
|
dueDate_title: 'Due Date',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Dynamic and unevenly spaced layout.',
|
dynamicAndUnevenlySpacedLayout: 'Dynamic and unevenly spaced layout.',
|
||||||
|
|||||||
@@ -178,6 +178,7 @@ export default {
|
|||||||
deletedUser_title: 'Usuario eliminado',
|
deletedUser_title: 'Usuario eliminado',
|
||||||
description: 'Descripción',
|
description: 'Descripción',
|
||||||
display: 'Mostrar',
|
display: 'Mostrar',
|
||||||
|
displayCardAges: 'Mostrar antigüedad de las tarjetas',
|
||||||
dropFileToUpload: 'Arrastra archivo para subir',
|
dropFileToUpload: 'Arrastra archivo para subir',
|
||||||
dueDate_title: 'Fecha de vencimiento',
|
dueDate_title: 'Fecha de vencimiento',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Diseño dinámico y con espaciado irregular.',
|
dynamicAndUnevenlySpacedLayout: 'Diseño dinámico y con espaciado irregular.',
|
||||||
|
|||||||
@@ -173,6 +173,7 @@ export default {
|
|||||||
deletedUser_title: 'Kustutatud kasutaja',
|
deletedUser_title: 'Kustutatud kasutaja',
|
||||||
description: 'Kirjeldus',
|
description: 'Kirjeldus',
|
||||||
display: 'Kuva',
|
display: 'Kuva',
|
||||||
|
displayCardAges: 'Näita kaartide vanust',
|
||||||
dropFileToUpload: 'Lase faili üleslaadida',
|
dropFileToUpload: 'Lase faili üleslaadida',
|
||||||
dueDate_title: 'Tähtaeg',
|
dueDate_title: 'Tähtaeg',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Dünaamiline ja eirastega kujundus.',
|
dynamicAndUnevenlySpacedLayout: 'Dünaamiline ja eirastega kujundus.',
|
||||||
|
|||||||
@@ -176,6 +176,7 @@ export default {
|
|||||||
deletedUser_title: 'کاربر حذف شده',
|
deletedUser_title: 'کاربر حذف شده',
|
||||||
description: 'توضیحات',
|
description: 'توضیحات',
|
||||||
display: 'نمایش',
|
display: 'نمایش',
|
||||||
|
displayCardAges: 'نمایش سن کارتها',
|
||||||
dropFileToUpload: 'فایل را برای آپلود بکشید',
|
dropFileToUpload: 'فایل را برای آپلود بکشید',
|
||||||
dueDate_title: 'تاریخ سررسید',
|
dueDate_title: 'تاریخ سررسید',
|
||||||
dynamicAndUnevenlySpacedLayout: 'طرحبندی پویا و نامتقارن.',
|
dynamicAndUnevenlySpacedLayout: 'طرحبندی پویا و نامتقارن.',
|
||||||
|
|||||||
@@ -169,6 +169,7 @@ export default {
|
|||||||
deletedUser_title: 'Poistettu käyttäjä',
|
deletedUser_title: 'Poistettu käyttäjä',
|
||||||
description: 'Kuvaus',
|
description: 'Kuvaus',
|
||||||
display: 'Näyttö',
|
display: 'Näyttö',
|
||||||
|
displayCardAges: 'Näytä korttien ikä',
|
||||||
dropFileToUpload: 'Pudota tiedosto ladattavaksi',
|
dropFileToUpload: 'Pudota tiedosto ladattavaksi',
|
||||||
dueDate_title: 'Määräpäivä',
|
dueDate_title: 'Määräpäivä',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Dynaaminen ja epätasaisesti jaettu asettelu.',
|
dynamicAndUnevenlySpacedLayout: 'Dynaaminen ja epätasaisesti jaettu asettelu.',
|
||||||
|
|||||||
@@ -177,6 +177,7 @@ export default {
|
|||||||
deletedUser_title: 'Utilisateur supprimé',
|
deletedUser_title: 'Utilisateur supprimé',
|
||||||
description: 'Description',
|
description: 'Description',
|
||||||
display: 'Affichage',
|
display: 'Affichage',
|
||||||
|
displayCardAges: "Afficher l'âge des cartes",
|
||||||
dropFileToUpload: 'Déposer le fichier à télécharger',
|
dropFileToUpload: 'Déposer le fichier à télécharger',
|
||||||
dueDate_title: "Date d'échéance",
|
dueDate_title: "Date d'échéance",
|
||||||
dynamicAndUnevenlySpacedLayout: 'Mise en page dynamique et inégalement espacée.',
|
dynamicAndUnevenlySpacedLayout: 'Mise en page dynamique et inégalement espacée.',
|
||||||
|
|||||||
@@ -167,6 +167,7 @@ export default {
|
|||||||
deletedUser_title: 'Törölt felhasználó',
|
deletedUser_title: 'Törölt felhasználó',
|
||||||
description: 'Leírás',
|
description: 'Leírás',
|
||||||
display: 'Megjelenítés',
|
display: 'Megjelenítés',
|
||||||
|
displayCardAges: 'Kártyák korának megjelenítése',
|
||||||
dropFileToUpload: 'Dobja ide a fájlt a feltöltéshez',
|
dropFileToUpload: 'Dobja ide a fájlt a feltöltéshez',
|
||||||
dueDate_title: 'Esedékesség dátuma',
|
dueDate_title: 'Esedékesség dátuma',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Dinamikus és asszimetrikus kiosztás.',
|
dynamicAndUnevenlySpacedLayout: 'Dinamikus és asszimetrikus kiosztás.',
|
||||||
|
|||||||
@@ -174,6 +174,7 @@ export default {
|
|||||||
deletedUser_title: 'Pengguna yang dihapus',
|
deletedUser_title: 'Pengguna yang dihapus',
|
||||||
description: 'Deskripsi',
|
description: 'Deskripsi',
|
||||||
display: 'Tampilan',
|
display: 'Tampilan',
|
||||||
|
displayCardAges: 'Tampilkan usia kartu',
|
||||||
dropFileToUpload: 'Tarik berkas untuk menggungah',
|
dropFileToUpload: 'Tarik berkas untuk menggungah',
|
||||||
dueDate_title: 'Tenggat waktu',
|
dueDate_title: 'Tenggat waktu',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Tata letak dinamis dan tidak merata.',
|
dynamicAndUnevenlySpacedLayout: 'Tata letak dinamis dan tidak merata.',
|
||||||
|
|||||||
@@ -174,6 +174,7 @@ export default {
|
|||||||
deletedUser_title: 'Utente eliminato',
|
deletedUser_title: 'Utente eliminato',
|
||||||
description: 'Descrizione',
|
description: 'Descrizione',
|
||||||
display: 'Mostra',
|
display: 'Mostra',
|
||||||
|
displayCardAges: 'Mostra età delle schede',
|
||||||
dropFileToUpload: 'Trascina il file da caricare',
|
dropFileToUpload: 'Trascina il file da caricare',
|
||||||
dueDate_title: 'Data di scadenza',
|
dueDate_title: 'Data di scadenza',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Layout dinamico e irregolarmente distribuito.',
|
dynamicAndUnevenlySpacedLayout: 'Layout dinamico e irregolarmente distribuito.',
|
||||||
|
|||||||
@@ -170,6 +170,7 @@ export default {
|
|||||||
deletedUser_title: '削除されたユーザー',
|
deletedUser_title: '削除されたユーザー',
|
||||||
description: '説明',
|
description: '説明',
|
||||||
display: '表示',
|
display: '表示',
|
||||||
|
displayCardAges: 'カードの経過時間を表示',
|
||||||
dropFileToUpload: 'ファイルをドロップしてアップロード',
|
dropFileToUpload: 'ファイルをドロップしてアップロード',
|
||||||
dueDate_title: '期限',
|
dueDate_title: '期限',
|
||||||
dynamicAndUnevenlySpacedLayout: '動的で不均等な間隔のレイアウト。',
|
dynamicAndUnevenlySpacedLayout: '動的で不均等な間隔のレイアウト。',
|
||||||
|
|||||||
@@ -164,6 +164,7 @@ export default {
|
|||||||
deletedUser_title: '삭제된 사용자',
|
deletedUser_title: '삭제된 사용자',
|
||||||
description: '설명',
|
description: '설명',
|
||||||
display: '표시',
|
display: '표시',
|
||||||
|
displayCardAges: '카드 경과 시간 표시',
|
||||||
dropFileToUpload: '업로드할 파일을 드롭하세요',
|
dropFileToUpload: '업로드할 파일을 드롭하세요',
|
||||||
dueDate_title: '마감일',
|
dueDate_title: '마감일',
|
||||||
dynamicAndUnevenlySpacedLayout: '동적이고 불균등한 간격의 레이아웃.',
|
dynamicAndUnevenlySpacedLayout: '동적이고 불균등한 간격의 레이아웃.',
|
||||||
|
|||||||
@@ -173,6 +173,7 @@ export default {
|
|||||||
deletedUser_title: 'Verwijderde gebruiker',
|
deletedUser_title: 'Verwijderde gebruiker',
|
||||||
description: 'Beschrijving',
|
description: 'Beschrijving',
|
||||||
display: 'Weergave',
|
display: 'Weergave',
|
||||||
|
displayCardAges: 'Kaartleeftijd weergeven',
|
||||||
dropFileToUpload: 'Sleep bestand om te uploaden',
|
dropFileToUpload: 'Sleep bestand om te uploaden',
|
||||||
dueDate_title: 'Vervaldatum',
|
dueDate_title: 'Vervaldatum',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Dynamische en ongelijk verdeelde indeling.',
|
dynamicAndUnevenlySpacedLayout: 'Dynamische en ongelijk verdeelde indeling.',
|
||||||
|
|||||||
@@ -172,6 +172,7 @@ export default {
|
|||||||
deletedUser_title: 'Usunięty użytkownik',
|
deletedUser_title: 'Usunięty użytkownik',
|
||||||
description: 'Opis',
|
description: 'Opis',
|
||||||
display: 'Wyświetlanie',
|
display: 'Wyświetlanie',
|
||||||
|
displayCardAges: 'Pokazuj wiek kart',
|
||||||
dropFileToUpload: 'Upuść plik aby wgrać',
|
dropFileToUpload: 'Upuść plik aby wgrać',
|
||||||
dueDate_title: 'Termin',
|
dueDate_title: 'Termin',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Dynamiczny i nierówny układ.',
|
dynamicAndUnevenlySpacedLayout: 'Dynamiczny i nierówny układ.',
|
||||||
|
|||||||
@@ -175,6 +175,7 @@ export default {
|
|||||||
deletedUser_title: 'Usuário excluído',
|
deletedUser_title: 'Usuário excluído',
|
||||||
description: 'Descrição',
|
description: 'Descrição',
|
||||||
display: 'Exibir',
|
display: 'Exibir',
|
||||||
|
displayCardAges: 'Exibir idade dos cartões',
|
||||||
dropFileToUpload: 'Solte o arquivo para enviar',
|
dropFileToUpload: 'Solte o arquivo para enviar',
|
||||||
dueDate_title: 'Data de vencimento',
|
dueDate_title: 'Data de vencimento',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Layout dinâmico e desigualmente espaçado.',
|
dynamicAndUnevenlySpacedLayout: 'Layout dinâmico e desigualmente espaçado.',
|
||||||
|
|||||||
@@ -177,6 +177,7 @@ export default {
|
|||||||
deletedUser_title: 'Utilizador eliminado',
|
deletedUser_title: 'Utilizador eliminado',
|
||||||
description: 'Descrição',
|
description: 'Descrição',
|
||||||
display: 'Exibir',
|
display: 'Exibir',
|
||||||
|
displayCardAges: 'Mostrar idade dos cartões',
|
||||||
dropFileToUpload: 'Largue o ficheiro para carregar',
|
dropFileToUpload: 'Largue o ficheiro para carregar',
|
||||||
dueDate_title: 'Data de vencimento',
|
dueDate_title: 'Data de vencimento',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Layout dinâmico e espaçamento irregular.',
|
dynamicAndUnevenlySpacedLayout: 'Layout dinâmico e espaçamento irregular.',
|
||||||
|
|||||||
@@ -171,6 +171,7 @@ export default {
|
|||||||
deletedUser_title: 'Utilizator șters',
|
deletedUser_title: 'Utilizator șters',
|
||||||
description: 'Descriere',
|
description: 'Descriere',
|
||||||
display: 'Afișare',
|
display: 'Afișare',
|
||||||
|
displayCardAges: 'Afișează vârsta cardurilor',
|
||||||
dropFileToUpload: 'Aruncă fișierul pentru a încărca',
|
dropFileToUpload: 'Aruncă fișierul pentru a încărca',
|
||||||
dueDate_title: 'Data scadentă',
|
dueDate_title: 'Data scadentă',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Aspect dinamic și spațiat neuniform.',
|
dynamicAndUnevenlySpacedLayout: 'Aspect dinamic și spațiat neuniform.',
|
||||||
|
|||||||
@@ -174,6 +174,7 @@ export default {
|
|||||||
deletedUser_title: 'Удалённый пользователь',
|
deletedUser_title: 'Удалённый пользователь',
|
||||||
description: 'Описание',
|
description: 'Описание',
|
||||||
display: 'Отображение',
|
display: 'Отображение',
|
||||||
|
displayCardAges: 'Отображать возраст карточек',
|
||||||
dropFileToUpload: 'Перетяните файл, чтобы загрузить',
|
dropFileToUpload: 'Перетяните файл, чтобы загрузить',
|
||||||
dueDate_title: 'Срок исполнения',
|
dueDate_title: 'Срок исполнения',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Динамичное и неравномерно распределённое расположение.',
|
dynamicAndUnevenlySpacedLayout: 'Динамичное и неравномерно распределённое расположение.',
|
||||||
|
|||||||
@@ -168,6 +168,7 @@ export default {
|
|||||||
deletedUser_title: 'Zmazaný používateľ',
|
deletedUser_title: 'Zmazaný používateľ',
|
||||||
description: 'Popis',
|
description: 'Popis',
|
||||||
display: 'Zobraziť',
|
display: 'Zobraziť',
|
||||||
|
displayCardAges: 'Zobraziť vek kariet',
|
||||||
dropFileToUpload: 'Potiahnutím nahraj súbor',
|
dropFileToUpload: 'Potiahnutím nahraj súbor',
|
||||||
dueDate_title: 'Termín do',
|
dueDate_title: 'Termín do',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Dynamické a nerovnomerne rozložené usporiadanie.',
|
dynamicAndUnevenlySpacedLayout: 'Dynamické a nerovnomerne rozložené usporiadanie.',
|
||||||
|
|||||||
@@ -171,6 +171,7 @@ export default {
|
|||||||
deletedUser_title: 'Обрисан корисник',
|
deletedUser_title: 'Обрисан корисник',
|
||||||
description: 'Опис',
|
description: 'Опис',
|
||||||
display: 'Приказ',
|
display: 'Приказ',
|
||||||
|
displayCardAges: 'Прикажи старост картица',
|
||||||
dropFileToUpload: 'Превуци датотеку за слање',
|
dropFileToUpload: 'Превуци датотеку за слање',
|
||||||
dueDate_title: 'Рок',
|
dueDate_title: 'Рок',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Динамички и неравномерно распоређен изглед.',
|
dynamicAndUnevenlySpacedLayout: 'Динамички и неравномерно распоређен изглед.',
|
||||||
|
|||||||
@@ -172,6 +172,7 @@ export default {
|
|||||||
deletedUser_title: 'Obrisan korisnik',
|
deletedUser_title: 'Obrisan korisnik',
|
||||||
description: 'Opis',
|
description: 'Opis',
|
||||||
display: 'Prikaz',
|
display: 'Prikaz',
|
||||||
|
displayCardAges: 'Prikaži starost kartica',
|
||||||
dropFileToUpload: 'Prevuci datoteku za slanje',
|
dropFileToUpload: 'Prevuci datoteku za slanje',
|
||||||
dueDate_title: 'Rok',
|
dueDate_title: 'Rok',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Dinamički i neravnomerno raspoređen izgled.',
|
dynamicAndUnevenlySpacedLayout: 'Dinamički i neravnomerno raspoređen izgled.',
|
||||||
|
|||||||
@@ -178,6 +178,7 @@ export default {
|
|||||||
deletedUser_title: 'Borttagen användare',
|
deletedUser_title: 'Borttagen användare',
|
||||||
description: 'Beskrivning',
|
description: 'Beskrivning',
|
||||||
display: 'Visa',
|
display: 'Visa',
|
||||||
|
displayCardAges: 'Visa kortålder',
|
||||||
dropFileToUpload: 'Släpp en fil för att ladda upp',
|
dropFileToUpload: 'Släpp en fil för att ladda upp',
|
||||||
dueDate_title: 'Förfallodatum',
|
dueDate_title: 'Förfallodatum',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Dynamisk och ojämnt fördelad layout.',
|
dynamicAndUnevenlySpacedLayout: 'Dynamisk och ojämnt fördelad layout.',
|
||||||
|
|||||||
@@ -174,6 +174,7 @@ export default {
|
|||||||
deletedUser_title: 'Silinmiş kullanıcı',
|
deletedUser_title: 'Silinmiş kullanıcı',
|
||||||
description: 'açıklama',
|
description: 'açıklama',
|
||||||
display: 'Görüntüle',
|
display: 'Görüntüle',
|
||||||
|
displayCardAges: 'Kart yaşlarını göster',
|
||||||
dropFileToUpload: 'Yüklenecek dosyayı buraya bırakın',
|
dropFileToUpload: 'Yüklenecek dosyayı buraya bırakın',
|
||||||
dueDate_title: 'Termin tarihi',
|
dueDate_title: 'Termin tarihi',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Dinamik ve düzensiz aralıklı düzen.',
|
dynamicAndUnevenlySpacedLayout: 'Dinamik ve düzensiz aralıklı düzen.',
|
||||||
|
|||||||
@@ -173,6 +173,7 @@ export default {
|
|||||||
deletedUser_title: 'Видалений користувач',
|
deletedUser_title: 'Видалений користувач',
|
||||||
description: 'Опис',
|
description: 'Опис',
|
||||||
display: 'Дисплей',
|
display: 'Дисплей',
|
||||||
|
displayCardAges: 'Відображати вік карток',
|
||||||
dropFileToUpload: 'Перетягніть файл для завантаження',
|
dropFileToUpload: 'Перетягніть файл для завантаження',
|
||||||
dueDate_title: 'Крайній термін',
|
dueDate_title: 'Крайній термін',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Динамічна та нерівномірна верстка.',
|
dynamicAndUnevenlySpacedLayout: 'Динамічна та нерівномірна верстка.',
|
||||||
|
|||||||
@@ -169,6 +169,7 @@ export default {
|
|||||||
deletedUser_title: "O'chirilgan foydalanuvchi",
|
deletedUser_title: "O'chirilgan foydalanuvchi",
|
||||||
description: 'Tavsif',
|
description: 'Tavsif',
|
||||||
display: "Ko'rsatish",
|
display: "Ko'rsatish",
|
||||||
|
displayCardAges: "Kartalar yoshini ko'rsatish",
|
||||||
dropFileToUpload: 'Faylni yuklash uchun qoldiring',
|
dropFileToUpload: 'Faylni yuklash uchun qoldiring',
|
||||||
dueDate_title: 'Muddati',
|
dueDate_title: 'Muddati',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Dinamik va notekis joylashtirilgan tartib.',
|
dynamicAndUnevenlySpacedLayout: 'Dinamik va notekis joylashtirilgan tartib.',
|
||||||
|
|||||||
@@ -173,6 +173,7 @@ export default {
|
|||||||
deletedUser_title: 'Người dùng đã bị xóa',
|
deletedUser_title: 'Người dùng đã bị xóa',
|
||||||
description: 'Mô tả',
|
description: 'Mô tả',
|
||||||
display: 'Hiển thị',
|
display: 'Hiển thị',
|
||||||
|
displayCardAges: 'Hiển thị tuổi thẻ',
|
||||||
dropFileToUpload: 'Thả tệp vào đây để tải lên',
|
dropFileToUpload: 'Thả tệp vào đây để tải lên',
|
||||||
dueDate_title: 'Hạn chót',
|
dueDate_title: 'Hạn chót',
|
||||||
dynamicAndUnevenlySpacedLayout: 'Bố cục động và khoảng cách không đều.',
|
dynamicAndUnevenlySpacedLayout: 'Bố cục động và khoảng cách không đều.',
|
||||||
|
|||||||
@@ -153,6 +153,7 @@ export default {
|
|||||||
deletedUser_title: '已删除用户',
|
deletedUser_title: '已删除用户',
|
||||||
description: '描述',
|
description: '描述',
|
||||||
display: '显示',
|
display: '显示',
|
||||||
|
displayCardAges: '显示卡片创建时间',
|
||||||
dropFileToUpload: '拖放文件以上传',
|
dropFileToUpload: '拖放文件以上传',
|
||||||
dueDate_title: '截止日期',
|
dueDate_title: '截止日期',
|
||||||
dynamicAndUnevenlySpacedLayout: '动态非均匀间隔布局。',
|
dynamicAndUnevenlySpacedLayout: '动态非均匀间隔布局。',
|
||||||
|
|||||||
@@ -153,6 +153,7 @@ export default {
|
|||||||
deletedUser_title: '已刪除的使用者',
|
deletedUser_title: '已刪除的使用者',
|
||||||
description: '描述',
|
description: '描述',
|
||||||
display: '顯示',
|
display: '顯示',
|
||||||
|
displayCardAges: '顯示卡片建立時間',
|
||||||
dropFileToUpload: '拖放文件以上傳',
|
dropFileToUpload: '拖放文件以上傳',
|
||||||
dueDate_title: '截止日期',
|
dueDate_title: '截止日期',
|
||||||
dynamicAndUnevenlySpacedLayout: '動態不均勻間距佈局。',
|
dynamicAndUnevenlySpacedLayout: '動態不均勻間距佈局。',
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ export default class extends BaseModel {
|
|||||||
defaultCardType: attr(),
|
defaultCardType: attr(),
|
||||||
limitCardTypesToDefaultOne: attr(),
|
limitCardTypesToDefaultOne: attr(),
|
||||||
alwaysDisplayCardCreator: attr(),
|
alwaysDisplayCardCreator: attr(),
|
||||||
|
displayCardAges: attr(),
|
||||||
expandTaskListsByDefault: attr(),
|
expandTaskListsByDefault: attr(),
|
||||||
context: attr(),
|
context: attr(),
|
||||||
view: attr(),
|
view: attr(),
|
||||||
|
|||||||
@@ -55,6 +55,10 @@
|
|||||||
* type: boolean
|
* type: boolean
|
||||||
* description: Whether to always display card creators
|
* description: Whether to always display card creators
|
||||||
* example: false
|
* example: false
|
||||||
|
* displayCardAges:
|
||||||
|
* type: boolean
|
||||||
|
* description: Whether to display card ages
|
||||||
|
* example: false
|
||||||
* expandTaskListsByDefault:
|
* expandTaskListsByDefault:
|
||||||
* type: boolean
|
* type: boolean
|
||||||
* description: Whether to expand task lists by default
|
* description: Whether to expand task lists by default
|
||||||
@@ -120,6 +124,9 @@ module.exports = {
|
|||||||
alwaysDisplayCardCreator: {
|
alwaysDisplayCardCreator: {
|
||||||
type: 'boolean',
|
type: 'boolean',
|
||||||
},
|
},
|
||||||
|
displayCardAges: {
|
||||||
|
type: 'boolean',
|
||||||
|
},
|
||||||
expandTaskListsByDefault: {
|
expandTaskListsByDefault: {
|
||||||
type: 'boolean',
|
type: 'boolean',
|
||||||
},
|
},
|
||||||
@@ -160,6 +167,7 @@ module.exports = {
|
|||||||
'defaultCardType',
|
'defaultCardType',
|
||||||
'limitCardTypesToDefaultOne',
|
'limitCardTypesToDefaultOne',
|
||||||
'alwaysDisplayCardCreator',
|
'alwaysDisplayCardCreator',
|
||||||
|
'displayCardAges',
|
||||||
'expandTaskListsByDefault',
|
'expandTaskListsByDefault',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -178,6 +186,7 @@ module.exports = {
|
|||||||
'defaultCardType',
|
'defaultCardType',
|
||||||
'limitCardTypesToDefaultOne',
|
'limitCardTypesToDefaultOne',
|
||||||
'alwaysDisplayCardCreator',
|
'alwaysDisplayCardCreator',
|
||||||
|
'displayCardAges',
|
||||||
'expandTaskListsByDefault',
|
'expandTaskListsByDefault',
|
||||||
'isSubscribed',
|
'isSubscribed',
|
||||||
]);
|
]);
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
* - defaultCardType
|
* - defaultCardType
|
||||||
* - limitCardTypesToDefaultOne
|
* - limitCardTypesToDefaultOne
|
||||||
* - alwaysDisplayCardCreator
|
* - alwaysDisplayCardCreator
|
||||||
|
* - displayCardAges
|
||||||
* - expandTaskListsByDefault
|
* - expandTaskListsByDefault
|
||||||
* - createdAt
|
* - createdAt
|
||||||
* - updatedAt
|
* - updatedAt
|
||||||
@@ -67,6 +68,11 @@
|
|||||||
* default: false
|
* default: false
|
||||||
* description: Whether to always display the card creator
|
* description: Whether to always display the card creator
|
||||||
* example: false
|
* example: false
|
||||||
|
* displayCardAges:
|
||||||
|
* type: boolean
|
||||||
|
* default: false
|
||||||
|
* description: Whether to display card ages
|
||||||
|
* example: false
|
||||||
* expandTaskListsByDefault:
|
* expandTaskListsByDefault:
|
||||||
* type: boolean
|
* type: boolean
|
||||||
* default: false
|
* default: false
|
||||||
@@ -137,6 +143,11 @@ module.exports = {
|
|||||||
defaultsTo: false,
|
defaultsTo: false,
|
||||||
columnName: 'always_display_card_creator',
|
columnName: 'always_display_card_creator',
|
||||||
},
|
},
|
||||||
|
displayCardAges: {
|
||||||
|
type: 'boolean',
|
||||||
|
defaultsTo: false,
|
||||||
|
columnName: 'display_card_ages',
|
||||||
|
},
|
||||||
expandTaskListsByDefault: {
|
expandTaskListsByDefault: {
|
||||||
type: 'boolean',
|
type: 'boolean',
|
||||||
defaultsTo: false,
|
defaultsTo: false,
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/*!
|
||||||
|
* Copyright (c) 2024 PLANKA Software GmbH
|
||||||
|
* Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md
|
||||||
|
*/
|
||||||
|
|
||||||
|
module.exports.up = async (knex) => {
|
||||||
|
await knex.schema.alterTable('board', (table) => {
|
||||||
|
table.boolean('display_card_ages').notNullable().defaultTo(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
return knex.schema.alterTable('board', (table) => {
|
||||||
|
table.boolean('display_card_ages').notNullable().alter();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports.down = (knex) =>
|
||||||
|
knex.schema.alterTable('board', (table) => {
|
||||||
|
table.dropColumn('display_card_ages');
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user