import React, {Component} from 'react'; import './skills.css'; class Skills extends Component { constructor(props) { super(props); /* Initialize progress bars in view flags in state */ this.state = { wasProgressBarInView: [false, false, false, false] }; /* Create static content information */ this.progressBars = [ { ref: React.createRef(), percentageWidth: 88, heading: "C#/.NET" }, { ref: React.createRef(), percentageWidth: 75, heading: "Javascript" }, { ref: React.createRef(), percentageWidth: 70, heading: "Software Design" }, { ref: React.createRef(), percentageWidth: 62, heading: "MSSQL" } ]; } /* Class field to store static content */ progressBars = []; /* Checks to see if an element is in view using it's ref - REDUNTANT IN OTHER CONTROLLER */ isElementInView = (elementRef, offset = 0) => { if (!elementRef) { return false; } const top = elementRef.getBoundingClientRect().top; return (top + offset) >= 0 && (top - offset) <= window.innerHeight; } /* Sets if progress bar was ever in view flag for each progress bar currently in view */ checkProgressBarsInView = () => { let wasProgressBarInView = this.state.wasProgressBarInView; for (var i = 0; i < this.progressBars.length; i++) { let progressBar = this.progressBars[i]; if (this.isElementInView(progressBar.ref)) { wasProgressBarInView[i] = true; } } // Remove event listener once all flags are set if (wasProgressBarInView.every(x => x)) { window.removeEventListener('scroll', this.checkProgressBarsInView); } this.setState({ wasProgressBarInView: wasProgressBarInView }); } render() { return (