Módulos del SDK
Los siguientes módulos te permitirán interactuar con los distintos componentes del SDK.
Módulo General Data
Provee funciones que brindan información general del usuario y sobre los campos y lotes visibles en la interfaz.
getUserData()
Provee información general sobre el usuario.
Parámetros
No requiere parámetros.
Retorna
Un objeto con toda la información del usuario logueado:
- id: string
- tipo_usuario: string
- datos: object
- nombre: string
- apellido: string
- email: string
- locale: string
- admin: boolean
- supervisor: boolean
getFarms()
Provee información general sobre los campos y lotes del usuario.
Parámetros
No requiere parámetros.
Retorna
Arreglo de objetos con la información de cada uno de los campos a los que tiene acceso el usuario:
- id: String
- nombre: String
- bounds: Array [ xmin, ymin, xmax, ymax ]
- permisos: Number[]
- role: Number
- supervised: Object[]
- lotes: Object[]
- id: number
- nombre: String
- country: String
- wkt: String
- bounds: Array [ xmin, ymin, xmax, ymax ]
- centroide: string
- area: Number
- permisos: Number[]
- role: Number
getFarmById()
Provee información sobre un campo específico.
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
farmID | number | id del campo del cual se requiere información |
Retorna
Objeto con la información del campo solicitado:
- id: number
- bounds: Array [ xmin, ymin, xmax, ymax ]
- nombre: string
- lotes: Array [object,...]
- id: number
- bounds: Array [ xmin, ymin, xmax, ymax ]
- centroide: string
- area: number
- nombre: string
- wkt: string
getFieldById()
Provee información sobre un lote específico.
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
fieldID | number | id del lote del cual se requiere información |
Retorna
Objeto con la información del lote solicitado:
- id: number
- bounds: Array [ xmin, ymin, xmax, ymax ]
- centroide: string
- area: number
- nombre: string
- wkt: string
getSpacesData()
Provee información sobre el espacio, en caso de existir, del usuario logueado.
Parámetros
No requiere parámetros.
Retorna
Objeto con la información del lote solicitado:
- id: number
- logo: string
- thumbnail: string
- color: string
- nombre: string
getGlobalUnits()
Provee las unidades del usuario logeado.
Parámetros
No requiere parámetros.
Retorna
Arreglo con objetos que contienen la información de cada unidad. Tal que cada objeto contiene:
- group: string (A que clase de unidades pertenece)
- description: string (Descripción extendida de la unidad)
- unit: string (Unidad)
async_refreshFarmsData()
Refresca la información sobre los campos que posee el usuario.
Parámetros
No requiere parámetros.
Retorna
Una promesa con la información de los campos del usuario:
- result: String ('success'|'error')
- info: Object[]
- id: String
- nombre: String
- bounds: Array [ xmin, ymin, xmax, ymax ]
- permisos: Number[]
- role: Number
- supervised: Object[]
- lotes: Object[]
- id: number
- nombre: String
- country: String
- wkt: String
- bounds: Array [ xmin, ymin, xmax, ymax ]
- centroide: string
- area: Number
- permisos: Number[]
- role: Number
async_getComponentsData()
Brinda información sobre la interfaz que el usuario está visualizando en la plataforma. En específico: ancho y alto del mapa y del menú lateral. De este último, además nos indica si el mismo se encuentra abierto o cerrado.
Parámetros
No requiere parámetros.
Retorna
Una promesa con la información mencionada:
- result: string ('success'|'error')
- info: Objeto
- map: Object
- width: number
- height: number
- sidenav: Object
- width: number
- height: number
- map: Object
async_getScreenData()
Brinda información sobre la interfaz del mapa que el usuario está visualizando en la plataforma, alto y ancho del mismo.
Parámetros
No requiere parámetros.
Retorna
Una promesa con la información mencionada:
- result: string ('success'|'error')
- info: objeto
- width: number
- height: number
async_getSamplings()
Brinda los muestreos correspondientes a los lotes que se envien como argumento.
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
fieldsId | number[] | Ids de los lotes cuyos muestreos se deseen obtener |
Retorna
Una promesa con los muestreos de los lotes correspondientes agrupados por lote.
Operación exitosa:
- result: string;
- info: {[key: string]: Sampling[]};
Cada tipo sampling cumple con la interfaz:
interface Sampling {
groups: {
samples?: {
code?: string;
spot_data?: {
code?: string;
spot_data?: {
variables?: {
name?: string;
value?: number;
unit_id?: number;
[key: string]: any;
}[];
sampling?: {
analysis?: string;
[key: string]: any;
};
};
spot_uuid?: string;
};
spot_uuid?: string;
}[];
group_data?: {
[key: string]: {
color?: string;
name?: string;
};
};
group_uuid?: string;
}[];
yeargroup: number;
created_at: string;
field_id: number;
zoning: {
info?: {
date?: string;
layer?: string;
operation?: string;
hour?: string;
provider?: string;
};
type?: string;
};
analysis: {
[key: string]: {
name?: string;
unit_id?: number;
}[];
};
field_uuid: string;
sampling_name: string;
points: {
geometry?: string;
point_uuid?: string;
checked?: number;
created_at?: string;
group_uuid?: string;
}[];
group_assigned_id: number;
sampling_uuid: string;
closed_at: any;
sample_set_uuid: string;
}
async_createField
:Atención: No disponible en mobile todavía
Crea un lote según el objeto de configuración enviado.
Parámetros
Recibe un objeto de configuración con las siguientes propiedades:
- fieldName:
string
. Nombre del nuevo lote. - polygon:
string
. WKT del neuvo lote - farmId::
number
. (Opcional) id del campo al que pertenece el nuevo lote. - farmName:
string
. (Opcional) nombre del nuevo campo al que pertenece el lote, en caso de crear un campo nuevo.
Nota: Al menos uno de las propiedades 'farmId' o 'farmName' debe ser enviado.
Retorna
En caso de ser una operación existosa:
- result:
success
- info:
- res:
string
. Resultado de la operación. - fieldId:
number
. Id del lote creado. - farmId:
farmId
. Id del campo al cual se agregó el lote (Útil en caso de haber creado un campo). - info:
string
. Descripción del resultado de la operación.
- res:
En caso de ser una operación no exitosa:
- result:
error
- info
- res:
string
. Resultado de la operación. - code:
number
. Código del error. - info:
string
. Descripción del resultado de la operación.
- res:
Módulo State
Provee funciones que brindan información, o permiten modificar el estado de la interfaz.
async_getActualFarm()
Retorna los datos del campo seleccionado actualmente en la interfaz.
Parámetros
No requiere parámetros.
Retorna
Una promesa con el objeto campo en su información.
- result: string ('success'|'error')
- info: objeto
- id: number
- bounds: Array [ xmin, ymin, xmax, ymax ]
- nombre: string
- lotes: Array [object,...]
- id: number
- bounds: Array [ xmin, ymin, xmax, ymax ]
- centroide: string
- area: number
- nombre: string
- wkt: string
async_getActualField()
Retorna los datos del lote seleccionado actualmente en la interfaz.
Parámetros
No requiere parámetros.
Retorna
Una promesa con el objeto lote en su información.
- result: string ('success'|'error')
- info: objeto
- id: number
- bounds: Array [ xmin, ymin, xmax, ymax ]
- centroide: string
- area: number
- nombre: string
- wkt: string
async_getCurrentCampaign()
Retorna los datos de la campaña actual.
Parámetros
No requiere parámetros.
Retorna
Una promesa con la información de la campaña actual en un objeto.
- result: string ('success'|'error')
- info: objeto
- text: string
- value: number
setFarm()
Selecciona un campo en la interfaz principal.
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
farmID | number | id del campo a seleccionar |
Retorna
No retorna ningún valor.
setField()
Selecciona un lote en la interfaz principal.
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
fieldID | number | id del lote a seleccionar |
Retorna
No retorna ningún valor.
closeApp()
Cierra la ventana de la Extensión.
Parámetros
No requiere parámetros.
Retorna
No retorna ningún valor.
openFeature()
Abre una función estándard de la plataforma. Al llamar a esta función se cerrará la Extensión que se esté ejecutando!!.
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
featureCode | number | id de la función a abrir |
Los códigos pueden ser los siguientes:
Feature Code | Feature |
---|---|
100 | Nuevo Lote |
200 | Registro de Campo |
300 | Zonas de gestión |
400 | Clima |
500 | Histograma |
600 | Ambientación |
700 | Reporte |
800 | Mis Mapas |
900 | Nueva Capa |
Retorna
No retorna ningún valor.
async_getConnectivityStatus
Indica si la plataforma tiene conectividad o no.
Parámetros
No requiere parámetros.
Retorna
Una promesa con el estado de conexión en su información. Puede ser "ONLINE" o "OFFLINE".
- result: "success",
- info: "ONLINE"
Módulo Map
Provee funciones que brindan información, o permiten operar sobre el mapa de la interfaz.
async_selectImage_v2()
⚠️ No disponible en mobile
Selecciona una imagen dentro de las capas existentes en la interfaz.
Parámetros
Objeto JSON conteniendo los siguiente datos:
{
"field": number // id del lote,
"source": string // string con la fuente de la imagen,
"operation": string // string con el id del tipo de capa/imagen
"date": string, con formato "YYYY-MM-DDTHH:mm:ssZ" // fecha exacta de la imagen,
"forCompare": boolean // (opcional) si se setea en true se habilita el visor comparativo
}
Retorna
Retorna una promesa con la información sobre la selección de la imagen.
focusField()
Mueve la cámara del mapa sobre el lote seleccionado actualmente.
Parámetros
No requiere parámetros.
Retorna
...
focusBounds()
Mueve la cámara del mapa sobre el bounds pasado como parámetro.
Parámetros
Objeto JSON conteniendo los siguientes datos:
{
"xmin": number, // latitud mínima de la extensión
"xmax": number, // latitud máxima de la extensión
"ymin":number, // longitud mínima de la extensión
"ymax":number, // longitud máxima de la extensión
}
Retorna
...
setViewMap()
Mueve la cámara del mapa sobre un punto específico pasado como parámetro.
Parámetros
Objeto JSON conteniendo los siguientes datos:
{
"point": Array, // las primeras dos posiciones indican la posición del punto. Deben ser de tipo number.
"x": number, // offset en x.
"y": number, // offset en y.
}
En caso que "x" e "y" no estén definidos o sean igual a cero, cada uno toma el valor 0.5 por defecto.
⚠️ Es posible que la función retorne un error (error 25) en caso de que la vista seleccionada esté por fuera del mapa. Por ejemplo: cuando las coordenadas del punto a mostrar se acercan a los límites del mapa siendo poco el zoom actual, por lo que requiere mostrar parte inexistente del mismo.
Retorna
...
async_drawFeature()
Dibuja sobre el mapa una serie de features vectoriales (en formato geojson).
Parámetros
Objeto GeoJSON.
Retorna
Promesa con el resultado del dibujo realizado sobre el mapa y su ID.
Ejemplo de uso
avt.map
.async_drawFeature({
type: "Feature",
geometry: {
type: "Point",
coordinates: [125.6, 10.1],
},
properties: {
name: "Dinagat Islands",
},
})
.then(console.log("mapa dibujado correctamente"));
clearFeatures()
Borra todos los features dibujados previamente en el mapa.
Parámetros
No se requieren parámetros.
Ejemplo de uso
// Dibuja un feature
avt.map
.async_drawFeature({
type: "Feature",
geometry: {
type: "Point",
coordinates: [125.6, 10.1],
},
properties: {
name: "Dinagat Islands",
},
})
.then(() => {
console.log("mapa dibujado correctamente");
avt.map.clearFeatures(); // Borra el feature inmediatamente
};
async_startDraw()
Permite al usuario dibujar un polígono o punto en el mapa.
Parámetros
mode
:string
que toma los valores "Polygon" o "Point".
Retorna
Promesa con el resultado del dibujo realizado sobre el mapa en su información.
- type: tipo de objeto
- id: entero que identifica la figura realizada
- geometry : objecto GeoJSON
- type: tipo de figura realizada
- coordinates: array de coordenadas
- properties: objeto de propiedades
- distancias: array de distancias de los lados (en caso de ser un polígono)
Ejemplo de uso
avt.map
.async_startDraw({
mode: "Polygon",
})
.then((res) => console.log(res));
async_setStyle()
Permite al usuario asignar un estilo personalizado a un polígono o punto dibujado con async_startDraw.
Parámetros
- featureID: id del polígono o punto, obtenido de la respuesta de async_startDraw.
- style: objeto con dos keys de estilos.
- fill: estilo del relleno del polígono/punto.
- stroke: estilo del contorno del polígono/punto.
Ejemplo de uso
avt.map.async_setStyle({
featureID: "69FdCe0a-Cf52-1C5B-a80f-d09AE9bd3dDE",
style: {
fill: { color: "red" },
stroke: { color: "#4986d2" },
},
});
stopDraw()
Se llama cuando la función async_startDraw Fue llamada previamente. Cancela el dibujo.
Parámetros
No requiere parámetros.
Ejemplo de uso
avt.map
.async_startDraw({
mode: "Polygon",
})
.then((res) => console.log(res));
// Comienza a dibujar el usuario
// Luego de 3 segundos se cancela el dibujo
setTimeout(() => {
avt.map.stopDraw();
}, 3000);
async_drawFeatureFromWKT()
Permite dibujar una nueva figura en el mapa partiendo de un polígono expresado como WKT.
Parámetros
Recibe un string
correspondiente a la figura expresada como WKT.
Retorna
Promesa con el UUID de la figura realizada sobre el mapa en su información.
info
:string
, UUID
Ejemplo de uso
let wkt_polygon = "POLYGON(( -65 -33, -65.7 -33, -65.7 -33.5, -65 -33 ))";
avt.map.async_drawFeatureFromWKT(wkt_polygon).then((res) => console.log(res));
// console:
// {
// "result": "success",
// "info": "dB3E5fF8-cead-13fc-a905-ECF0211bc2A8"
// }
addTooltipToFeature()
Permite agregar un tooltip a una figura previamente dibujada sobre el mapa (por ejemplo, usando async_drawFeatureFromWKT().
Parámetros
Recibe un objeto con las siguientes propiedades:
featureID
:string
, UUID de la figura dibujadacontent
:string
, contenido del tooltip (puede contener html)
Ejemplo de uso
let texto = "Acá aparece el texto del tooltip";
avt.map.addTooltipToFeature({
featureID: "dB64B880-d4c1-1B8C-A0e9-DcFB4E6FA5e3",
content: `
<div style="background:white;color:black;border-radius:5px;width:100%;padding:5px;">
${texto}
</div>`,
});
async_getMapExtent()
Devuelve el bounding box de la porción de mapa que se está visualizando.
Parámetros
No requiere parámetros.
Retorna
Promesa con el array de coordenadas del bbox en su información.
Ejemplo de uso
avt.map.async_getMapExtent().then((res) => console.log(res));
// console:
// {
// "result": "success",
// "info": [
// minLongitude,
// minLatitude,
// maxLongitude,
// maxLatitude
// ]
// }
async_removeFeature()
Elimina un feature existente.
Parámetros
string
: UUID del feature que será eliminado.
Retorna
Promesa que indica si la eliminación fue exitosa.
Ejemplo de uso
avt.map
.async_removeFeature("Dac7eD0c-8B1d-1e1b-B4B4-FEEfBab8Af6B")
.then((res) => console.log(res));
// console:
// {
// "result": "success",
// }
async_getActualPosition()
Devuelve las coordenadas de tu ubicación actual.
Parámetros
No requiere parámetros.
Retorna
Promesa con un array de coordenadas en su información.
Ejemplo de uso
avt.map.async_getActualPosition().then((res) => console.log(res));
// console:
// {
// "result": "success",
// "info": [
// <lat>,
// <long>
// ]
// }
hideFeatures()
Oculta todos los features dibujados.
Parámetros
No requiere parámetros.
Retorna
No retorna ningún valor.
Ejemplo de uso
avt.map.hideFeatures();
showFeatures()
Muestra todos los features previamente definidos. Si ya se encuentran dibujados en el mapa, no hace nada.
Parámetros
No requiere parámetros.
Retorna
No retorna ningún valor.
Ejemplo de uso
avt.map.showFeatures();
async_drawMarker()
Dibuja un icono en una posición determinada del mapa.
Parámetros
Un objeto con los siguientes parámetros:
point
:Array
, contiene dos elementos correspondientes a latitud y longitudicon
:string
, nombre del icono a mostrarb64
:string
, ícono en formato base 64, en caso de incluir este parámetro, se ignorará el deicon
.
Iconos disponibles:
- 'FARMER'
- 'PIN'
Retorna
Promesa con el id
del icono en su información.
Ejemplo de uso
avt.map
.async_drawMarker({
point: [-32, -62],
icon: "FARMER",
})
.then((res) => console.log(res));
avt.map
.async_drawMarker({
point: [-32, -62],
b64: "data:image/png;base64,iVBORw0...",
})
.then((res) => console.log(res));
// console:
// {
// "result": "success",
// "info": {
// "id": "Dcfd87b7-CED3-1620-A78e-a0E8cEf55239"
// }
// }
async_drawMarkerWithTooltip()
Dibuja un icono en una posición determinada del mapa con un tooltip.
Parámetros
Un objeto con los siguientes parámetros:
point
:Array
, contiene dos elementos correspondientes a latitud y longitudicon
:String
, nombre del icono a mostrarcontent
:String
, texto HTML que se renderiza dentro del tooltipbackgroundColor
:String
, código hexadecimal del color que tendrá de fondo el tooltipmetadata
:Any
b64
:string
, ícono en formato base 64, en caso de incluir este parámetro, se ignorará el deicon
.
Iconos disponibles:
- 'FARMER'
- 'PIN'
Retorna
Promesa con el id
del icono en su información.
Ejemplo de uso
avt.map
.async_drawMarkerWithTooltip({
point: [-34, -62],
content: "<div style='color: #fff;'>Tooltip</div>",
metadata: "id del icono o descripcion, etc.",
backgroundColor: "#ffffff",
icon: "FARMER",
})
.then((res) => console.log(res));
// console:
// {
// "result": "success",
// "info": {
// "id": "Ba8C6edb-BFc9-1fD9-BFDA-30EAFDCe75a9"
// }
// }
async_drawMarkersWithTooltip()
Dibuja varios iconos a la vez en el mapa con un tooltip.
Parámetros
Toma un array de objetos, cada cual correspondiente a un icono.
Cada objeto tiene los siguientes parámetros:
point
:Array
, contiene dos elementos correspondientes a latitud y longitudicon
:String
, nombre del icono a mostrarcontent
:String
, texto HTML que se renderiza dentro del tooltipbackgroundColor
:String
, código hexadecimal del color que tendrá de fondo el tooltipmetadata
:Any
b64
:string
, ícono en formato base 64, en caso de incluir este parámetro, se ignorará el deicon
.
Iconos disponibles:
- 'FARMER'
- 'PIN'
Retorna
Promesa con un array de IDs bajo el campo ids
. El array se encuentra ordenado cómo se ordenaron los iconos en el array que se envía como parámetro.
Ejemplo de uso
avt.map
.async_drawMarkersWithTooltip([
{
point: [-34, -62.5],
icon: "FARMER",
},
{
point: [-33.5, -62.5],
icon: "PIN",
},
{
point: [-33, -62.5],
icon: "FARMER",
},
])
.then((res) => console.log(res));
// console:
// {
// "result": "success",
// "info": {
// "ids": [
// "7d7e6DE5-d1dC-142F-B29B-2FF41ebedade",
// "f09B8970-feA5-102A-bcF8-b4aBFAadD0F6",
// "40A9A52C-Bba7-1905-86D0-CC78a9b29656"
// ]
// }
// }
Módulo Storage
Provee funciones que permiten almacenar información en nuestros servidores para luego recuperarla cuando sea necesario.
La información se almacena en formato Key-Value, es decir, un objeto JSON (Value) bajo un nombre (Key).
Además, cada Key-Value se asocia a un alcance: Usuarios, Lotes o Campos. Este alcance define quién puede acceder a los datos. Por ejemplo, si se crea un Key-Value asociado a un Lote, todos los usuarios que tengan acceso de lectura sobre dicho lote podrán recuperar ese dato, independientemente del usuario que lo almacenó.
Es importante pensar correctamente el alcance que se le va asignar al Key-Value para no exponer datos.
Sobre el alcance de un Usuario, los Key-Values pueden ser:
- creados/recuperados por el usuario en cuestión.
- creados/recuperados por el administrador del espacio al que el usuario pertenece (en caso de pertenecer a un espacio).
- recuperados por el supervisor con permiso de lectura del grupo al que el usuario pertenece (en caso de pertenecer a un grupo de supervisión).
- creados/recuperados por el supervisor con permiso de edición del grupo al que el usuario pertenece (en caso de pertenecer a un grupo de supervisión).
- eliminados por el mismo usuario o su supervisor o administrador (en caso de formar parte de un espacio)
Sobre el alcance de un Lote, los Key-Values pueden ser:
- creados/recuperados por los usuarios dueños o con permiso de edición/agregado/administración sobre el Lote.
- recuperados por los usuarios con permiso de lectura sobre el Lote.
- eliminados por los usuarios con permiso de administración sobre el lote.
Sobre el alcance de un Campo, los Key-Values pueden ser:
- creados/recuperados por los usuarios dueños o con permiso de edición/agregado/administración sobre el Campo.
- recuperados por los usuarios dueños o con algún permiso sobre el Campo.
- eliminados por los usuarios con permiso de administración sobre el campo.
Los nombres de los objetos pueden ser combinaciones de letras a-Z, números o guión bajo (_). Debe verificar el regex "\w+"
Para un mismo alcance, no se puede repetir el nombre del objeto.
put()
Permite almacenar un objeto bajo un nombre (Key). Según el alcance:
- avt.storage.user.put()
- avt.storage.field.put()
- avt.storage.farm.put()
NOTA: En la aplicación móvil, las operaciones PUT y PATCH se encolan por un manejador (handler) para que, en caso de estar offline, se guarden y puedan realizarse al reestablecerse la conexión. Este manejador recibe las operaciones tanto si se encuentra offline como si se encuentra online. La respuesta a la promesa que genera una llamada a tales operaciones corresponde a si el manejador pudo encolar la llamada exitosamente o no. Esto genera que, en el caso de la app para dispositivos móviles, la respuesta a PUT y a PATCH no disponga información acerca de si la operación fue llevada a cabo exitosamente por el handler, sino que contiene información acerca de si fue aceptada por el mismo. Para ver esta cola de tareas, se debe pulsar sobre la imagen del usuario e ingresar al apartado "Sincronizar".
Parámetros:
Recibe un solo parámetro de tipo objeto que cuenta con las siguientes propiedades:
- id: ID del recurso (Usuario, Lote o Campo) según el alcance
- key: Key del objeto a almacenar
- value: objeto a almacenar
- overwrite: (opcional) bool indicando si se debe sobreescribir el objeto en caso de ya existir. De no especificarse, por defecto toma el valor false.
Respuesta:
Promesa con el objeto JSON de respuesta bajo la llave "info". Este objeto tiene la propiedad "code" que indica el resultado de la operación:
code | descripción |
---|---|
1 | faltan datos |
2 | la Key es inválida, al no respetar regex '^\w+$' |
3 | el usuario no tiene permisos sobre el recurso según el alcance solicitado |
4 | versión de Extensión inválida |
5 | la Key ya existe para el alcance dado. (Solo posible si overwrite es false) |
6 | Error |
En caso que "code" < 0, revisar los códigos de respuesta generales.
Ejemplo de uso:
avt.storage.user
.put({
id: "UID-dbaefe8503fe6cdb7909611e8953e74f",
key: "test_key",
value: { name: "juan", lastname: "perez" },
overwrite: true,
})
.then((response) => console.log(response));
avt.storage.field
.put({
id: 1000,
key: "other_test_key",
value: { fieldInfo: { valid: false } },
})
.then((response) => console.log(response));
patch()
Permite modificar un objeto bajo un nombre (Key) ya existente. Según el alcance:
- avt.storage.user.patch()
- avt.storage.field.patch()
- avt.storage.farm.patch()
NOTA: En la aplicación móvil, las operaciones PUT y PATCH se encolan por un manejador (handler) para que, en caso de estar offline, se guarden y puedan realizarse al reestablecerse la conexión. Este manejador recibe las operaciones tanto si se encuentra offline como si se encuentra online. La respuesta a la promesa que genera una llamada a tales operaciones corresponde a si el manejador pudo encolar la llamada exitosamente o no. Esto genera que, en el caso de la app para dispositivos móviles, la respuesta a PUT y a PATCH no disponga información acerca de si la operación fue llevada a cabo exitosamente por el handler, sino que contiene información acerca de si fue aceptada por el mismo. Para ver esta cola de tareas, se debe pulsar sobre la imagen del usuario e ingresar al apartado "Sincronizar".
Parámetros:
Recibe un solo parámetro de tipo objeto que cuenta con las siguientes propiedades:
- id: ID del recurso (Usuario, Lote o Campo) según el alcance
- key: Key del objeto a modificar
- value: objeto nuevo
- append:
false por defecto
, booleano que, en caso de ser true, indica que el value debe agregarse al valor existente bajo la misma key. En caso de ser false, indica que el value debe reemplazar el valor previo bajo la misma key. - create:
false por defecto
, booleano que indica si debe o no crearse la key, en caso de no existir previamente.
Respuesta:
Promesa con el objeto JSON de respuesta bajo la llave "info". Este objeto tiene la propiedad "code" que indica el resultado de la operación:
code | descripción |
---|---|
0 | objeto modificado exitosamente |
1 | faltan datos |
2 | la Key es inválida, al no respetar regex '^\w+$' |
3 | el usuario no tiene permisos sobre el recurso según el alcance solicitado |
4 | versión de Extensión inválida |
5 | la Key ya existe para el alcance dado |
6 | Error |
En caso que "code" < 0, revisar los códigos de respuesta generales.
Ejemplo de uso:
avt.storage.user
.patch({
id: "UID-dbaefe8503fe6cdb7909611e8953e74f",
key: "test_key",
value: {
name: "juan",
lastname: "perez",
otherAttribute: 50,
},
append: true,
create: false,
})
.then((response) => console.log(response));
avt.storage.field
.patch({
id: 1000,
key: "other_test_key",
value: { fieldInfo: { valid: true } },
append: true,
create: false,
})
.then((response) => console.log(response));
get()
Permite recuperar los objetos bajo uno o varios nombres (Keys). Según el alcance:
- avt.storage.user.get()
- avt.storage.field.get()
- avt.storage.farm.get()
Es posible obtener múltiples Keys para múltiples IDs en una única llamada.
Parámetros:
Recibe un solo parámetro de tipo objeto que cuenta con las siguientes propiedades:
- ids: array de IDs de los recursos (Usuario, Lote o Campo) según el alcance.
- keys: array de las Keys a recuperar.
Se recuperará cada Key del array keys para cada ID del array ids, si es que existen. Además, en caso de enviar en ids un array vacío para el alcance Lotes o Campos, se buscarán las keys indicadas para todos los Lotes/Campos sobre los que el usuario tenga permiso de lectura.
Respuesta:
Promesa con el objeto JSON de respuesta bajo la llave "info". Este objeto tiene la propiedad "code" que indica el resultado de la operación, y la propiedad "objects" con los datos:
code | descripción |
---|---|
0 | objeto recuperado exitosamente |
1 | faltan datos |
2 | al menos una Key solicitada es inválida, al no respetar regex '\w+' |
3 | el usuario no tiene permisos sobre al menos un recurso según el alcance solicitado |
4 | versión de Extensión inválida |
5 | al menos un ID solicitado es inválido |
En caso que "code" < 0, revisar los códigos de respuesta generales.
Ejemplo de respuesta:
avt.storage.field.get(
{
ids:[1000, 1050],
keys:['test_key', 'other_test_key', 'another_test_key']
}
).then( response => console.log( response['info'] ) )
//output:
{
"code": 0,
"objects": {
1000: {
"test_key": {...},
"other_test_key": {...}
}
},
1050: {
"another_test_key": {...}
"other_test_key": {...}
}
}
Ejemplo de uso:
avt.storage.user
.get({
ids: ["UID-dbaefe8503fe6cdb7909611e8953e74f"],
keys: ["test_key"],
})
.then((response) => console.log(response));
avt.storage.field
.get({
ids: [1000, 1050],
keys: ["test_key", "other_test_key", "another_test_key"],
})
.then((response) => console.log(response));
delete()
Permite eliminar uno o múltiples objetos bajo nombres (Keys) ya existentes. Según el alcance:
- avt.storage.user.delete()
- avt.storage.field.delete()
- avt.storage.farm.delete()
Parámetros:
Recibe un solo parámetro de tipo objeto que cuenta con las siguientes propiedades:
- id: ID del recurso (Usuario, Lote o Campo) según el alcance
- keys: array con las Keys a eliminar.
Para el id provisto, se eliminarán todos las keys que existan.
Respuesta:
Promesa con el objeto JSON de respuesta bajo la llave "info". Este objeto tiene la propiedad "code" que indica el resultado de la operación:
code | descripción |
---|---|
0 | objeto modificado exitosamente |
1 | la Key no fue provista |
2 | la Key es inválida, al no respetar regex '^\w+$' |
3 | el usuario no tiene permisos sobre el recurso según el alcance solicitado |
4 | versión de Extensión inválida |
6 | Error |
En caso que "code" < 0, revisar los códigos de respuesta generales.
Ejemplo de uso:
avt.storage.user
.delete({
id: "UID-dbaefe8503fe6cdb7909611e8953e74f",
key: ["test_key"],
})
.then((response) => console.log(response));
avt.storage.field
.delete({
id: 1000,
keys: ["other_test_key", "unexisting_key"],
})
.then((response) => console.log(response));
Módulo Interface
Provee herramientas que permiten interactuar con la interfaz de la plataforma.
testMessage()
Permite mostrar un mensaje en la consola del navegador. Es útil para verificar que estemos bien conectados con las funciones del sdk.
- avt.interface.testMessage()
Parámetros:
string
texto para mostrar en consola
Ejemplo de uso:
avt.interface.testMessage("Mensaje de prueba");
async_toast()
Permite mostrar una alerta en el navegador, para informar al usuario sobre algún evento.
- avt.interface.async_toast()
Parámetros:
- type: (string) tipo de alerta que se quiere enviar. //warning, info, success, error
- message: (string) mensaje de la alerta
- options: (object) objeto con configuración opcional para personalizar la alerta
- timeOut: (integer) duración de la alerta (expresada en milisegundos)
- closeButton: (boolean) mostrar botón para cerrar la alerta
- newestOnTop: (boolean) ubicar la alerta más reciente al principio de la lista
Ejemplo de uso:
avt.interface.async_toast({
type: "warning",
message: "Se eliminó el lote.",
});
avt.interface.async_toast({
type: "success",
message: "Información guardada correctamente.",
});
avt.interface.async_toast({
type: "error",
message: "Algo salió mal.",
options: {
timeOut: 5000,
closeButton: true,
newestOnTop: true,
},
});
download_file()
Permite al usuario decargar un archivo, tanto desde la aplicación web como desde mobile.
- avt.interface.download_file()
Parámetros:
- url: (string) url del archivo que se quiere descargar
- filename: (opcional) nombre del archivo
Ejemplo de uso:
avt.interface.download_file(URL, "Descarga");
setWindow()
Permite editar estilos básicos de la ventana que contiene a la extensión.
Ejemplo de uso:
avt.interface.setWindow({
width: "600px",
});
//modificamos el tamaño de la extensión.
openWindow()
Permite abrir una nueva pestaña en el navegador, teniendo la url como parámetro.
Ejemplo de uso:
avt.interface.openWindow("https://google.com");
openPopupWindow()
Permite abrir una nueva ventana, como Pop-up en el navegador, teniendo la url como parámetro.
Ejemplo de uso:
avt.interface.openPopupWindow("https://google.com");
minimizeWindow()
Permite minimizar la extensión, sin la necesidad de cerrarla.
Ejemplo de uso:
avt.interface.minimizeWindow();
maximizeWindow()
Permite maximizar la extensión previamente minimizada.
Ejemplo de uso:
avt.interface.maximizeWindow();
collapseSidenav()
Colapsa la barra de navegación lateral de la plataforma.
Ejemplo de uso:
avt.interface.collapseSidenav();
expandSidenav()
Expande la barra de navegación lateral de la plataforma si se encuentra colapsada.
Ejemplo de uso:
avt.interface.expandSidenav();
startCompare()
Habilita la comparación entre dos capas del mismo lote, seleccionadas por el usuario.
Ejemplo de uso:
avt.interface.startCompare();
finishCompare()
Deshabilita la comparación entre dos capas del mismo lote.
Ejemplo de uso:
avt.interface.finishCompare();
async_getLayerTypes()
Retorna un arreglo con las capas disponibles para el lote seleccionado. No recibe parámetros. Es necesario tener un lote seleccionado.
Ejemplo de uso:
avt.interface.async_getLayerTypes().then((res) => {
console.log(res);
});
Ejemplo de respuesta
{
"result": "success",
"info": [
"NDVI",
"GNDVI",
"Visible",
"MSAVI2",
"NDRE",
"NDWI"
]
}
Eventos
Además de las funciones, existen algunos eventos predefinidos que puedes escuchar para interactuar con la plataforma.
readySDK
Se activa cuando el SDK termina de cargar. Puede ser útil para esperar a que este evento se active antes de cargar el resto de la aplicación. De esta forma las funciones que se utilicen del SDK estarán disponibles.
mapClicked
Se activa cuando el usuario hace click en el mapa.
Retorna
- event.detail: Object
- coord: Array, coordenadas del punto
- mapSize: Array, tamaño del mapa actual [ancho, alto]
- pixel: Array, pixel clickeado
farmSelected
Se activa cuando el usuario selecciona un campo.
Retorna
- event.detail: Object
- id: Integer, id del campo seleccionado
fieldSelected
Se activa cuando el usuario selecciona un lote.
Retorna
- event.detail: Object
- id: Integer, id del lote seleccionado
campaignChanged
Se activa cuando el usuario cambia la campaña seleccionada.
Retorna
- event.detail: Object
- yeargroup: Integer, valor de la campaña seleccionada
featureClicked
Se activa cuando el usuario clickea en un feature dibujado en el mapa.
Retorna
- event.detail: String, UUID del feature
Ejemplo de uso
// Muestra en consola el id del lote seleccionado cada vez que el usuario cambia de lote
window.addEventListener("fieldSelected", () => {
console.log(event.detail.id);
});