Integrating plantnet-API, add rudimentary UI
This commit is contained in:
parent
89eecdb38a
commit
a8959fc934
4 changed files with 80 additions and 9 deletions
53
test.ts
53
test.ts
|
@ -0,0 +1,53 @@
|
|||
import PlantNet from "./Logic/Web/PlantNet";
|
||||
import {UIEventSource} from "./Logic/UIEventSource";
|
||||
import {VariableUiElement} from "./UI/Base/VariableUIElement";
|
||||
import List from "./UI/Base/List";
|
||||
import Combine from "./UI/Base/Combine";
|
||||
import {FixedUiElement} from "./UI/Base/FixedUiElement";
|
||||
import Wikidata from "./Logic/Web/Wikidata";
|
||||
import WikidataPreviewBox from "./UI/Wikipedia/WikidataPreviewBox";
|
||||
import Loading from "./UI/Base/Loading";
|
||||
|
||||
function build(images: UIEventSource<string[]>) {
|
||||
return new VariableUiElement(images
|
||||
.bind(images => {
|
||||
if (images.length === 0) {
|
||||
return null
|
||||
}
|
||||
return new UIEventSource({success: PlantNet.exampleResultPrunus}) /*/ UIEventSource.FromPromiseWithErr(PlantNet.query(images.slice(0,5))); //*/
|
||||
})
|
||||
.map(result => {
|
||||
if (result === undefined) {
|
||||
return new Loading()
|
||||
}
|
||||
if (result === null) {
|
||||
return "Take images of the tree to automatically detect the tree type"
|
||||
}
|
||||
if (result["error"] !== undefined) {
|
||||
return result["error"]
|
||||
}
|
||||
console.log(result)
|
||||
const success = result["success"]
|
||||
return new Combine(success.results
|
||||
.filter(species => species.score >= 0.005)
|
||||
.map(species => {
|
||||
const wikidata = UIEventSource.FromPromise(Wikidata.Sparql<{ species }>(["?species", "?speciesLabel"],
|
||||
["?species wdt:P846 \"" + species.gbif.id + "\""]));
|
||||
|
||||
return new WikidataPreviewBox(wikidata.map(wd => wd == undefined ? undefined : wd[0]?.species?.value),
|
||||
{
|
||||
whileLoading: new Loading("Loading information about " + species.species.scientificNameWithoutAuthor),
|
||||
extraItems: [Math.round(species.score * 100) + "% match"]
|
||||
})
|
||||
.SetClass("border-2 border-subtle rounded-xl block mb-2")
|
||||
}
|
||||
)).SetClass("flex flex-col")
|
||||
}
|
||||
))
|
||||
|
||||
|
||||
}
|
||||
|
||||
const images = ["https://i.imgur.com/VJp1qG1.jpg"]
|
||||
|
||||
build(new UIEventSource(images)).AttachTo("maindiv")
|
Loading…
Add table
Add a link
Reference in a new issue