Add rating sort

This commit is contained in:
Chuck Dries 2022-07-09 12:06:24 -07:00
parent 00684a21f4
commit 7d2f09feee
No known key found for this signature in database
GPG Key ID: A00B7AEAE1DC5BE6
2 changed files with 22 additions and 9 deletions

View File

@ -11,7 +11,8 @@ import classNames from "classnames";
const MasonryGallery = ({ const MasonryGallery = ({
images, images,
aspectsByBreakpoint: aspectTargetsByBreakpoint, aspectsByBreakpoint: aspectTargetsByBreakpoint,
debug, debugHue,
debugRating,
}) => { }) => {
const breakpoints = React.useMemo( const breakpoints = React.useMemo(
() => R.pick(R.keys(aspectTargetsByBreakpoint), themeBreakpoints), () => R.pick(R.keys(aspectTargetsByBreakpoint), themeBreakpoints),
@ -114,7 +115,7 @@ const MasonryGallery = ({
<Link <Link
className={classNames( className={classNames(
"border-4 overflow-hidden", "border-4 overflow-hidden",
debug && "border-8" debugHue && "border-8"
)} )}
id={image.base} id={image.base}
key={`${image.base}`} key={`${image.base}`}
@ -124,7 +125,7 @@ const MasonryGallery = ({
width, width,
// borderColor: `hsl(${image.fields.imageMeta.dominantHue}, 100%, 50%)` // borderColor: `hsl(${image.fields.imageMeta.dominantHue}, 100%, 50%)`
// borderColor: `rgb(${image.fields.imageMeta.vibrant.Vibrant.join(',')})` // borderColor: `rgb(${image.fields.imageMeta.vibrant.Vibrant.join(',')})`
borderColor: debug borderColor: debugHue
? `hsl( ? `hsl(
${image.fields.imageMeta.dominantHue[0]}, ${image.fields.imageMeta.dominantHue[0]},
${image.fields.imageMeta.dominantHue[1] * 100}%, ${image.fields.imageMeta.dominantHue[1] * 100}%,
@ -134,7 +135,7 @@ const MasonryGallery = ({
}} }}
to={`/photogallery/${image.base}`} to={`/photogallery/${image.base}`}
> >
{debug && ( {debugHue && (
<span className="text-white z-20 absolute bg-black"> <span className="text-white z-20 absolute bg-black">
hsl( hsl(
{image.fields.imageMeta.dominantHue[0]},{" "} {image.fields.imageMeta.dominantHue[0]},{" "}
@ -142,6 +143,11 @@ const MasonryGallery = ({
{(image.fields.imageMeta.dominantHue[2] * 100).toFixed(2)}% ) {(image.fields.imageMeta.dominantHue[2] * 100).toFixed(2)}% )
</span> </span>
)} )}
{debugRating && (
<span className="text-white z-20 absolute bg-black">
rating: {image.fields.imageMeta.meta.Rating}
</span>
)}
<GatsbyImage <GatsbyImage
alt={getName(image)} alt={getName(image)}
className="w-full h-full" className="w-full h-full"

View File

@ -9,12 +9,13 @@ import MasonryGallery from "../components/MasonryGallery";
const SORT_KEYS = { const SORT_KEYS = {
hue: ["fields", "imageMeta", "vibrantHue"], hue: ["fields", "imageMeta", "vibrantHue"],
rating: ["fields", "imageMeta", "meta", "Rating"],
hue_debug: ["fields", "imageMeta", "dominantHue", 0], hue_debug: ["fields", "imageMeta", "dominantHue", 0],
date: [], date: [],
}; };
const GalleryPage = ({ data }) => { const GalleryPage = ({ data }) => {
const [sortKey, _setSortKey] = React.useState("date"); const [sortKey, _setSortKey] = React.useState("rating");
const setSortKey = React.useCallback( const setSortKey = React.useCallback(
(key) => { (key) => {
try { try {
@ -51,7 +52,7 @@ const GalleryPage = ({ data }) => {
); );
return -1 * (date1.getTime() - date2.getTime()); return -1 * (date1.getTime() - date2.getTime());
}) })
: R.sortBy(R.path(SORT_KEYS[sortKey])) : R.sort(R.descend(R.path(SORT_KEYS[sortKey])))
)(data.allFile.edges), )(data.allFile.edges),
[data, sortKey] [data, sortKey]
); );
@ -98,9 +99,10 @@ const GalleryPage = ({ data }) => {
onSelectionChange={setSortKey} onSelectionChange={setSortKey}
selectedKey={sortKey} selectedKey={sortKey}
> >
<Item key="rating">Default</Item>
<Item key="date">Date</Item>
<Item key="hue">Hue</Item> <Item key="hue">Hue</Item>
{showDebug && <Item key="hue_debug">Dominant hue[debug]</Item>} {showDebug && <Item key="hue_debug">Dominant hue[debug]</Item>}
<Item key="date">Date</Item>
</Picker> </Picker>
</div> </div>
</div> </div>
@ -113,7 +115,8 @@ const GalleryPage = ({ data }) => {
xl: 5, xl: 5,
// '2xl': 6.1, // '2xl': 6.1,
}} }}
debug={sortKey === "hue_debug"} debugHue={sortKey === "hue_debug"}
debugRating={sortKey === "rating" && showDebug}
images={images} images={images}
/> />
</> </>
@ -122,7 +125,10 @@ const GalleryPage = ({ data }) => {
export const query = graphql` export const query = graphql`
query GalleryPageQuery { query GalleryPageQuery {
allFile(filter: { sourceInstanceName: { eq: "gallery" } }) { allFile(
filter: { sourceInstanceName: { eq: "gallery" } }
sort: { fields: fields___imageMeta___dateTaken, order: DESC }
) {
edges { edges {
node { node {
relativePath relativePath
@ -143,6 +149,7 @@ export const query = graphql`
dominantHue dominantHue
dateTaken dateTaken
meta { meta {
Rating
ObjectName ObjectName
} }
vibrant { vibrant {