fix(shot-status): sort shots by shot code, not shotNumber
Imports and the external API assign shotNumber as max+10 (or 0), which needn't match the number in the shot code, so new shots could sink to the bottom of the list. Sort by episode then natural shot-code order. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -30,14 +30,11 @@ async function getAssignableArtists() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const shotCodeCollator = new Intl.Collator(undefined, { numeric: true, sensitivity: "base" });
|
||||||
|
|
||||||
async function getShotsForProject(projectId: string) {
|
async function getShotsForProject(projectId: string) {
|
||||||
const shots = await db.shot.findMany({
|
const shots = await db.shot.findMany({
|
||||||
where: { projectId },
|
where: { projectId },
|
||||||
orderBy: [
|
|
||||||
{ episode: { sort: "asc", nulls: "last" } },
|
|
||||||
{ scene: "asc" },
|
|
||||||
{ shotNumber: "asc" },
|
|
||||||
],
|
|
||||||
select: {
|
select: {
|
||||||
id: true,
|
id: true,
|
||||||
shotCode: true,
|
shotCode: true,
|
||||||
@@ -90,6 +87,16 @@ async function getShotsForProject(projectId: string) {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Sorted by shot code rather than scene + shotNumber: imports and the
|
||||||
|
// external API assign shotNumber as "max + 10" (or 0), which needn't match
|
||||||
|
// the number in the code, so new shots could sink to the bottom.
|
||||||
|
shots.sort(
|
||||||
|
(a, b) =>
|
||||||
|
(a.episode === null ? 1 : 0) - (b.episode === null ? 1 : 0) ||
|
||||||
|
shotCodeCollator.compare(a.episode ?? "", b.episode ?? "") ||
|
||||||
|
shotCodeCollator.compare(a.shotCode, b.shotCode)
|
||||||
|
);
|
||||||
|
|
||||||
return shots.map(({ exports, ...shot }) => ({
|
return shots.map(({ exports, ...shot }) => ({
|
||||||
...shot,
|
...shot,
|
||||||
delivery: summariseShotDelivery({
|
delivery: summariseShotDelivery({
|
||||||
|
|||||||
Reference in New Issue
Block a user