# FlatmapVuer
View the a live demo and documentation at: https://abi-software.github.io/flatmapvuer/
This project aims to wrap the flatmap viewer project into a vue component.
There are currently two components available. FlatmapVuer and MultiFlatmapVuer. FlatmapVuer is used for displaying a single flatmap whereas MultiFlatmapVuer takes in an array of flatmaps and provide a chooser for selecting the flatmap on display.
This project is now built with Vue3 frameworks, Vue 2 version of Flatmapvuer is no longer maintained.
## Flatmapvuer on NPM
Flatmapvuer is available on npm and can be installed into your project with the following command:
```bash
npm i @abi-software/flatmapvuer
```
## How to use
Install the package "npm i @abi-software/flatmapvuer" to your vue app.
Include the package in your script.
```javascript
import {FlatmapVuer, MultiFlatmapVuer} from '@abi-software/flatmapvuer';
import '@abi-software/flatmapvuer/dist/style.css';
```
Local registration in vue component:
```javascript
export default {
...
components: {
FlatmapVuer,
MultiFlatmapVuer
}
...
}
```
The line above registers both the FlatmapVuer and MultiFlatmapVuer component into the global scope.
You can now use the FlatmapVuer in your vue template as followed:
```html
```
**entry** is the variable/string with the NCBI Taxonomy term. Some of the available taxon including: NCBITaxon:9606 (Human), NCBITaxon:9685 (Cat), NCBITaxon:9823 (Pig), NCBITaxon:10090 (Mouse) and NCBITaxon:10114 (Rat). This will always get the latest version of a map with the matching taxon.
**uuid** is the unique id of a specific map. This will be used instead of **entry** when specified.
**ready** is the custom event when the map has been loaded successfully.
**resource-selected** is the custom event triggered when a part of the flatmap is selected, the returned argument **resource** provides information of the selected resource. Information of location is provided with supported maps in the **feature -> location** property.
Markers must be added to make a label selectable and it can be done through the **addMarker** method on the mapImp member of the FlatmapVuer component.
Please see the following sample codes for details.
```javascript
methods: {
FlatmapSelected: function(resource) {
console.log(resource);
},
FlatmapReady: function(flatmapComponent) {
labels = flatmapComponent.getLabels(); //return list of labels
//The following line adds a marker on the map. UBERON:0000948
//is the UBERON id representing the heart.
flatmapComponent.mapImp.addMarker("UBERON:0000948", "simulation");
}
}
```
You can also use MultiFlatmapVuer to provide a selection of flatmaps.
```html
```
**availableSpecies** is the object containing information of available species for the users. See below for an example:
```javascript
availableSpecies : {
"Human":{taxo: "NCBITaxon:9606", iconClass:"icon-mapicon_human"},
"Rat":{taxo: "NCBITaxon:10114", iconClass:"icon-mapicon_rat"},
"Mouse":{taxo: "NCBITaxon:10090", iconClass:"icon-mapicon_mouse"},
"Pig":{taxo: "NCBITaxon:9823", iconClass:"icon-mapicon_pig"},
"Cat":{taxo: "NCBITaxon:9685", iconClass:"icon-mapicon_cat"},
}
```
The keys of the codes above provide the labels on the chooser, **taxo** should be one of the available taxon id from the list and **iconClass** specifies the user provided icons to use.
**initial** specifies the start up species when the component is first mounted, it should be one of the keys on the provided available species.
## Project setup from Github
The source code is available from Github, it can be found here: https://github.com/ABI-Software/flatmapvuer .
### Clone the respositroy
```bash
git clone https://github.com/ABI-Software/flatmapvuer.git
```
### Setup
```bash
npm install
```
### Compiles and minifies for production
```bash
npm run build-bundle
```
### Run the sample application
```bash
npm run serve
```
## Documentation
The documentation is developed with `vitepress` and `vuese`. Documentation pages are in the `docs` folder.
### To run in local development mode
```bash
npm run docs:watch
```
This will start the documentation server with `vitepress` on port `:5173` and watch the `FlatmapVuer` and `MultiFlatmapVuer` components changes.