diff --git a/CHANGES.md b/CHANGES.md index c4c805caaf9..44b4d264b51 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -15,6 +15,7 @@ - Prevent user adding empty web url - Fix bug where search results shown in `My Data` tab - Fix bug in function createDiscreteTimesFromIsoSegments where it might create duplicate timestamps. +- Add examples. - [The next improvement] #### 8.4.1 - 2023-12-08 diff --git a/lib/Models/Catalog/Esri/ArcGisCatalogGroup.ts b/lib/Models/Catalog/Esri/ArcGisCatalogGroup.ts index 3b1aa01588b..6ae89842985 100644 --- a/lib/Models/Catalog/Esri/ArcGisCatalogGroup.ts +++ b/lib/Models/Catalog/Esri/ArcGisCatalogGroup.ts @@ -11,7 +11,7 @@ import CatalogMemberMixin from "../../../ModelMixins/CatalogMemberMixin"; import GroupMixin from "../../../ModelMixins/GroupMixin"; import UrlMixin from "../../../ModelMixins/UrlMixin"; import ModelReference from "../../../Traits/ModelReference"; -import ArcGisCatalogGroupTraits from "../../../Traits/TraitsClasses/ArcGisMapServerCatalogGroupTraits"; +import ArcGisCatalogGroupTraits from "../../../Traits/TraitsClasses/ArcGisCatalogGroupTraits"; import CommonStrata from "../../Definition/CommonStrata"; import CreateModel from "../../Definition/CreateModel"; import LoadableStratum from "../../Definition/LoadableStratum"; diff --git a/lib/Traits/TraitsClasses/ApiTableCatalogItemTraits.ts b/lib/Traits/TraitsClasses/ApiTableCatalogItemTraits.ts index 38c4ddd50c9..ed30cb50fc2 100644 --- a/lib/Traits/TraitsClasses/ApiTableCatalogItemTraits.ts +++ b/lib/Traits/TraitsClasses/ApiTableCatalogItemTraits.ts @@ -2,6 +2,7 @@ import objectArrayTrait from "../Decorators/objectArrayTrait"; import primitiveArrayTrait from "../Decorators/primitiveArrayTrait"; import primitiveTrait from "../Decorators/primitiveTrait"; import ModelTraits from "../ModelTraits"; +import { traitClass } from "../Trait"; import mixTraits from "../mixTraits"; import ApiRequestTraits, { QueryParamTraits } from "./ApiRequestTraits"; import AutoRefreshingTraits from "./AutoRefreshingTraits"; @@ -47,6 +48,56 @@ export class ApiTableColumnTraits extends ModelTraits { responseDataPath?: string; } +@traitClass({ + description: `Creates an api-table type dataset in the catalog, typically used for live sensor data.`, + example: { + type: "api-table", + name: "City of Melbourne Pedestrian Counter", + description: + "The City of Melbourne Pedestrian Counting System data has been obtained from the City of Melbourne Open data platform: www.data.melbourne.vic.gov.au to demonstrate the directional movement of pedestrians across the city.\n\nThe counters generate a per minute reading on each of the pedestrian traffic sensors which are then displayed as near-live data.\n\nTo find out more about the City of Melbourne's Pedestrian Counting System or to seek access to their data, please click:\n\nhttp://www.pedestrian.melbourne.vic.gov.au/?_ga=2.244642053.1432520662.1632694466-1456630549.1631675392#date=27-09-2021&time=1", + defaultStyle: { + time: { + spreadFinishTime: true, + timeColumn: "sensing_datetime" + } + }, + initialTimeSource: "stop", + columns: [ + { + name: "total_of_directions" + }, + { + name: "direction_2" + }, + { + name: "direction_1" + }, + { + name: "sensing_datetime" + }, + { + name: "latitude" + }, + { + name: "longitude" + } + ], + idKey: "location_id", + refreshInterval: 60, + removeDuplicateRows: true, + apis: [ + { + url: "https://melbournetestbed.opendatasoft.com/api/explore/v2.1/catalog/datasets/pedestrian-counting-system-past-hour-counts-per-minute/records?select=location_id%2Csensing_datetime%2Cdirection_1%2Cdirection_2%2Ctotal_of_directions&order_by=sensing_datetime%20DESC&limit=100", + responseDataPath: "results", + kind: "PER_ROW" + }, + { + url: "https://melbournetestbed.opendatasoft.com/api/explore/v2.1/catalog/datasets/pedestrian-counting-system-sensor-locations/exports/json?lang=en&timezone=Australia%2FSydney", + kind: "PER_ID" + } + ] + } +}) export default class ApiTableCatalogItemTraits extends mixTraits( TableTraits, CatalogMemberTraits, diff --git a/lib/Traits/TraitsClasses/ArcGisCatalogGroupTraits.ts b/lib/Traits/TraitsClasses/ArcGisCatalogGroupTraits.ts index ace77b9b5c1..328b87beb75 100644 --- a/lib/Traits/TraitsClasses/ArcGisCatalogGroupTraits.ts +++ b/lib/Traits/TraitsClasses/ArcGisCatalogGroupTraits.ts @@ -1,9 +1,19 @@ +import { traitClass } from "../Trait"; import mixTraits from "../mixTraits"; import CatalogMemberTraits from "./CatalogMemberTraits"; import GroupTraits from "./GroupTraits"; import LegendOwnerTraits from "./LegendOwnerTraits"; import UrlTraits from "./UrlTraits"; +@traitClass({ + description: `Creates a group that has individual ESRI services ("MapServer" or "FeatureServer") in the given URL as members (subgroups) in the catalog.`, + example: { + type: "esri-group", + name: "Sydney", + url: "https://services1.arcgis.com/cNVyNtjGVZybOQWZ/arcgis/rest/services", + id: "some id" + } +}) export default class ArcGisCatalogGroupTraits extends mixTraits( GroupTraits, UrlTraits, diff --git a/lib/Traits/TraitsClasses/ArcGisFeatureServerCatalogGroupTraits.ts b/lib/Traits/TraitsClasses/ArcGisFeatureServerCatalogGroupTraits.ts index 4ec1a0d9177..d8dc149c14e 100644 --- a/lib/Traits/TraitsClasses/ArcGisFeatureServerCatalogGroupTraits.ts +++ b/lib/Traits/TraitsClasses/ArcGisFeatureServerCatalogGroupTraits.ts @@ -1,9 +1,22 @@ +import { traitClass } from "../Trait"; import mixTraits from "../mixTraits"; import CatalogMemberTraits from "./CatalogMemberTraits"; import GroupTraits from "./GroupTraits"; import LegendOwnerTraits from "./LegendOwnerTraits"; import UrlTraits from "./UrlTraits"; +@traitClass({ + description: `Creates a group that has individual ESRI WFS layers in the given URL as members. + + Note: To exclude unwanted layers, specify their names in property excludeMembers.`, + example: { + url: "https://services7.arcgis.com/fVJQ0uhT9L4zp35f/arcgis/rest/services/ActivityArea_gdb/FeatureServer", + type: "esri-featureServer-group", + excludeMembers: ["BCC SHWEP"], + name: "Activity Area", + id: "some id" + } +}) export default class ArcGisFeatureServerCatalogGroupTraits extends mixTraits( GroupTraits, UrlTraits, diff --git a/lib/Traits/TraitsClasses/ArcGisFeatureServerCatalogItemTraits.ts b/lib/Traits/TraitsClasses/ArcGisFeatureServerCatalogItemTraits.ts index ad7fb3a26b4..48fee802991 100644 --- a/lib/Traits/TraitsClasses/ArcGisFeatureServerCatalogItemTraits.ts +++ b/lib/Traits/TraitsClasses/ArcGisFeatureServerCatalogItemTraits.ts @@ -1,4 +1,5 @@ import primitiveTrait from "../Decorators/primitiveTrait"; +import { traitClass } from "../Trait"; import mixTraits from "../mixTraits"; import CatalogMemberTraits from "./CatalogMemberTraits"; import { GeoJsonTraits } from "./GeoJsonTraits"; @@ -6,6 +7,17 @@ import LegendOwnerTraits from "./LegendOwnerTraits"; import MappableTraits from "./MappableTraits"; import UrlTraits from "./UrlTraits"; +@traitClass({ + description: `Creates a single item in the catalog from one ESRI WFS layer. + + Note: Must specify layer ID, e.g. /0, in the URL path.`, + example: { + url: "https://services5.arcgis.com/OvOcYIrJnM97ABBA/arcgis/rest/services/Australian_Public_Hospitals_WFL1/FeatureServer/0", + type: "esri-featureServer", + name: "Australian Public Hospitals", + id: "some id" + } +}) export default class ArcGisFeatureServerCatalogItemTraits extends mixTraits( UrlTraits, MappableTraits, diff --git a/lib/Traits/TraitsClasses/ArcGisMapServerCatalogGroupTraits.ts b/lib/Traits/TraitsClasses/ArcGisMapServerCatalogGroupTraits.ts index 986754cdf88..92054ec6400 100644 --- a/lib/Traits/TraitsClasses/ArcGisMapServerCatalogGroupTraits.ts +++ b/lib/Traits/TraitsClasses/ArcGisMapServerCatalogGroupTraits.ts @@ -1,11 +1,21 @@ import { JsonObject } from "../../Core/Json"; import anyTrait from "../Decorators/anyTrait"; +import { traitClass } from "../Trait"; import mixTraits from "../mixTraits"; import CatalogMemberTraits from "./CatalogMemberTraits"; import GroupTraits from "./GroupTraits"; import LegendOwnerTraits from "./LegendOwnerTraits"; import UrlTraits from "./UrlTraits"; +@traitClass({ + description: `Creates a group that has individual ESRI WMS layers in the given URL as members in the catalog.`, + example: { + type: "esri-mapServer-group", + name: "Catchment Scale Land Use", + id: "354db2f2", + url: "https://www.asris.csiro.au/arcgis/rest/services/abares/clum_50m_2018/MapServer" + } +}) export default class ArcGisMapServerCatalogGroupTraits extends mixTraits( GroupTraits, UrlTraits, diff --git a/lib/Traits/TraitsClasses/ArcGisMapServerCatalogItemTraits.ts b/lib/Traits/TraitsClasses/ArcGisMapServerCatalogItemTraits.ts index e58c22d3b13..340ec9bd9a7 100644 --- a/lib/Traits/TraitsClasses/ArcGisMapServerCatalogItemTraits.ts +++ b/lib/Traits/TraitsClasses/ArcGisMapServerCatalogItemTraits.ts @@ -1,6 +1,7 @@ import { JsonObject } from "../../Core/Json"; import anyTrait from "../Decorators/anyTrait"; import primitiveTrait from "../Decorators/primitiveTrait"; +import { traitClass } from "../Trait"; import mixTraits from "../mixTraits"; import CatalogMemberTraits from "./CatalogMemberTraits"; import DiscretelyTimeVaryingTraits from "./DiscretelyTimeVaryingTraits"; @@ -10,6 +11,16 @@ import LegendOwnerTraits from "./LegendOwnerTraits"; import { MinMaxLevelTraits } from "./MinMaxLevelTraits"; import UrlTraits from "./UrlTraits"; +@traitClass({ + description: `Creates a single item in the catalog from one or many ESRI WMS layers. + + Note: The following example does not specify layers property therefore will present all layers in the given URL as single catalog item. To present specific layers only, add them in layers property, e.g. "layers": "AUS_GA_2500k_MiscLines,AUS_GA_2500k_Faults".`, + example: { + url: "https://services.ga.gov.au/gis/rest/services/GA_Surface_Geology/MapServer", + type: "esri-mapServer", + name: "Surface Geology" + } +}) export default class ArcGisMapServerCatalogItemTraits extends mixTraits( ImageryProviderTraits, LayerOrderingTraits, diff --git a/lib/Traits/TraitsClasses/ArcGisPortalCatalogGroupTraits.ts b/lib/Traits/TraitsClasses/ArcGisPortalCatalogGroupTraits.ts index ddfd3c298d3..2b6dc300b03 100644 --- a/lib/Traits/TraitsClasses/ArcGisPortalCatalogGroupTraits.ts +++ b/lib/Traits/TraitsClasses/ArcGisPortalCatalogGroupTraits.ts @@ -1,6 +1,7 @@ import { JsonObject } from "../../Core/Json"; import anyTrait from "../Decorators/anyTrait"; import primitiveTrait from "../Decorators/primitiveTrait"; +import { traitClass } from "../Trait"; import mixTraits from "../mixTraits"; import ArcGisPortalSharedTraits from "./ArcGisPortalSharedTraits"; import CatalogMemberTraits from "./CatalogMemberTraits"; @@ -8,6 +9,26 @@ import GroupTraits from "./GroupTraits"; import LegendOwnerTraits from "./LegendOwnerTraits"; import UrlTraits from "./UrlTraits"; +@traitClass({ + description: `Creates a group with members from ArcGIS server portal. + + Note: +
The following example will
+
  • Request datasets of specific types only.
  • +
  • Organise members in subgroups according to their categories.
  • +
  • Sort members according to their titles.
  • `, + example: { + url: "https://portal.spatial.nsw.gov.au/portal", + type: "arcgis-portal-group", + groupBy: "portalCategories", + name: "NSW Spatial Portal Categories", + searchParams: { + q: '(type:"Map Service" OR type:"WMS" OR type:"KML")', + sortField: "title" + }, + id: "some id" + } +}) export default class ArcGisPortalCatalogGroupTraits extends mixTraits( GroupTraits, UrlTraits, diff --git a/lib/Traits/TraitsClasses/ArcGisPortalItemTraits.ts b/lib/Traits/TraitsClasses/ArcGisPortalItemTraits.ts index 120c35a38fa..1a20b6f35cc 100644 --- a/lib/Traits/TraitsClasses/ArcGisPortalItemTraits.ts +++ b/lib/Traits/TraitsClasses/ArcGisPortalItemTraits.ts @@ -4,7 +4,21 @@ import MappableTraits from "./MappableTraits"; import mixTraits from "../mixTraits"; import primitiveTrait from "../Decorators/primitiveTrait"; import UrlTraits from "./UrlTraits"; +import { traitClass } from "../Trait"; +@traitClass({ + description: `Creates an item or group that referehces an item in ArcGIS portal. + Note: +
  • The itemId in the example is the referenced item's ID in the portal.
  • +
  • Not all referenced items can be added to the map. E.g., some types need conversions.
  • `, + example: { + type: "arcgis-portal-item", + itemId: "084c61c6dd404517bc2db69079ddec38", + name: "NSW Administrative Theme", + url: "https://portal.spatial.nsw.gov.au/portal", + id: "some id" + } +}) export default class ArcGisPortalItemTraits extends mixTraits( UrlTraits, MappableTraits,