Created
March 23, 2011 13:09
-
-
Save thelinuxlich/883065 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# URL do sistema. | |
URL = "http://#{window.location.host}/aplic/cadastro_pdv" | |
# Classe que contém o comportamento geral do sistema. | |
@VM = | |
loading: KO false | |
documentComplete: KO false | |
funcionario: new Funcionario() | |
estados: KO [] | |
cidades: KO [] | |
cache: new IdentityMap() | |
formIsValid: KO false | |
tableData: KO [] | |
tableOptions: | |
"aoColumns": [{"sClass": "hidden"},null,null,null] | |
"aaSorting": [[1,"asc"]] | |
dataTable: KO null | |
tableRowClick: (data) -> | |
Funcionario.show {id: data[0]}, (response) -> | |
VM.funcionario.set response.data | |
# Verifica se a View está em modo de edição(o evento já existe no banco). | |
VM.isEditing = KO -> VM.funcionario.id() isnt "" | |
# Texto para o botão de gravar evento | |
VM.captionSubmit = KO -> if VM.isEditing() then "Atualizar" else "Gravar" | |
# Habilita o botão de cadastro se o evento for válido. | |
VM.habilitaBotaoCadastrar = KO -> !VM.loading() and VM.formIsValid() | |
# Habilita o botão de excluir se o evento estiver em modo de edição | |
VM.habilitaBotaoExcluir = KO -> VM.habilitaBotaoCadastrar() and VM.isEditing() | |
# Carrega os assuntos na inicialização. | |
VM.init = (callback) -> | |
VM.verificaSessao -> | |
Funcionario.index (data) -> | |
VM.tableData(data) | |
Estado.index (data) -> | |
VM.estados Estado.createCollection data | |
VM.funcionario.estado {value: "SP",callback: callback} | |
# Carregar as cidades ao selecionar o estado. | |
VM.funcionario.estado = KO("SP").intercept (value) -> | |
if typeof value is "object" | |
@(value.value) | |
VM.carregaCidades(value.callback) | |
else if typeof value is "string" | |
@(value) | |
VM.carregaCidades() | |
# Carrega cidades, verificando primeiro no IdentityMap se não há um objeto guardado. | |
VM.carregaCidades = (callback) -> | |
Cidade.index {estado: VM.funcionario.estado(),__cache: true},(data) -> | |
VM.cidades Cidade.createCollection data, (item) -> | |
{id: item,nome: item} | |
if VM.funcionario.id() is "" | |
if VM.funcionario.estado() is "SP" | |
VM.funcionario.cidade "MOGI DAS CRUZES" | |
callback() if typeof callback is "function" | |
# Zera o evento e retorna ao estado de criação. | |
VM.voltar = -> | |
VM.funcionario.clear() | |
Funcionario.killAllRequests() | |
# Grava o funcionário no servidor e limpa o objeto caso tenha sucesso. | |
VM.gravarFuncionario = (callback) -> | |
VM.funcionario.create (data) -> | |
if data.status is "SUCCESS" | |
VM.tableData.push [VM.funcionario.id(),VM.funcionario.nome(),VM.funcionario.cpf(),VM.funcionario.status_para_exibicao()] | |
VM.funcionario.clear() | |
alert data.message.unescapeHtml() | |
callback() if typeof callback is "function" | |
# Exclui o funcionário selecionado se não houver inscrições. | |
VM.excluirFuncionario = (callback) -> | |
VM.funcionario.destroy (data) -> | |
if data.status is "SUCCESS" | |
VM.tableData.remove (item) -> item[0] is VM.funcionario.id() | |
VM.funcionario.clear() | |
alert data.message.unescapeHtml() | |
callback() if typeof callback is "function" | |
# Verifica a sessão atual e seta o nível de usuário | |
VM.verificaSessao = (callback) -> | |
RQ.add $.getJSON "#{URL}/get/verifica_sessao.php?foo=#{new Date()}",(data) -> | |
if data.status is "SUCCESS" | |
callback() if typeof callback is "function" | |
else | |
alert data.message.unescapeHtml() | |
window.location.replace "http://intranet.umc.br" | |
$(document).ready -> | |
# Setando uma variável que diz o estado da request na view | |
RQ.beforeAdd = -> VM.loading(true) | |
RQ.afterRemove = -> VM.loading(false) | |
# Inicializar o modelo da view | |
VM.init -> VM.documentComplete true | |
# Iniciar a vinculação automática de variáveis ao DOM | |
ko.applyBindings(VM) | |
$(".ui-dialog-titlebar-close").remove() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment