/* Lager plantelistemenyen */ class Forsidemeny extends React.Component { constructor(props) { super(props); this.state = { apen: false } const typeliste = { tre:"trær og busker", urt:"urter og stauder", gre:"gressplanter", lyng:"lyngplanter", bre:"bregner", kra:"kråkefotplanter", mose:"moser" }; const opprinnelser = { norge:"Norge", norden:"Norden", europa:"Europa", afrika:"Afrika", asia:"Asia", australasia:"Australasia", nordamerika:"Nord-Amerika", søramerika:"Sør-Amerika", krysning:"krysning" }; const artikkelliste = { plantegrupper: "Plantegrupper", klimasoner: "Klimasoner", voksemedium: "Voksemedium", hagekart: "Hagekart", lenker: "Lenker", om: "Om plantelista" }; const soner = { H8:"sone H8", H7:"sone H7", H6:"sone H6", H5:"sone H5", H4:"sone H4", H3:"sone H3", H2:"sone H2", H1:"sone H1"}; this.typeliste = typeliste; this.opprinnelser = opprinnelser; this.soner = soner; this.artikkelliste = artikkelliste; this.toggleMeny = this.toggleMeny.bind(this); } render() { let typeliste = this.typeliste; let opprinnelser = this.opprinnelser; let soner = this.soner; let artikkelliste = this.artikkelliste; let meny = []; let rader = []; rader.push(

Plantetyper

); Object.keys(typeliste).forEach( function(e) { rader.push(
  • {typeliste[e]}
  • ); }); meny.push() rader = []; rader.push(

    Opprinnelse

    ); Object.keys(opprinnelser).forEach( function(e) { rader.push(
  • {opprinnelser[e]}
  • ); }); meny.push() rader = []; rader.push(

    Herdighet

    ); Object.keys(soner).forEach( function(e) { rader.push(
  • {soner[e]}
  • ); }); meny.push() rader = []; rader.push(

    Artikler

    ); Object.keys(artikkelliste).forEach( function(e) { rader.push(
  • {artikkelliste[e]}
  • ); }); meny.push() return ( ); } toggleMeny(e) { if (this.state.apen) { this.setState({ apen:false }); } else { this.setState({ apen:true }); } } } class Planteliste extends React.Component { constructor(props) { super(props); let planter = this.props.planter; this.state = { scrollet: false, skjermbredde: 0 }; const kolonner = { navn: [ "Botanisk navn", //tabell overskrift "",// CSS-klasse () => {sorterTekstAlfabetisk(planter,"navn")}, //sorteringsfunksjon ], nonavn: [ "Norsk navn", "", () => {sorterTekstAlfabetisk(planter,"nonavn")}, ], type: [ "Type", "text-center", () => {sorterTekstAlfabetisk(planter,"type")}, ], opprinnelse: [ "Opprinnelse", "", () => {sorterTekstAlfabetisk(planter,"opprinnelse")}, ], herdighet: [ "Sone", "text-center", () => {sorterTekstMotsattAlfabetisk(planter,"herdighet")}, ], hoyde: [ "Høyde", "text-right", () => {sorterTallFallende(planter,"hoyde")}, ], farge: [ "Farge", "text-center", () => {sorterTekstAlfabetisk(planter,"farge")}, ], tilgjengelig: [ "Selges", "text-center", () => {sorterArraystørrelse(planter,"tilgjengelig")}, ], poeng: [ "Poeng", "text-center", () => {sorterTallFallende(planter,"poeng")}, ], sok: [ "Søk", "text-center", () => {sorterTekstAlfabetisk(planter,"navn")}, ], } this.planter = this.props.planter; this.kolonner = kolonner; this.byttSortering = this.byttSortering.bind(this); this.selectByttSortering = this.selectByttSortering.bind(this); this.byttPlante = this.byttPlante.bind(this); this.handleScroll = this.handleScroll.bind(this); this.updateWindowDimensions = this.updateWindowDimensions.bind(this); } byttPlante(e,navn) { if (this.props.sidetype == "plante") { e.preventDefault(); this.props.byttPlante(navn); } } byttSortering(el,e) { el.preventDefault(); this.props.byttSortering(e); } selectByttSortering(e) { this.props.byttSortering(e.target.value); } componentDidMount() { window.addEventListener('scroll', this.handleScroll); this.updateWindowDimensions(); window.addEventListener('resize', this.updateWindowDimensions); } componentWillUnmount() { window.removeEventListener('scroll', this.handleScroll); window.removeEventListener('resize', this.updateWindowDimensions); } handleScroll(event) { if(event.target.scrollingElement.scrollTop > 100) { this.setState({ scrollet:true }); } } updateWindowDimensions() { this.setState({ skjermbredde: window.innerWidth}); } render() { let klasser = this.klasser; let kolonner = this.kolonner; let byttPlante = this.byttPlante; let sorteringsliste = []; Object.keys(kolonner).forEach(function(c) { sorteringsliste.push() }); //sorter plantelista ut fra state sorterTekstMotsattAlfabetisk(this.planter,"navn"); kolonner[this.props.sortering][2](); let overskrifter = Object.keys(kolonner).map( e => this.byttSortering(el,e)} title={"Sorter etter " + kolonner[e][0]}>{kolonner[e][0]} ); /* gå gjennom alle plantene */ let rader = []; if (this.state.skjermbredde >= 1220) { for (let i = 0; i 50) { break; } let p = this.planter[i]; if (p.art == "× hybrid") { //ikke vis grunn-genus på hybrid if (!p.sort.length) { continue; } } let rad = []; rad.push( byttPlante(e,p.navn)}>{p.navn.slice(0,56)} {p.nonavn} {lagIkon(p["type"])} {p.opprinnelse} {p.herdighet} {p.hoyde} {(p.farge.length && p.farge != "sporer" && p.farge != "miks") ? {lagIkon("fargeblomst","black", lagFargekode(p.farge), "5")} : null} {(p.farge.length && (p.farge == "sporer" || p.farge == "miks")) ? - : null} {p.bladfarge ? {lagBlad(p.bladfarge)} : null} {p.tilgjengelig ? kr : null} {p.poeng} {lagIkon("sok")} ); rader.push(rad); } }; /* skriv ut som kort */ let mobilkort = []; if (this.state.skjermbredde < 1220) { for (let i = 0; i 30) { break; } let p = this.planter[i]; let innhold =
    {p.nonavn.length ? byttPlante(e,p.navn)}>{p.navn} - {p.nonavn} : byttPlante(e,p.navn)}>{p.navn}}

    {p.type.length ? hentOrd(p.type)[1].charAt(0).toUpperCase() + hentOrd(p.type)[1].slice(1) : null} {p.opprinnelse.length ? • {p.opprinnelse} : null} • {p.herdighet} {p.hoyde.length ? • {lagIkon("hoyde")}{lagHoyde(p.hoyde)} : null} {(p.farge.length && p.farge != "sporer" && p.farge != "miks") ? • {lagIkon("fargeblomst","black", lagFargekode(p.farge), "5")} : null} {(p.farge.length && (p.farge == "sporer" || p.farge == "miks")) ? • - : null} {p.bladfarge ? • {lagBlad(p.bladfarge)} : null} {p.tilgjengelig.length ? • i handelen : null} • ☆{p.poeng} {lagIkon("sok")}

    ; mobilkort.push(
    {innhold}
    ); }; } return (
    {overskrifter} {rader}
    {mobilkort}
    ); } } /* Tekst om vippsing */ class Stotte extends React.Component{ render() { return (

    Støtt Bjørkans planteliste

    Støtt vårt arbeid med å lage et gratis oppslagsverk for planter, vipps 20 kroner til #716582!

    ); } } /* går gjennom planteliste, setter egenskaper fra arten inn på sorter og legger til div. */ function fiksPlanteliste(list) { for (let i=1; i { if(list[0][e]) { p[e] = list[0][e]; } }); } list.shift(); return (list); }