/* 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 (
Bjørkans planteliste
{this.state.apen ? {lagIkon("lukk","#eee")} : {lagIkon("linjer","#eee")} } Meny
{this.state.apen &&
{meny}
}
);
}
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({kolonner[c][0].toLowerCase()} )
});
//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.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 (
Viser {this.planter.length} planter, sortert etter {sorteringsliste}
{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);
}