mirror of
https://github.com/cpvalente/ontime.git
synced 2026-09-01 20:39:18 +00:00
feat(client): add rundown default to inherit parent group colour
This commit is contained in:
@@ -16,6 +16,7 @@ import {
|
|||||||
TimeStrategy,
|
TimeStrategy,
|
||||||
isOntimeEvent,
|
isOntimeEvent,
|
||||||
isOntimeGroup,
|
isOntimeGroup,
|
||||||
|
isOntimeMilestone,
|
||||||
} from 'ontime-types';
|
} from 'ontime-types';
|
||||||
import {
|
import {
|
||||||
MILLIS_PER_SECOND,
|
MILLIS_PER_SECOND,
|
||||||
@@ -82,6 +83,7 @@ function useEntryActionsForRundown(scopedRundownId: string | undefined) {
|
|||||||
defaultDangerTime,
|
defaultDangerTime,
|
||||||
defaultTimerType,
|
defaultTimerType,
|
||||||
defaultEndAction,
|
defaultEndAction,
|
||||||
|
inheritGroupColour,
|
||||||
} = useEditorSettings();
|
} = useEditorSettings();
|
||||||
|
|
||||||
const resolveCurrentRundownQueryKey = useCallback(() => {
|
const resolveCurrentRundownQueryKey = useCallback(() => {
|
||||||
@@ -239,6 +241,14 @@ function useEntryActionsForRundown(scopedRundownId: string | undefined) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (inheritGroupColour && (isOntimeEvent(newEntry) || isOntimeMilestone(newEntry)) && !newEntry.colour) {
|
||||||
|
const parentId = resolveInsertParent(rundownData, newEntry);
|
||||||
|
const maybeParent = parentId ? rundownData.entries[parentId] : null;
|
||||||
|
if (maybeParent && isOntimeGroup(maybeParent)) {
|
||||||
|
newEntry.colour = maybeParent.colour;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await addEntryMutation([rundownId, newEntry]);
|
await addEntryMutation([rundownId, newEntry]);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -254,6 +264,7 @@ function useEntryActionsForRundown(scopedRundownId: string | undefined) {
|
|||||||
defaultTimerType,
|
defaultTimerType,
|
||||||
defaultEndAction,
|
defaultEndAction,
|
||||||
defaultTimeStrategy,
|
defaultTimeStrategy,
|
||||||
|
inheritGroupColour,
|
||||||
addEntryMutation,
|
addEntryMutation,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -12,8 +12,10 @@ type EditorSettingsStore = {
|
|||||||
defaultDangerTime: string;
|
defaultDangerTime: string;
|
||||||
defaultTimerType: TimerType;
|
defaultTimerType: TimerType;
|
||||||
defaultEndAction: EndAction;
|
defaultEndAction: EndAction;
|
||||||
|
inheritGroupColour: boolean;
|
||||||
setDefaultDuration: (defaultDuration: string) => void;
|
setDefaultDuration: (defaultDuration: string) => void;
|
||||||
setLinkPrevious: (linkPrevious: boolean) => void;
|
setLinkPrevious: (linkPrevious: boolean) => void;
|
||||||
|
setInheritGroupColour: (inheritGroupColour: boolean) => void;
|
||||||
setTimeStrategy: (timeStrategy: TimeStrategy) => void;
|
setTimeStrategy: (timeStrategy: TimeStrategy) => void;
|
||||||
setWarnTime: (warnTime: string) => void;
|
setWarnTime: (warnTime: string) => void;
|
||||||
setDangerTime: (dangerTime: string) => void;
|
setDangerTime: (dangerTime: string) => void;
|
||||||
@@ -29,6 +31,7 @@ export const editorSettingsDefaults = {
|
|||||||
dangerTime: '00:01:00', // 60000 same as backend
|
dangerTime: '00:01:00', // 60000 same as backend
|
||||||
timerType: TimerType.CountDown,
|
timerType: TimerType.CountDown,
|
||||||
endAction: EndAction.None,
|
endAction: EndAction.None,
|
||||||
|
inheritGroupColour: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum EditorSettingsKeys {
|
enum EditorSettingsKeys {
|
||||||
@@ -39,6 +42,7 @@ enum EditorSettingsKeys {
|
|||||||
DefaultDangerTime = 'ontime-default-danger-time',
|
DefaultDangerTime = 'ontime-default-danger-time',
|
||||||
DefaultTimerType = 'ontime-default-timer-type',
|
DefaultTimerType = 'ontime-default-timer-type',
|
||||||
DefaultEndAction = 'ontime-default-end-action',
|
DefaultEndAction = 'ontime-default-end-action',
|
||||||
|
InheritGroupColour = 'ontime-inherit-group-colour',
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useEditorSettings = create<EditorSettingsStore>((set) => {
|
export const useEditorSettings = create<EditorSettingsStore>((set) => {
|
||||||
@@ -59,6 +63,10 @@ export const useEditorSettings = create<EditorSettingsStore>((set) => {
|
|||||||
localStorage.getItem(EditorSettingsKeys.DefaultEndAction),
|
localStorage.getItem(EditorSettingsKeys.DefaultEndAction),
|
||||||
editorSettingsDefaults.endAction,
|
editorSettingsDefaults.endAction,
|
||||||
),
|
),
|
||||||
|
inheritGroupColour: booleanFromLocalStorage(
|
||||||
|
EditorSettingsKeys.InheritGroupColour,
|
||||||
|
editorSettingsDefaults.inheritGroupColour,
|
||||||
|
),
|
||||||
|
|
||||||
setDefaultDuration: (defaultDuration) =>
|
setDefaultDuration: (defaultDuration) =>
|
||||||
set(() => {
|
set(() => {
|
||||||
@@ -97,5 +105,10 @@ export const useEditorSettings = create<EditorSettingsStore>((set) => {
|
|||||||
localStorage.setItem(EditorSettingsKeys.DefaultEndAction, String(defaultEndAction));
|
localStorage.setItem(EditorSettingsKeys.DefaultEndAction, String(defaultEndAction));
|
||||||
return { defaultEndAction };
|
return { defaultEndAction };
|
||||||
}),
|
}),
|
||||||
|
setInheritGroupColour: (inheritGroupColour) =>
|
||||||
|
set(() => {
|
||||||
|
localStorage.setItem(EditorSettingsKeys.InheritGroupColour, String(inheritGroupColour));
|
||||||
|
return { inheritGroupColour };
|
||||||
|
}),
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ export default function RundownDefaultSettings() {
|
|||||||
defaultDangerTime,
|
defaultDangerTime,
|
||||||
defaultTimerType,
|
defaultTimerType,
|
||||||
defaultEndAction,
|
defaultEndAction,
|
||||||
|
inheritGroupColour,
|
||||||
setDefaultDuration,
|
setDefaultDuration,
|
||||||
setLinkPrevious,
|
setLinkPrevious,
|
||||||
setTimeStrategy,
|
setTimeStrategy,
|
||||||
@@ -23,6 +24,7 @@ export default function RundownDefaultSettings() {
|
|||||||
setDangerTime,
|
setDangerTime,
|
||||||
setDefaultTimerType,
|
setDefaultTimerType,
|
||||||
setDefaultEndAction,
|
setDefaultEndAction,
|
||||||
|
setInheritGroupColour,
|
||||||
} = useEditorSettings((state) => state);
|
} = useEditorSettings((state) => state);
|
||||||
|
|
||||||
const durationInMs = parseUserTime(defaultDuration);
|
const durationInMs = parseUserTime(defaultDuration);
|
||||||
@@ -44,6 +46,13 @@ export default function RundownDefaultSettings() {
|
|||||||
/>
|
/>
|
||||||
<Switch size='large' checked={linkPrevious} onCheckedChange={setLinkPrevious} />
|
<Switch size='large' checked={linkPrevious} onCheckedChange={setLinkPrevious} />
|
||||||
</Panel.ListItem>
|
</Panel.ListItem>
|
||||||
|
<Panel.ListItem>
|
||||||
|
<Panel.Field
|
||||||
|
title='Inherit group colour'
|
||||||
|
description='Whether new events and milestones inherit the colour of their parent group'
|
||||||
|
/>
|
||||||
|
<Switch size='large' checked={inheritGroupColour} onCheckedChange={setInheritGroupColour} />
|
||||||
|
</Panel.ListItem>
|
||||||
<Panel.ListItem>
|
<Panel.ListItem>
|
||||||
<Panel.Field
|
<Panel.Field
|
||||||
title='Timer strategy'
|
title='Timer strategy'
|
||||||
|
|||||||
Reference in New Issue
Block a user