Skip to content

Instantly share code, notes, and snippets.

@thelinuxlich
Created March 23, 2011 13:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thelinuxlich/883065 to your computer and use it in GitHub Desktop.
Save thelinuxlich/883065 to your computer and use it in GitHub Desktop.
# 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