function split(sum, ...results) {
// делим число на общее количество часов
const part = sum / results.reduce((a, b) => a + b);
// каждые часы умножаем на результат деления и округляем
const result = results.map(hours => Math.round(hours * part));
// финальная сумма с учётом округлений
const resultSum = result.reduce((a, b) => a + b);
// разница между финальной суммой и изначальной
const difference = sum - resultSum;
// если есть разница
if(difference) {
// выбираем рандомно счасливчика\неудачника
// за счёт которого компенсируем разницу
// поменяй если надо выбрать кого-то конкретного :)
const luckyIndex = Math.floor(Math.random() * result.length);
result[luckyIndex] += difference;
}
return result;
}
import { DocumentRenderer } from '@keystone-next/document-renderer';
const renderers = {
inline: {
bold: ({ children }) => {
return <strong>{children}</strong>;
},
},
block: {
paragraph: ({ children, textAlign }) => {
return <p style={{ textAlign }}>{children}</p>;
},
},
};
<DocumentRenderer document={document} renderers={renderers} />;