Genel düzeltmeler
This commit is contained in:
parent
414006204e
commit
bc31e1f06a
6 changed files with 80 additions and 123 deletions
|
|
@ -3726,23 +3726,47 @@
|
||||||
"en": "Total Rooms",
|
"en": "Total Rooms",
|
||||||
"tr": "Toplam Oda"
|
"tr": "Toplam Oda"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "App.Videoroom.TotalRoomsDescription",
|
||||||
|
"en": "Total number of rooms",
|
||||||
|
"tr": "Toplam oda sayısı"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"resourceName": "Platform",
|
"resourceName": "Platform",
|
||||||
"key": "App.Videoroom.ActiveRooms",
|
"key": "App.Videoroom.ActiveRooms",
|
||||||
"en": "Active Rooms",
|
"en": "Active Rooms",
|
||||||
"tr": "Aktif Oda"
|
"tr": "Aktif Oda"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "App.Videoroom.ActiveRoomDescription",
|
||||||
|
"en": "Rooms with started sessions",
|
||||||
|
"tr": "Oturumu başlatılmış odalar"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"resourceName": "Platform",
|
"resourceName": "Platform",
|
||||||
"key": "App.Videoroom.OpenRooms",
|
"key": "App.Videoroom.OpenRooms",
|
||||||
"en": "Open Rooms",
|
"en": "Open Rooms",
|
||||||
"tr": "Katılıma Açık"
|
"tr": "Katılıma Açık"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "App.Videoroom.OpenRoomsDescription",
|
||||||
|
"en": "Rooms where participants can join",
|
||||||
|
"tr": "Katılımcıların katılabileceği odalar"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"resourceName": "Platform",
|
"resourceName": "Platform",
|
||||||
"key": "App.Videoroom.PassiveRooms",
|
"key": "App.Videoroom.PassiveRooms",
|
||||||
"en": "Passive Rooms",
|
"en": "Passive Rooms",
|
||||||
"tr": "Pasif Oda"
|
"tr": "Pasif Odalar"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "App.Videoroom.PassiveRoomsDescription",
|
||||||
|
"en": "Rooms that are not currently active",
|
||||||
|
"tr": "Şu anda aktif olmayan odalar"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"resourceName": "Platform",
|
"resourceName": "Platform",
|
||||||
|
|
@ -3750,6 +3774,12 @@
|
||||||
"en": "Total Participants",
|
"en": "Total Participants",
|
||||||
"tr": "Toplam Katılımcı"
|
"tr": "Toplam Katılımcı"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "App.Videoroom.TotalParticipantsDescription",
|
||||||
|
"en": "Total number of participants",
|
||||||
|
"tr": "Toplam katılımcı sayısı"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"resourceName": "Platform",
|
"resourceName": "Platform",
|
||||||
"key": "App.Videoroom.RoomSettings",
|
"key": "App.Videoroom.RoomSettings",
|
||||||
|
|
|
||||||
|
|
@ -77,7 +77,7 @@ export default function Widget({
|
||||||
>
|
>
|
||||||
<div className="flex items-center justify-between">
|
<div className="flex items-center justify-between">
|
||||||
<div>
|
<div>
|
||||||
<p className="text-sm font-semibold text-gray-600 uppercase tracking-wide">
|
<p className="text-sm font-semibold text-gray-600 tracking-wide">
|
||||||
{title}
|
{title}
|
||||||
</p>
|
</p>
|
||||||
<p
|
<p
|
||||||
|
|
|
||||||
|
|
@ -956,7 +956,7 @@ const FileManager = () => {
|
||||||
|
|
||||||
{/* Sort */}
|
{/* Sort */}
|
||||||
<Select
|
<Select
|
||||||
size="sm"
|
size="xs"
|
||||||
options={[
|
options={[
|
||||||
{ value: 'name-asc', label: 'Name (A-Z)' },
|
{ value: 'name-asc', label: 'Name (A-Z)' },
|
||||||
{ value: 'name-desc', label: 'Name (Z-A)' },
|
{ value: 'name-desc', label: 'Name (Z-A)' },
|
||||||
|
|
@ -990,30 +990,21 @@ const FileManager = () => {
|
||||||
setFilters((prev) => ({ ...prev, sortBy, sortOrder }))
|
setFilters((prev) => ({ ...prev, sortBy, sortOrder }))
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
className="min-w-32 sm:min-w-36 flex-shrink-0"
|
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{/* View Mode */}
|
{/* View Mode */}
|
||||||
<div className="flex border border-gray-300 dark:border-gray-600 rounded flex-shrink-0">
|
<div className="flex gap-1 ml-auto">
|
||||||
<Button
|
<Button
|
||||||
variant="plain"
|
|
||||||
size="sm"
|
size="sm"
|
||||||
icon={<FaTh />}
|
icon={<FaTh />}
|
||||||
className={classNames(
|
variant={viewMode === 'grid' ? 'solid' : 'default'}
|
||||||
'rounded-r-none border-r ',
|
|
||||||
viewMode === 'grid' && 'bg-blue-50 dark:bg-blue-900/20 text-blue-600',
|
|
||||||
)}
|
|
||||||
onClick={() => setViewMode('grid')}
|
onClick={() => setViewMode('grid')}
|
||||||
title="Grid view"
|
title="Grid view"
|
||||||
/>
|
/>
|
||||||
<Button
|
<Button
|
||||||
variant="plain"
|
|
||||||
size="sm"
|
size="sm"
|
||||||
icon={<FaList />}
|
icon={<FaList />}
|
||||||
className={classNames(
|
variant={viewMode === 'list' ? 'solid' : 'default'}
|
||||||
'rounded-l-none ',
|
|
||||||
viewMode === 'list' && 'bg-blue-50 dark:bg-blue-900/20 text-blue-600',
|
|
||||||
)}
|
|
||||||
onClick={() => setViewMode('list')}
|
onClick={() => setViewMode('list')}
|
||||||
title="List view"
|
title="List view"
|
||||||
/>
|
/>
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ import {
|
||||||
import { useStoreState } from '@/store/store'
|
import { useStoreState } from '@/store/store'
|
||||||
import { ROUTES_ENUM } from '@/routes/route.constant'
|
import { ROUTES_ENUM } from '@/routes/route.constant'
|
||||||
import { Container } from '@/components/shared'
|
import { Container } from '@/components/shared'
|
||||||
|
import Widget from '@/components/common/Widget'
|
||||||
import {
|
import {
|
||||||
createVideoroom,
|
createVideoroom,
|
||||||
deleteVideoroom,
|
deleteVideoroom,
|
||||||
|
|
@ -307,112 +308,47 @@ const RoomList: React.FC = () => {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Stats Cards */}
|
{/* Stats Cards */}
|
||||||
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-5 gap-4 sm:gap-6 mt-4 mb-3">
|
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-5 gap-4 mt-2 mb-2">
|
||||||
<motion.div
|
<Widget
|
||||||
initial={{ opacity: 0, y: 20 }}
|
title={translate('::App.Videoroom.TotalRooms')}
|
||||||
animate={{ opacity: 1, y: 0 }}
|
value={widgets().totalCount}
|
||||||
className="bg-white rounded-lg shadow-md p-4 sm:p-6"
|
color="blue"
|
||||||
>
|
icon="FaCalendarAlt"
|
||||||
<div className="flex items-center">
|
valueClassName="text-2xl"
|
||||||
<div className="p-2 sm:p-3 bg-blue-100 rounded-full">
|
subTitle={translate('::App.Videoroom.TotalRoomsDescription')}
|
||||||
<FaCalendarAlt className="text-blue-600" size={20} />
|
/>
|
||||||
</div>
|
<Widget
|
||||||
<div className="ml-3 sm:ml-4">
|
title={translate('::App.Videoroom.ActiveRooms')}
|
||||||
<p className="text-xs sm:text-sm font-medium text-gray-600">
|
value={widgets().activeCount}
|
||||||
{translate('::App.Videoroom.TotalRooms')}
|
color="green"
|
||||||
</p>
|
icon="FaPlay"
|
||||||
<p className="text-xl sm:text-2xl font-bold text-gray-900">
|
valueClassName="text-2xl"
|
||||||
{widgets().totalCount}{' '}
|
subTitle={translate('::App.Videoroom.ActiveRoomDescription')}
|
||||||
</p>
|
/>
|
||||||
</div>
|
<Widget
|
||||||
</div>
|
title={translate('::App.Videoroom.OpenRooms')}
|
||||||
</motion.div>
|
value={widgets().openCount}
|
||||||
|
color="indigo"
|
||||||
{/* Aktif Sınıf */}
|
icon="FaDoorOpen"
|
||||||
<motion.div
|
valueClassName="text-2xl"
|
||||||
initial={{ opacity: 0, y: 20 }}
|
subTitle={translate('::App.Videoroom.OpenRoomsDescription')}
|
||||||
animate={{ opacity: 1, y: 0 }}
|
/>
|
||||||
transition={{ delay: 0.1 }}
|
<Widget
|
||||||
className="bg-white rounded-lg shadow-md p-4 sm:p-6"
|
title={translate('::App.Videoroom.PassiveRooms')}
|
||||||
>
|
value={widgets().passiveCount}
|
||||||
<div className="flex items-center">
|
color="gray"
|
||||||
<div className="p-2 sm:p-3 bg-green-100 rounded-full">
|
icon="FaHourglassEnd"
|
||||||
<FaPlay className="text-green-600" size={20} />
|
valueClassName="text-2xl"
|
||||||
</div>
|
subTitle={translate('::App.Videoroom.PassiveRoomsDescription')}
|
||||||
<div className="ml-3 sm:ml-4">
|
/>
|
||||||
<p className="text-xs sm:text-sm font-medium text-gray-600">
|
<Widget
|
||||||
{translate('::App.Videoroom.ActiveRooms')}
|
title={translate('::App.Videoroom.TotalParticipants')}
|
||||||
</p>
|
value={videoList.reduce((sum, c) => sum + c.participantCount, 0)}
|
||||||
<p className="text-xl sm:text-2xl font-bold text-gray-900">
|
color="purple"
|
||||||
{widgets().activeCount}
|
icon="FaUsers"
|
||||||
</p>
|
valueClassName="text-2xl"
|
||||||
</div>
|
subTitle={translate('::App.Videoroom.TotalParticipantsDescription')}
|
||||||
</div>
|
/>
|
||||||
</motion.div>
|
|
||||||
|
|
||||||
{/* Katılıma Açık */}
|
|
||||||
<motion.div
|
|
||||||
initial={{ opacity: 0, y: 20 }}
|
|
||||||
animate={{ opacity: 1, y: 0 }}
|
|
||||||
transition={{ delay: 0.15 }}
|
|
||||||
className="bg-white rounded-lg shadow-md p-4 sm:p-6"
|
|
||||||
>
|
|
||||||
<div className="flex items-center">
|
|
||||||
<div className="p-2 sm:p-3 bg-blue-100 rounded-full">
|
|
||||||
<FaDoorOpen className="text-blue-600" size={20} />
|
|
||||||
</div>
|
|
||||||
<div className="ml-3 sm:ml-4">
|
|
||||||
<p className="text-xs sm:text-sm font-medium text-gray-600">
|
|
||||||
{translate('::App.Videoroom.OpenRooms')}
|
|
||||||
</p>
|
|
||||||
<p className="text-xl sm:text-2xl font-bold text-gray-900">{widgets().openCount}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</motion.div>
|
|
||||||
|
|
||||||
{/* Pasif Sınıf */}
|
|
||||||
<motion.div
|
|
||||||
initial={{ opacity: 0, y: 20 }}
|
|
||||||
animate={{ opacity: 1, y: 0 }}
|
|
||||||
transition={{ delay: 0.2 }}
|
|
||||||
className="bg-white rounded-lg shadow-md p-4 sm:p-6"
|
|
||||||
>
|
|
||||||
<div className="flex items-center">
|
|
||||||
<div className="p-2 sm:p-3 bg-gray-100 rounded-full">
|
|
||||||
<FaHourglassEnd className="text-gray-600" size={20} />
|
|
||||||
</div>
|
|
||||||
<div className="ml-3 sm:ml-4">
|
|
||||||
<p className="text-xs sm:text-sm font-medium text-gray-600">
|
|
||||||
{translate('::App.Videoroom.PassiveRooms')}
|
|
||||||
</p>
|
|
||||||
<p className="text-xl sm:text-2xl font-bold text-gray-900">
|
|
||||||
{widgets().passiveCount}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</motion.div>
|
|
||||||
|
|
||||||
{/* Toplam Katılımcı */}
|
|
||||||
<motion.div
|
|
||||||
initial={{ opacity: 0, y: 20 }}
|
|
||||||
animate={{ opacity: 1, y: 0 }}
|
|
||||||
transition={{ delay: 0.2 }}
|
|
||||||
className="bg-white rounded-lg shadow-md p-4 sm:p-6 sm:col-span-2 lg:col-span-1"
|
|
||||||
>
|
|
||||||
<div className="flex items-center">
|
|
||||||
<div className="p-2 sm:p-3 bg-purple-100 rounded-full">
|
|
||||||
<FaUsers className="text-purple-600" size={20} />
|
|
||||||
</div>
|
|
||||||
<div className="ml-3 sm:ml-4">
|
|
||||||
<p className="text-xs sm:text-sm font-medium text-gray-600">
|
|
||||||
{translate('::App.Videoroom.TotalParticipants')}
|
|
||||||
</p>
|
|
||||||
<p className="text-xl sm:text-2xl font-bold text-gray-900">
|
|
||||||
{videoList.reduce((sum, c) => sum + c.participantCount, 0)}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</motion.div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Scheduled Classes */}
|
{/* Scheduled Classes */}
|
||||||
|
|
|
||||||
|
|
@ -1093,7 +1093,7 @@ const Grid = (props: GridProps) => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div ref={widgetGroupRef}>
|
<div ref={widgetGroupRef} className="mt-2">
|
||||||
<WidgetGroup widgetGroups={gridDto?.widgets ?? []} />
|
<WidgetGroup widgetGroups={gridDto?.widgets ?? []} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ export function IconPickerField({ value, onChange, invalid }: IconPickerFieldPro
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
onClick={() => setOpen((v) => !v)}
|
onClick={() => setOpen((v) => !v)}
|
||||||
className={`flex items-center gap-2 w-full h-11 px-3 py-2 rounded-lg border text-sm text-left transition-colors
|
className={`flex items-center gap-2 w-full px-3 py-2 rounded-lg border text-sm text-left transition-colors
|
||||||
${invalid ? 'border-red-500' : 'border-gray-300 dark:border-gray-600'}
|
${invalid ? 'border-red-500' : 'border-gray-300 dark:border-gray-600'}
|
||||||
bg-white dark:bg-gray-800 text-gray-700 dark:text-gray-200 hover:border-indigo-400`}
|
bg-white dark:bg-gray-800 text-gray-700 dark:text-gray-200 hover:border-indigo-400`}
|
||||||
>
|
>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue