alvaro-prieto
4/27/2017 - 10:30 AM

API js desde JS Javascript (o desde diapositivas) var_0

Acceder a API desde JS Javascript, asíncrono sincrono asincrono

//llamada a un api desde diapositiva, filtrado y ordenado
{"api":"WebVideos.listadoVideos", "where":"album='felicitaciones50'", "orden":"orden"}

//Si se quiere llamar a una funcion de php tradiciona, para pasar los parametros se usa var_0, var_1...
api( {"api":"WebPreguntasCoie.enviaPreguntas", "var_0":"hola"} ,function(json){ });

$().plugins("emergente", {
    "margen": 0,
    "api": {
        "api": "OdsAmbitos.listaCompletaProyectos",
        "carga_id": idAmbito,
        "parametros":{
            "ods": q.data("idObjetivo")
        } 
    }
})


//Esta sección se irá completando poco a poco

Las llamadas a api, soportan:

* where
* carga_id
* var_parametro (siendo paramentro el nombre del parametro, se le agrega var_)



//ASIDE:
//por regla general en el inicia creamos una variable que apunta al quontrol 
//para poder acceder a los métodos:

"inicia":function()
			{
				var quontrol = this.quontrol;
				//...


//instanciamos un quontrol de tipo totalAplicaciones e insertamos el 
//html retornado en el callback en un div
api( {"api":"SoporteAplicaciones.totalAplicaciones"} ,function(json){ 
  quontrol.find(".panel_activo").html(json.resultado)  
});



//podemos llamar a api pasando un carga_id
api( {"api":"WebDiapositivas.nuevaDiapositiva", 
		"carga_id": quontrol.data("q_carga_id")} ,
		function(json){ 
		  console.log(json);
	});
también puede ser que haya que cruzar relaciones, algo similar a lo que en php sería:

(Suponiendo que $this es instancia de Usuario)

/*
				$s .= $this->PersonalLogrosUsuarios->mostrarLogros([
					"_class" => "logrosConseguidos",
					"mostrarSoloConseguidos" => 1,
					"agruparPorTipo" => 0
				]);
				*/



api( {
    "api": "Usuario.PersonalLogrosUsuarios.mostrarLogros",
    "var_mostrarSoloConseguidos": this.quontrol.find(".cmbConseguidos").accion("valor").id == 1 ? 1 : 0,
    "var_agruparPorTipo": this.quontrol.find(".cmbAgrupacion").accion("valor").id != 1 ? 1 : 0,   
    //La forma nueva permite poner este tipo de parametros dentro de un objeto parametros:{ agruparPorTipo:loquesea, ... }
    "var__class" : "logrosConseguidos",
    "where": "Usuario.id = " + this.quontrol.data("q_carga_id")

} ,function(json){ 
    logros.replaceWith(json.resultado)  
});



Si quisieramos simplemente hacer un carga del ultimo elemento de la cadena, sería con
"carga_id":this.quontrol.data("q_carga_id"),
//llamada sincrona:

 api({"api":"invArticulosTipos.listaSql","var_filtro":filtros,"asincrona":false}).responseJSON.resultado;