🔎 CV search results prettification
This commit is contained in:
@@ -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",
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user