Using thumbnail size instead of original photo size in image tags.
This commit is contained in:
parent
0a92586c53
commit
862a29bb6e
|
@ -17,6 +17,8 @@
|
||||||
:src="getPath(actor.avatar, 'thumbnail')"
|
:src="getPath(actor.avatar, 'thumbnail')"
|
||||||
:style="{ 'background-image': getBgPath(actor.avatar, 'lazy') }"
|
:style="{ 'background-image': getBgPath(actor.avatar, 'lazy') }"
|
||||||
:title="actor.avatar.credit && `© ${actor.avatar.credit}`"
|
:title="actor.avatar.credit && `© ${actor.avatar.credit}`"
|
||||||
|
:width="actor.avatar.thumbnailWidth"
|
||||||
|
:height="actor.avatar.thumbnailHeight"
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
class="avatar photo"
|
class="avatar photo"
|
||||||
@load="$emit('load', $event)"
|
@load="$emit('load', $event)"
|
||||||
|
@ -35,6 +37,8 @@
|
||||||
:src="getPath(photo, 'thumbnail')"
|
:src="getPath(photo, 'thumbnail')"
|
||||||
:style="{ 'background-image': getBgPath(photo, 'lazy') }"
|
:style="{ 'background-image': getBgPath(photo, 'lazy') }"
|
||||||
:title="`© ${photo.credit || photo.entity.name}`"
|
:title="`© ${photo.credit || photo.entity.name}`"
|
||||||
|
:width="photo.thumbnailWidth"
|
||||||
|
:height="photo.thumbnailHeight"
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
class="photo"
|
class="photo"
|
||||||
@load="$emit('load', $event)"
|
@load="$emit('load', $event)"
|
||||||
|
|
|
@ -28,8 +28,8 @@
|
||||||
<img
|
<img
|
||||||
:src="getPath(item, 'thumbnail', { local })"
|
:src="getPath(item, 'thumbnail', { local })"
|
||||||
:style="{ 'background-image': `url('${getPath(item, 'lazy', { local })}')` }"
|
:style="{ 'background-image': `url('${getPath(item, 'lazy', { local })}')` }"
|
||||||
:width="item.width"
|
:width="item.thumbnailWidth"
|
||||||
:height="item.height"
|
:height="item.thumbnailHeight"
|
||||||
:title="item.title"
|
:title="item.title"
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
class="item image"
|
class="item image"
|
||||||
|
|
|
@ -13,8 +13,8 @@
|
||||||
:src="getPath(photo, 'thumbnail', { local: true })"
|
:src="getPath(photo, 'thumbnail', { local: true })"
|
||||||
:style="{ 'background-image': `url(${getPath(photo, 'lazy', { local: true })})` }"
|
:style="{ 'background-image': `url(${getPath(photo, 'lazy', { local: true })})` }"
|
||||||
:alt="photo.comment"
|
:alt="photo.comment"
|
||||||
:width="photo.width"
|
:width="photo.thumbnailWidth"
|
||||||
:height="photo.height"
|
:height="photo.thumbnailHeight"
|
||||||
class="photo"
|
class="photo"
|
||||||
@load="$emit('load', $event)"
|
@load="$emit('load', $event)"
|
||||||
>
|
>
|
||||||
|
|
|
@ -94,6 +94,10 @@ function initActorActions(store, router) {
|
||||||
path
|
path
|
||||||
thumbnail
|
thumbnail
|
||||||
lazy
|
lazy
|
||||||
|
width
|
||||||
|
height
|
||||||
|
thumbnailWidth
|
||||||
|
thumbnailHeight
|
||||||
hash
|
hash
|
||||||
comment
|
comment
|
||||||
credit
|
credit
|
||||||
|
@ -126,6 +130,10 @@ function initActorActions(store, router) {
|
||||||
path
|
path
|
||||||
thumbnail
|
thumbnail
|
||||||
lazy
|
lazy
|
||||||
|
width
|
||||||
|
height
|
||||||
|
thumbnailWidth
|
||||||
|
thumbnailHeight
|
||||||
hash
|
hash
|
||||||
isS3
|
isS3
|
||||||
comment
|
comment
|
||||||
|
|
|
@ -110,6 +110,8 @@ const releasePosterFragment = `
|
||||||
thumbnail
|
thumbnail
|
||||||
width
|
width
|
||||||
height
|
height
|
||||||
|
thumbnailWidth
|
||||||
|
thumbnailHeight
|
||||||
lazy
|
lazy
|
||||||
isS3
|
isS3
|
||||||
comment
|
comment
|
||||||
|
@ -133,6 +135,8 @@ const releaseCoversFragment = `
|
||||||
thumbnail
|
thumbnail
|
||||||
width
|
width
|
||||||
height
|
height
|
||||||
|
thumbnailWidth
|
||||||
|
thumbnailHeight
|
||||||
lazy
|
lazy
|
||||||
isS3
|
isS3
|
||||||
comment
|
comment
|
||||||
|
@ -156,6 +160,8 @@ const releasePhotosFragment = `
|
||||||
thumbnail
|
thumbnail
|
||||||
width
|
width
|
||||||
height
|
height
|
||||||
|
thumbnailWidth
|
||||||
|
thumbnailHeight
|
||||||
lazy
|
lazy
|
||||||
isS3
|
isS3
|
||||||
comment
|
comment
|
||||||
|
|
|
@ -109,6 +109,10 @@ function initReleasesActions(store, router) {
|
||||||
path
|
path
|
||||||
thumbnail
|
thumbnail
|
||||||
lazy
|
lazy
|
||||||
|
width
|
||||||
|
height
|
||||||
|
thumbnailWidth
|
||||||
|
thumbnailHeight
|
||||||
isS3
|
isS3
|
||||||
sfw: sfwMedia {
|
sfw: sfwMedia {
|
||||||
id
|
id
|
||||||
|
@ -167,6 +171,10 @@ function initReleasesActions(store, router) {
|
||||||
id
|
id
|
||||||
path
|
path
|
||||||
thumbnail
|
thumbnail
|
||||||
|
width
|
||||||
|
height
|
||||||
|
thumbnailWidth
|
||||||
|
thumbnailHeight
|
||||||
lazy
|
lazy
|
||||||
isS3
|
isS3
|
||||||
}
|
}
|
||||||
|
@ -177,6 +185,10 @@ function initReleasesActions(store, router) {
|
||||||
path
|
path
|
||||||
thumbnail
|
thumbnail
|
||||||
lazy
|
lazy
|
||||||
|
width
|
||||||
|
height
|
||||||
|
thumbnailWidth
|
||||||
|
thumbnailHeight
|
||||||
isS3
|
isS3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -185,6 +197,10 @@ function initReleasesActions(store, router) {
|
||||||
id
|
id
|
||||||
path
|
path
|
||||||
thumbnail
|
thumbnail
|
||||||
|
width
|
||||||
|
height
|
||||||
|
thumbnailWidth
|
||||||
|
thumbnailHeight
|
||||||
lazy
|
lazy
|
||||||
isS3
|
isS3
|
||||||
}
|
}
|
||||||
|
@ -212,6 +228,10 @@ function initReleasesActions(store, router) {
|
||||||
path
|
path
|
||||||
thumbnail
|
thumbnail
|
||||||
lazy
|
lazy
|
||||||
|
width
|
||||||
|
height
|
||||||
|
thumbnailWidth
|
||||||
|
thumbnailHeight
|
||||||
isS3
|
isS3
|
||||||
comment
|
comment
|
||||||
sfw: sfwMedia {
|
sfw: sfwMedia {
|
||||||
|
|
|
@ -41,6 +41,8 @@ function initTagsActions(store, _router) {
|
||||||
path
|
path
|
||||||
width
|
width
|
||||||
height
|
height
|
||||||
|
thumbnailWidth
|
||||||
|
thumbnailHeight
|
||||||
comment
|
comment
|
||||||
entity {
|
entity {
|
||||||
id
|
id
|
||||||
|
@ -73,6 +75,8 @@ function initTagsActions(store, _router) {
|
||||||
path
|
path
|
||||||
width
|
width
|
||||||
height
|
height
|
||||||
|
thumbnailWidth
|
||||||
|
thumbnailHeight
|
||||||
comment
|
comment
|
||||||
entity {
|
entity {
|
||||||
id
|
id
|
||||||
|
@ -166,6 +170,8 @@ function initTagsActions(store, _router) {
|
||||||
lazy
|
lazy
|
||||||
width
|
width
|
||||||
height
|
height
|
||||||
|
thumbnailWidth
|
||||||
|
thumbnailHeight
|
||||||
entity {
|
entity {
|
||||||
id
|
id
|
||||||
name
|
name
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const config = require('config');
|
||||||
|
const { makeExtendSchemaPlugin, gql } = require('graphile-utils');
|
||||||
|
|
||||||
|
const schemaExtender = makeExtendSchemaPlugin(_build => ({
|
||||||
|
typeDefs: gql`
|
||||||
|
extend type Media {
|
||||||
|
thumbnailWidth: Int @requires(columns: ["width", "height"])
|
||||||
|
thumbnailHeight: Int @requires(columns: ["height", "width"])
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
resolvers: {
|
||||||
|
Media: {
|
||||||
|
thumbnailWidth(parent, _args, _context, _info) {
|
||||||
|
if (!parent.width || !parent.height) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parent.height <= config.media.thumbnailSize) {
|
||||||
|
// thumbnails aren't upscaled
|
||||||
|
return parent.width;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Math.round(parent.width / (parent.height / config.media.thumbnailSize));
|
||||||
|
},
|
||||||
|
thumbnailHeight(parent, _args, _context, _info) {
|
||||||
|
if (!parent.width || !parent.height) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parent.height <= config.media.thumbnailSize) {
|
||||||
|
// thumbnails aren't upscaled
|
||||||
|
return parent.height;
|
||||||
|
}
|
||||||
|
|
||||||
|
return config.media.thumbnailSize;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
|
||||||
|
module.exports = [schemaExtender];
|
|
@ -3,9 +3,11 @@
|
||||||
const ActorPlugins = require('./actors');
|
const ActorPlugins = require('./actors');
|
||||||
const SitePlugins = require('./sites');
|
const SitePlugins = require('./sites');
|
||||||
// const ReleasePlugins = require('./releases');
|
// const ReleasePlugins = require('./releases');
|
||||||
|
const MediaPlugins = require('./media');
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
ActorPlugins,
|
ActorPlugins,
|
||||||
SitePlugins,
|
SitePlugins,
|
||||||
ReleasePlugins: [],
|
ReleasePlugins: [],
|
||||||
|
MediaPlugins,
|
||||||
};
|
};
|
||||||
|
|
|
@ -8,7 +8,7 @@ const PgConnectionFilterPlugin = require('postgraphile-plugin-connection-filter'
|
||||||
const PgSimplifyInflectorPlugin = require('@graphile-contrib/pg-simplify-inflector');
|
const PgSimplifyInflectorPlugin = require('@graphile-contrib/pg-simplify-inflector');
|
||||||
const PgOrderByRelatedPlugin = require('@graphile-contrib/pg-order-by-related');
|
const PgOrderByRelatedPlugin = require('@graphile-contrib/pg-order-by-related');
|
||||||
|
|
||||||
const { ActorPlugins, SitePlugins, ReleasePlugins } = require('./plugins/plugins');
|
const { ActorPlugins, SitePlugins, ReleasePlugins, MediaPlugins } = require('./plugins/plugins');
|
||||||
|
|
||||||
const connectionString = `postgres://${config.database.query.user}:${config.database.query.password}@${config.database.query.host}:5432/${config.database.query.database}`;
|
const connectionString = `postgres://${config.database.query.user}:${config.database.query.password}@${config.database.query.host}:5432/${config.database.query.database}`;
|
||||||
|
|
||||||
|
@ -42,6 +42,7 @@ module.exports = postgraphile(
|
||||||
...ActorPlugins,
|
...ActorPlugins,
|
||||||
...SitePlugins,
|
...SitePlugins,
|
||||||
...ReleasePlugins,
|
...ReleasePlugins,
|
||||||
|
...MediaPlugins,
|
||||||
],
|
],
|
||||||
pgSettings,
|
pgSettings,
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue