JSFiddle - React, Tailwind, and code Playground

by rexonms

JavaScript

import _ from 'lodash'
import { store } from '../index'


export function getPowerUsageDetails() {
    return new Promise(resolve=> {
        getCalculatedData()
            .then(response => {
                const selfPowered = getSelfPower(response)
                const hoursOfBackUp = getHoursOfBackup(response)
                const numberOfPowerwalls = getOffGridNumberOfPowerwalls()
                const recommendedSolarScale = getRecommendedSolarAmount(response)

                return resolve({
                    onGrid : {
                        selfPowered,
                        hoursOfBackUp,

                    },
                    offGrid : {
                        numberOfPowerwalls,
                        recommendedSolarScale
                    },

                })
            })
    })
}

function getCalculatedData() {

    return new Promise((resolve) => {
        const state = store.getState()
        const calculatorData = state.calculatorData
        const baseLoads = calculatorData.baseLoads
        const baseProductions = calculatorData.baseProductions
        const numberOfPowerwall = state.orderDetails.powerwallCount // number of Powerwall
        const userEnergyUsage = getUserEnergyUsage()
        const totalEnergyCapacity = (calculatorData.energyCapacity * numberOfPowerwall)  // Users current total battery capacity
        const totalPowerCapacity =  (calculatorData.powerCapacity * numberOfPowerwall)
        const userSolarSize = state.solarSystem.selected
        const userSolarScale = state.solarSystem.solarScale

        // Variable that needs to be updated with the loop
        let counter = 0 // Keeps track of loop
        let max = baseLoads.length
        let stateOfCharge = totalEnergyCapacity

        let siteLoad = getSiteLoad(baseLoads[counter], userEnergyUsage)
        let solarProduction = getSolarProduction(baseProductions[counter], userSolarSize, userSolarScale)
        let storageIsDischarging = false
      ...