1.13.12-alpha.6 • Published 9 months ago

@fxi/mxsdk v1.13.12-alpha.6

Weekly downloads
20
License
MIT
Repository
github
Last release
9 months ago

MapX SDK

Introduction

The MapX SDK enables developers to seamlessly integrate the MapX single page application into web projects, providing access to comprehensive geospatial environmental data. Key MapX features include:

The SDK aims to embed MapX and simplify interaction with it. Although it doesn't include all of MapX's functionalities, it offers most features essential for seamless integration into other web applications.

The primary usage is in 'static' mode: a lightweight, performant version of MapX without login and user roles. Alternatively, the 'app' mode provides a more comprehensive version of MapX with enhanced control but is more complex and resource-intensive.

License

The MapX SDK is provided under an MIT license

Resources

Installation and Configuration

To get started, include the MapX SDK. For the latest version that match the guest's version, e.g. https://app.mapx.org you can use ES6 imports:

import { Manager } from "https://app.mapx.org/sdk/mxsdk.modern.js";

Classic npm package installation

$ npm install @fxi/mxsdk
...
import { Manager } from '@fxi/mxsdk';

Basic Usage

  • Create a new MapX manager instance:
const mapx = new Manager({
  // where to render MapX 
  container: document.getElementById("mapx"),
  // instance to connect to
  url: "https://app.mapx.org:443",
  // mode static ( recommended )
  static : true,
  // additional search parameters
  params: {
    theme: "color_light",
    project: "MX-YBJ-YYF-08R-UUR-QW6",
    // Most UN languages supported
    language : "fr"
  },
});
  • Handle the ready event and call the ask method to interact with MapX:
mapx.once("ready", async () => {
  console.log("ready!");
  const res = await mapx.ask("<command>", "<config>");
  // Your logic here
});

Search Parameters params

MapX has a set of valid search parameters in its query string. The SDK uses the params object to build the initial query string, which already covers a lot of ground.

Current supported parameters are defined in the wiki.

Methods

ask(<command>, <config>)

  • Sends a command to the MapX API and returns the result.

  • Parameters:

    	- `command` (string): The command identifier.
    	- `config` (object): The command configuration object.
  • Example:

// Test if user is guest
const isGuest = await mapx.ask("is_user_guest");
console.log(`User is guest: ${isGuest}`);

// List available commands
const methods =  await mapx.ask("get_sdk_methods");
console.log(`Methods: ${JSON.stringify(methods,0,2)}`);

// Create a sample GeoJSON
const view = await mapx.ask("view_geojson_create", {
    random: { n: 100 },
    save: false,
});
const res = await mapx.ask("download_view_source_geojson", {
    idView: view.id,
});

console.log(res.data);

// Add a view
await mapx.ask('view_add', {idView: 'MX-ML9PZ-PZ1SI-WVV85'});

on(event, callback) once(event, callback) off(event, callback)

Adds an event listener for the specified event.

  • Parameters: - event (string): The event name. - callback (function): The callback function to execute when the event is triggered.
  • Example:
