Add rating sort
This commit is contained in:
parent
00684a21f4
commit
7d2f09feee
@ -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"
|
||||||
|
@ -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 {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user