Marcar campos não válidos como vermelhos com nocaute / durandal

Eu estou aprendendo nocaute, Durandal e Breeze e graças aoVídeo do JumpStart SPA de John Papa isso é um prazer. Então eu examino o código deste projeto e agora estou tentando mudar o mecanismo de validação.

Neste momento, ao salvar as alterações, se o salvamento falhar, coletamos os erros e exibimos um brinde com um resumo dos erros.

O que eu gostaria de alcançar é:

ter a capacidade de marcar campos não válidos em vermelho (cor de fundo) na exibição

quando um brinde é exibido com o retorno dos erros de validação (algo como: 'Salvar falhou: affairNr é necessário') Eu gostaria de substituir o nome da propriedade por um nome mais amigável (algo como 'Salvar com falha: número de assunto é necessário')

Aqui está o código da parte para a validação no datacontext.js:

var saveChanges = function () {
    return manager.saveChanges()
        .then(saveSucceeded)
        .fail(saveFailed);

    function saveSucceeded(saveResult) {
        log('Saved data successfully', saveResult, true);
    }

    function saveFailed(error) {
        var msg = 'Save failed: ' + getErrorMessages(error);
        logError(msg, error);
        error.message = msg;
        throw error;
    }
};

function getErrorMessages(error) {
    var msg = error.message;
    if (msg.match(/validation error/i)) {
        return getValidationMessages(error);
    }
    return msg;
}

function getValidationMessages(error) {
    try {
        //foreach entity with a validation error
        return error.entitiesWithErrors.map(function (entity) {
            // get each validation error
            return entity.entityAspect.getValidationErrors().map(function (valError) {
                // return the error message from the validation
                return valError.errorMessage;
            }).join('; <br/>');
        }).join('; <br/>');
    }
    catch (e) { }
    return 'validation error';
}

Alguém pode me apontar na direção certa?

Desde já, obrigado.

EDITAR:

Para reproduzir o problema: clique na barra lateral esquerda em Transports + recherche avancee + qualquer item na lista + no lado direito: limpe algumas entradas (como o Numero d'affaire como imagem abaixo) e clique em 'Enregistrer'. Então o botão salvar é chamado. Lá eu preciso verificar se há entradas inválidas com ko.validation.group, mas não funciona.

questionAnswers(1)

yourAnswerToTheQuestion