diff --git a/404.html b/404.html index 222ab85a..a41cd76a 100644 --- a/404.html +++ b/404.html @@ -16,8 +16,8 @@ -
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
- +
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
+ \ No newline at end of file diff --git a/about/contact.html b/about/contact.html index 287c6865..d8241546 100644 --- a/about/contact.html +++ b/about/contact.html @@ -19,8 +19,8 @@ -
Skip to content

Contact

Please feel free to join our slack channel using the invitation link.

- +
Skip to content

Contact

Please feel free to join our slack channel using the invitation link.

+ \ No newline at end of file diff --git a/about/contributing.html b/about/contributing.html index e1d6c3c0..ad33ccf9 100644 --- a/about/contributing.html +++ b/about/contributing.html @@ -19,8 +19,8 @@ -
Skip to content

Contributing

Submission guidelines

Report a bug

Before creating an issue please make sure you have checked out the docs, you might want to also try searching Github. It's pretty likely someone has already asked a similar question.

Issues can be reported in the issue tracker.

Pull Requests

We love pull requests and we're continually working to make it as easy as possible for people to contribute.

We prefer small pull requests with minimal code changes. The smaller they are the easier they are to review and merge. A core team member will pick up your PR and review it as soon as they can. They may ask for changes or reject your pull request. This is not a reflection of you as an engineer or a person. Please accept feedback graciously as we will also try to be sensitive when providing it.

Although we generally accept many PRs they can be rejected for many reasons. We will be as transparent as possible but it may simply be that you do not have the same context or information regarding the roadmap that the core team members have. We value the time you take to put together any contributions so we pledge to always be respectful of that time and will try to be as open as possible so that you don't waste it.

Commit message guidelines

We follow the Conventional commits specifications which provides a set of rules to make commit messages more readable when looking through the project history. But also, we use the git commit messages to generate the change log.

Commit message format

The commit message should be structured as follows:

<type>: <subject> [optional `breaking`]

Where type must be one of the following:

  • build: changes that affect the build system (external dependencies)
  • ci: changes to our CI configuration files and scripts
  • chore: changes that affect the project structure
  • docs: changes that affect the documentation only
  • feat: a new feature
  • fix: a bug fix
  • perf: a code change that improves performance
  • refactor: a code change that neither fixes a bug nor adds a feature
  • revert: revert changes
  • style: changes that do not affect the meaning of the code (lint issues)
  • test: adding missing tests or correcting existing tests

Use the optional [ breaking ] keyword to declare a BREAKING CHANGE.

Examples

  • Commit message with description and breaking change in body
feat: allow provided config object to extend other configs [ breaking ]
  • Commit message with no body
docs: correct spelling in the contributing.md file
  • Commit message for a fix using an issue number.
