🏗️ Added icons and details to metadata
This commit is contained in:
@@ -53,8 +53,9 @@ export const Library = (): ReactElement => {
|
|||||||
|
|
||||||
const ComicInfoXML = (value) => {
|
const ComicInfoXML = (value) => {
|
||||||
return value.data ? (
|
return value.data ? (
|
||||||
<dl className="flex flex-col text-md p-4 mx-4 my-3 rounded-lg bg-amber-400 w-max">
|
<dl className="flex flex-col text-md p-3 mx-4 my-3 rounded-lg bg-yellow-500 w-max">
|
||||||
<span className="inline-flex items-center bg-slate-50 text-slate-800 text-xs font-medium px-2.5 rounded-md dark:text-slate-900 dark:bg-slate-400">
|
{/* Series Name */}
|
||||||
|
<span className="inline-flex items-center bg-slate-50 text-slate-800 text-xs font-medium px-2 rounded-md dark:text-slate-900 dark:bg-slate-400">
|
||||||
<span className="pr-1 pt-1">
|
<span className="pr-1 pt-1">
|
||||||
<i className="icon-[solar--bookmark-square-minimalistic-bold-duotone] w-5 h-5"></i>
|
<i className="icon-[solar--bookmark-square-minimalistic-bold-duotone] w-5 h-5"></i>
|
||||||
</span>
|
</span>
|
||||||
@@ -62,26 +63,27 @@ export const Library = (): ReactElement => {
|
|||||||
{ellipsize(value.data.series[0], 45)}
|
{ellipsize(value.data.series[0], 45)}
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
<div className="field is-grouped is-grouped-multiline">
|
<div className="flex flex-row mt-2 gap-2">
|
||||||
<div className="control">
|
{/* Pages */}
|
||||||
<span className="tags has-addons is-size-7 mt-2">
|
<span className="inline-flex items-center bg-slate-50 text-slate-800 text-xs px-2 rounded-md dark:text-slate-900 dark:bg-slate-400">
|
||||||
<span className="tag">Pages</span>
|
<span className="pr-1 pt-1">
|
||||||
<span className="tag is-info is-light has-text-weight-bold">
|
<i className="icon-[solar--notebook-minimalistic-bold-duotone] w-5 h-5"></i>
|
||||||
{value.data.pagecount[0]}
|
|
||||||
</span>
|
|
||||||
</span>
|
</span>
|
||||||
</div>
|
<span className="text-md text-slate-900 dark:text-slate-900">
|
||||||
|
Pages: {value.data.pagecount[0]}
|
||||||
<div className="control">
|
</span>
|
||||||
<span className="tags has-addons is-size-7 mt-2">
|
</span>
|
||||||
<span className="tag">Issue</span>
|
{/* Issue number */}
|
||||||
|
<span className="inline-flex items-center bg-slate-50 text-slate-800 text-xs px-2 rounded-md dark:text-slate-900 dark:bg-slate-400">
|
||||||
|
<span className="pr-1 pt-1">
|
||||||
|
<i className="icon-[solar--hashtag-outline] w-3.5 h-3.5"></i>
|
||||||
|
</span>
|
||||||
|
<span className="text-slate-900 dark:text-slate-900">
|
||||||
{!isNil(value.data.number) && (
|
{!isNil(value.data.number) && (
|
||||||
<span className="tag has-text-weight-bold is-success is-light">
|
<span>{parseInt(value.data.number[0], 10)}</span>
|
||||||
{parseInt(value.data.number[0], 10)}
|
|
||||||
</span>
|
|
||||||
)}
|
)}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</dl>
|
</dl>
|
||||||
) : null;
|
) : null;
|
||||||
@@ -112,7 +114,7 @@ export const Library = (): ReactElement => {
|
|||||||
!isEmpty(info.getValue()) ? (
|
!isEmpty(info.getValue()) ? (
|
||||||
<ComicInfoXML data={info.getValue()} />
|
<ComicInfoXML data={info.getValue()} />
|
||||||
) : (
|
) : (
|
||||||
<span className="text-sm p-4">No ComicInfo.xml</span>
|
<div className="text-sm mx-4 my-3">No comicinfo.xml</div>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@@ -126,9 +128,7 @@ export const Library = (): ReactElement => {
|
|||||||
cell: (info) => {
|
cell: (info) => {
|
||||||
return !isNil(info.getValue()) ? (
|
return !isNil(info.getValue()) ? (
|
||||||
<h6>{info.getValue().publisher.name}</h6>
|
<h6>{info.getValue().publisher.name}</h6>
|
||||||
) : (
|
) : null;
|
||||||
"Chimin"
|
|
||||||
);
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ const renderCard = (props: ICardProps): ReactElement => {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{/* thumbnail */}
|
{/* thumbnail */}
|
||||||
<div className="rounded-lg overflow-hidden w-fit h-fit">
|
<div className="rounded-lg shadow-lg overflow-hidden w-fit h-fit">
|
||||||
<img src={props.imageUrl} />
|
<img src={props.imageUrl} />
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
|
|||||||
@@ -36,13 +36,17 @@ export const MetadataPanel = (props: IMetadatPanelProps): ReactElement => {
|
|||||||
<p className="text-lg">{issueName}</p>
|
<p className="text-lg">{issueName}</p>
|
||||||
</dt>
|
</dt>
|
||||||
<dd className="text-sm">
|
<dd className="text-sm">
|
||||||
Is a part of <span>{inferredMetadata.issue.name}</span>
|
is a part of{" "}
|
||||||
|
<span className="underline">
|
||||||
|
{inferredMetadata.issue.name}
|
||||||
|
<i className="icon-[solar--arrow-right-up-outline] w-4 h-4" />
|
||||||
|
</span>
|
||||||
</dd>
|
</dd>
|
||||||
|
|
||||||
{/* Issue number */}
|
{/* Issue number */}
|
||||||
{inferredMetadata.issue.number && (
|
{inferredMetadata.issue.number && (
|
||||||
<dd className="my-2">
|
<dd className="my-2">
|
||||||
<span className="inline-flex items-center bg-slate-50 text-slate-800 text-xs font-medium px-2.5 rounded-md dark:text-slate-900 dark:bg-slate-400">
|
<span className="inline-flex items-center bg-slate-50 text-slate-800 text-xs font-medium px-2 rounded-md dark:text-slate-900 dark:bg-slate-400">
|
||||||
<span className="pr-1 pt-1">
|
<span className="pr-1 pt-1">
|
||||||
<i className="icon-[solar--hashtag-outline] w-3.5 h-3.5"></i>
|
<i className="icon-[solar--hashtag-outline] w-3.5 h-3.5"></i>
|
||||||
</span>
|
</span>
|
||||||
@@ -54,7 +58,7 @@ export const MetadataPanel = (props: IMetadatPanelProps): ReactElement => {
|
|||||||
)}
|
)}
|
||||||
<dd className="flex flex-row gap-2 w-max">
|
<dd className="flex flex-row gap-2 w-max">
|
||||||
{/* File extension */}
|
{/* File extension */}
|
||||||
<span className="inline-flex items-center bg-slate-50 text-slate-800 text-xs font-medium px-2.5 rounded-md dark:text-slate-900 dark:bg-slate-400">
|
<span className="inline-flex items-center bg-slate-50 text-slate-800 text-xs font-medium px-2 rounded-md dark:text-slate-900 dark:bg-slate-400">
|
||||||
<span className="pr-1 pt-1">
|
<span className="pr-1 pt-1">
|
||||||
<i className="icon-[solar--zip-file-bold-duotone] w-5 h-5"></i>
|
<i className="icon-[solar--zip-file-bold-duotone] w-5 h-5"></i>
|
||||||
</span>
|
</span>
|
||||||
@@ -65,7 +69,7 @@ export const MetadataPanel = (props: IMetadatPanelProps): ReactElement => {
|
|||||||
</span>
|
</span>
|
||||||
|
|
||||||
{/* size */}
|
{/* size */}
|
||||||
<span className="inline-flex items-center bg-slate-50 text-slate-800 text-xs font-medium px-2.5 rounded-md dark:text-slate-900 dark:bg-slate-400">
|
<span className="inline-flex items-center bg-slate-50 text-slate-800 text-xs font-medium px-2 rounded-md dark:text-slate-900 dark:bg-slate-400">
|
||||||
<span className="pr-1 pt-1">
|
<span className="pr-1 pt-1">
|
||||||
<i className="icon-[solar--mirror-right-bold-duotone] w-5 h-5"></i>
|
<i className="icon-[solar--mirror-right-bold-duotone] w-5 h-5"></i>
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -78,54 +78,40 @@ export const T2Table = (tableOptions): ReactElement => {
|
|||||||
</div>
|
</div>
|
||||||
{/* pagination controls */}
|
{/* pagination controls */}
|
||||||
<nav className="pagination columns">
|
<nav className="pagination columns">
|
||||||
<div className="mr-4 has-text-weight-semibold has-text-left">
|
Page {pageIndex} of {Math.ceil(totalPages / pageSize)}
|
||||||
<p className="is-size-5">
|
<p>{totalPages} comics in all</p>
|
||||||
Page {pageIndex} of {Math.ceil(totalPages / pageSize)}
|
{/* Prev/Next buttons */}
|
||||||
</p>
|
<div className="inline-flex flex-row mt-4 mb-4">
|
||||||
<p>{totalPages} comics in all</p>
|
<button
|
||||||
</div>
|
onClick={() => goToPreviousPage()}
|
||||||
<div className="field has-addons">
|
disabled={pageIndex === 1}
|
||||||
<div className="control">
|
className="bg-slate-500 rounded-l border-slate-600 border-r pt-2 px-2"
|
||||||
<button
|
>
|
||||||
className="button"
|
<i className="icon-[solar--arrow-left-linear] h-6 w-6"></i>
|
||||||
onClick={() => goToPreviousPage()}
|
</button>
|
||||||
disabled={pageIndex === 1}
|
<button
|
||||||
>
|
className="bg-slate-500 rounded-r pt-2 px-2"
|
||||||
<i className="fas fa-chevron-left"></i>
|
onClick={() => goToNextPage()}
|
||||||
</button>
|
disabled={pageIndex > Math.floor(totalPages / pageSize)}
|
||||||
</div>
|
>
|
||||||
<div className="control">
|
<i className="icon-[solar--arrow-right-linear] h-6 w-6"></i>
|
||||||
<button
|
</button>
|
||||||
className="button"
|
|
||||||
onClick={() => goToNextPage()}
|
|
||||||
disabled={pageIndex > Math.floor(totalPages / pageSize)}
|
|
||||||
>
|
|
||||||
<i className="fas fa-chevron-right"></i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className="field has-addons ml-5">
|
|
||||||
<p className="control">
|
|
||||||
<button className="button">
|
|
||||||
<span className="icon is-small">
|
|
||||||
<i className="fa-solid fa-list"></i>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</p>
|
|
||||||
<p className="control">
|
|
||||||
<button className="button">
|
|
||||||
<Link to="/library-grid">
|
|
||||||
<span className="icon is-small">
|
|
||||||
<i className="fa-solid fa-image"></i>
|
|
||||||
</span>
|
|
||||||
</Link>
|
|
||||||
</button>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
<button className="button">
|
||||||
|
<span className="icon is-small">
|
||||||
|
<i className="fa-solid fa-list"></i>
|
||||||
|
</span>
|
||||||
|
</button>
|
||||||
|
<button className="button">
|
||||||
|
<Link to="/library-grid">
|
||||||
|
<span className="icon is-small">
|
||||||
|
<i className="fa-solid fa-image"></i>
|
||||||
|
</span>
|
||||||
|
</Link>
|
||||||
|
</button>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
<table className="table-auto">
|
<table className="table-auto border-collapse overflow-auto">
|
||||||
<thead className="sticky top-0 bg-slate-200 dark:bg-slate-500">
|
<thead className="sticky top-0 bg-slate-200 dark:bg-slate-500">
|
||||||
{table.getHeaderGroups().map((headerGroup, idx) => (
|
{table.getHeaderGroups().map((headerGroup, idx) => (
|
||||||
<tr key={headerGroup.id}>
|
<tr key={headerGroup.id}>
|
||||||
|
|||||||
Reference in New Issue
Block a user