mapx.on("message",log);
mapx.off("message", log);
function log(m){console.log(m)};
// once can use a callback
mapx.once("ready", ()=>{console.log('ready'});
// and returns a  promise 
const res = await mapx.once('view_panel_click');

Events

MapX SDK provides several events that can be listened for via the .on and .once methods:

  • ready

    	- Fired when the SDK is fully loaded and initialized.
    	- Usage:
mapx.once("ready", () => {
  console.log("MapX SDK is ready!");
});
  • message

    	- Triggered when there is a message from `mapx` or the `worker`.
    	- Usage:
mapx.on("message", (message) => {
  const { level, text } = message;
  switch (level) {
    case "message":
      console.info(text);
      break;
    case "warning":
      console.warn(text);
      break;
    case "error":
      console.error(text);
      break;
    default:
      console.log(message);
  }
});

SDK events:

  • message
  • ready

MapX events:

  • language_change
  • project_change
  • session_start
  • session_end
  • mapx_connected
  • mapx_disconnected
  • mapx_ready
  • click_attributes
  • views_list_updated
  • view_created
  • layers_ordered
  • view_deleted
  • view_remove
  • view_removed
  • view_filter
  • view_filtered
  • view_add
  • view_added
  • spotlight_progress
  • spotlight_update
  • settings_change
  • settings_user_change
  • story_step
  • view_panel_click

Commands Documentation

Classes

MapxResolversApp ⇐ MapxResolversStatic

MapX resolvers available in app only

Kind: global class
Extends: MapxResolversStatic

mapxResolversApp.get_sdk_methods() ⇒ Array

List resolvers methods

Kind: instance method of MapxResolversApp
Overrides: get_sdk_methods
Returns: Array - array of supported methods

mapxResolversApp.show_modal_login() ⇒ Boolean

Show the login modal window

Kind: instance method of MapxResolversApp
Returns: Boolean - done

mapxResolversApp.show_modal_view_meta() ⇒ Boolean

Show view meta modal window

Kind: instance method of MapxResolversApp
Returns: Boolean - done

mapxResolversApp.launch_chaos_test() ⇒ Boolean

Launch chaos test : open / close views by batch for a minute

Kind: instance method of MapxResolversApp
Returns: Boolean - pass

mapxResolversApp.show_modal_view_edit() ⇒ Boolean

Show view edit modal window

Kind: instance method of MapxResolversApp
Returns: Boolean - done

mapxResolversApp.show_modal_tool(opt) ⇒ Boolean | Array

Show modal for tools

Kind: instance method of MapxResolversApp
Returns: Boolean | Array - Done or the list of tools

ParamTypeDescription
optObjectOptions
opt.toolStringId of the tools
opt.listBooleanReturn a list of tools

mapxResolversApp.get_user_id() ⇒ Number

Get user id

Kind: instance method of MapxResolversApp
Returns: Number - Current user id

mapxResolversApp.set_token(Mapx)

Manually set MapX app token and reload the app. This encrypted token is used to fingerprint user, browser and time since the last log in. It could be generated using MapX cryptography private key, or if not available, retrived from a live session with mx.helpers.getToken() or with the SDK, get_mapx_token.

Kind: instance method of MapxResolversApp

ParamTypeDescription
MapxStringvalid encrypted token

mapxResolversApp.get_token() ⇒ String

Retrieve MapX token.

Kind: instance method of MapxResolversApp
Returns: String - MapX token.

mapxResolversApp.get_user_roles() ⇒ Object

Get user roles

Kind: instance method of MapxResolversApp
Returns: Object - Current user roles

mapxResolversApp.check_user_role(opt) ⇒ Boolean

Check if user as given role

Kind: instance method of MapxResolversApp
Returns: Boolean - has role(s)

ParamTypeDescription
optObjectOptions
opt.roleString | ArrayRole(s) to check
opt.allBooleanall roles must match, else at least one

mapxResolversApp.check_user_role_breaker(roleReq, opt) ⇒ Boolean

Check for any matching roles, send an error if it does not match

Kind: instance method of MapxResolversApp
Returns: Boolean - matched

ParamTypeDescription
roleReqArrayArray of required role. eg. 'members','admins'
optObjectOptions
opt.reportErrorBooleanReport an error if no match (default true)
opt.idAnyAn identifier

mapxResolversApp.get_user_email() ⇒ String

Get user email

Kind: instance method of MapxResolversApp
Returns: String - Current user email ( if logged, null if not)

mapxResolversApp.set_project(opt) ⇒ Boolean

Set project

Kind: instance method of MapxResolversApp
Returns: Boolean - Done

ParamTypeDescription
optObjectoptions
opt.idProjectStringId of the project to switch to

mapxResolversApp.get_projects(opt) ⇒ Array

Get projects list

Kind: instance method of MapxResolversApp
Returns: Array - list of project for the current user, using optional filters

ParamTypeDescription
optObjectProject fetching option

mapxResolversApp.get_project() ⇒ String

Get current project id

Kind: instance method of MapxResolversApp
Returns: String - Current project id

mapxResolversApp.get_project_collections(opt) ⇒ Array

Get list of collection for the current project

Kind: instance method of MapxResolversApp
Returns: Array - Array of collections names

ParamTypeDescription
optObjectOptions
opt.openBooleanReturn only collections from open views

mapxResolversApp.is_user_guest() ⇒ Boolean

Test if the current user is guest

Kind: instance method of MapxResolversApp
Returns: Boolean - User is guest

mapxResolversApp.get_views_list_state() ⇒ Array

Get views list state

Kind: instance method of MapxResolversApp

mapxResolversApp.get_views_id_open() ⇒ Array

Get list of view in "open" state -> from the views list : possibly without layer

Kind: instance method of MapxResolversApp
Returns: Array - Array of id

mapxResolversApp.set_views_list_filters(opt) ⇒ Boolean

Set views list filter (ui)

Kind: instance method of MapxResolversApp
Returns: Boolean - done

ParamTypeDescription
optObjectoptions
opt.resetBooleanReset and remove all rules
opt.rulesArrayArray of filter object. e.g. {type:'text',value:'marine'}
opt.modeBooleanSet mode : 'intersection' or 'union';

Example

// reset all rules
mapx.ask('set_views_list_filter',{
   reset:true
})

// Reset rules and filter views with a dashboard
mapx.ask('set_views_list_filter',{
   reset: true,
   rules : [{
   type : 'view_components,
   value:'dashboard'
   }]
})

// All views with marine or earth in title or abstract or vector views or raster views
mapx.ask('set_views_list_filter',{
   rules:
    [
     {
          type: 'text',
          value: 'marine or earth'
      },
      {
          type: 'view_components',
          value: ['vt','rt']
      }
    ],
    mode: 'union'
  })

mapxResolversApp.get_views_list_filters() ⇒ Array

Get views list filter rules

Kind: instance method of MapxResolversApp
Returns: Array - Rule list

mapxResolversApp.get_views_list_order() ⇒ Array

Get views current absolute order (without groups) in the list

Kind: instance method of MapxResolversApp

mapxResolversApp.set_views_list_state(opt) ⇒ Boolean

Set state / views list order, groups, etc. Opened view will be closed

Kind: instance method of MapxResolversApp
Returns: Boolean - Done

ParamTypeDescription
optObjectOptions
opt.stateArrayMapx views list state

mapxResolversApp.set_views_list_sort(opt) ⇒ Boolean

Set views list order

Kind: instance method of MapxResolversApp
Returns: Boolean - Done

ParamTypeDescription
optObjectOptions
opt.ascBooleanAsc
opt.modeStringMode : 'string' or 'date';

mapxResolversApp.is_views_list_sorted(opt) ⇒ Boolean

Test if views list is sorted

Kind: instance method of MapxResolversApp
Returns: Boolean - Sorted

ParamTypeDescription
optObjectOptions
opt.ascBooleanAsc
opt.modeStringMode : 'string' or 'date';

mapxResolversApp.move_view_top(opt) ⇒ Boolean

Move view on top of its group

Kind: instance method of MapxResolversApp
Returns: Boolean - Done

ParamTypeDescription
optObjectOptions
opt.idViewSring

mapxResolversApp.move_view_bottom(opt) ⇒ Boolean

Move view on the bottom of its group

Kind: instance method of MapxResolversApp
Returns: Boolean - Done

ParamTypeDescription
optObjectOptions
opt.idViewSring

mapxResolversApp.move_view_after(opt) ⇒ Boolean

Move view after anoter view

Kind: instance method of MapxResolversApp
Returns: Boolean - Done

ParamTypeDescription
optObjectOptions
opt.idViewSring
opt.idViewAfterSring

mapxResolversApp.move_view_before(opt) ⇒ Boolean

Move view before another view

Kind: instance method of MapxResolversApp
Returns: Boolean - Done

ParamTypeDescription
optObjectOptions
opt.idViewSring
opt.idViewBeforeSring

mapxResolversApp.move_view_up(opt) ⇒ Boolean

Move view up

Kind: instance method of MapxResolversApp
Returns: Boolean - Done

ParamTypeDescription
optObjectOptions
opt.idViewSring

mapxResolversApp.move_view_down(opt) ⇒ Boolean

Move view down

Kind: instance method of MapxResolversApp
Returns: Boolean - Done

ParamTypeDescription
optObjectOptions
opt.idViewSring

mapxResolversApp.table_editor_open(opt) ⇒ Object

Show table editor ( require log in )

Kind: instance method of MapxResolversApp
Returns: Object - instance state

ParamTypeDescription
optObjectOptions
opt.id_tableStringid of the table to edit

mapxResolversApp.table_editor_close(opt) ⇒ Object

Close table editor

Kind: instance method of MapxResolversApp
Returns: Object - instance state

ParamTypeDescription
optObjectOptions
opt.id_tableStringid of the table to close

mapxResolversApp.table_editor_exec(opt) ⇒ Any

Apply any command on Table Editor Initially for testing purposes. May cause data loss.

Kind: instance method of MapxResolversApp
Returns: Any - res Result. If null, instance state

ParamTypeDescription
optObjectOptions
opt.id_tableStringId of the table to edit
opt.methodStringMethod name
opt.valueObjectMethod arguments

mapxResolversApp.get_sources_list_edit() ⇒ Array

Get editable source list by current user

Kind: instance method of MapxResolversApp
Returns: Array - Rows

mapxResolversApp.set_panel_left_visibility(opt) ⇒ Boolean

Set panel visibility

Kind: instance method of MapxResolversApp
Returns: Boolean - done

ParamTypeDescription
optObjectOptions
opt.showBooleanShow the panel. If false, hide.
opt.openBooleanOpen the panel. If false, close.
opt.toggleBooleanIf closed, open. If open, close.

mapxResolversApp.has_dashboard() ⇒ Boolean

Test if dashboard exists

Kind: instance method of MapxResolversApp
Returns: Boolean - exists

mapxResolversApp.tests_ws()

End to end ws com testing

Kind: instance method of MapxResolversApp

mapxResolversApp.set_immersive_mode() ⇒ Boolean

Toogle immersive mode: hide or show ALL panels.

Kind: instance method of MapxResolversApp
Returns: Boolean - enabled
Aram: Object opt Options

ParamTypeDescription
opt.enableBooleanForce enable
opt.toggleBooleanToggle

mapxResolversApp.get_immersive_mode() ⇒ Boolean

Get immersive mode state

Kind: instance method of MapxResolversApp
Returns: Boolean - Enabled

mapxResolversApp.set_mode_3d(opt)

Enable or disable 3d terrain Set related layers visibility, change control buttons state

Kind: instance method of MapxResolversApp

ParamTypeDescription
optObjectOptions
opt.actionStringAction to perform: 'show','hide','toggle'

mapxResolversApp.set_3d_terrain()

Enable or disable 3d terrain ( same as set_mode_3d;

Kind: instance method of MapxResolversApp

mapxResolversApp.set_mode_aerial(opt)

Enable or disable aerial/satelite mode Set related layers visibility, change control buttons state

Kind: instance method of MapxResolversApp

ParamTypeDescription
optObjectOptions
opt.actionStringAction to perform: 'show','hide','toggle'

mapxResolversApp.show_modal_share(opt) ⇒ Boolean

Show sharing modal

Kind: instance method of MapxResolversApp
Returns: Boolean - Done

ParamTypeDescription
optObjectOptions
opt.idViewString | ArrayId view to share

mapxResolversApp.close_modal_share() ⇒ Boolean

Close sharing modal

Kind: instance method of MapxResolversApp
Returns: Boolean - Done

mapxResolversApp.get_modal_share_string() ⇒ String

Get sharing string

Kind: instance method of MapxResolversApp
Returns: String - Sharing string ( code / url )

mapxResolversApp.get_modal_share_tests() ⇒ array

Modal Share Tests Suite

Kind: instance method of MapxResolversApp
Returns: array - array of tests

mapxResolversApp.set_theme(opt) ⇒ Boolean

Set MapX theme by id or set custom colors. Both ways are exclusive.

Kind: instance method of MapxResolversApp
Returns: Boolean - done

ParamTypeDescription
optObjectOptions
opt.idThemeStringValid theme id. Use 'get_themes_id' to get a list
opt.colorsObjectValid colors scheme. Use 'get_themes' to see default themes structure.

mapxResolversApp.get_themes_id() ⇒ Array

Get themes id

Kind: instance method of MapxResolversApp
Returns: Array - array of themes id

mapxResolversApp.get_themes() ⇒ Object

Get all themes

Kind: instance method of MapxResolversApp
Returns: Object - Themes object with themes id as key

mapxResolversApp.get_theme_id() ⇒ string

Get current theme id

Kind: instance method of MapxResolversApp
Returns: string - Theme id

mapxResolversApp.get_themes_ids() ⇒ Array.<string>

Get all theme id

Kind: instance method of MapxResolversApp
Returns: Array.<string> - Theme ids

mapxResolversApp.add_theme(opt) ⇒ Boolean

Add a custom theme into mapx and use it.

Kind: instance method of MapxResolversApp
Returns: Boolean - done

ParamTypeDescription
optObjectOptions
opt.themeStringValid theme (full).

mapxResolversApp.has_el_id(opt)

Check if element is visible, by id

Kind: instance method of MapxResolversApp

ParamTypeDescription
optObjectOptions
opt.idStringId of the element to check
opt.timeoutNumberTimeout

mapxResolversApp.set_dashboard_visibility(opt) ⇒ Boolean

Set dashboard visibility

Kind: instance method of MapxResolversApp
Returns: Boolean - done

ParamTypeDescription
optObjectOptions
opt.showBooleanIf true, show the dashboard
opt.toggleBooleanToggle the dashoard

mapxResolversApp.is_dashboard_visible() ⇒ Promise.<Boolean>

Check if the dashboard is visible

Kind: instance method of MapxResolversApp
Returns: Promise.<Boolean> - The dashboard is visible

mapxResolversApp.get_source_meta(opt) ⇒ Promise.<(Object|Array)>

Get source metadata

Kind: instance method of MapxResolversApp
Returns: Promise.<(Object|Array)> - Source MapX metadata, or array of meta

ParamTypeDescription
optObjectOptions
opt.idSourceStringId of the source
opt.asArrayBooleanIn case of joined meta, returns an array

mapxResolversApp.get_view_source_summary(opt) ⇒ Object

Get view's source summary

Kind: instance method of MapxResolversApp
Returns: Object - Source summary

ParamTypeDescription
optObjectOptions
opt.idViewStringId of the view
opt.statsArrayStats to retrieve. 'base', 'attributes', 'temporal', 'spatial'
opt.idAttrStringAttribute for stat (default = attrbute of the style)

mapxResolversApp.get_user_ip() ⇒ Object

Get user ip info

Kind: instance method of MapxResolversApp
Returns: Object - Current user ip object (ip, country, region, etc)

mapxResolversApp.get_language() ⇒ String

Get current language

Kind: instance method of MapxResolversApp
Returns: String - Two letters language code

mapxResolversApp.set_language(opt) ⇒ Boolean

Setlanguage

Kind: instance method of MapxResolversApp
Returns: Boolean - Laguage change process finished

ParamTypeDescription
optObjectOptions
opt.langStringTwo letters language code

mapxResolversApp.get_languages() ⇒ Array

Get list of supported current languages

Kind: instance method of MapxResolversApp
Returns: Array - Array of two letters language code

mapxResolversApp.get_views() ⇒ Array

Get list of available views as static objects

Kind: instance method of MapxResolversApp
Returns: Array - Array of views

mapxResolversApp.get_views_id() ⇒ Array

Get list of available views id

Kind: instance method of MapxResolversApp
Returns: Array - Array of id

mapxResolversApp.get_view_meta_vt_attribute(opt) ⇒ Object

Get vector view (vt) metadata of the attribute

Kind: instance method of MapxResolversApp
Returns: Object - attribut metadata

ParamTypeDescription
optObjectOptions
opt.idViewStringId of the view

mapxResolversApp.get_view_meta(opt, view) ⇒ Promise.<Object>

Get view metadata

Kind: instance method of MapxResolversApp
Returns: Promise.<Object> - view metadata

ParamTypeDescription
optObjectoptions
opt.idViewStringId of the view
viewObjectmeta data object

mapxResolversApp.get_view_source_meta(opt, view) ⇒ Promise.<(Object|Array)>

Get view source metadata

Kind: instance method of MapxResolversApp
Returns: Promise.<(Object|Array)> - view metadata

ParamTypeDescription
optObjectoptions
opt.idViewStringId of the view
opt.asArrayBooleanIn case of joined meta, returns an array
viewObjectmeta data object

mapxResolversApp.get_view_table_attribute_config(opt) ⇒ Promise.<Object>

Get view table attribute config

Kind: instance method of MapxResolversApp
Returns: Promise.<Object> - view attribute config

ParamTypeDescription
optObjectoptions
opt.idViewStringId of the view

mapxResolversApp.get_view_table_attribute_url(opt) ⇒ Promise.<String>

Get view table attribute url

Kind: instance method of MapxResolversApp

ParamTypeDescription
optObjectoptions
opt.idViewStringId of the view

mapxResolversApp.get_view_table_attribute(opt) ⇒ Array.<Object>

Get view table attribute

Kind: instance method of MapxResolversApp

ParamTypeDescription
optObjectoptions
opt.idViewStringId of the view

mapxResolversApp.get_view_legend_image(opt) ⇒ String

Get view legend

Kind: instance method of MapxResolversApp
Returns: String - PNG in base64 format

ParamTypeDescription
optObjectoptions
opt.idViewStringId of the view
opt.formatString

mapxResolversApp.set_view_legend_state(opt) ⇒ void | Error

Updates the state of a view's legend with the provided values.

Kind: instance method of MapxResolversApp
Returns: void | Error - Returns nothing if successful or an error if there's no LegendVt instance.

ParamTypeDescription
optObjectoptions
opt.idViewString | ObjectThe view object containing the legend instance.
opt.valuesArrayAn array of values to set the legend's state.

mapxResolversApp.get_view_legend_state(opt) ⇒ Array | Error

Retrieves the current state (checked values) of a view's legend.

Kind: instance method of MapxResolversApp
Returns: Array | Error - An array of the currently checked values in the legend, or an error if there's no LegendVt instance.

ParamTypeDescription
optObjectoptions
opt.idViewString | ObjectThe view id containing the legend instance.

mapxResolversApp.get_view_legend_values(opt) ⇒ Array

Retrieves the values from the legend.

For numeric rules, the method returns an array of range arrays (from, to), otherwise, it just returns an array of values.

Kind: instance method of MapxResolversApp
Returns: Array - An array of checked values. For numeric rules, each entry is an array of format from, to.

ParamTypeDescription
optObjectoptions
opt.idViewString | ObjectThe view id containing the legend instance.

Example

// Non-numeric rules
get_view_legend_values({view:"123"}); // e.g. ["value1", "value2", ...]

// Numeric rules
get_view_legend_values({view:"123"}); // e.g. [[0, 10], [10, 20], ...]

mapxResolversApp.set_views_layer_order(opt) ⇒ Boolean

Set view layer z position

Kind: instance method of MapxResolversApp
Returns: Boolean - Done

ParamTypeDescription
optObjectOptions
opt.orderArray.<String>View order
opt.origStringOptional label for origin / logs

Example

const views = await mapx.ask("get_views_with_visible_layer");
const order = views.toReversed();
const result = await mapx.ask("set_views_layer_order",{order});

mapxResolversApp.get_views_layer_order() ⇒ Array

Get list views with visible layers

Kind: instance method of MapxResolversApp
Returns: Array - Array of views

mapxResolversApp.get_views_with_visible_layer() ⇒ Array

Get list views with visible layers (alias)

Kind: instance method of MapxResolversApp
Returns: Array - Array of views

mapxResolversApp.set_view_layer_filter_text(opt) ⇒ void

Filter view layer by text (if attribute is text)

Kind: instance method of MapxResolversApp

ParamTypeDescription
optOptionsOptions
opt.idViewStringView id
opt.valuesarrayValues to use as filter
opt.attributestringAttribute to use as filter (default from style)

mapxResolversApp.get_view_layer_filter_text(opt) ⇒ array

Get current text filter values for a given view

Kind: instance method of MapxResolversApp
Returns: array - values

ParamTypeDescription
opt.idViewStringView id
optOptionsOptions

mapxResolversApp.set_view_layer_filter_numeric(opt) ⇒ void

Filter view layer by numeric (if attribute is numeric)

Kind: instance method of MapxResolversApp

ParamTypeDescription
optOptionsOptions
opt.idViewStringTarget view id
opt.attributeStringAttribute name (default from style)
opt.fromNumericValue
opt.toNumericValue
opt.valuearrayValues (Deprecated)

mapxResolversApp.get_view_layer_filter_numeric(opt) ⇒ Number | Array

Get current numeric slider value

Kind: instance method of MapxResolversApp
Returns: Number | Array - values

ParamTypeDescription
optOptionsOptions
opt.idViewStringTarget view id

mapxResolversApp.set_view_layer_filter_time(opt) ⇒ void

Filter view layer by time ( if posix mx_t0 and/or mx_t1 attributes exist )

This function creates a time filter based on the provided options and sets this filter to the specific view identified by its ID.

Kind: instance method of MapxResolversApp

ParamTypeDescription
optObjectThe options for the time filter.
opt.hasT0booleanFlag indicating if the 'mx_t0' timestamp exists.
opt.hasT1booleanFlag indicating if the 'mx_t1' timestamp exists.
opt.fromnumberThe 'from' timestamp for the filter in milliseconds.
opt.tonumberThe 'to' timestamp for the filter in milliseconds.
opt.idViewstringThe ID of the view to which the filter is to be applied.

Example

// Get summary ( any attribute: get_view_source_summary returns time extent
// by default )
const summary = await mapx.ask("get_view_source_summary", {
 idView,
 idAttr: idAttr,
 });
// set config + convert seconds -> milliseconds
const start = summary.extent_time.min * 1000;
const end = summary.extent_time.max * 1000;
const hasT0 = summary.attributes.includes("mx_t0");
const hasT1 = summary.attributes.includes("mx_t1");
await mapx.ask("set_view_layer_filter_time", {
 idView,
 from,
 to,
 hasT0,
 hasT1,
});

mapxResolversApp.get_view_layer_filter_time(opt) ⇒ Number | Array

Get current time slider value

Kind: instance method of MapxResolversApp
Returns: Number | Array - values

ParamTypeDescription
optOptionsOptions
opt.idViewStringTarget view id

mapxResolversApp.set_view_layer_transparency(opt) ⇒ void

Set layer transarency (0 : visible, 100 : 100% transparent)

Kind: instance method of MapxResolversApp

ParamTypeDescription
optOptionsOptions
opt.idViewStringTarget view id
opt.valueNumericValue

mapxResolversApp.get_view_layer_transparency(opt) ⇒ Number

Get current transparency value for layers of a view

Kind: instance method of MapxResolversApp
Returns: Number - value

ParamTypeDescription
optOptionsOptions
opt.idViewStringTarget view id

mapxResolversApp.view_add(opt) ⇒ Promise.<Boolean>

Add a view

Kind: instance method of MapxResolversApp
Returns: Promise.<Boolean> - done

ParamTypeDescription
optObjectOptions
opt.idViewStringTarget view id
opt.zoomToViewBooleanFly to view extends

mapxResolversApp.view_remove(opt) ⇒ Boolean

remove a view

Kind: instance method of MapxResolversApp
Returns: Boolean - done

ParamTypeDescription
optObjectOptions
opt.idViewStringTarget view id

mapxResolversApp.download_view_source_external(opt) ⇒ Object

Get the download links of an external source set in metadata (custom code, raster, etc)

Kind: instance method of MapxResolversApp
Returns: Object - input options, with new key : url. E.g. {idView:,url:,urlItems:{,,<is_download_link>}}

ParamTypeDescription
optObjectOptions
opt.idViewStringview view id

mapxResolversApp.download_view_source_raster()

Get the download link of the raster source (same as download_view_source_external)

Kind: instance method of MapxResolversApp

mapxResolversApp.download_view_source_vector(opt) ⇒ Object

Open the download modal for vector views

Kind: instance method of MapxResolversApp
Returns: Object - input options E.g. {idView:}

ParamTypeDescription
optObjectOptions
opt.idViewStringVector view id

mapxResolversApp.close_modal_download_vector() ⇒ Boolean

Close download vector modal

Kind: instance method of MapxResolversApp
Returns: Boolean - Done

mapxResolversApp.download_view_source_geojson(opt) ⇒ Object

Get the data from geojson view or download geojsn as a file

Kind: instance method of MapxResolversApp
Returns: Object - input options E.g. {idView:, data:<data (if mode = data)>}

ParamTypeDescription
optObjectOptions
opt.idViewStringGeoJSON view id
opt.modeString"file" or "data"

mapxResolversApp.show_modal_map_composer() ⇒ Boolean

Show map composer

Kind: instance method of MapxResolversApp
Returns: Boolean - done

mapxResolversApp.close_modal_all() ⇒ Boolean

close all modal windows

Kind: instance method of MapxResolversApp
Returns: Boolean - done

mapxResolversApp.get_views_title(opt) ⇒ Array

Get list of views title

Kind: instance method of MapxResolversApp
Returns: Array - Array of titles (string)

ParamTypeDescription
optObjectoptions
opt.viewsArrayList of views or views id
opt.langStringLanguage code

mapxResolversApp.set_vector_spotlight(opt) ⇒ Object

Spotlight vector feature : Enable, disable, toggle

Kind: instance method of MapxResolversApp
Returns: Object - options realised {enable:<false/true>,calcArea:<true/false>,nLayers:}

ParamTypeDescription
optObjectOptions
opt.enableBooleanEnable or disable. If not set, toggle spotlight
opt.nLayersNumberNumbers of layer that are used in the overlap tool. If not set, the default is 1 : any visible feature is spotlighted. If 0 = only part where all displayed layers are overlapping are spotligthed
opt.calcAreaBooleanEstimate area covered by visible feature and display result in MapX interface

mapxResolversApp.set_highlighter(opt) ⇒ number

Set the highlighter with the provided options.

Kind: instance method of MapxResolversApp
Returns: number - Feature count

ParamTypeDescription
optObjectConfiguration options for the highlighter.
config.pointPointLike | Array.<PointLike>Location to query
opt.filtersArray.<Object>Array of filter objects to be applied.
opt.filters[].idStringIdentifier of the view to which the filter applies.
opt.filters[].filterArrayMapboxGl filter expression

Example

mapx.ask('set_highlighter',{
  all: true,
});

mapx.ask('set_highlighter',{
  filters: [
    { id: "MX-TC0O1-34A9Y-RYDJG", filter: ["<", ["get", "year"], 2000] },
  ],
});

mapx.ask('set_highlighter',{
  filters: [
    { id: "MX-TC0O1-34A9Y-RYDJG", filter: [">=", ["get", "fatalities"], 7000] },
  ],
});

mapx.ask('set_highlighter',{
  filters: [
    {
      id: "MX-TC0O1-34A9Y-RYDJG",
      filter: [
        "in",
        ["get", "country"],
        ["literal", ["Nigeria", "Gabon", "Angola"]],
      ],
    },
  ],
});

mapxResolversApp.update_highlighter() ⇒ number

Update highlighter using previous configuration i.e refresh features

Kind: instance method of MapxResolversApp
Returns: number - Feature count

mapxResolversApp.reset_highlighter() ⇒ number

Clear all highlighted features and reset config

Kind: instance method of MapxResolversApp
Returns: number - Feature count

mapxResolversApp.view_geojson_create(opt) ⇒ Object

Add geojson. ( Other supported file type may be supported )

Kind: instance method of MapxResolversApp
Returns: Object - view

ParamTypeDescription
optObjectOptions
opt.dataString | Object | BufferData : String,
opt.saveBooleanSave locally, so next session the date will be loaded
opt.fileTypeStringFile type. e.g. geojson. default = geojson
opt.fileNameStringFile name, if any
opt.titleSringTitle
opt.abstractStringAbstract
opt.randomObjectGenerate random geojson
opt.random.nNumbernumber of points
opt.random.latRangeArrayminLat, maxLat
opt.random.lngRangeArrayminLng, maxLng

mapxResolversApp.view_geojson_set_style(opt) ⇒ Boolean

Set geojson view layers style : layout and pa

1.13.12-alpha.3

9 months ago

1.13.12-alpha.4

9 months ago

1.13.12-alpha.2

9 months ago

1.13.12-alpha.5

9 months ago

1.13.12-alpha.6

9 months ago

1.13.12-alpha.1

9 months ago

1.13.11-beta.9

9 months ago

1.13.11

9 months ago

1.13.11-beta.7

9 months ago

1.13.11-beta.6

9 months ago

1.13.11-beta.5

9 months ago

1.13.11-beta.8

9 months ago

1.13.11-beta.4

9 months ago

1.13.11-beta.3

9 months ago

1.13.11-beta.2

9 months ago

1.13.11-beta.1

9 months ago

1.13.10-alpha.1

10 months ago

1.13.10-alpha.2

10 months ago

1.13.10-alpha.3

9 months ago

1.13.10

9 months ago

1.13.9

10 months ago

1.13.9-alpha.12

10 months ago

1.13.9-alpha.13

10 months ago

1.13.9-alpha.14

10 months ago

1.13.9-alpha.11

10 months ago

1.13.9-alpha.6

10 months ago

1.13.9-alpha.9

10 months ago

1.13.9-alpha.7

10 months ago

1.13.9-alpha.8

10 months ago

1.13.9-alpha.10

10 months ago

1.13.8-alpha.2

1 year ago

1.13.8-alpha.3

1 year ago

1.13.8-alpha.1

1 year ago

1.13.8-alpha.8

1 year ago

1.13.8-alpha.9

1 year ago

1.13.8-alpha.6

1 year ago

1.13.8-alpha.7

1 year ago

1.13.8-alpha.4

1 year ago

1.13.8-alpha.5

1 year ago

1.13.9-alpha.1

12 months ago

1.13.9-alpha.2

11 months ago

1.13.9-alpha.5

11 months ago

1.13.9-alpha.3

11 months ago

1.13.9-alpha.4

11 months ago

1.13.8

1 year ago

1.13.8-alpha.10

1 year ago

1.13.7

1 year ago

1.13.7-alpha.1

1 year ago

1.13.6

1 year ago

1.13.5

1 year ago

1.13.5-beta.11

1 year ago

1.13.5-beta.10

1 year ago

1.13.5-beta.9

1 year ago

1.13.5-beta.8

1 year ago

1.13.5-beta.7

1 year ago

1.13.5-beta.4

1 year ago

1.13.5-beta.6

1 year ago

1.13.5-beta.5

1 year ago

1.13.5-beta.3

1 year ago

1.13.5-beta.2

1 year ago

1.13.5-beta.1

1 year ago

1.13.5-alpha.5

1 year ago

1.13.5-alpha.4

1 year ago

1.13.5-alpha.3

1 year ago

1.13.5-alpha.2

1 year ago

1.13.5-alpha.1

1 year ago

1.13.4-alpha.2

1 year ago

1.13.4

1 year ago

1.13.4-alpha.1

1 year ago

1.13.3

1 year ago

1.13.2

1 year ago

1.13.1

1 year ago

1.13.0

1 year ago

1.13.0-beta.14

1 year ago

1.13.0-beta.13

1 year ago

1.13.0-beta.15

1 year ago

1.13.0-beta.12

1 year ago

1.13.0-beta.11

1 year ago

1.13.0-beta.9

1 year ago

1.13.0-beta.8

1 year ago

1.13.0-beta.10

1 year ago

1.13.0-beta.7

1 year ago

1.13.0-beta.6

1 year ago

1.13.0-beta.5

1 year ago

1.13.0-beta.4

1 year ago

1.13.0-beta.3

1 year ago

1.13.0-beta.2

1 year ago

1.13.0-beta.1

1 year ago

1.13.0-alpha.28

1 year ago

1.13.0-alpha.27

1 year ago

1.13.0-alpha.25

1 year ago

1.13.0-alpha.26

1 year ago

1.13.0-alpha.24

1 year ago

1.13.0-alpha.21

1 year ago

1.13.0-alpha.23

1 year ago

1.13.0-alpha.22

1 year ago

1.13.0-alpha.20

1 year ago

1.13.0-alpha.16

1 year ago

1.13.0-alpha.18

1 year ago

1.13.0-alpha.17

1 year ago

1.13.0-alpha.19

1 year ago

1.13.0-alpha.15

1 year ago

1.13.0-alpha.12

1 year ago

1.13.0-alpha.11

1 year ago

1.13.0-alpha.14

1 year ago

1.13.0-alpha.13

1 year ago

1.13.0-alpha.10

2 years ago

1.13.0-alpha.9

2 years ago

1.13.0-alpha.7

2 years ago

1.13.0-alpha.8

2 years ago

1.13.0-alpha.6

2 years ago

1.13.0-alpha.5

2 years ago

1.13.0-alpha.3

2 years ago

1.13.0-alpha.4

2 years ago

1.13.0-alpha.2

2 years ago

1.13.0-alpha.1

2 years ago

1.12.3-beta.1

2 years ago

1.12.3-beta.3

2 years ago

1.12.3-beta.2

2 years ago

1.12.4-patch.3

2 years ago

1.12.4-patch.1

2 years ago

1.12.4-patch.2

2 years ago

1.12.3

2 years ago

1.12.7

2 years ago

1.12.6

2 years ago

1.12.5

2 years ago

1.12.4

2 years ago

1.12.5-alpha.1

2 years ago

1.12.5-alpha.2

2 years ago

1.12.5-alpha.3

2 years ago

1.12.5-alpha.4

2 years ago

1.12.5-alpha.5

2 years ago

1.12.5-alpha.6

2 years ago

1.12.5-alpha.7

2 years ago

1.12.5-alpha.8

2 years ago

1.12.5-alpha.9

2 years ago

1.12.3-beta.5

2 years ago

1.12.3-beta.4

2 years ago

1.12.3-beta.7

2 years ago

1.12.3-beta.6

2 years ago

1.12.3-beta.8

2 years ago

1.12.6-patch.2

2 years ago

1.12.6-patch.1

2 years ago

1.12.3-alpha.15

2 years ago

1.12.3-alpha.16

2 years ago

1.12.3-alpha.13

2 years ago

1.12.3-alpha.14

2 years ago

1.12.3-alpha.11

2 years ago

1.12.3-alpha.12

2 years ago

1.12.3-alpha.10

2 years ago

1.12.4-beta.4

2 years ago

1.12.4-beta.3

2 years ago

1.12.4-beta.2

2 years ago

1.12.4-beta.1

2 years ago

1.12.3-alpha.3

2 years ago

1.12.3-alpha.2

2 years ago

1.12.3-alpha.5

2 years ago

1.12.3-alpha.4

2 years ago

1.12.3-alpha.7

2 years ago

1.12.3-alpha.6

2 years ago

1.12.3-alpha.9

2 years ago

1.12.3-alpha.8

2 years ago

1.12.3-alpha.1

2 years ago

1.12.3-alpha.17

2 years ago

1.12.3-alpha.18

2 years ago

1.12.4-beta.5

2 years ago

1.12.4-alpha.10

2 years ago

1.12.4-alpha.6

2 years ago

1.12.4-alpha.5

2 years ago

1.12.4-alpha.8

2 years ago

1.12.4-alpha.7

2 years ago

1.12.4-alpha.2

2 years ago

1.12.4-alpha.1

2 years ago

1.12.4-alpha.4

2 years ago

1.12.4-alpha.3

2 years ago

1.12.4-alpha.9

2 years ago

1.12.2

2 years ago

1.12.1

2 years ago

1.12.1-beta.5

2 years ago

1.12.1-beta.4

2 years ago

1.12.1-beta.3

2 years ago

1.12.1-beta.1

2 years ago

1.12.1-beta.2

2 years ago

1.12.0

2 years ago

1.11.0-rc.4

2 years ago

1.11.0-rc.3

2 years ago

1.11.0-rc.2

2 years ago

1.11.0-rc.1

2 years ago

1.11.0

2 years ago

1.12.0-alpha.1

2 years ago

1.12.0-alpha.2

2 years ago

1.11.0-alpha.8

2 years ago

1.11.0-alpha.7

2 years ago

1.11.0-alpha.6

2 years ago

1.11.0-beta.2

2 years ago

1.11.0-alpha.5

2 years ago

1.11.0-alpha.4

2 years ago

1.11.0-beta.1

2 years ago

1.12.1-alpha.2

2 years ago

1.12.1-alpha.3

2 years ago

1.12.1-alpha.1

2 years ago

1.12.1-alpha.6

2 years ago

1.12.1-alpha.4

2 years ago

1.12.1-alpha.5

2 years ago

1.10.4-patch.1

2 years ago

1.10.4

2 years ago

1.10.5-alpha.2

2 years ago

1.10.5-alpha.1

2 years ago

1.11.0-alpha.1

2 years ago

1.11.0-alpha.3

2 years ago

1.11.0-alpha.2

2 years ago

1.10.4-alpha.7

2 years ago

1.10.4-alpha.5

2 years ago

1.10.4-alpha.6

2 years ago

1.10.4-alpha.4

2 years ago

1.10.4-beta.1

2 years ago

1.10.4-beta.2

2 years ago

1.10.3

2 years ago

1.10.4-alpha.3

2 years ago

1.10.4-alpha.1

2 years ago

1.10.4-alpha.2

2 years ago

1.10.2

2 years ago

1.10.2-alpha.4

2 years ago

1.10.2-alpha.3

2 years ago

1.10.2-alpha.2

2 years ago

1.10.2-alpha.1

2 years ago

1.10.2-alpha.8

2 years ago

1.10.2-alpha.7

2 years ago

1.10.2-alpha.6

2 years ago

1.10.2-alpha.5

2 years ago

1.10.0-alpha.5

2 years ago

1.10.0-alpha.6

2 years ago

1.10.0-alpha.7

2 years ago

1.10.0-alpha.8

2 years ago

1.10.0-alpha.9

2 years ago

1.10.1

2 years ago

1.10.0

2 years ago

1.10.0-alpha.12

2 years ago

1.10.0-alpha.10

2 years ago

1.10.0-alpha.11

2 years ago

1.10.0-beta

2 years ago

1.10.0-beta.1

2 years ago

1.10.0-rc.1

2 years ago

1.10.0-alpha.1

3 years ago

1.10.0-alpha.2

3 years ago

1.10.0-alpha.3

3 years ago

1.10.0-alpha.4

3 years ago

1.9.45-rc.1

3 years ago

1.9.45-rc.2

3 years ago

1.9.45

3 years ago

1.9.45-beta.1

3 years ago

1.9.45-beta.2

3 years ago

1.9.45-beta.3

3 years ago

1.9.45-beta.4

3 years ago

1.9.45-beta.5

3 years ago

1.9.45-beta.6

3 years ago

1.9.4-5.4

3 years ago

1.9.4-5.1

3 years ago

1.9.4-5.2

3 years ago

1.9.4-5.3

3 years ago

1.9.45-alpha.1

3 years ago

1.9.44-beta.8

3 years ago

1.9.44-beta.7

3 years ago

1.9.44-beta.9

3 years ago

1.9.44

3 years ago

1.9.44-beta.6

3 years ago

1.9.44-beta.2

3 years ago

1.9.44-beta.1

3 years ago

1.9.44-beta.4

3 years ago

1.9.44-beta.3

3 years ago

1.9.44-beta.5

3 years ago

1.9.43

3 years ago

1.9.42

3 years ago

1.9.43-beta.0

3 years ago

1.9.43-beta.1

3 years ago

1.9.43-beta.2

3 years ago

1.9.44-beta

3 years ago

1.9.4-3.2

3 years ago

1.9.44-alpha.1

3 years ago

1.9.44-alpha.0

3 years ago

1.9.4-3.1

3 years ago

1.9.40-beta.1

3 years ago

1.9.41

3 years ago

1.9.40

3 years ago

1.9.40-alpha.6

3 years ago

1.9.40-alpha.5

3 years ago

1.9.40-alpha.4

3 years ago

1.9.39

3 years ago

1.9.38

3 years ago

1.9.37

4 years ago

1.9.36

4 years ago

1.9.3-9.alpha.7

3 years ago

1.9.39-alpha.2

3 years ago

1.9.39-alpha.1

3 years ago

1.9.39-alpha.4

3 years ago

1.9.39-alpha.3

3 years ago

1.9.39-alpha.6

3 years ago

1.9.39-alpha.5

3 years ago

1.9.39-alpha.8

3 years ago

1.9.39-alpha.7

3 years ago

1.9.3-9.1

3 years ago

1.9.40-alpha.2

3 years ago

1.9.39-beta.1

3 years ago

1.9.39-beta.2

3 years ago

1.9.35-rc.2

4 years ago

1.9.35-rc.1

4 years ago

1.9.35

4 years ago

1.9.36-alpha.1

4 years ago

1.8.35-alpha.2

4 years ago

1.9.35-alpha.5

4 years ago

1.9.35-alpha.4

4 years ago

1.9.35-alpha.3

4 years ago

1.9.35-alpha.2

4 years ago

1.9.29

4 years ago

1.9.34

4 years ago

1.9.33

4 years ago

1.9.32

4 years ago

1.9.31

4 years ago

1.9.30

4 years ago

1.9.31-alpha.0

4 years ago

1.9.31-alpha.1

4 years ago

1.9.31-alpha.2

4 years ago

1.9.35-alpha.1

4 years ago

1.9.28

4 years ago

1.9.27

4 years ago

1.9.26

4 years ago

1.9.25

4 years ago

1.9.24

4 years ago

1.9.23

4 years ago

1.9.22

4 years ago

1.9.21

4 years ago

1.9.20

4 years ago

1.9.19

4 years ago

1.9.18

4 years ago

1.9.17

4 years ago

1.9.16

4 years ago

1.9.15

4 years ago

1.9.14

4 years ago

1.9.13

4 years ago

1.9.12

4 years ago

1.9.11

4 years ago

1.9.10

4 years ago

1.9.6

4 years ago

1.9.5

4 years ago

1.9.4

4 years ago

1.9.3

4 years ago

1.9.2

4 years ago

1.9.1

4 years ago

1.9.0

4 years ago

1.8.40-rc1

4 years ago

1.8.41-rc2

4 years ago

1.8.39-beta

4 years ago

1.8.38-beta

4 years ago

1.8.37-rc1

4 years ago

1.8.36-beta

4 years ago

1.8.35-beta

4 years ago

1.8.34-beta

4 years ago

1.8.33-beta

4 years ago

1.8.32-alpha

4 years ago

1.8.30-alpha

4 years ago

1.8.29-alpha

4 years ago

1.8.24-alpha

4 years ago

1.8.28-alpha

4 years ago

1.8.25-alpha

4 years ago

1.8.26-alpha

4 years ago

1.8.27-alpha

4 years ago

1.8.21-alpha

4 years ago

1.8.19-alpha

4 years ago

1.8.22-alpha

4 years ago

1.8.18-alpha

4 years ago

1.8.20-alpha

4 years ago

1.8.18

4 years ago

1.8.23-alpha

4 years ago

1.8.17

4 years ago

1.8.15

4 years ago

1.8.16

4 years ago

1.8.13

4 years ago

1.8.14

4 years ago

1.8.12

4 years ago

1.8.11-beta

4 years ago

1.8.9-beta

4 years ago

1.8.10-beta

4 years ago

1.8.8-beta

4 years ago

1.8.7-beta

4 years ago

1.8.6-beta

4 years ago

1.8.5-beta

4 years ago

1.8.4-beta

4 years ago

1.8.3-beta

4 years ago

1.8.2-beta

4 years ago

1.8.1-alpha

5 years ago

1.8.0-alpha

5 years ago

1.7.11

5 years ago

1.7.10

5 years ago

1.7.9

5 years ago

1.7.8

5 years ago

1.7.7

5 years ago

1.7.6-beta

5 years ago

1.7.5-beta

5 years ago

1.7.4-beta

5 years ago

1.7.3-beta

5 years ago

1.7.2

5 years ago

1.7.1

5 years ago

1.6.114-beta

5 years ago

1.7.0

5 years ago

1.6.115-beta

5 years ago

1.6.112-beta

5 years ago

1.6.113-beta

5 years ago

1.6.111-beta

5 years ago

1.6.110-beta

5 years ago

1.6.109-beta

5 years ago

1.6.108-beta

5 years ago

1.6.105-beta

5 years ago

1.6.106-beta

5 years ago

1.6.103-beta

5 years ago

1.6.104-beta

5 years ago

1.6.102-beta

5 years ago

1.6.101-beta

5 years ago

1.6.100-beta

5 years ago

1.6.99-beta

5 years ago

1.6.98-beta

5 years ago

1.6.97-beta

5 years ago

1.6.96-beta

5 years ago

1.6.95-beta

5 years ago

1.6.94-beta

5 years ago

1.6.93-beta

5 years ago

1.6.92-beta

5 years ago

1.6.91-beta

5 years ago

1.6.90-beta

5 years ago

1.6.89-beta

5 years ago

1.6.88-beta

5 years ago

1.6.87-beta

5 years ago

1.6.86-beta

5 years ago

1.6.85-beta

5 years ago

1.6.84-beta

5 years ago

1.6.83-beta

5 years ago

1.6.82-alpha

5 years ago

1.6.80-alpha

5 years ago

1.6.79-alpha

5 years ago

0.0.17

5 years ago

0.0.16

5 years ago

0.0.15

5 years ago

0.0.13

5 years ago

0.0.14

5 years ago

0.0.12

5 years ago

0.0.11

6 years ago

0.0.10

6 years ago

0.0.9

6 years ago

0.0.1

6 years ago

0.0.8

6 years ago

0.0.7

6 years ago

0.0.6

6 years ago

0.0.5

6 years ago

0.0.4

6 years ago

0.0.3

6 years ago

0.0.2

6 years ago