fix: fix minor issue in code (#12)

Versioning guidelines

We rely on Semantic Versioning for versioning a release. Indeed, given a version number MAJOR.MINOR.PATCH, increment the:

  • MAJOR version when you make a major evolution leading to breaking changes,
  • MINOR version when you add functionality in a backwards-compatible manner
  • PATCH version when you make backwards-compatible bug fixes.

The command npm run release:<type>, where <type> is either patch, minor or major, helps you to do the release.

It performs the following task for you:

  • increase the package version number in the package.json file
  • generate the change log
  • create a tag accordingly in the git repository and push it

Contributor Code of Conduct

As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.

We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion.

Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team.

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.

This Code of Conduct is adapted from the Contributor Covenant, version 1.0.0, available at http://contributor-covenant.org/version/1/0/0/

- +
Skip to content

Contributing

Submission guidelines

Report a bug

Before creating an issue please make sure you have checked out the docs, you might want to also try searching Github. It's pretty likely someone has already asked a similar question.

Issues can be reported in the issue tracker.

Pull Requests

We love pull requests and we're continually working to make it as easy as possible for people to contribute.

We prefer small pull requests with minimal code changes. The smaller they are the easier they are to review and merge. A core team member will pick up your PR and review it as soon as they can. They may ask for changes or reject your pull request. This is not a reflection of you as an engineer or a person. Please accept feedback graciously as we will also try to be sensitive when providing it.

Although we generally accept many PRs they can be rejected for many reasons. We will be as transparent as possible but it may simply be that you do not have the same context or information regarding the roadmap that the core team members have. We value the time you take to put together any contributions so we pledge to always be respectful of that time and will try to be as open as possible so that you don't waste it.

Commit message guidelines

We follow the Conventional commits specifications which provides a set of rules to make commit messages more readable when looking through the project history. But also, we use the git commit messages to generate the change log.

Commit message format

The commit message should be structured as follows:

<type>: <subject> [optional `breaking`]

Where type must be one of the following:

  • build: changes that affect the build system (external dependencies)
  • ci: changes to our CI configuration files and scripts
  • chore: changes that affect the project structure
  • docs: changes that affect the documentation only
  • feat: a new feature
  • fix: a bug fix
  • perf: a code change that improves performance
  • refactor: a code change that neither fixes a bug nor adds a feature
  • revert: revert changes
  • style: changes that do not affect the meaning of the code (lint issues)
  • test: adding missing tests or correcting existing tests

Use the optional [ breaking ] keyword to declare a BREAKING CHANGE.

Examples

  • Commit message with description and breaking change in body
feat: allow provided config object to extend other configs [ breaking ]
  • Commit message with no body
docs: correct spelling in the contributing.md file
  • Commit message for a fix using an issue number.
fix: fix minor issue in code (#12)

Versioning guidelines

We rely on Semantic Versioning for versioning a release. Indeed, given a version number MAJOR.MINOR.PATCH, increment the:

  • MAJOR version when you make a major evolution leading to breaking changes,
  • MINOR version when you add functionality in a backwards-compatible manner
  • PATCH version when you make backwards-compatible bug fixes.

The command npm run release:<type>, where <type> is either patch, minor or major, helps you to do the release.

It performs the following task for you:

  • increase the package version number in the package.json file
  • generate the change log
  • create a tag accordingly in the git repository and push it

Contributor Code of Conduct

As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.

We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion.

Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team.

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.

This Code of Conduct is adapted from the Contributor Covenant, version 1.0.0, available at http://contributor-covenant.org/version/1/0/0/

+ \ No newline at end of file diff --git a/about/introduction.html b/about/introduction.html index 2b0f6a66..b64c8720 100644 --- a/about/introduction.html +++ b/about/introduction.html @@ -19,8 +19,8 @@ -
Skip to content

Introduction

Kano is a powerful application that can be used to visualize any time-varying geospatial data, notably served by Kargo.

kano-screenshot

TIP

This application is based on the Kalisio Development Kit.

- +
Skip to content

Introduction

Kano is a powerful application that can be used to visualize any time-varying geospatial data, notably served by Kargo.

kano-screenshot

TIP

This application is based on the Kalisio Development Kit.

+ \ No newline at end of file diff --git a/about/license.html b/about/license.html index d67b8a7e..22f1f483 100644 --- a/about/license.html +++ b/about/license.html @@ -19,8 +19,8 @@ -
Skip to content

License

MIT License

Copyright (c) 2017-202x Kalisio

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- +
Skip to content

License

MIT License

Copyright (c) 2017-202x Kalisio

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ \ No newline at end of file diff --git a/about/roadmap.html b/about/roadmap.html index b4a858c0..e85f33ad 100644 --- a/about/roadmap.html +++ b/about/roadmap.html @@ -19,8 +19,8 @@ -
Skip to content

Roadmap

The roadmap is available on Github.

Milestones

The milestones are available on Github

Release Notes

The changelog is available in Github

- +
Skip to content

Roadmap

The roadmap is available on Github.

Milestones

The milestones are available on Github

Release Notes

The changelog is available in Github

+ \ No newline at end of file diff --git a/assets/history.md.QklJ8FMD.js b/assets/history.md.QklJ8FMD.js new file mode 100644 index 00000000..72450526 --- /dev/null +++ b/assets/history.md.QklJ8FMD.js @@ -0,0 +1 @@ +import{_ as e,c as r,o as t,V as a}from"./chunks/framework.J61Sinzt.js";const m=JSON.parse('{"title":"Changelog","description":"","frontmatter":{"sidebarDepth":3},"headers":[],"relativePath":"history.md","filePath":"history.md"}'),o={name:"history.md"},n=a('

Changelog

v2.2.0 - March 1st, 2024

Major enhancements:
👉 Enhanced layer styling capabilities,
👉 More ergonomic timeline component,
👉 Enhanced location components,
👉 Enhanced image capture component,
👉 Allow to assign multiple legends to a layer,
👉 Legend can now display information related to layer variables,
👉 Legend can now display external OWS legends,
👉 Emit catalog/feature service events for iframe integration,
👉 Emit disconnect/reconnect events for iframe integration,
👉 Allow to show/hide window controls,
👉 Add a better map scale,
👉 Added mapping projects management.

Cartographic data enhancements:
👉 Enhanced rendering and legend of various data layer.

Major bug fixes:
✅ Search tool does not zoom when the result is not a point feature,
✅ Mapillary marker is not moving when navigating with the viewer,
✅ GSMap cloud cover layer not working anymore.

Major breaking changes for customized versions or iframe integration use cases:
💥 changed layer variable unit from units to unit,
💥 local storage keys now automatically prefixed by configured application name in kebab case,
💥 simple style cannot be defined anymore in feature style property,
💥 engine/layer style definition (details).

More details on GitHub for Kano and KDK.

v2.1.0 - Septembre 25th, 2023

Major enhancements:
👉 Migrated documentation to VitePress,
👉 Progressive Web App,
👉 Enhanced time input components,
👉 Enhanced window behavior with size policy and responsive controls,
👉 Real-time user data layer update for collaborative editing.

Major bug fixes:
✅ Sending updateLayer command in iframe API closes feature edition,
✅ Layer filters not correctly updated on tiled layers,
✅ Favorite view items do not expand in catalog,
✅ Bug report button not available in about dialog.

More details on GitHub for Kano and KDK.

v2.0.0 - June 29th, 2023

Major enhancements:
👉 Bumped NodeJS to v16 and Feathers to v5,
👉 Bumped Quasar to v2 and VueJS to v3,
👉 Allow to create specific views from a layer,
👉 Redirect to target URL once connected,
👉 Provided a legend component.

Cartographic data enhancements:
👉 RTE generation data layer linked to new krawler job,
👉 ICOS atmosphjeric data layer linked to new krawler job.

Major bug fixes:
✅ Token without user ID not valid anymore to be used by iframe.

Major breaking changes for customized versions or iframe integration use cases:
💥 renamed configuration/layers/categories files to .cjs,
💥 backend configuration should comply with Feathers v5, e.g. authentication,
💥 need to prefix layout path by layout. in frontend configuration,
💥 default mode required for each layout element with content having multiple keys,
💥 window.widgets frontend configuration path changed to windows.top.widgets,
💥 static files moved from src/statics to public,
💥 internal event bus refactoring (on/off() replaced $on/off(), added $engineEvents for map engine events).

Check NodeJS documentation for problems related to ECMAScript modules. Check Quasar upgrade guide for problems related to Quasar v2/Vue v3.

More details on GitHub for Kano and KDK.

v1.6.0 - August 30th, 2022

Major enhancements:
👉 Catalog layout now includes favorite views,
👉 Shapefile import is now supported,
👉 Catalog with more default categories.

Cartographic data enhancements:
👉 METAR data layer linked to new krawler job,
👉 Little Alert Box data layer.

Major bug fixes:
✅ Geodesic circles cut when exceeding the viewport,
✅ Some measure layers do not work anymore in 3D mode,
✅ Forbid the window to pop out of the screen when moving or scaling it,
✅ Memory leak in gradient path,
✅ Real-time layers not correctly updated when time changes,
✅ Impossible to remove min/max zoom levels once edited in the style,
✅ Hiding/Showing a layer does not take into account configuration changes,
✅ Popup active by default in layer style editor,
✅ Editing the style of a web service layer (eg WMTS) makes it disappear.

Major breaking changes for customized versions or iframe integration use cases:
💥 Default catalog categories moved from frontend to backend configuration.

More details on GitHub for Kano and KDK.

',24),i=[n];function s(l,d,c,h,g,b){return t(),r("div",null,i)}const u=e(o,[["render",s]]);export{m as __pageData,u as default}; diff --git a/assets/history.md.QklJ8FMD.lean.js b/assets/history.md.QklJ8FMD.lean.js new file mode 100644 index 00000000..dea0ec29 --- /dev/null +++ b/assets/history.md.QklJ8FMD.lean.js @@ -0,0 +1 @@ +import{_ as e,c as r,o as t,V as a}from"./chunks/framework.J61Sinzt.js";const m=JSON.parse('{"title":"Changelog","description":"","frontmatter":{"sidebarDepth":3},"headers":[],"relativePath":"history.md","filePath":"history.md"}'),o={name:"history.md"},n=a("",24),i=[n];function s(l,d,c,h,g,b){return t(),r("div",null,i)}const u=e(o,[["render",s]]);export{m as __pageData,u as default}; diff --git a/guides/advanced-usage.html b/guides/advanced-usage.html index 953f50d1..ce0100ef 100644 --- a/guides/advanced-usage.html +++ b/guides/advanced-usage.html @@ -19,7 +19,7 @@ -
Skip to content

Advanced usage

Integrating Kano

To avoid the burden of developing a completely new application for every mapping needs you might have, Kano provides you with the capabilities to be integrated in your web application as an <iframe/> like this:

This iframe offers an API so that you can dynamically control the behaviour and the content of Kano, as well as how the embedding application reacts in real-time to changes in Kano, a.k.a micro frontend. You can read more about the underlying concepts in this article.

The API is a subset of the internal Kano components and uses post-robot to

  1. select which is the target component
    • event name = map for 2D map and globe for 3D globe
  2. transform external method calls to internal calls using the following event payload
    • the command property is the mixin method name (e.g. isLayerVisible)
    • the args property is the expected method arguments (e.g. a string, an object or an array when multiple arguments are required)
  3. retrieve internal method call result externally
    • event response data is the method result object
  4. retrieve internal property externally
    • event response data is the returned property value

TIP

Event messaging using post-robot is always async because it relies on the postMessage API under-the-hood.

WARNING

In-memory data exchange is Json and more specifically GeoJson for map features. Do not try to inject functions or "complex" objects (e.g. class instances) in event payloads.

WARNING

You must use the same version of the post-robot library as the one used by Kano. For now, Kano relies on the 10.0.42 version of post-robot.

In addition to the events used to access mixin methods there are a couple of dedicated events:

  • kano-ready: to be listened by integrating application to know when the Kano application has been initialized in the iframe so that you can safely use the iframe API
  • api-ready: to be listened by integrating application to know when the Kano backend connection has been initialized in the iframe so that you can safely call the backend API
  • setLocalStorage: listened by Kano to set key/value pairs (provided as event data payload) in its local storage, typically useful to inject access tokens
  • setConfiguration: listened by Kano to set key/value pairs to override its configuration, typically useful to configure available components or actions
  • kano-login: to be listened by integrating application to know when the user has been authenticated in the Kano application
  • kano-logout: to be listened by integrating application to know when the user has been unauthenticated in the Kano application
  • map-ready: to be listened by integrating application to know when the 2D map component has been initialized in the Kano application so that you can safely use the underlying API
  • map-destroyed: to be listened by integrating application to know when the 2D map component has been destroyed in the Kano application before switching to another route
  • globe-ready: to be listened by integrating application to know when the 3D globe component has been initialized in the Kano application so that you can safely use the underlying API
  • globe-destroyed: to be listened by integrating application to know when the 3D globe component has been destroyed in the Kano application before switching to another route
  • layer-added: to be listened by integrating application to know whenever a new layer has been added to the 2D/3D map (from the internal catalog or externally)
  • layer-removed: to be listened by integrating application to know whenever a layer has been removed from the 2D/3D map
  • layer-shown: to be listened by integrating application to know whenever a layer has been shown in the 2D/3D map
  • layer-hidden: to be listened by integrating application to know whenever a new layer has been hidden in the 2D/3D map
  • click: to be listened by integrating application to know whenever a feature has been clicked on a layer in the 2D/3D map, will provide the feature and layer (descriptor) as data payload properties

WARNING

You should add a listener for each of the above events in your application, even if you don't need to do any processing, otherwise the post-robot library will raise a warning.

Here is a simple code sample:

html
  <script src="https://cdn.jsdelivr.net/npm/post-robot@10.0.10/dist/post-robot.min.js"></script>
+    
Skip to content

Advanced usage

Integrating Kano

To avoid the burden of developing a completely new application for every mapping needs you might have, Kano provides you with the capabilities to be integrated in your web application as an <iframe/> like this:

This iframe offers an API so that you can dynamically control the behaviour and the content of Kano, as well as how the embedding application reacts in real-time to changes in Kano, a.k.a micro frontend. You can read more about the underlying concepts in this article.

The API is a subset of the internal Kano components and uses post-robot to

  1. select which is the target component
    • event name = map for 2D map and globe for 3D globe
  2. transform external method calls to internal calls using the following event payload
    • the command property is the mixin method name (e.g. isLayerVisible)
    • the args property is the expected method arguments (e.g. a string, an object or an array when multiple arguments are required)
  3. retrieve internal method call result externally
    • event response data is the method result object
  4. retrieve internal property externally
    • event response data is the returned property value

TIP

Event messaging using post-robot is always async because it relies on the postMessage API under-the-hood.

WARNING

In-memory data exchange is Json and more specifically GeoJson for map features. Do not try to inject functions or "complex" objects (e.g. class instances) in event payloads.

WARNING

You must use the same version of the post-robot library as the one used by Kano. For now, Kano relies on the 10.0.42 version of post-robot.

In addition to the events used to access mixin methods there are a couple of dedicated events:

  • kano-ready: to be listened by integrating application to know when the Kano application has been initialized in the iframe so that you can safely use the iframe API
  • api-ready: to be listened by integrating application to know when the Kano backend connection has been initialized in the iframe so that you can safely call the backend API
  • setLocalStorage: listened by Kano to set key/value pairs (provided as event data payload) in its local storage, typically useful to inject access tokens
  • setConfiguration: listened by Kano to set key/value pairs to override its configuration, typically useful to configure available components or actions
  • kano-login: to be listened by integrating application to know when the user has been authenticated in the Kano application
  • kano-logout: to be listened by integrating application to know when the user has been unauthenticated in the Kano application
  • map-ready: to be listened by integrating application to know when the 2D map component has been initialized in the Kano application so that you can safely use the underlying API
  • map-destroyed: to be listened by integrating application to know when the 2D map component has been destroyed in the Kano application before switching to another route
  • globe-ready: to be listened by integrating application to know when the 3D globe component has been initialized in the Kano application so that you can safely use the underlying API
  • globe-destroyed: to be listened by integrating application to know when the 3D globe component has been destroyed in the Kano application before switching to another route
  • layer-added: to be listened by integrating application to know whenever a new layer has been added to the 2D/3D map (from the internal catalog or externally)
  • layer-removed: to be listened by integrating application to know whenever a layer has been removed from the 2D/3D map
  • layer-shown: to be listened by integrating application to know whenever a layer has been shown in the 2D/3D map
  • layer-hidden: to be listened by integrating application to know whenever a new layer has been hidden in the 2D/3D map
  • click: to be listened by integrating application to know whenever a feature has been clicked on a layer in the 2D/3D map, will provide the feature and layer (descriptor) as data payload properties

WARNING

You should add a listener for each of the above events in your application, even if you don't need to do any processing, otherwise the post-robot library will raise a warning.

Here is a simple code sample:

html
  <script src="https://cdn.jsdelivr.net/npm/post-robot@10.0.10/dist/post-robot.min.js"></script>
   <iframe id="kano" title="Kano" allow="geolocation *" style="width: 1024px; height: 768px;" src="kano.kalisio.com">
 	<script>
 	  var kano = document.getElementById('kano').contentWindow
@@ -123,7 +123,7 @@
     ...
   }
 }
- + \ No newline at end of file diff --git a/guides/customizing-kano.html b/guides/customizing-kano.html index 3a3c92f5..baf50971 100644 --- a/guides/customizing-kano.html +++ b/guides/customizing-kano.html @@ -19,7 +19,7 @@ -
Skip to content

Customizing Kano

This section details different approaches to integrate your own data to your Kano instance. Although you can directly use the Kano UI to add your own data layers this section provide details to do this by configuration or programmatically. When added through the UI, the different layers will be visible in the My data tab of the catalog panel, while the default built-in layers will appear in the Catalog tab of the catalog panel. You can also manage the categories (i.e. catalog sections) hosting the layers from the UI or the configuration.

Although names and descriptions can be hard-coded in the target user language, Kano supports internationalization through a nested structure organized by locale like this:

js
{
+    
Skip to content

Customizing Kano

This section details different approaches to integrate your own data to your Kano instance. Although you can directly use the Kano UI to add your own data layers this section provide details to do this by configuration or programmatically. When added through the UI, the different layers will be visible in the My data tab of the catalog panel, while the default built-in layers will appear in the Catalog tab of the catalog panel. You can also manage the categories (i.e. catalog sections) hosting the layers from the UI or the configuration.

Although names and descriptions can be hard-coded in the target user language, Kano supports internationalization through a nested structure organized by locale like this:

js
{
 	name: 'Categories.POPULATION_LAYERS',
   i18n: {
     fr: { Categories: { POPULATION_LAYERS: 'Population' } },
@@ -515,7 +515,7 @@
      -d @stations-data.json https://your.kano.domain/api/sensors-stations
 curl -X POST -H "Authorization: Bearer %TOKEN%" -H "Content-Type: application/json" ^
      -d @observations-data.json https://your.kano.domain/api/sensors-observations

TIP

For testing purpose you can get a valid token from the local storage in the developer tool after logged into Kano.

Using the bottom timeline, navigate to a date/time with existing sensor data, you now should be able to see your sensor on the map, selecting it should open the value timeseries:

sensors layers

A data layer can contain multiple time-varying elements called variables. The features may contain additional properties, e.g. a status (OK/NOK), a name, etc. that can be used to customize the rendering, e.g. icon, color, tooltip, etc.

The main configuration options are the following:

  • the property that will be use to uniquely identify a station (i.e. ID)
  • the refresh rate of the data in the layer (used to automatically update the view every N seconds in Kano)
  • the life time of a measure, i.e. if no measure found within the range current time - life time the station is not considered to have performed any measure for current time
  • the list of the variables contained in the data with associated properties to ease timeseries display (unit, range, color, ...)

TIP

A layer can have no fixed stations but only measurements from sensors in order to display moving data

Customizing the catalog legend

To be completed

- + \ No newline at end of file diff --git a/guides/getting-started.html b/guides/getting-started.html index 2a10628e..3d57b97e 100644 --- a/guides/getting-started.html +++ b/guides/getting-started.html @@ -19,8 +19,8 @@ -
Skip to content

Getting Started

Kano comes with small tutorials (a.k.a. tours) that can be directly run on the application in order to understand how its internal components can be used. You will first have to connect to make everything works as expected.

Then, you can launch the main tutorial directly from the main menu through the following icon . Follow the step by step guide , go back if required and stop anytime as illustrated by the following figure:

tour

From the main tutorial you can open others tutorials dedicated to specific components (like e.g. the navigation bar) whenever you see the icon.

WARNING

Kano look and features are ever-evolving, moreover it can be configured according to your specific use case. As a consequence, your screen probably looks a little different than what you can read and see in this documentation but the key concepts remain the same.

The main menu allows to open the documentation, manage your settings and logout from Kano.

👉 Launch the main tutorial from the main menu then open the link to the main menu tutorial to get more details

Application bar

The application bar allows to quickly execute recurring actions:

  • switch from 2D (respectively 3D) activity to 3D (respectively 2D) activity,
  • center the view on your current location and display it,
  • seek for an address,
  • manage your favorite views,
  • tools to e.g. display the coordinates of a location,
  • switch to fullscreen mode.

👉 Launch the main tutorial from the main menu then open the link to the navigation bar tutorial to get more details

Catalog

The catalog allows to manage the layers displayed on your view. You can show/hide a layer by selecting it in the relevant category.

WARNING

The data of some layers are only visible starting from a given scale if there is too much data to ensure a readable and smvisualisation.

In this case the layer will be disable until you reach the required scale on the map (zoom in or zoom to the layer to do so).

Using the menu on a layer you can access available actions for this layer.

👉 Launch the main tutorial from the main menu then open the link to the catalog tutorial to get more details

Timeline

The timeline allows to quickly execute actions related to the time of the displayed data. Stick to real-time or go forward/backward in time as you wish.

👉 Launch the main tutorial from the main menu then open the link to the timeline tutorial to get more details

Floating action button

Using the FAB at the bottom right corner you can:

  • Create a new blank data layer:
    • By connecting to web mapping services using OGC standards (WMS, WFS, TMS, WMTS).
    • By locating and drawing the underlying entities. You can add the data schema from a JSON schema file in order to edit the meatadata (i.e. properties) of your entities.
    • By import existing data from a GeoJSON file.
  • Probe weather forecast data from active prediction models by selecting a specific location on the map.

👉 Launch the main tutorial from the main menu then open the link to the FAB tutorial to get more details

Contextual menu

A right-click on a feature of the map will display a contextual menu if some actions are available for the target element like editing the properties of a user-defined feature or remove it.

Layer actions

Depending on the layer different actions are available. The most common action is to zoom to the layer in order to fit the view on the available data. If the layer is disabled at high scales this action will set the current scale of the map so that data will start be visible if the layer is shown.

More actions are available on user-defined feature layers:

  • save the layer (i.e. make it persistent),
  • edit layer properties like its name or description,
  • edit layer features (metadata and geometry),
  • edit display style,
  • filter data according to metadata,
  • display raw data,
  • create charts,
  • delete the layer.
- +
Skip to content

Getting Started

Kano comes with small tutorials (a.k.a. tours) that can be directly run on the application in order to understand how its internal components can be used. You will first have to connect to make everything works as expected.

Then, you can launch the main tutorial directly from the main menu through the following icon . Follow the step by step guide , go back if required and stop anytime as illustrated by the following figure:

tour

From the main tutorial you can open others tutorials dedicated to specific components (like e.g. the navigation bar) whenever you see the icon.

WARNING

Kano look and features are ever-evolving, moreover it can be configured according to your specific use case. As a consequence, your screen probably looks a little different than what you can read and see in this documentation but the key concepts remain the same.

The main menu allows to open the documentation, manage your settings and logout from Kano.

👉 Launch the main tutorial from the main menu then open the link to the main menu tutorial to get more details

Application bar

The application bar allows to quickly execute recurring actions:

  • switch from 2D (respectively 3D) activity to 3D (respectively 2D) activity,
  • center the view on your current location and display it,
  • seek for an address,
  • manage your favorite views,
  • tools to e.g. display the coordinates of a location,
  • switch to fullscreen mode.

👉 Launch the main tutorial from the main menu then open the link to the navigation bar tutorial to get more details

Catalog

The catalog allows to manage the layers displayed on your view. You can show/hide a layer by selecting it in the relevant category.

WARNING

The data of some layers are only visible starting from a given scale if there is too much data to ensure a readable and smvisualisation.

In this case the layer will be disable until you reach the required scale on the map (zoom in or zoom to the layer to do so).

Using the menu on a layer you can access available actions for this layer.

👉 Launch the main tutorial from the main menu then open the link to the catalog tutorial to get more details

Timeline

The timeline allows to quickly execute actions related to the time of the displayed data. Stick to real-time or go forward/backward in time as you wish.

👉 Launch the main tutorial from the main menu then open the link to the timeline tutorial to get more details

Floating action button

Using the FAB at the bottom right corner you can:

  • Create a new blank data layer:
    • By connecting to web mapping services using OGC standards (WMS, WFS, TMS, WMTS).
    • By locating and drawing the underlying entities. You can add the data schema from a JSON schema file in order to edit the meatadata (i.e. properties) of your entities.
    • By import existing data from a GeoJSON file.
  • Probe weather forecast data from active prediction models by selecting a specific location on the map.

👉 Launch the main tutorial from the main menu then open the link to the FAB tutorial to get more details

Contextual menu

A right-click on a feature of the map will display a contextual menu if some actions are available for the target element like editing the properties of a user-defined feature or remove it.

Layer actions

Depending on the layer different actions are available. The most common action is to zoom to the layer in order to fit the view on the available data. If the layer is disabled at high scales this action will set the current scale of the map so that data will start be visible if the layer is shown.

More actions are available on user-defined feature layers:

  • save the layer (i.e. make it persistent),
  • edit layer properties like its name or description,
  • edit layer features (metadata and geometry),
  • edit display style,
  • filter data according to metadata,
  • display raw data,
  • create charts,
  • delete the layer.
+ \ No newline at end of file diff --git a/guides/installing-kano.html b/guides/installing-kano.html index a3ba8646..4fdf94f0 100644 --- a/guides/installing-kano.html +++ b/guides/installing-kano.html @@ -19,7 +19,7 @@ -
Skip to content

Installing Kano

Using Docker

WARNING

This requires you to install Docker, the world’s leading software container platform.

We provide Docker images on the Docker Hub to ease deploying your own instance. To run correctly it has to be linked with a standard MongoDB container for the database. Although it's possible to directly run Docker commands we provide you with docker-compose files to ease deployment, in addition to minimalist configuration files. These files will be detailed in the following sections and are available in the public folder of the documentation.

Jump into the folder with the docker-compose and configuration files, the following commands should do the job:

bash
// Run the MongoDB and Kano containers
+    
Skip to content

Installing Kano

Using Docker

WARNING

This requires you to install Docker, the world’s leading software container platform.

We provide Docker images on the Docker Hub to ease deploying your own instance. To run correctly it has to be linked with a standard MongoDB container for the database. Although it's possible to directly run Docker commands we provide you with docker-compose files to ease deployment, in addition to minimalist configuration files. These files will be detailed in the following sections and are available in the public folder of the documentation.

Jump into the folder with the docker-compose and configuration files, the following commands should do the job:

bash
// Run the MongoDB and Kano containers
 docker-compose up -d
 
 // Stop the MongoDB and Kano containers
@@ -255,7 +255,7 @@
 // Now you can launch the jobs manually using the krawler CLI
 krawler ./jobfile-hydro-stations.js
 krawler ./jobfile-hydro-observations.js
- + \ No newline at end of file diff --git a/guides/installing-services.html b/guides/installing-services.html index 400378e6..b0ed9f03 100644 --- a/guides/installing-services.html +++ b/guides/installing-services.html @@ -19,7 +19,7 @@ -
Skip to content

Installing services

Using Kargo

You can easily connect Kano with geospatial services deployed by Kargo through its API gateway. First add the Kano application/consumer in the gateway configuration by generating a UUID:

users: {
+    
Skip to content

Installing services

Using Kargo

You can easily connect Kano with geospatial services deployed by Kargo through its API gateway. First add the Kano application/consumer in the gateway configuration by generating a UUID:

users: {
   my_user: {
     'kano': {
       scopes: ['wms', 'wmts', 'tms', 'wfs', 'wcs', 'k2'],
@@ -113,7 +113,7 @@
 export PORT="8084"
 export NODE_OPTIONS="--inspect-port=9234"
 yarn dev

Add k2

Coming soon

- + \ No newline at end of file diff --git a/guides/kano-api.html b/guides/kano-api.html index a7da0423..9a68acce 100644 --- a/guides/kano-api.html +++ b/guides/kano-api.html @@ -19,7 +19,7 @@ -
Skip to content

Using the Kano API

Description

Kano exposes an API endpoint that can be used to query data stored in it's underlying MongoDB database. The API will return JSON documents when queried. The endpoint is located on $KANO_ROOT_URL/api/

What's available

This depends on which layers are declared in your Kano configuration. For each layer declaring a set of features services, the api will expose the service's data through an URL formed by the API endpoint slash the service name.

Example

If your Kano instance is exposed through https://kano.foo.xyz then the api is available on https://kano.foo.xyz/api. If for example you have the hubeau hydro layer enabled (which instanciate both a hubeau-hydro-stations and a hubeau-hydro-observations features services), then the api will expose it's data on https://kano.foo.xyz/api/hubeau-hydro-stations and https://kano.foo.xyz/api/hubeau-hydro-observations

Authentication

In order to access the API, clients must authenticate themselves. We use JWT tokens to authenticate access to Kano. Those can be added as an HTTP query parameter, using jwt=$your_token or can be passed through the Authorization HTTP header, using the Bearer scheme.

Generate a JWT token

Kano supports stateless tokens, i.e. tokens not associated to a user, either to access the backend API or to automatically login when using it through an iframe. To generate a token you can use https://jwt.io with your app secret and the default header:

json
{
+    
Skip to content

Using the Kano API

Description

Kano exposes an API endpoint that can be used to query data stored in it's underlying MongoDB database. The API will return JSON documents when queried. The endpoint is located on $KANO_ROOT_URL/api/

What's available

This depends on which layers are declared in your Kano configuration. For each layer declaring a set of features services, the api will expose the service's data through an URL formed by the API endpoint slash the service name.

Example

If your Kano instance is exposed through https://kano.foo.xyz then the api is available on https://kano.foo.xyz/api. If for example you have the hubeau hydro layer enabled (which instanciate both a hubeau-hydro-stations and a hubeau-hydro-observations features services), then the api will expose it's data on https://kano.foo.xyz/api/hubeau-hydro-stations and https://kano.foo.xyz/api/hubeau-hydro-observations

Authentication

In order to access the API, clients must authenticate themselves. We use JWT tokens to authenticate access to Kano. Those can be added as an HTTP query parameter, using jwt=$your_token or can be passed through the Authorization HTTP header, using the Bearer scheme.

Generate a JWT token

Kano supports stateless tokens, i.e. tokens not associated to a user, either to access the backend API or to automatically login when using it through an iframe. To generate a token you can use https://jwt.io with your app secret and the default header:

json
{
   "alg": "HS256",
   "typ": "JWT"
 }

Your payload should at least look like this:

json
{
@@ -138,7 +138,7 @@
     }
   ]
 }

Use case example

We used the Kano API to expose French nuclear power production data to a set of Grafana dashboards.

We first developed a Krawler job whose task is to scrap power production data and to push it into Kano's backing MongoDB database. On Kano's side, we added a layer declaring a feature service pointing on the database collections the Krawler job was populating. From that time, nuclear power production data was available for display in Kano. Here's what it looks like :

Nucler power production data in Kano

Once the collections started being populated, we looked for ways to connect Grafana to Kano's API endpoint. For this we used the Infinity Grafana datasource plugin allowing us to use it's JSON scrapping capabilities to feed Grafana. We created a JWT token for the datasource to be able to reach Kano's API. After creating dashboards and looking up some docs, we ended up with a set of synthetic dashboards:

Nuclear power production overview in GrafanaNuclear power production detail in Grafana

Overall, here's the architecture of the whole solution :

Whole use case architecture

- + \ No newline at end of file diff --git a/guides/understanding-kano.html b/guides/understanding-kano.html index f51c2865..1b14833f 100644 --- a/guides/understanding-kano.html +++ b/guides/understanding-kano.html @@ -19,8 +19,8 @@ -
Skip to content

Understanding Kano

Kano is a powerful geospatial visualizer supporting advanced visualization capabilities in 2D and 3D thanks to hardware acceleration with WebGL technology. Driven by today's most advanced web technologies, it also enables tracking your geospatial assets in real-time.

Although Kano is a web application for end-users, it has also been designed to be integrated in third-party business applications and customized by developers (check out advanced usage). Using a single and simple API, Kano provides developers with the capability to easily develop 2D and 3D geospatial applications (check out the API reference). Last but not least, Kano comes with a built-in configuration for a set of geospatial data (check out installation guide). However, you can complete it with your own spatial data.

Key concepts

Here is a quick rundown of the key concepts to handle when you're just getting started with Kano or geographic information system (GIS). In a nutshell, like any other GIS tool, Kano can be used to map, analyze, and assess real-world problems based on data, which is spatial or geographical in nature.

To achieve this, Kano is composed of two main activities (i.e. entry point for interacting with the user on a given type of objects):

  • a 2D activity to visualise and interact with data on a standard paperless map in 2D,
  • a 3D activity to visualise data and interact with on a virtual globe in 3D.

The view of each activity can contain a basemap (i.e. a background context), a set of data layers (i.e. business specific data), an extent (i.e. the part of the Earth currently on the screen), and navigation tools to pan and zoom. A layer specifies how a geographic dataset is portrayed on the map or the globe. The final rendering supporting your use case can usually be assembled by adding a serie of layers.

A feature layer is a grouping of similar geographic elements, for example, buildings, cities, roads, earthquake epicenters, etc. Features can be points, lines, or polygons (i.e. vector data). Feature layers are most appropriate for visualizing your own data on top of your basemaps. Using Kano, you can view, save, edit and analyze your own features and their attributes. Moreover, you can include interactive pop-up windows with information about the features. Raster data, most commonly found in remotely sensed data, topographic data, satellite imagery, and aerial imagery, can also be visualized. For this, Kano can leverage OGC standards that use the internet to view, edit, manage and share geospatial data.

Kano manages both space and time information in order to visualize time-varying geospatial phenomena: tracking of moving objects, history of measures taken by a sensor, weather prediction over time, etc. When a layer displays a time-varying dataset you are able to navigate back and forward in time using a timeline to see the data at your requested date/time.

Global overview

The following figure depicts the default 2D activity and the main application components:

Components

TIP

The 3D view is pretty similar to the 2D activity except that some feature might not be yet available.

Each component can be shown/hidden through a handle on the different side of the view:

  • at the top to open the application bar,
  • at the bottom to open the timeline,
  • on the left to open the side/main menu,
  • on the right to open the catalog.

In addition, a floating action button is available in the bottom-right corner to perform some actions.

Check out now our quickstart guide for more details.

- +
Skip to content

Understanding Kano

Kano is a powerful geospatial visualizer supporting advanced visualization capabilities in 2D and 3D thanks to hardware acceleration with WebGL technology. Driven by today's most advanced web technologies, it also enables tracking your geospatial assets in real-time.

Although Kano is a web application for end-users, it has also been designed to be integrated in third-party business applications and customized by developers (check out advanced usage). Using a single and simple API, Kano provides developers with the capability to easily develop 2D and 3D geospatial applications (check out the API reference). Last but not least, Kano comes with a built-in configuration for a set of geospatial data (check out installation guide). However, you can complete it with your own spatial data.

Key concepts

Here is a quick rundown of the key concepts to handle when you're just getting started with Kano or geographic information system (GIS). In a nutshell, like any other GIS tool, Kano can be used to map, analyze, and assess real-world problems based on data, which is spatial or geographical in nature.

To achieve this, Kano is composed of two main activities (i.e. entry point for interacting with the user on a given type of objects):

  • a 2D activity to visualise and interact with data on a standard paperless map in 2D,
  • a 3D activity to visualise data and interact with on a virtual globe in 3D.

The view of each activity can contain a basemap (i.e. a background context), a set of data layers (i.e. business specific data), an extent (i.e. the part of the Earth currently on the screen), and navigation tools to pan and zoom. A layer specifies how a geographic dataset is portrayed on the map or the globe. The final rendering supporting your use case can usually be assembled by adding a serie of layers.

A feature layer is a grouping of similar geographic elements, for example, buildings, cities, roads, earthquake epicenters, etc. Features can be points, lines, or polygons (i.e. vector data). Feature layers are most appropriate for visualizing your own data on top of your basemaps. Using Kano, you can view, save, edit and analyze your own features and their attributes. Moreover, you can include interactive pop-up windows with information about the features. Raster data, most commonly found in remotely sensed data, topographic data, satellite imagery, and aerial imagery, can also be visualized. For this, Kano can leverage OGC standards that use the internet to view, edit, manage and share geospatial data.

Kano manages both space and time information in order to visualize time-varying geospatial phenomena: tracking of moving objects, history of measures taken by a sensor, weather prediction over time, etc. When a layer displays a time-varying dataset you are able to navigate back and forward in time using a timeline to see the data at your requested date/time.

Global overview

The following figure depicts the default 2D activity and the main application components:

Components

TIP

The 3D view is pretty similar to the 2D activity except that some feature might not be yet available.

Each component can be shown/hidden through a handle on the different side of the view:

  • at the top to open the application bar,
  • at the bottom to open the timeline,
  • on the left to open the side/main menu,
  • on the right to open the catalog.

In addition, a floating action button is available in the bottom-right corner to perform some actions.

Check out now our quickstart guide for more details.

+ \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index 19d57122..38f65393 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"about_roadmap.md":"Tsa-l91W","about_contributing.md":"Q-A41HE2","about_introduction.md":"ZchEHfVq","guides_understanding-kano.md":"IWOf-sHQ","index.md":"Xmx78NTg","guides_customizing-kano.md":"8nbTGQ9l","guides_getting-started.md":"2GOoH2nF","guides_advanced-usage.md":"8soSxmIo","guides_installing-kano.md":"hypdee-x","about_license.md":"qdb0yiyt","reference_api.md":"wWmT5Fzy","guides_kano-api.md":"WjHbeTHk","guides_installing-services.md":"dsJfA9g8","about_contact.md":"MLWlmPcp","reference_configuration.md":"1lzXteaM"} +{"about_introduction.md":"ZchEHfVq","guides_understanding-kano.md":"IWOf-sHQ","history.md":"QklJ8FMD","index.md":"Xmx78NTg","about_license.md":"qdb0yiyt","about_roadmap.md":"Tsa-l91W","reference_configuration.md":"1lzXteaM","reference_api.md":"wWmT5Fzy","guides_advanced-usage.md":"8soSxmIo","guides_installing-services.md":"dsJfA9g8","guides_kano-api.md":"WjHbeTHk","guides_installing-kano.md":"hypdee-x","guides_customizing-kano.md":"8nbTGQ9l","guides_getting-started.md":"2GOoH2nF","about_contributing.md":"Q-A41HE2","about_contact.md":"MLWlmPcp"} diff --git a/history.html b/history.html new file mode 100644 index 00000000..9f5874aa --- /dev/null +++ b/history.html @@ -0,0 +1,26 @@ + + + + + + Changelog | Kano + + + + + + + + + + + + + + + +
Skip to content

Changelog

v2.2.0 - March 1st, 2024

Major enhancements:
👉 Enhanced layer styling capabilities,
👉 More ergonomic timeline component,
👉 Enhanced location components,
👉 Enhanced image capture component,
👉 Allow to assign multiple legends to a layer,
👉 Legend can now display information related to layer variables,
👉 Legend can now display external OWS legends,
👉 Emit catalog/feature service events for iframe integration,
👉 Emit disconnect/reconnect events for iframe integration,
👉 Allow to show/hide window controls,
👉 Add a better map scale,
👉 Added mapping projects management.

Cartographic data enhancements:
👉 Enhanced rendering and legend of various data layer.

Major bug fixes:
✅ Search tool does not zoom when the result is not a point feature,
✅ Mapillary marker is not moving when navigating with the viewer,
✅ GSMap cloud cover layer not working anymore.

Major breaking changes for customized versions or iframe integration use cases:
💥 changed layer variable unit from units to unit,
💥 local storage keys now automatically prefixed by configured application name in kebab case,
💥 simple style cannot be defined anymore in feature style property,
💥 engine/layer style definition (details).

More details on GitHub for Kano and KDK.

v2.1.0 - Septembre 25th, 2023

Major enhancements:
👉 Migrated documentation to VitePress,
👉 Progressive Web App,
👉 Enhanced time input components,
👉 Enhanced window behavior with size policy and responsive controls,
👉 Real-time user data layer update for collaborative editing.

Major bug fixes:
✅ Sending updateLayer command in iframe API closes feature edition,
✅ Layer filters not correctly updated on tiled layers,
✅ Favorite view items do not expand in catalog,
✅ Bug report button not available in about dialog.

More details on GitHub for Kano and KDK.

v2.0.0 - June 29th, 2023

Major enhancements:
👉 Bumped NodeJS to v16 and Feathers to v5,
👉 Bumped Quasar to v2 and VueJS to v3,
👉 Allow to create specific views from a layer,
👉 Redirect to target URL once connected,
👉 Provided a legend component.

Cartographic data enhancements:
👉 RTE generation data layer linked to new krawler job,
👉 ICOS atmosphjeric data layer linked to new krawler job.

Major bug fixes:
✅ Token without user ID not valid anymore to be used by iframe.

Major breaking changes for customized versions or iframe integration use cases:
💥 renamed configuration/layers/categories files to .cjs,
💥 backend configuration should comply with Feathers v5, e.g. authentication,
💥 need to prefix layout path by layout. in frontend configuration,
💥 default mode required for each layout element with content having multiple keys,
💥 window.widgets frontend configuration path changed to windows.top.widgets,
💥 static files moved from src/statics to public,
💥 internal event bus refactoring (on/off() replaced $on/off(), added $engineEvents for map engine events).

Check NodeJS documentation for problems related to ECMAScript modules. Check Quasar upgrade guide for problems related to Quasar v2/Vue v3.

More details on GitHub for Kano and KDK.

v1.6.0 - August 30th, 2022

Major enhancements:
👉 Catalog layout now includes favorite views,
👉 Shapefile import is now supported,
👉 Catalog with more default categories.

Cartographic data enhancements:
👉 METAR data layer linked to new krawler job,
👉 Little Alert Box data layer.

Major bug fixes:
✅ Geodesic circles cut when exceeding the viewport,
✅ Some measure layers do not work anymore in 3D mode,
✅ Forbid the window to pop out of the screen when moving or scaling it,
✅ Memory leak in gradient path,
✅ Real-time layers not correctly updated when time changes,
✅ Impossible to remove min/max zoom levels once edited in the style,
✅ Hiding/Showing a layer does not take into account configuration changes,
✅ Popup active by default in layer style editor,
✅ Editing the style of a web service layer (eg WMTS) makes it disappear.

Major breaking changes for customized versions or iframe integration use cases:
💥 Default catalog categories moved from frontend to backend configuration.

More details on GitHub for Kano and KDK.

+ + + + \ No newline at end of file diff --git a/index.html b/index.html index 4c92ecf0..ba72242c 100644 --- a/index.html +++ b/index.html @@ -19,8 +19,8 @@ -
Skip to content

Kano

A powerful real-time Geovisualizer

kalisio-kano
- +
Skip to content

Kano

A powerful real-time Geovisualizer

kalisio-kano
+ \ No newline at end of file diff --git a/reference/api.html b/reference/api.html index 2fd53df9..3b3c8810 100644 --- a/reference/api.html +++ b/reference/api.html @@ -19,8 +19,8 @@ -
Skip to content

Backend API

The externally exposed API of the internal Kano services comes from the one provided by the KDK:

Frontend API

The externally exposed API of the internal Kano components (2D map and 3D globe) comes from the one provided by the KDK:

Similarly, most of the internal mapping components come from the KDK.

- +
Skip to content

Backend API

The externally exposed API of the internal Kano services comes from the one provided by the KDK:

Frontend API

The externally exposed API of the internal Kano components (2D map and 3D globe) comes from the one provided by the KDK:

Similarly, most of the internal mapping components come from the KDK.

+ \ No newline at end of file diff --git a/reference/configuration.html b/reference/configuration.html index bdb9561c..152c7db2 100644 --- a/reference/configuration.html +++ b/reference/configuration.html @@ -19,8 +19,8 @@ -
Skip to content

Configuration

The default backend configuration file can be found here.

Most options come from the "standard" backend configuration of KDK based app.

The default frontend configuration file can be found here.

Most options come from the "standard" frontend configuration of KDK based app, here are the main ones:

  • appName: displayed application name,
  • appLogo: displayed application logo,
  • theme: the theme to be used,
  • screens: connection screens configuration
    • banner: displayed application banner,
    • login: login screen configuration
      • providers: array of OAuth2 providers to be used (like ['google', 'github']),
      • links: links displayed at the bottom of the screen,
    • logout: logout screen configuration
      • links: links displayed at the bottom of the screen,
    • changeEndpoint: change endpoint screen configuration (only useful for mobile apps)
      • links: links displayed at the bottom of the screen,
  • layout: layout configuration (see Quasar docs for details)
    • topPane: application bar setup,
      • opener: true to add a handler to open/close the pane,
      • visible: true to show this pane,
    • leftPane: left pane (i.e. main menu) setup (as above),
    • bottomPane: bottom pane setup (as above),
    • rightPane: right pane setup (as above),
    • welcome: true to display the welcome screen by default,
  • mapActivity: 2D map activity configuration
    • topPane: application bar components configuration
      • content: list of components to be displayed according to current mode,
      • filter: component filter using any expression supported by sift,
    • leftPane: left pane (i.e. main menu) components configuration
      • content: list of components to be displayed,
      • filter: component filter using any expression supported by sift,
    • bottomPane: bottom pane components configuration
      • content: list of components to be displayed,
      • filter: component filter using any expression supported by sift,
    • rightPane: right pane components configuration
      • content: list of components to be displayed,
      • filter: component filter using any expression supported by sift,
    • page: page components configuration (can be used to add your own components)
      • content: list of components to be displayed,
      • filter: component filter using any expression supported by sift,
    • window: window (i.e. widgets) configuration
      • widgets: list of widgets to be displayed,
      • filter: component filter using any expression supported by sift,
    • fab: floating action button (FAB) configuration
      • actions: list of actions to be displayed,
      • filter: action filter using any expression supported by sift,
    • catalog: 2D map layers panel configuration
      • filter: layer filter using any expression supported by sift,
      • categories: list of categories to be displayed in 2D map layers panel,
    • layers: 2D map layers configuration
      • actions: list of actions to be displayed,
      • filter: action filter using any expression supported by sift,
    • restore: user context restoration configuration
      • view: set it to true (default) in order to restore the current extent on page refresh
      • layers: set it to true (false by default) in order to restore the current visible layers on page refresh
    • engine: 2D map view configuration
  • globeActivity: 3D globe activity configuration
    • topPane: application bar components configuration
      • content: list of components to be displayed according to current mode,
      • filter: component filter using any expression supported by sift,
    • leftPane: left pane (i.e. main menu) components configuration
      • content: list of components to be displayed,
      • filter: component filter using any expression supported by sift,
    • bottomPane: bottom pane components configuration
      • content: list of components to be displayed,
      • filter: component filter using any expression supported by sift,
    • rightPane: right pane components configuration
      • content: list of components to be displayed,
      • filter: component filter using any expression supported by sift,
    • page: page components configuration (can be used to add your own components)
      • content: list of components to be displayed,
      • filter: component filter using any expression supported by sift,
    • window: window (i.e. widgets) configuration
      • widgets: list of widgets to be displayed,
      • filter: component filter using any expression supported by sift,
    • fab: floating action button (FAB) configuration
      • actions: list of actions to be displayed,
      • filter: action filter using any expression supported by sift,
    • catalog: 3D map layers panel configuration
      • filter: layer filter using any expression supported by sift,
      • categories: list of categories to be displayed in 3D map layers panel,
    • layers: 3D map layers configuration
      • actions: list of actions to be displayed,
      • filter: action filter using any expression supported by sift,
    • catalog: 3D globe layers panel configuration
      • filter: layer filter using any expression supported by sift,
      • categories: list of categories to be displayed in 3D globe layers panel,
    • restore: user context restoration configuration
      • view: set it to true (default) in order to restore the current extent on page refresh
      • layers: set it to true (false by default) in order to restore the current visible layers on page refresh
    • engine: 3D globe view configuration
- +
Skip to content

Configuration

The default backend configuration file can be found here.

Most options come from the "standard" backend configuration of KDK based app.

The default frontend configuration file can be found here.

Most options come from the "standard" frontend configuration of KDK based app, here are the main ones:

  • appName: displayed application name,
  • appLogo: displayed application logo,
  • theme: the theme to be used,
  • screens: connection screens configuration
    • banner: displayed application banner,
    • login: login screen configuration
      • providers: array of OAuth2 providers to be used (like ['google', 'github']),
      • links: links displayed at the bottom of the screen,
    • logout: logout screen configuration
      • links: links displayed at the bottom of the screen,
    • changeEndpoint: change endpoint screen configuration (only useful for mobile apps)
      • links: links displayed at the bottom of the screen,
  • layout: layout configuration (see Quasar docs for details)
    • topPane: application bar setup,
      • opener: true to add a handler to open/close the pane,
      • visible: true to show this pane,
    • leftPane: left pane (i.e. main menu) setup (as above),
    • bottomPane: bottom pane setup (as above),
    • rightPane: right pane setup (as above),
    • welcome: true to display the welcome screen by default,
  • mapActivity: 2D map activity configuration
    • topPane: application bar components configuration
      • content: list of components to be displayed according to current mode,
      • filter: component filter using any expression supported by sift,
    • leftPane: left pane (i.e. main menu) components configuration
      • content: list of components to be displayed,
      • filter: component filter using any expression supported by sift,
    • bottomPane: bottom pane components configuration
      • content: list of components to be displayed,
      • filter: component filter using any expression supported by sift,
    • rightPane: right pane components configuration
      • content: list of components to be displayed,
      • filter: component filter using any expression supported by sift,
    • page: page components configuration (can be used to add your own components)
      • content: list of components to be displayed,
      • filter: component filter using any expression supported by sift,
    • window: window (i.e. widgets) configuration
      • widgets: list of widgets to be displayed,
      • filter: component filter using any expression supported by sift,
    • fab: floating action button (FAB) configuration
      • actions: list of actions to be displayed,
      • filter: action filter using any expression supported by sift,
    • catalog: 2D map layers panel configuration
      • filter: layer filter using any expression supported by sift,
      • categories: list of categories to be displayed in 2D map layers panel,
    • layers: 2D map layers configuration
      • actions: list of actions to be displayed,
      • filter: action filter using any expression supported by sift,
    • restore: user context restoration configuration
      • view: set it to true (default) in order to restore the current extent on page refresh
      • layers: set it to true (false by default) in order to restore the current visible layers on page refresh
    • engine: 2D map view configuration
  • globeActivity: 3D globe activity configuration
    • topPane: application bar components configuration
      • content: list of components to be displayed according to current mode,
      • filter: component filter using any expression supported by sift,
    • leftPane: left pane (i.e. main menu) components configuration
      • content: list of components to be displayed,
      • filter: component filter using any expression supported by sift,
    • bottomPane: bottom pane components configuration
      • content: list of components to be displayed,
      • filter: component filter using any expression supported by sift,
    • rightPane: right pane components configuration
      • content: list of components to be displayed,
      • filter: component filter using any expression supported by sift,
    • page: page components configuration (can be used to add your own components)
      • content: list of components to be displayed,
      • filter: component filter using any expression supported by sift,
    • window: window (i.e. widgets) configuration
      • widgets: list of widgets to be displayed,
      • filter: component filter using any expression supported by sift,
    • fab: floating action button (FAB) configuration
      • actions: list of actions to be displayed,
      • filter: action filter using any expression supported by sift,
    • catalog: 3D map layers panel configuration
      • filter: layer filter using any expression supported by sift,
      • categories: list of categories to be displayed in 3D map layers panel,
    • layers: 3D map layers configuration
      • actions: list of actions to be displayed,
      • filter: action filter using any expression supported by sift,
    • catalog: 3D globe layers panel configuration
      • filter: layer filter using any expression supported by sift,
      • categories: list of categories to be displayed in 3D globe layers panel,
    • restore: user context restoration configuration
      • view: set it to true (default) in order to restore the current extent on page refresh
      • layers: set it to true (false by default) in order to restore the current visible layers on page refresh
    • engine: 3D globe view configuration
+ \ No newline at end of file