refactor: extract out component for date range
This commit is contained in:
@@ -31,12 +31,11 @@
|
|||||||
<BookOpen class="h-4 w-4 stroke-1.5 mr-2 text-gray-700" />
|
<BookOpen class="h-4 w-4 stroke-1.5 mr-2 text-gray-700" />
|
||||||
<span> {{ batch.courses.length }} {{ __('Courses') }} </span>
|
<span> {{ batch.courses.length }} {{ __('Courses') }} </span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center mb-3">
|
<DateRange
|
||||||
<Calendar class="h-4 w-4 stroke-1.5 mr-2 text-gray-700" />
|
:startDate="batch.start_date"
|
||||||
<span>
|
:endDate="batch.end_date"
|
||||||
{{ getFormattedDateRange(batch.start_date, batch.end_date) }}
|
class="mb-3"
|
||||||
</span>
|
/>
|
||||||
</div>
|
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<Clock class="h-4 w-4 stroke-1.5 mr-2 text-gray-700" />
|
<Clock class="h-4 w-4 stroke-1.5 mr-2 text-gray-700" />
|
||||||
<span>
|
<span>
|
||||||
@@ -48,8 +47,9 @@
|
|||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import { Badge } from 'frappe-ui'
|
import { Badge } from 'frappe-ui'
|
||||||
import { Calendar, Clock, BookOpen } from 'lucide-vue-next'
|
import { formatTime } from '../utils'
|
||||||
import { formatTime, getFormattedDateRange } from '../utils'
|
import { Clock, BookOpen } from 'lucide-vue-next'
|
||||||
|
import DateRange from '@/components/Common/DateRange.vue'
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
batch: {
|
batch: {
|
||||||
|
|||||||
@@ -21,12 +21,11 @@
|
|||||||
<BookOpen class="h-4 w-4 stroke-1.5 mr-2 text-gray-700" />
|
<BookOpen class="h-4 w-4 stroke-1.5 mr-2 text-gray-700" />
|
||||||
<span> {{ batch.data.courses.length }} {{ __('Courses') }} </span>
|
<span> {{ batch.data.courses.length }} {{ __('Courses') }} </span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center mb-3">
|
<DateRange
|
||||||
<Calendar class="h-4 w-4 stroke-1.5 mr-2 text-gray-700" />
|
:startDate="batch.data.start_date"
|
||||||
<span>
|
:endDate="batch.data.end_date"
|
||||||
{{ getFormattedDateRange(batch.data.start_date, batch.data.end_date) }}
|
class="mb-3"
|
||||||
</span>
|
/>
|
||||||
</div>
|
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<Clock class="h-4 w-4 stroke-1.5 mr-2 text-gray-700" />
|
<Clock class="h-4 w-4 stroke-1.5 mr-2 text-gray-700" />
|
||||||
<span>
|
<span>
|
||||||
@@ -92,12 +91,9 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { inject, computed } from 'vue'
|
import { inject, computed } from 'vue'
|
||||||
import { Badge, Button } from 'frappe-ui'
|
import { Badge, Button } from 'frappe-ui'
|
||||||
import { BookOpen, Calendar, Clock } from 'lucide-vue-next'
|
import { BookOpen, Clock } from 'lucide-vue-next'
|
||||||
import {
|
import { formatNumberIntoCurrency, formatTime } from '@/utils'
|
||||||
formatNumberIntoCurrency,
|
import DateRange from '@/components/Common/DateRange.vue'
|
||||||
formatTime,
|
|
||||||
getFormattedDateRange,
|
|
||||||
} from '@/utils'
|
|
||||||
|
|
||||||
const user = inject('$user')
|
const user = inject('$user')
|
||||||
|
|
||||||
|
|||||||
22
frontend/src/components/Common/DateRange.vue
Normal file
22
frontend/src/components/Common/DateRange.vue
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<template>
|
||||||
|
<div class="flex items-center">
|
||||||
|
<Calendar class="h-4 w-4 stroke-1.5 mr-2 text-gray-700" />
|
||||||
|
<span>
|
||||||
|
{{ getFormattedDateRange(props.startDate, props.endDate) }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { Calendar } from 'lucide-vue-next'
|
||||||
|
import { getFormattedDateRange } from '@/utils'
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
startDate: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
|
endDate: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
</script>
|
||||||
@@ -80,14 +80,12 @@
|
|||||||
{{ batch.data.title }}
|
{{ batch.data.title }}
|
||||||
</div>
|
</div>
|
||||||
<div v-html="batch.data.description" class="leading-5 mb-4"></div>
|
<div v-html="batch.data.description" class="leading-5 mb-4"></div>
|
||||||
<div class="flex items-center mb-3">
|
|
||||||
<Calendar class="h-4 w-4 stroke-1.5 mr-2 text-gray-700" />
|
<DateRange
|
||||||
<span>
|
:startDate="batch.data.start_date"
|
||||||
{{
|
:endDate="batch.data.end_date"
|
||||||
getFormattedDateRange(batch.data.start_date, batch.data.end_date)
|
class="mb-3"
|
||||||
}}
|
/>
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-center mb-6">
|
<div class="flex items-center mb-6">
|
||||||
<Clock class="h-4 w-4 stroke-1.5 mr-2 text-gray-700" />
|
<Clock class="h-4 w-4 stroke-1.5 mr-2 text-gray-700" />
|
||||||
<span>
|
<span>
|
||||||
@@ -151,7 +149,6 @@
|
|||||||
import { Breadcrumbs, Button, createResource, Tabs, Badge } from 'frappe-ui'
|
import { Breadcrumbs, Button, createResource, Tabs, Badge } from 'frappe-ui'
|
||||||
import { computed, inject, ref } from 'vue'
|
import { computed, inject, ref } from 'vue'
|
||||||
import {
|
import {
|
||||||
Calendar,
|
|
||||||
Clock,
|
Clock,
|
||||||
LayoutDashboard,
|
LayoutDashboard,
|
||||||
BookOpen,
|
BookOpen,
|
||||||
@@ -162,7 +159,7 @@ import {
|
|||||||
SendIcon,
|
SendIcon,
|
||||||
MessageCircle,
|
MessageCircle,
|
||||||
} from 'lucide-vue-next'
|
} from 'lucide-vue-next'
|
||||||
import { formatTime, getFormattedDateRange } from '@/utils'
|
import { formatTime } from '@/utils'
|
||||||
import BatchDashboard from '@/components/BatchDashboard.vue'
|
import BatchDashboard from '@/components/BatchDashboard.vue'
|
||||||
import BatchCourses from '@/components/BatchCourses.vue'
|
import BatchCourses from '@/components/BatchCourses.vue'
|
||||||
import LiveClass from '@/components/LiveClass.vue'
|
import LiveClass from '@/components/LiveClass.vue'
|
||||||
@@ -171,6 +168,7 @@ import Assessments from '@/components/Assessments.vue'
|
|||||||
import Announcements from '@/components/Annoucements.vue'
|
import Announcements from '@/components/Annoucements.vue'
|
||||||
import AnnouncementModal from '@/components/Modals/AnnouncementModal.vue'
|
import AnnouncementModal from '@/components/Modals/AnnouncementModal.vue'
|
||||||
import Discussions from '@/components/Discussions.vue'
|
import Discussions from '@/components/Discussions.vue'
|
||||||
|
import DateRange from '@/components/Common/DateRange.vue'
|
||||||
|
|
||||||
const user = inject('$user')
|
const user = inject('$user')
|
||||||
const showAnnouncementModal = ref(false)
|
const showAnnouncementModal = ref(false)
|
||||||
|
|||||||
@@ -17,17 +17,10 @@
|
|||||||
<span> {{ batch.data?.courses?.length }} {{ __('Courses') }} </span>
|
<span> {{ batch.data?.courses?.length }} {{ __('Courses') }} </span>
|
||||||
</div>
|
</div>
|
||||||
<span v-if="batch.data.courses">·</span>
|
<span v-if="batch.data.courses">·</span>
|
||||||
<div class="flex items-center">
|
<DateRange
|
||||||
<Calendar class="h-4 w-4 text-gray-700 mr-2" />
|
:startDate="batch.data.start_date"
|
||||||
<span>
|
:endDate="batch.data.end_date"
|
||||||
{{
|
/>
|
||||||
getFormattedDateRange(
|
|
||||||
batch.data.start_date,
|
|
||||||
batch.data.end_date
|
|
||||||
)
|
|
||||||
}}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<span v-if="batch.data.start_date">·</span>
|
<span v-if="batch.data.start_date">·</span>
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<Clock class="h-4 w-4 text-gray-700 mr-2" />
|
<Clock class="h-4 w-4 text-gray-700 mr-2" />
|
||||||
@@ -87,10 +80,11 @@
|
|||||||
import { computed, inject } from 'vue'
|
import { computed, inject } from 'vue'
|
||||||
import { useRouter } from 'vue-router'
|
import { useRouter } from 'vue-router'
|
||||||
import { BookOpen, Calendar, Clock } from 'lucide-vue-next'
|
import { BookOpen, Calendar, Clock } from 'lucide-vue-next'
|
||||||
import { formatTime, getFormattedDateRange } from '@/utils'
|
import { formatTime } from '@/utils'
|
||||||
import { Breadcrumbs, createResource } from 'frappe-ui'
|
import { Breadcrumbs, createResource } from 'frappe-ui'
|
||||||
import CourseCard from '@/components/CourseCard.vue'
|
import CourseCard from '@/components/CourseCard.vue'
|
||||||
import BatchOverlay from '@/components/BatchOverlay.vue'
|
import BatchOverlay from '@/components/BatchOverlay.vue'
|
||||||
|
import DateRange from '../components/Common/DateRange.vue'
|
||||||
|
|
||||||
const user = inject('$user')
|
const user = inject('$user')
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
|||||||
Reference in New Issue
Block a user