in main/src/image-management/image-management.ts [581:641]
async function validatePlate(plateId: any) {
const plateImageStatus = await getPlateImageStatus(plateId);
let plateStatus = SR_UNDEFINED;
if (plateImageStatus[SR_ERROR] > 0) {
plateStatus = SR_ERROR;
} else if (plateImageStatus[SR_UNDEFINED] > 0) {
plateStatus = SR_UNDEFINED;
} else if (plateImageStatus[SR_PREVALIDATION] > 0) {
plateStatus = SR_PREVALIDATION;
} else if (plateImageStatus[SR_VALIDATED] > 0) {
plateStatus = SR_VALIDATED;
} else if (plateImageStatus[SR_READY] > 0) {
// NOTE: a plate may participate in multiple embeddings, therefore it can only reach
// 'VALIDATED' and never 'READY'
plateStatus = SR_VALIDATED;
}
let height = 0;
let width = 0;
let depth = 0;
let channels = 0;
if (plateStatus == SR_VALIDATED || plateStatus == SR_READY) {
const images = await getImagesByPlateId(plateId);
let count = 0;
for (let item of images) {
const image = item["Item"];
if (count == 0) {
height = image[HEIGHT_ATTRIBUTE];
width = image[WIDTH_ATTRIBUTE];
depth = image[DEPTH_ATTRIBUTE];
channels = image[CHANNELS_ATTRIBUTE];
} else {
if (
!(
height == image[HEIGHT_ATTRIBUTE] &&
width == image[WIDTH_ATTRIBUTE] &&
depth == image[DEPTH_ATTRIBUTE] &&
channels == image[CHANNELS_ATTRIBUTE]
)
) {
break;
}
}
count += 1;
}
if (
count == images.length &&
height > 0 &&
width > 0 &&
depth > 0 &&
channels > 0
) {
plateStatus = SR_VALIDATED;
}
}
await updatePlateStatus(plateId, plateStatus, width, height, depth, channels);
return plateStatus;
}