Skip to content

Commit c9d2a5f

Browse files
Mary Hippmaryhipp
authored andcommitted
display credit column in queue list if shouldShowCredits is true
1 parent 1f63b60 commit c9d2a5f

File tree

8 files changed

+370
-0
lines changed

8 files changed

+370
-0
lines changed

invokeai/app/services/session_queue/session_queue_common.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,7 @@ class SessionQueueItemWithoutGraph(BaseModel):
257257
api_output_fields: Optional[list[FieldIdentifier]] = Field(
258258
default=None, description="The nodes that were used as output from the API"
259259
)
260+
credits: Optional[int] = Field(default=None, description="The total credits used for this queue item")
260261

261262
@classmethod
262263
def queue_item_dto_from_dict(cls, queue_item_dict: dict) -> "SessionQueueItemDTO":

invokeai/frontend/web/public/locales/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,7 @@
268268
"status": "Status",
269269
"total": "Total",
270270
"time": "Time",
271+
"credits": "Credits",
271272
"pending": "Pending",
272273
"in_progress": "In Progress",
273274
"completed": "Completed",

invokeai/frontend/web/src/app/types/invokeai.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ export type AppConfig = {
8484
metadataFetchDebounce?: number;
8585
workflowFetchDebounce?: number;
8686
isLocal?: boolean;
87+
shouldShowCredits: boolean;
8788
sd: {
8889
defaultModel?: string;
8990
disabledControlNetModels: string[];

invokeai/frontend/web/src/features/queue/components/QueueList/QueueItemComponent.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ import { useCancelQueueItem } from 'features/queue/hooks/useCancelQueueItem';
77
import { useRetryQueueItem } from 'features/queue/hooks/useRetryQueueItem';
88
import { getSecondsFromTimestamps } from 'features/queue/util/getSecondsFromTimestamps';
99
import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus';
10+
import { selectShouldShowCredits } from 'features/system/store/configSlice';
1011
import type { MouseEvent } from 'react';
1112
import { memo, useCallback, useMemo } from 'react';
1213
import { useTranslation } from 'react-i18next';
1314
import { PiArrowCounterClockwiseBold, PiXBold } from 'react-icons/pi';
15+
import { useSelector } from 'react-redux';
1416
import type { SessionQueueItemDTO } from 'services/api/types';
1517

1618
import { COLUMN_WIDTHS } from './constants';
@@ -62,6 +64,8 @@ const QueueItemComponent = ({ index, item, context }: InnerItemProps) => {
6264
return `${seconds}s`;
6365
}, [item]);
6466

67+
const shouldShowCredits = useSelector(selectShouldShowCredits);
68+
6569
const isCanceled = useMemo(() => ['canceled', 'completed', 'failed'].includes(item.status), [item.status]);
6670
const isFailed = useMemo(() => ['canceled', 'failed'].includes(item.status), [item.status]);
6771
const isValidationRun = useMemo(() => item.is_api_validation_run === true, [item.is_api_validation_run]);
@@ -98,6 +102,11 @@ const QueueItemComponent = ({ index, item, context }: InnerItemProps) => {
98102
<Flex w={COLUMN_WIDTHS.time} alignItems="center" flexShrink={0}>
99103
{executionTime || '-'}
100104
</Flex>
105+
{shouldShowCredits && (
106+
<Flex w={COLUMN_WIDTHS.credits} alignItems="center" flexShrink={0}>
107+
{item.credits || '-'}
108+
</Flex>
109+
)}
101110
<Flex w={COLUMN_WIDTHS.batchId} flexShrink={0}>
102111
<Text overflow="hidden" textOverflow="ellipsis" whiteSpace="nowrap" alignItems="center">
103112
{item.batch_id}

invokeai/frontend/web/src/features/queue/components/QueueList/QueueListHeader.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
import { Flex, Text } from '@invoke-ai/ui-library';
2+
import { selectShouldShowCredits } from 'features/system/store/configSlice';
23
import { memo } from 'react';
34
import { useTranslation } from 'react-i18next';
5+
import { useSelector } from 'react-redux';
46

57
import { COLUMN_WIDTHS } from './constants';
8+
69
const QueueListHeader = () => {
710
const { t } = useTranslation();
11+
const shouldShowCredits = useSelector(selectShouldShowCredits);
812
return (
913
<Flex
1014
alignItems="center"
@@ -31,6 +35,11 @@ const QueueListHeader = () => {
3135
<Flex ps={0.5} w={COLUMN_WIDTHS.time} alignItems="center">
3236
<Text variant="subtext">{t('queue.time')}</Text>
3337
</Flex>
38+
{shouldShowCredits && (
39+
<Flex ps={0.5} w={COLUMN_WIDTHS.credits} alignItems="center">
40+
<Text variant="subtext">{t('queue.credits')}</Text>
41+
</Flex>
42+
)}
3443
<Flex ps={0.5} w={COLUMN_WIDTHS.batchId} alignItems="center">
3544
<Text variant="subtext">{t('queue.batch')}</Text>
3645
</Flex>

invokeai/frontend/web/src/features/queue/components/QueueList/constants.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ export const COLUMN_WIDTHS = {
33
statusBadge: '5.7rem',
44
statusDot: 2,
55
time: '4rem',
6+
credits: '4rem',
67
origin: '5rem',
78
destination: '6rem',
89
batchId: '5rem',

invokeai/frontend/web/src/features/system/store/configSlice.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ const initialConfigState: AppConfig = {
2222
allowPrivateStylePresets: false,
2323
allowClientSideUpload: false,
2424
allowPublishWorkflows: false,
25+
shouldShowCredits: false,
2526
disabledTabs: [],
2627
disabledFeatures: ['lightbox', 'faceRestore', 'batches'],
2728
disabledSDFeatures: ['variation', 'symmetry', 'hires', 'perlinNoise', 'noiseThreshold'],
@@ -223,3 +224,4 @@ export const selectIsModelsTabDisabled = createConfigSelector((config) => config
223224
export const selectIsClientSideUploadEnabled = createConfigSelector((config) => config.allowClientSideUpload);
224225
export const selectAllowPublishWorkflows = createConfigSelector((config) => config.allowPublishWorkflows);
225226
export const selectIsLocal = createSelector(selectConfigSlice, (config) => config.isLocal);
227+
export const selectShouldShowCredits = createConfigSelector((config) => config.shouldShowCredits);

0 commit comments

Comments
 (0)