import React, { ReactElement, useEffect } from 'react'; import Head from 'next/head'; import DatePicker from 'react-datepicker'; import 'react-datepicker/dist/react-datepicker.css'; import dayjs from 'dayjs'; import { useAppDispatch, useAppSelector } from '../../stores/hooks'; import { useRouter } from 'next/router'; import { fetch } from '../../stores/assets/assetsSlice'; import { saveFile } from '../../helpers/fileSaver'; import dataFormatter from '../../helpers/dataFormatter'; import ImageField from '../../components/ImageField'; import LayoutAuthenticated from '../../layouts/Authenticated'; import { getPageTitle } from '../../config'; import SectionTitleLineWithButton from '../../components/SectionTitleLineWithButton'; import SectionMain from '../../components/SectionMain'; import CardBox from '../../components/CardBox'; import BaseButton from '../../components/BaseButton'; import BaseDivider from '../../components/BaseDivider'; import { mdiChartTimelineVariant } from '@mdi/js'; import { SwitchField } from '../../components/SwitchField'; import FormField from '../../components/FormField'; import type { Asset, AssetVariant } from '../../types/entities'; // Extended type to handle asset variants from API (includes size_mb not in base type) interface AssetVariantWithSize extends AssetVariant { size_mb?: number; } // Extended type to handle asset variants relation from API interface AssetWithVariants extends Asset { asset_variants_asset?: AssetVariantWithSize[]; } const AssetsView = () => { const router = useRouter(); const dispatch = useAppDispatch(); const assetsState = useAppSelector((state) => state.assets); const assets = assetsState.data as AssetWithVariants[]; const asset = assets[0]; const { id } = router.query; const idStr = Array.isArray(id) ? id[0] : id; function removeLastCharacter(str: string) { return str.slice(0, -1); } useEffect(() => { if (idStr) { dispatch(fetch({ id: idStr })); } }, [dispatch, idStr]); return ( <>
Project
{typeof asset?.project === 'object' && asset?.project ? asset.project.name : 'No data'}
Name
{asset?.name}
Asset format
{asset?.asset_type ?? 'No data'}
Type
{asset?.type ?? 'No data'}
CDNURL
{asset?.cdn_url}
Storagekey
{asset?.storage_key}
MIMEtype
{asset?.mime_type}
Size(MB)
{asset?.size_mb || 'No data'}
Width(px)
{asset?.width_px || 'No data'}
Height(px)
{asset?.height_px || 'No data'}
Duration(sec)
{asset?.duration_sec || 'No data'}
Checksum
{asset?.checksum}
No Deletedat
)}Asset_variants Asset
| Varianttype | CDNURL | Width(px) | Height(px) | Size(MB) |
|---|---|---|---|---|
| {item.variant_type} | {item.cdn_url} | {item.width_px} | {item.height_px} | {item.size_mb} |