Implement config for 'date-time' format

This commit is contained in:
Wolfgang Huß 2024-02-05 17:41:44 +01:00
parent b2abbc11c7
commit 4fa8ecf772
8 changed files with 47 additions and 36 deletions

View File

@ -3,5 +3,5 @@
Relative time from 08.03.2017 Relative time from 08.03.2017
``` ```
<hc-relative-date-time dateTime="03.08.2017" /> <date-time dateTime="03.08.2017" />
``` ```

View File

@ -0,0 +1,29 @@
<template>
<span>{{ dateTimeString }}</span>
</template>
<script>
import { getDateFnsLocale } from '~/locales'
import format from 'date-fns/format'
import formatRelative from 'date-fns/formatRelative'
import dateTimeConstants from '~/constants/dateTime'
export default {
name: 'DateTime',
props: {
dateTime: {
type: [Date, String],
required: true,
},
},
computed: {
dateTimeString() {
if (dateTimeConstants.RELATIVE_DATETIME) {
return formatRelative(new Date(this.dateTime), new Date(), { locale: getDateFnsLocale(this) })
} else {
return format(new Date(this.dateTime), dateTimeConstants.ABSOLUT_DATETIME_FORMAT, { locale: getDateFnsLocale(this) })
}
},
},
}
</script>

View File

@ -1,9 +1,9 @@
import { shallowMount } from '@vue/test-utils' import { shallowMount } from '@vue/test-utils'
import RelativeDateTime from './' import DateTime from '.'
const localVue = global.localVue const localVue = global.localVue
describe('RelativeDateTime', () => { describe('DateTime', () => {
let mocks let mocks
let locale let locale
let dateTime let dateTime
@ -17,7 +17,7 @@ describe('RelativeDateTime', () => {
}) })
const Wrapper = () => { const Wrapper = () => {
return shallowMount(RelativeDateTime, { return shallowMount(DateTime, {
mocks, mocks,
localVue, localVue,
propsData: { propsData: {

View File

@ -15,7 +15,7 @@
<ds-text size="small"> <ds-text size="small">
<span class="bold">{{ $t('modals.deleteUser.created') }}</span> <span class="bold">{{ $t('modals.deleteUser.created') }}</span>
<br /> <br />
<relative-date-time :date-time="userdata.createdAt" /> <date-time :date-time="userdata.createdAt" />
</ds-text> </ds-text>
</ds-flex-item> </ds-flex-item>
<ds-flex-item width="15%"> <ds-flex-item width="15%">
@ -49,7 +49,7 @@
import gql from 'graphql-tag' import gql from 'graphql-tag'
import { mapMutations } from 'vuex' import { mapMutations } from 'vuex'
import { SweetalertIcon } from 'vue-sweetalert-icons' import { SweetalertIcon } from 'vue-sweetalert-icons'
import RelativeDateTime from '~/components/RelativeDateTime' import DateTime from '~/components/DateTime'
import UserTeaser from '~/components/UserTeaser/UserTeaser' import UserTeaser from '~/components/UserTeaser/UserTeaser'
export default { export default {
@ -57,7 +57,7 @@ export default {
components: { components: {
UserTeaser, UserTeaser,
SweetalertIcon, SweetalertIcon,
RelativeDateTime, DateTime,
}, },
props: { props: {
userdata: { type: Object, required: true }, userdata: { type: Object, required: true },

View File

@ -1,23 +0,0 @@
<template>
<span>{{ relativeDateTime }}</span>
</template>
<script>
import { getDateFnsLocale } from '~/locales'
import formatRelative from 'date-fns/formatRelative'
export default {
name: 'HcRelativeDateTime',
props: {
dateTime: {
type: [Date, String],
required: true,
},
},
computed: {
relativeDateTime() {
return formatRelative(new Date(this.dateTime), new Date(), { locale: getDateFnsLocale(this) })
},
},
}
</script>

View File

@ -36,7 +36,7 @@
</div> </div>
<span v-if="!userOnly" class="text"> <span v-if="!userOnly" class="text">
<base-icon name="clock" /> <base-icon name="clock" />
<relative-date-time :date-time="dateTime" /> <date-time :date-time="dateTime" />
<slot name="dateTime"></slot> <slot name="dateTime"></slot>
</span> </span>
<span v-else class="text">{{ userName }}</span> <span v-else class="text">{{ userName }}</span>
@ -48,13 +48,13 @@
<script> <script>
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import RelativeDateTime from '~/components/RelativeDateTime' import DateTime from '~/components/DateTime'
import ProfileAvatar from '~/components/_new/generic/ProfileAvatar/ProfileAvatar' import ProfileAvatar from '~/components/_new/generic/ProfileAvatar/ProfileAvatar'
export default { export default {
name: 'UserTeaser', name: 'UserTeaser',
components: { components: {
RelativeDateTime, DateTime,
ProfileAvatar, ProfileAvatar,
}, },
props: { props: {

View File

@ -16,7 +16,7 @@
</template> </template>
<template #reportedOn="scope"> <template #reportedOn="scope">
<ds-text size="small"> <ds-text size="small">
<hc-relative-date-time :date-time="scope.row.createdAt" data-test="filed-date" /> <date-time :date-time="scope.row.createdAt" data-test="filed-date" />
</ds-text> </ds-text>
</template> </template>
<template #reasonCategory="scope"> <template #reasonCategory="scope">
@ -29,12 +29,12 @@
</template> </template>
<script> <script>
import UserTeaser from '~/components/UserTeaser/UserTeaser' import UserTeaser from '~/components/UserTeaser/UserTeaser'
import HcRelativeDateTime from '~/components/RelativeDateTime' import DateTime from '~/components/DateTime'
export default { export default {
components: { components: {
UserTeaser, UserTeaser,
HcRelativeDateTime, DateTime,
}, },
props: { props: {
filed: { type: Array, default: () => [] }, filed: { type: Array, default: () => [] },

View File

@ -0,0 +1,5 @@
// this file is duplicated in `backend/src/config/metadata.js` and `webapp/constants/metadata.js`
export default {
RELATIVE_DATETIME: true,
ABSOLUT_DATETIME_FORMAT: 'P',
}