🔎 CV search results prettification

This commit is contained in:
2022-06-01 23:17:53 -07:00
parent f6d86199dd
commit aeb6e5225d
4 changed files with 78 additions and 29 deletions

View File

@@ -20,7 +20,7 @@ export const PullList = ({ issues }: PullListProps): ReactElement => {
useEffect(() => { useEffect(() => {
dispatch( dispatch(
getWeeklyPullList({ getWeeklyPullList({
startDate: "2022-2-11", startDate: "2022-6-1",
pageSize: "15", pageSize: "15",
currentPage: "1", currentPage: "1",
}), }),

View File

@@ -95,6 +95,15 @@ export const RecentlyImported = ({
/> />
</span> </span>
)} )}
{/* ComicVine metadata presence */}
{isComicBookMetadataAvailable && (
<span className="icon custom-icon">
<img
src="/img/cvlogo.svg"
alt={"ComicInfo.xml file detected."}
/>
</span>
)}
{/* Issue type */} {/* Issue type */}
{isComicBookMetadataAvailable && {isComicBookMetadataAvailable &&
!isNil( !isNil(

View File

@@ -34,7 +34,7 @@ export const MatchResult = (props: MatchResultProps) => {
}); });
} }
return ( return (
<div className="search-result mb-4"> <div className="search-result mb-4" key={idx}>
<div className="columns"> <div className="columns">
<div className="column is-one-fifth"> <div className="column is-one-fifth">
<img <img

View File

@@ -7,6 +7,9 @@ import { comicinfoAPICall } from "../actions/comicinfo.actions";
import { search } from "../services/api/SearchApi"; import { search } from "../services/api/SearchApi";
import { Form, Field } from "react-final-form"; import { Form, Field } from "react-final-form";
import Card from "./Carda"; import Card from "./Carda";
import ellipsize from "ellipsize";
import { convert } from "html-to-text";
import dayjs from "dayjs";
interface ISearchProps {} interface ISearchProps {}
@@ -27,7 +30,8 @@ export const Search = ({}: ISearchProps): ReactElement => {
format: "json", format: "json",
limit: "10", limit: "10",
offset: "0", offset: "0",
field_list: "id,name,deck,api_detail_url,image,description,volume", field_list:
"id,name,deck,api_detail_url,image,description,volume,cover_date",
resources: "issue", resources: "issue",
}, },
}), }),
@@ -85,34 +89,70 @@ export const Search = ({}: ISearchProps): ReactElement => {
/> />
{!isNil(comicVineSearchResults.results) && {!isNil(comicVineSearchResults.results) &&
!isEmpty(comicVineSearchResults.results) ? ( !isEmpty(comicVineSearchResults.results) ? (
<div> <div className="columns is-multiline">
{comicVineSearchResults.results.map((result) => { {comicVineSearchResults.results.map((result) => {
return ( return (
<div key={result.id} className="columns is-full"> <div
<div className="column is-one-quarter"> key={result.id}
<Card className="comicvine-metadata column is-10 mb-3"
key={result.id} >
orientation={"vertical"} <div className="columns">
imageUrl={result.image.small_url} <div className="column is-one-quarter">
title={result.name} <Card
hasDetails={false} key={result.id}
></Card> orientation={"vertical"}
</div> imageUrl={result.image.small_url}
<div className="column is-half"> title={result.name}
<div className="is-size-4">{result.name}</div> hasDetails={false}
<span className="tag is-warning">{result.id}</span> ></Card>
<p>{result.api_detail_url}</p> </div>
<p <div className="column">
dangerouslySetInnerHTML={createDescriptionMarkup( <div className="is-size-3">
result.description, {!isEmpty(result.name) ? (
)} result.name
></p> ) : (
<button <span className="is-size-3">No Name</span>
className="button is-success is-light is-outlined" )}
onClick={() => addToLibrary("comicvine", result)} </div>
> <div className="field is-grouped mt-1">
Add to Library <div className="control">
</button> <div className="tags has-addons">
<span className="tag is-light">Cover date</span>
<span className="tag is-info is-light">
{dayjs(result.cover_date).format("MMM D, YYYY")}
</span>
</div>
</div>
<div className="control">
<div className="tags has-addons">
<span className="tag is-warning">
{result.id}
</span>
</div>
</div>
</div>
<a href={result.api_detail_url}>
{result.api_detail_url}
</a>
<p>
{ellipsize(
convert(result.description, {
baseElements: {
selectors: ["p"],
},
}),
320,
)}
</p>
<button
className="button is-success is-light is-outlined mt-2"
onClick={() => addToLibrary("comicvine", result)}
>
<i className="fa-solid fa-plus mr-2"></i> Add to Library
</button>
</div>
</div> </div>
</div> </div>
); );