/*
    Предрейсовые осмотры - мобильное приложение
    Разрешение цели для данных встроенного сканера
*/

//-----------
//Тело модуля
//-----------

//Определяет поле ввода для подстановки: сфокусированное (если в списке доступных), иначе первое доступное
function resolveScanTarget(focusedFieldId, allowedFieldIds) {
    if (!allowedFieldIds || !Array.isArray(allowedFieldIds) || allowedFieldIds.length === 0) {
        return null;
    }
    if (focusedFieldId != null && allowedFieldIds.indexOf(focusedFieldId) >= 0) {
        return focusedFieldId;
    }
    return allowedFieldIds[0];
}

//Возвращает идентификатор следующего поля в порядке списка после текущего, либо null
function getNextInOrder(currentFieldId, allowedFieldIds) {
    if (!allowedFieldIds || !Array.isArray(allowedFieldIds) || allowedFieldIds.length === 0) {
        return null;
    }
    const idx = allowedFieldIds.indexOf(currentFieldId);
    if (idx < 0) return null;
    const nextIdx = idx + 1;
    return nextIdx < allowedFieldIds.length ? allowedFieldIds[nextIdx] : null;
}

//----------------
//Интерфейс модуля
//----------------

module.exports = {
    resolveScanTarget,
    getNextInOrder
};
