From fb965a32602d54e7f8b16fde2401e141f915d5af Mon Sep 17 00:00:00 2001 From: Thad Kerosky Date: Wed, 30 Oct 2024 01:05:35 +0000 Subject: [PATCH 1/4] switch checkboxes to submit buttons Co-authored-by: dwindleduck Co-authored-by: plocket --- .../EnergyUseHistory.tsx | 9 ++++++-- .../EnergyUseHistoryChart.tsx | 22 ++++++++++++++----- heat-stack/app/routes/_heat+/single.tsx | 10 ++++++--- heat-stack/types/index.ts | 4 ++++ 4 files changed, 34 insertions(+), 11 deletions(-) diff --git a/heat-stack/app/components/ui/heat/CaseSummaryComponents/EnergyUseHistory.tsx b/heat-stack/app/components/ui/heat/CaseSummaryComponents/EnergyUseHistory.tsx index 9d584b88..0036e2f5 100644 --- a/heat-stack/app/components/ui/heat/CaseSummaryComponents/EnergyUseHistory.tsx +++ b/heat-stack/app/components/ui/heat/CaseSummaryComponents/EnergyUseHistory.tsx @@ -4,6 +4,7 @@ import { Button } from '#/app/components/ui/button.tsx' import { type UsageDataSchema } from '#/types/types.ts'; import { AnalysisHeader } from './AnalysisHeader.tsx' import { EnergyUseHistoryChart } from './EnergyUseHistoryChart.tsx' +import { FormMetadata } from '@conform-to/react'; // import { FieldMetadata, useForm } from '@conform-to/react' // import { Form, useLocation } from '@remix-run/react' @@ -13,8 +14,12 @@ import { EnergyUseHistoryChart } from './EnergyUseHistoryChart.tsx' export function EnergyUseHistory({ usage_data, + conform_form, + fields }: { - usage_data: UsageDataSchema + conform_form: FormMetadata, + usage_data: UsageDataSchema, + fields: any }) { const titleClass = 'text-5xl font-extrabold tracking-wide mt-10' // const subtitleClass = 'text-2xl font-semibold text-zinc-950 mt-9' @@ -44,7 +49,7 @@ export function EnergyUseHistory({ {usage_data && ( <> - + )} diff --git a/heat-stack/app/components/ui/heat/CaseSummaryComponents/EnergyUseHistoryChart.tsx b/heat-stack/app/components/ui/heat/CaseSummaryComponents/EnergyUseHistoryChart.tsx index 1c440be0..51dd57b2 100644 --- a/heat-stack/app/components/ui/heat/CaseSummaryComponents/EnergyUseHistoryChart.tsx +++ b/heat-stack/app/components/ui/heat/CaseSummaryComponents/EnergyUseHistoryChart.tsx @@ -18,6 +18,9 @@ import NonHeatingUsage from './assets/NonHeatingUsage.svg' import NotAllowedInCalculations from './assets/NotAllowedInCalculations.svg' import { tr } from '@faker-js/faker' +import { FormMetadata, getInputProps } from '@conform-to/react' +import { Button } from '#/app/components/ui/button.tsx' +import { Input } from '../../input.tsx' // type NaturalGasBillRecord = z.infer // const naturalGasBillRecord01: NaturalGasBillRecord = { @@ -55,7 +58,7 @@ import { tr } from '@faker-js/faker' // naturalGasBillRecord04, // ] -export function EnergyUseHistoryChart({ usage_data }: { usage_data: UsageDataSchema }) { +export function EnergyUseHistoryChart({ usage_data, conform_form, fields }: { usage_data: UsageDataSchema, conform_form: FormMetadata, fields: any }) { const [billingRecords, setBillingRecords] = useState([]) useEffect(() => { @@ -82,8 +85,13 @@ export function EnergyUseHistoryChart({ usage_data }: { usage_data: UsageDataSch }) } + let usage_data_with_user_adjustments = "none" + + return ( + + # @@ -162,11 +170,13 @@ export function EnergyUseHistoryChart({ usage_data }: { usage_data: UsageDataSch : '-'} - handleOverrideCheckboxChange(index)} - /> + ) diff --git a/heat-stack/app/routes/_heat+/single.tsx b/heat-stack/app/routes/_heat+/single.tsx index 4b3a4c4f..ec3503dd 100644 --- a/heat-stack/app/routes/_heat+/single.tsx +++ b/heat-stack/app/routes/_heat+/single.tsx @@ -52,7 +52,8 @@ import WeatherUtil from '#app/utils/WeatherUtil' // - [ ] Will weather service take timestamp instead of timezone date data? // Ours -import { HomeSchema, LocationSchema, CaseSchema /* validateNaturalGasUsageData, HeatLoadAnalysisZod */ } from '../../../types/index.ts' +import { HomeSchema, LocationSchema, CaseSchema, /* validateNaturalGasUsageData, HeatLoadAnalysisZod */ +TableSchema} from '../../../types/index.ts' import { type NaturalGasUsageDataSchema} from '../../../types/types.ts' import { CurrentHeatingSystem } from '../../components/ui/heat/CaseSummaryComponents/CurrentHeatingSystem.tsx' import { EnergyUseHistory } from '../../components/ui/heat/CaseSummaryComponents/EnergyUseHistory.tsx' @@ -75,7 +76,7 @@ const CurrentHeatingSystemSchema = HomeSchema.pick({ setback_hours_per_day: true, }) -const Schema = HomeFormSchema.and(CurrentHeatingSystemSchema) /* .and(HeatLoadAnalysisZod.pick({design_temperature: true})) */ +const Schema = HomeFormSchema.and(CurrentHeatingSystemSchema).and(TableSchema) /* .and(HeatLoadAnalysisZod.pick({design_temperature: true})) */ export async function action({ request, params }: ActionFunctionArgs) { // Checks if url has a homeId parameter, throws 400 if not there @@ -136,6 +137,7 @@ export async function action({ request, params }: ActionFunctionArgs) { setback_temperature, setback_hours_per_day, design_temperature_override, + usage_data_with_user_adjustments, } = submission.value // await updateNote({ id: params.noteId, title, content }) @@ -414,6 +416,8 @@ Traceback (most recent call last): File "", line 32, //console.log("(after customization) gasBillDataWithUserAdjustments billing records[0]", gasBillDataWithUserAdjustments.get('billing_records')[0]) /* why is inclusion_override still false after roundtrip */ + console.log(usage_data_with_user_adjustments) + const foo2: any = executeRoundtripAnalyticsFromFormJs(parsedAndValidatedFormSchema, convertedDatesTIWD, gasBillDataWithUserAdjustments, state_id, county_id).toJs() // console.log("foo2 billing records[0]", foo2.get('billing_records')[0]); @@ -590,7 +594,7 @@ export default function Inputs() { */} - + diff --git a/heat-stack/types/index.ts b/heat-stack/types/index.ts index b934a472..cf106a39 100644 --- a/heat-stack/types/index.ts +++ b/heat-stack/types/index.ts @@ -25,6 +25,10 @@ export const HomeSchema = z.object({ standByLosses: z.number(), }); +export const TableSchema = z.object({ + usage_data_with_user_adjustments: z.string().optional(), +}); + export const LocationSchema = z.object({ address: z.string(), }); From 4c33f728bc4041ed285c2862807ad0e71a7e7969 Mon Sep 17 00:00:00 2001 From: Thad Kerosky Date: Wed, 13 Nov 2024 02:07:07 +0000 Subject: [PATCH 2/4] Example of broken call in rules engine: loses inclusion_override:true on Nov 2020. Co-authored-by: Charlie Kelly Co-authored-by: plocket --- heat-stack/app/routes/_heat+/single.tsx | 111 ++++++++++++++++-------- 1 file changed, 76 insertions(+), 35 deletions(-) diff --git a/heat-stack/app/routes/_heat+/single.tsx b/heat-stack/app/routes/_heat+/single.tsx index ec3503dd..cb4c5c47 100644 --- a/heat-stack/app/routes/_heat+/single.tsx +++ b/heat-stack/app/routes/_heat+/single.tsx @@ -168,6 +168,7 @@ export async function action({ request, params }: ActionFunctionArgs) { const pyodide: any = await runPythonScript() ////////////////////// + // TODO: Can we "cache" this type of stuff? (plocket) let {coordinates, state_id, county_id} = await geocodeUtil.getLL(address) let {x, y} = coordinates ?? {x: 0, y: 0}; @@ -189,6 +190,7 @@ export async function action({ request, params }: ActionFunctionArgs) { setback_hours_per_day, design_temperature_override, // design_temperature: 12 /* TODO: see #162 and esp. #123*/ + usage_data_with_user_adjustments }) // console.log('parsedAndValidatedFormSchema', parsedAndValidatedFormSchema) @@ -219,26 +221,36 @@ export async function action({ request, params }: ActionFunctionArgs) { 'public/pyodide-env/rules_engine-0.0.1-py3-none-any.whl', ) + console.log("incoming usage_data_with_user_adjustments string length", usage_data_with_user_adjustments ? usage_data_with_user_adjustments?.length : "") + // console.log("uploadedTextFile", uploadedTextFile) /** * Need to parse the gas bill first to determine the start and end dates of the bill * so that we can request the weather for those dates. */ - const executeParseGasBillPy = await pyodide.runPythonAsync(` - from rules_engine import parser - from rules_engine.pydantic_models import ( - FuelType, - SummaryInput, - TemperatureInput - ) - from rules_engine import engine - - def executeParse(csvDataJs): - naturalGasInputRecords = parser.parse_gas_bill(csvDataJs, parser.NaturalGasCompany.NATIONAL_GRID) - return naturalGasInputRecords.model_dump(mode="json") - executeParse - `) + async function get_gas_bill_pyodide() { + return pyodide.runPythonAsync(` + from rules_engine import parser + from rules_engine.pydantic_models import ( + FuelType, + SummaryInput, + TemperatureInput + ) + from rules_engine import engine + + def executeParse(csvDataJs): + naturalGasInputRecords = parser.parse_gas_bill(csvDataJs, parser.NaturalGasCompany.NATIONAL_GRID) + return naturalGasInputRecords.model_dump(mode="json") + executeParse + `) + } + + // if ( (usage_data_with_user_adjustments || ``).length > 0 ) {} + + /** During the first proper load of the data, start creating the Pyodide Map */ + + const executeParseGasBillPy = await get_gas_bill_pyodide() /** Example: * records: [ @@ -335,9 +347,9 @@ export async function action({ request, params }: ActionFunctionArgs) { executeGetAnalyticsFromForm `) // type Analytics = z.infer; - const foo: any = executeGetAnalyticsFromFormJs(parsedAndValidatedFormSchema, convertedDatesTIWD, uploadedTextFile, state_id, county_id).toJs() + const gasBillDataWithUserAdjustments: any = executeGetAnalyticsFromFormJs(parsedAndValidatedFormSchema, convertedDatesTIWD, uploadedTextFile, state_id, county_id).toJs() - //console.log("foo billing records [0]", foo.get('billing_records')[0] ) + //console.log("gasBillDataWithUserAdjustments billing records [0]", gasBillDataWithUserAdjustments.get('billing_records')[0] ) /** * second time and after, when table is modified, this becomes entrypoint @@ -405,37 +417,54 @@ Traceback (most recent call last): File "", line 32, 'whole_home_heat_loss_rate' => undefined }, */ - const gasBillDataWithUserAdjustments = foo; /* billing_records is untested here */ + // const gasBillDataWithUserAdjustments = foo; /* billing_records is untested here */ - const billingRecords = foo.get('billing_records') - billingRecords.forEach((record: any) => { - record.set('inclusion_override', true); - }); - // foo.set('billing_records', null) - // foo.set('billing_records', billingRecords) + // const billingRecords = gasBillDataWithUserAdjustments.get('billing_records') + // billingRecords.forEach((record: any) => { + // record.set('inclusion_override', true); + // }); + // gasBillDataWithUserAdjustments.set('billing_records', null) + // gasBillDataWithUserAdjustments.set('billing_records', billingRecords) //console.log("(after customization) gasBillDataWithUserAdjustments billing records[0]", gasBillDataWithUserAdjustments.get('billing_records')[0]) /* why is inclusion_override still false after roundtrip */ - console.log(usage_data_with_user_adjustments) + // console.log("after processing usage_data_with_user_adjustments", usage_data_with_user_adjustments) - const foo2: any = executeRoundtripAnalyticsFromFormJs(parsedAndValidatedFormSchema, convertedDatesTIWD, gasBillDataWithUserAdjustments, state_id, county_id).toJs() + // inclusion_override\",true + // 12/03/2020 + let gasBillData = gasBillDataWithUserAdjustments + if ((usage_data_with_user_adjustments || ``).length > 0) { + // console.log(`This is now usage_data_with_user_adjustments`) + gasBillData = JSON.parse(usage_data_with_user_adjustments, reviver) + // console.log(`gasBillData`, gasBillData); // 11/12/24 this is correct + } + const calculatedData: any = executeRoundtripAnalyticsFromFormJs(parsedAndValidatedFormSchema, convertedDatesTIWD, gasBillData, state_id, county_id).toJs() + console.log(`calculatedData:`, calculatedData) - // console.log("foo2 billing records[0]", foo2.get('billing_records')[0]); - // console.log("foo2", foo2); - // console.log("(after round trip) gasBillDataWithUserAdjustments billing records[0]", gasBillDataWithUserAdjustments.get('billing_records')[0]) + // console.log("calculatedData billing records[0]", calculatedData.get('billing_records')[0]); + // console.log("calculatedData", calculatedData); + // console.log("(after round trip) gasBillData billing records[0]", gasBillData.get('billing_records')[0]) // const otherResult = executePy(summaryInput, convertedDatesTIWD, exampleNationalGridCSV); - const str_version = JSON.stringify(foo2, replacer); - // const json_version = JSON.parse(str_version); - // console.log("str_version", str_version); + const calculated_data_str = JSON.stringify(calculatedData, replacer); + // const json_version = JSON.parse(calculated_data_str); + // console.log("calculated_data_str", calculated_data_str); // Consider adding to form data - return json({data: str_version}); + return json({data: calculated_data_str}); // return redirect(`/single`) } -// https://stackoverflow.com/a/56150320 + +/** Pass this to JSON.stringify() + * + * Usage: + * const originalValue = new Map([['a', 1]]); + * const str = JSON.stringify(originalValue, replacer); + * + * See https://stackoverflow.com/a/56150320 + */ function replacer(key: any, value: any) { if(value instanceof Map) { return { @@ -446,8 +475,17 @@ function replacer(key: any, value: any) { return value; } } - -// https://stackoverflow.com/a/56150320 + + +/** Pass this to JSON.parse() + * + * Usage: + * const originalValue = new Map([['a', 1]]); + * const str = JSON.stringify(originalValue, replacer); + * const newValue = JSON.parse(str, reviver); + * + * See https://stackoverflow.com/a/56150320 + */ function reviver(key: any, value: any) { if(typeof value === 'object' && value !== null) { if (value.dataType === 'Map') { @@ -574,6 +612,9 @@ export default function Inputs() { setback_temperature: 65, setback_hours_per_day: 8, // design_temperature_override: '', + // 2020-12-03 is true: + usage_data_with_user_adjustments: "{\"dataType\":\"Map\",\"value\":[[\"summary_output\",{\"dataType\":\"Map\",\"value\":[[\"estimated_balance_point\",61.5],[\"other_fuel_usage\",0.2857142857142857],[\"average_indoor_temperature\",67],[\"difference_between_ti_and_tbp\",5.5],[\"design_temperature\",1],[\"whole_home_heat_loss_rate\",48001.81184312083],[\"standard_deviation_of_heat_loss_rate\",0.08066745182677547],[\"average_heat_load\",3048115.0520381727],[\"maximum_heat_load\",3312125.0171753373]]}],[\"balance_point_graph\",{\"dataType\":\"Map\",\"value\":[[\"records\",[{\"dataType\":\"Map\",\"value\":[[\"balance_point\",60],[\"heat_loss_rate\",51056.8007761249],[\"change_in_heat_loss_rate\",0],[\"percent_change_in_heat_loss_rate\",0],[\"standard_deviation\",0.17628334816871494]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",60.5],[\"heat_loss_rate\",49641.09065667595],[\"change_in_heat_loss_rate\",-1415.7101194489514],[\"percent_change_in_heat_loss_rate\",-2.851891650085171],[\"standard_deviation\",0.17828325017380922]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59.5],[\"heat_loss_rate\",52531.668333800335],[\"change_in_heat_loss_rate\",1474.8675576754322],[\"percent_change_in_heat_loss_rate\",2.8075779895352406],[\"standard_deviation\",0.17443387685061057]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59.5],[\"heat_loss_rate\",52531.668333800335],[\"change_in_heat_loss_rate\",1474.8675576754322],[\"percent_change_in_heat_loss_rate\",2.8075779895352406],[\"standard_deviation\",0.17443387685061057]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59],[\"heat_loss_rate\",54071.908410221266],[\"change_in_heat_loss_rate\",1540.2400764209306],[\"percent_change_in_heat_loss_rate\",2.848503264829797],[\"standard_deviation\",0.17298594078724697]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59],[\"heat_loss_rate\",54071.908410221266],[\"change_in_heat_loss_rate\",1540.2400764209306],[\"percent_change_in_heat_loss_rate\",2.848503264829797],[\"standard_deviation\",0.17298594078724697]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",58.5],[\"heat_loss_rate\",55697.678832556725],[\"change_in_heat_loss_rate\",1625.7704223354594],[\"percent_change_in_heat_loss_rate\",2.9189195248566713],[\"standard_deviation\",0.17277383864097884]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",58.5],[\"heat_loss_rate\",55697.678832556725],[\"change_in_heat_loss_rate\",1625.7704223354594],[\"percent_change_in_heat_loss_rate\",2.9189195248566713],[\"standard_deviation\",0.17277383864097884]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",58],[\"heat_loss_rate\",57389.10146127484],[\"change_in_heat_loss_rate\",1691.4226287181154],[\"percent_change_in_heat_loss_rate\",2.9472889201087384],[\"standard_deviation\",0.1732541612054347]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59],[\"heat_loss_rate\",56768.56639074183],[\"change_in_heat_loss_rate\",-1633.1649217006925],[\"percent_change_in_heat_loss_rate\",-2.876882446633423],[\"standard_deviation\",0.11390817174664584]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59],[\"heat_loss_rate\",56768.56639074183],[\"change_in_heat_loss_rate\",-1633.1649217006925],[\"percent_change_in_heat_loss_rate\",-2.876882446633423],[\"standard_deviation\",0.11390817174664584]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59.5],[\"heat_loss_rate\",55229.19886484982],[\"change_in_heat_loss_rate\",-1539.3675258920048],[\"percent_change_in_heat_loss_rate\",-2.787234936467135],[\"standard_deviation\",0.11124427880653119]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59.5],[\"heat_loss_rate\",55229.19886484982],[\"change_in_heat_loss_rate\",-1539.3675258920048],[\"percent_change_in_heat_loss_rate\",-2.787234936467135],[\"standard_deviation\",0.11124427880653119]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",60],[\"heat_loss_rate\",53751.25155581334],[\"change_in_heat_loss_rate\",-1477.9473090364845],[\"percent_change_in_heat_loss_rate\",-2.7496053882612164],[\"standard_deviation\",0.10927575007028069]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",60],[\"heat_loss_rate\",53751.25155581334],[\"change_in_heat_loss_rate\",-1477.9473090364845],[\"percent_change_in_heat_loss_rate\",-2.7496053882612164],[\"standard_deviation\",0.10927575007028069]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",60.5],[\"heat_loss_rate\",52323.72128080989],[\"change_in_heat_loss_rate\",-1427.5302750034461],[\"percent_change_in_heat_loss_rate\",-2.728265956739211],[\"standard_deviation\",0.10801613348768026]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",60.5],[\"heat_loss_rate\",52323.72128080989],[\"change_in_heat_loss_rate\",-1427.5302750034461],[\"percent_change_in_heat_loss_rate\",-2.728265956739211],[\"standard_deviation\",0.10801613348768026]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",61],[\"heat_loss_rate\",50945.7751226953],[\"change_in_heat_loss_rate\",-1377.9461581145952],[\"percent_change_in_heat_loss_rate\",-2.7047309709117537],[\"standard_deviation\",0.10764428073606047]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",61],[\"heat_loss_rate\",50945.7751226953],[\"change_in_heat_loss_rate\",-1377.9461581145952],[\"percent_change_in_heat_loss_rate\",-2.7047309709117537],[\"standard_deviation\",0.10764428073606047]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",61.5],[\"heat_loss_rate\",49631.792545334356],[\"change_in_heat_loss_rate\",-1313.982577360941],[\"percent_change_in_heat_loss_rate\",-2.6474614555997174],[\"standard_deviation\",0.10811412177333496]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",61.5],[\"heat_loss_rate\",48001.81184312083],[\"change_in_heat_loss_rate\",-1294.1867605708176],[\"percent_change_in_heat_loss_rate\",-2.6961206481131783],[\"standard_deviation\",0.08066745182677547]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",61.5],[\"heat_loss_rate\",48001.81184312083],[\"change_in_heat_loss_rate\",-1294.1867605708176],[\"percent_change_in_heat_loss_rate\",-2.6961206481131783],[\"standard_deviation\",0.08066745182677547]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",62],[\"heat_loss_rate\",46755.80641468955],[\"change_in_heat_loss_rate\",-1246.0054284312791],[\"percent_change_in_heat_loss_rate\",-2.6649212664201087],[\"standard_deviation\",0.0815069913122175]]}]]]}],[\"billing_records\",[{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2020-10-02\"],[\"period_end_date\",\"2020-11-04\"],[\"usage\",29],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2020-11-05\"],[\"period_end_date\",\"2020-12-03\"],[\"usage\",36],[\"analysis_type_override\",null],[\"inclusion_override\",true],[\"analysis_type\",1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",48736.22736085496]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2020-12-04\"],[\"period_end_date\",\"2021-01-07\"],[\"usage\",97],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",41661.03299080584]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-01-08\"],[\"period_end_date\",\"2021-02-05\"],[\"usage\",105],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",46564.67671353479]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-02-06\"],[\"period_end_date\",\"2021-03-05\"],[\"usage\",98],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",46242.564920934274]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-03-06\"],[\"period_end_date\",\"2021-04-06\"],[\"usage\",66],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-04-07\"],[\"period_end_date\",\"2021-05-05\"],[\"usage\",22],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-05-06\"],[\"period_end_date\",\"2021-06-07\"],[\"usage\",19],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-06-08\"],[\"period_end_date\",\"2021-07-06\"],[\"usage\",7],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",-1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-07-07\"],[\"period_end_date\",\"2021-08-04\"],[\"usage\",10],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",-1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-08-05\"],[\"period_end_date\",\"2021-09-08\"],[\"usage\",11],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",-1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-09-09\"],[\"period_end_date\",\"2021-10-05\"],[\"usage\",8],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-10-06\"],[\"period_end_date\",\"2021-11-03\"],[\"usage\",13],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-11-04\"],[\"period_end_date\",\"2021-12-06\"],[\"usage\",41],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",true],[\"whole_home_heat_loss_rate\",36769.311473356196]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-12-07\"],[\"period_end_date\",\"2022-01-05\"],[\"usage\",86],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",50773.22541680993]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-01-06\"],[\"period_end_date\",\"2022-02-03\"],[\"usage\",132],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",54033.143655785156]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-02-04\"],[\"period_end_date\",\"2022-03-07\"],[\"usage\",116],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",true],[\"whole_home_heat_loss_rate\",60844.43423671721]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-03-08\"],[\"period_end_date\",\"2022-04-04\"],[\"usage\",49],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-04-05\"],[\"period_end_date\",\"2022-05-05\"],[\"usage\",39],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-05-06\"],[\"period_end_date\",\"2022-06-06\"],[\"usage\",20],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-06-07\"],[\"period_end_date\",\"2022-07-05\"],[\"usage\",9],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",-1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-07-06\"],[\"period_end_date\",\"2022-08-03\"],[\"usage\",7],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",-1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-08-04\"],[\"period_end_date\",\"2022-09-03\"],[\"usage\",8],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",-1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-09-04\"],[\"period_end_date\",\"2022-10-03\"],[\"usage\",8],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-10-04\"],[\"period_end_date\",\"2022-11-03\"],[\"usage\",19],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]}]]]}" + } as SchemaZodFromFormType, shouldValidate: 'onBlur', }) From 969aa66e6e8f78fb9569da3aec7c7c842e21c765 Mon Sep 17 00:00:00 2001 From: Thad Kerosky Date: Wed, 13 Nov 2024 06:15:43 +0000 Subject: [PATCH 3/4] python passed default_inclusion_by_calculation is now default_inclusion --- .../ui/heat/CaseSummaryComponents/AnalysisHeader.tsx | 4 ++-- .../ui/heat/CaseSummaryComponents/EnergyUseHistoryChart.tsx | 2 +- heat-stack/app/routes/_heat+/single.tsx | 4 ++-- heat-stack/types/index.ts | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/heat-stack/app/components/ui/heat/CaseSummaryComponents/AnalysisHeader.tsx b/heat-stack/app/components/ui/heat/CaseSummaryComponents/AnalysisHeader.tsx index 2ea31225..523a5d91 100644 --- a/heat-stack/app/components/ui/heat/CaseSummaryComponents/AnalysisHeader.tsx +++ b/heat-stack/app/components/ui/heat/CaseSummaryComponents/AnalysisHeader.tsx @@ -46,13 +46,13 @@ export function AnalysisHeader({ usage_data }: { usage_data: UsageDataSchema}) { const recordsIncludedByDefault = heatingAnalysisTypeRecords?.filter( (billingRecord) => - billingRecord.default_inclusion_by_calculation === true && + billingRecord.default_inclusion === true && billingRecord.inclusion_override === false, ).length; const recordsIncludedByOverride = heatingAnalysisTypeRecords?.filter( (billingRecord) => - billingRecord.default_inclusion_by_calculation === false && + billingRecord.default_inclusion === false && billingRecord.inclusion_override === true, ).length; diff --git a/heat-stack/app/components/ui/heat/CaseSummaryComponents/EnergyUseHistoryChart.tsx b/heat-stack/app/components/ui/heat/CaseSummaryComponents/EnergyUseHistoryChart.tsx index 51dd57b2..086bf82b 100644 --- a/heat-stack/app/components/ui/heat/CaseSummaryComponents/EnergyUseHistoryChart.tsx +++ b/heat-stack/app/components/ui/heat/CaseSummaryComponents/EnergyUseHistoryChart.tsx @@ -147,7 +147,7 @@ export function EnergyUseHistoryChart({ usage_data, conform_form, fields }: { us } // Adjust inclusion for user input - let calculatedInclusion = period.default_inclusion_by_calculation + let calculatedInclusion = period.default_inclusion if (period.inclusion_override) { calculatedInclusion = !calculatedInclusion } diff --git a/heat-stack/app/routes/_heat+/single.tsx b/heat-stack/app/routes/_heat+/single.tsx index cb4c5c47..35ccfc19 100644 --- a/heat-stack/app/routes/_heat+/single.tsx +++ b/heat-stack/app/routes/_heat+/single.tsx @@ -412,7 +412,7 @@ Traceback (most recent call last): File "", line 32, 'analysis_type_override' => undefined, 'inclusion_override' => false, 'analysis_type' => 0, - 'default_inclusion_by_calculation' => false, + 'default_inclusion' => false, 'eliminated_as_outlier' => false, 'whole_home_heat_loss_rate' => undefined }, */ @@ -613,7 +613,7 @@ export default function Inputs() { setback_hours_per_day: 8, // design_temperature_override: '', // 2020-12-03 is true: - usage_data_with_user_adjustments: "{\"dataType\":\"Map\",\"value\":[[\"summary_output\",{\"dataType\":\"Map\",\"value\":[[\"estimated_balance_point\",61.5],[\"other_fuel_usage\",0.2857142857142857],[\"average_indoor_temperature\",67],[\"difference_between_ti_and_tbp\",5.5],[\"design_temperature\",1],[\"whole_home_heat_loss_rate\",48001.81184312083],[\"standard_deviation_of_heat_loss_rate\",0.08066745182677547],[\"average_heat_load\",3048115.0520381727],[\"maximum_heat_load\",3312125.0171753373]]}],[\"balance_point_graph\",{\"dataType\":\"Map\",\"value\":[[\"records\",[{\"dataType\":\"Map\",\"value\":[[\"balance_point\",60],[\"heat_loss_rate\",51056.8007761249],[\"change_in_heat_loss_rate\",0],[\"percent_change_in_heat_loss_rate\",0],[\"standard_deviation\",0.17628334816871494]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",60.5],[\"heat_loss_rate\",49641.09065667595],[\"change_in_heat_loss_rate\",-1415.7101194489514],[\"percent_change_in_heat_loss_rate\",-2.851891650085171],[\"standard_deviation\",0.17828325017380922]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59.5],[\"heat_loss_rate\",52531.668333800335],[\"change_in_heat_loss_rate\",1474.8675576754322],[\"percent_change_in_heat_loss_rate\",2.8075779895352406],[\"standard_deviation\",0.17443387685061057]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59.5],[\"heat_loss_rate\",52531.668333800335],[\"change_in_heat_loss_rate\",1474.8675576754322],[\"percent_change_in_heat_loss_rate\",2.8075779895352406],[\"standard_deviation\",0.17443387685061057]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59],[\"heat_loss_rate\",54071.908410221266],[\"change_in_heat_loss_rate\",1540.2400764209306],[\"percent_change_in_heat_loss_rate\",2.848503264829797],[\"standard_deviation\",0.17298594078724697]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59],[\"heat_loss_rate\",54071.908410221266],[\"change_in_heat_loss_rate\",1540.2400764209306],[\"percent_change_in_heat_loss_rate\",2.848503264829797],[\"standard_deviation\",0.17298594078724697]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",58.5],[\"heat_loss_rate\",55697.678832556725],[\"change_in_heat_loss_rate\",1625.7704223354594],[\"percent_change_in_heat_loss_rate\",2.9189195248566713],[\"standard_deviation\",0.17277383864097884]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",58.5],[\"heat_loss_rate\",55697.678832556725],[\"change_in_heat_loss_rate\",1625.7704223354594],[\"percent_change_in_heat_loss_rate\",2.9189195248566713],[\"standard_deviation\",0.17277383864097884]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",58],[\"heat_loss_rate\",57389.10146127484],[\"change_in_heat_loss_rate\",1691.4226287181154],[\"percent_change_in_heat_loss_rate\",2.9472889201087384],[\"standard_deviation\",0.1732541612054347]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59],[\"heat_loss_rate\",56768.56639074183],[\"change_in_heat_loss_rate\",-1633.1649217006925],[\"percent_change_in_heat_loss_rate\",-2.876882446633423],[\"standard_deviation\",0.11390817174664584]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59],[\"heat_loss_rate\",56768.56639074183],[\"change_in_heat_loss_rate\",-1633.1649217006925],[\"percent_change_in_heat_loss_rate\",-2.876882446633423],[\"standard_deviation\",0.11390817174664584]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59.5],[\"heat_loss_rate\",55229.19886484982],[\"change_in_heat_loss_rate\",-1539.3675258920048],[\"percent_change_in_heat_loss_rate\",-2.787234936467135],[\"standard_deviation\",0.11124427880653119]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59.5],[\"heat_loss_rate\",55229.19886484982],[\"change_in_heat_loss_rate\",-1539.3675258920048],[\"percent_change_in_heat_loss_rate\",-2.787234936467135],[\"standard_deviation\",0.11124427880653119]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",60],[\"heat_loss_rate\",53751.25155581334],[\"change_in_heat_loss_rate\",-1477.9473090364845],[\"percent_change_in_heat_loss_rate\",-2.7496053882612164],[\"standard_deviation\",0.10927575007028069]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",60],[\"heat_loss_rate\",53751.25155581334],[\"change_in_heat_loss_rate\",-1477.9473090364845],[\"percent_change_in_heat_loss_rate\",-2.7496053882612164],[\"standard_deviation\",0.10927575007028069]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",60.5],[\"heat_loss_rate\",52323.72128080989],[\"change_in_heat_loss_rate\",-1427.5302750034461],[\"percent_change_in_heat_loss_rate\",-2.728265956739211],[\"standard_deviation\",0.10801613348768026]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",60.5],[\"heat_loss_rate\",52323.72128080989],[\"change_in_heat_loss_rate\",-1427.5302750034461],[\"percent_change_in_heat_loss_rate\",-2.728265956739211],[\"standard_deviation\",0.10801613348768026]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",61],[\"heat_loss_rate\",50945.7751226953],[\"change_in_heat_loss_rate\",-1377.9461581145952],[\"percent_change_in_heat_loss_rate\",-2.7047309709117537],[\"standard_deviation\",0.10764428073606047]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",61],[\"heat_loss_rate\",50945.7751226953],[\"change_in_heat_loss_rate\",-1377.9461581145952],[\"percent_change_in_heat_loss_rate\",-2.7047309709117537],[\"standard_deviation\",0.10764428073606047]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",61.5],[\"heat_loss_rate\",49631.792545334356],[\"change_in_heat_loss_rate\",-1313.982577360941],[\"percent_change_in_heat_loss_rate\",-2.6474614555997174],[\"standard_deviation\",0.10811412177333496]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",61.5],[\"heat_loss_rate\",48001.81184312083],[\"change_in_heat_loss_rate\",-1294.1867605708176],[\"percent_change_in_heat_loss_rate\",-2.6961206481131783],[\"standard_deviation\",0.08066745182677547]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",61.5],[\"heat_loss_rate\",48001.81184312083],[\"change_in_heat_loss_rate\",-1294.1867605708176],[\"percent_change_in_heat_loss_rate\",-2.6961206481131783],[\"standard_deviation\",0.08066745182677547]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",62],[\"heat_loss_rate\",46755.80641468955],[\"change_in_heat_loss_rate\",-1246.0054284312791],[\"percent_change_in_heat_loss_rate\",-2.6649212664201087],[\"standard_deviation\",0.0815069913122175]]}]]]}],[\"billing_records\",[{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2020-10-02\"],[\"period_end_date\",\"2020-11-04\"],[\"usage\",29],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2020-11-05\"],[\"period_end_date\",\"2020-12-03\"],[\"usage\",36],[\"analysis_type_override\",null],[\"inclusion_override\",true],[\"analysis_type\",1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",48736.22736085496]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2020-12-04\"],[\"period_end_date\",\"2021-01-07\"],[\"usage\",97],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",41661.03299080584]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-01-08\"],[\"period_end_date\",\"2021-02-05\"],[\"usage\",105],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",46564.67671353479]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-02-06\"],[\"period_end_date\",\"2021-03-05\"],[\"usage\",98],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",46242.564920934274]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-03-06\"],[\"period_end_date\",\"2021-04-06\"],[\"usage\",66],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-04-07\"],[\"period_end_date\",\"2021-05-05\"],[\"usage\",22],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-05-06\"],[\"period_end_date\",\"2021-06-07\"],[\"usage\",19],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-06-08\"],[\"period_end_date\",\"2021-07-06\"],[\"usage\",7],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",-1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-07-07\"],[\"period_end_date\",\"2021-08-04\"],[\"usage\",10],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",-1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-08-05\"],[\"period_end_date\",\"2021-09-08\"],[\"usage\",11],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",-1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-09-09\"],[\"period_end_date\",\"2021-10-05\"],[\"usage\",8],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-10-06\"],[\"period_end_date\",\"2021-11-03\"],[\"usage\",13],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-11-04\"],[\"period_end_date\",\"2021-12-06\"],[\"usage\",41],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",true],[\"whole_home_heat_loss_rate\",36769.311473356196]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-12-07\"],[\"period_end_date\",\"2022-01-05\"],[\"usage\",86],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",50773.22541680993]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-01-06\"],[\"period_end_date\",\"2022-02-03\"],[\"usage\",132],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",54033.143655785156]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-02-04\"],[\"period_end_date\",\"2022-03-07\"],[\"usage\",116],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",true],[\"whole_home_heat_loss_rate\",60844.43423671721]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-03-08\"],[\"period_end_date\",\"2022-04-04\"],[\"usage\",49],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-04-05\"],[\"period_end_date\",\"2022-05-05\"],[\"usage\",39],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-05-06\"],[\"period_end_date\",\"2022-06-06\"],[\"usage\",20],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-06-07\"],[\"period_end_date\",\"2022-07-05\"],[\"usage\",9],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",-1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-07-06\"],[\"period_end_date\",\"2022-08-03\"],[\"usage\",7],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",-1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-08-04\"],[\"period_end_date\",\"2022-09-03\"],[\"usage\",8],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",-1],[\"default_inclusion_by_calculation\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-09-04\"],[\"period_end_date\",\"2022-10-03\"],[\"usage\",8],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-10-04\"],[\"period_end_date\",\"2022-11-03\"],[\"usage\",19],[\"analysis_type_override\",null],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion_by_calculation\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]}]]]}" + usage_data_with_user_adjustments: "{\"dataType\":\"Map\",\"value\":[[\"summary_output\",{\"dataType\":\"Map\",\"value\":[[\"estimated_balance_point\",61],[\"other_fuel_usage\",0.2857142857142857],[\"average_indoor_temperature\",67],[\"difference_between_ti_and_tbp\",6],[\"design_temperature\",1],[\"whole_home_heat_loss_rate\",49034.24605150089],[\"standard_deviation_of_heat_loss_rate\",0.08107920947236946],[\"average_heat_load\",3089157.501244556],[\"maximum_heat_load\",3383362.977553562]]}],[\"balance_point_graph\",{\"dataType\":\"Map\",\"value\":[[\"records\",[{\"dataType\":\"Map\",\"value\":[[\"balance_point\",60],[\"heat_loss_rate\",50751.84424707842],[\"change_in_heat_loss_rate\",0],[\"percent_change_in_heat_loss_rate\",0],[\"standard_deviation\",0.17762732108218138]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",60.5],[\"heat_loss_rate\",49351.7377381596],[\"change_in_heat_loss_rate\",-1400.1065089188196],[\"percent_change_in_heat_loss_rate\",-2.836995358394915],[\"standard_deviation\",0.1798271300767453]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59.5],[\"heat_loss_rate\",52202.49959964235],[\"change_in_heat_loss_rate\",1450.655352563932],[\"percent_change_in_heat_loss_rate\",2.7789001746841078],[\"standard_deviation\",0.17549509302723926]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59.5],[\"heat_loss_rate\",52202.49959964235],[\"change_in_heat_loss_rate\",1450.655352563932],[\"percent_change_in_heat_loss_rate\",2.7789001746841078],[\"standard_deviation\",0.17549509302723926]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59],[\"heat_loss_rate\",53716.34626264865],[\"change_in_heat_loss_rate\",1513.8466630062976],[\"percent_change_in_heat_loss_rate\",2.818223442831111],[\"standard_deviation\",0.17371739799634828]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59],[\"heat_loss_rate\",53716.34626264865],[\"change_in_heat_loss_rate\",1513.8466630062976],[\"percent_change_in_heat_loss_rate\",2.818223442831111],[\"standard_deviation\",0.17371739799634828]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",58.5],[\"heat_loss_rate\",55312.58025877146],[\"change_in_heat_loss_rate\",1596.2339961228063],[\"percent_change_in_heat_loss_rate\",2.8858425852763863],[\"standard_deviation\",0.1730668905802622]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",58.5],[\"heat_loss_rate\",55312.58025877146],[\"change_in_heat_loss_rate\",1596.2339961228063],[\"percent_change_in_heat_loss_rate\",2.8858425852763863],[\"standard_deviation\",0.1730668905802622]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",58],[\"heat_loss_rate\",56971.89340277655],[\"change_in_heat_loss_rate\",1659.313144005093],[\"percent_change_in_heat_loss_rate\",2.9125118455765167],[\"standard_deviation\",0.17305156282938808]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",58],[\"heat_loss_rate\",56971.89340277655],[\"change_in_heat_loss_rate\",1659.313144005093],[\"percent_change_in_heat_loss_rate\",2.9125118455765167],[\"standard_deviation\",0.17305156282938808]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",57.5],[\"heat_loss_rate\",58741.674154580935],[\"change_in_heat_loss_rate\",1769.7807518043846],[\"percent_change_in_heat_loss_rate\",3.0128197353503063],[\"standard_deviation\",0.17375733723157114]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",58.5],[\"heat_loss_rate\",58048.25859778666],[\"change_in_heat_loss_rate\",-1669.620725147499],[\"percent_change_in_heat_loss_rate\",-2.8762632428238946],[\"standard_deviation\",0.11537968265448985]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",58.5],[\"heat_loss_rate\",58048.25859778666],[\"change_in_heat_loss_rate\",-1669.620725147499],[\"percent_change_in_heat_loss_rate\",-2.8762632428238946],[\"standard_deviation\",0.11537968265448985]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59],[\"heat_loss_rate\",56441.646738190946],[\"change_in_heat_loss_rate\",-1606.611859595716],[\"percent_change_in_heat_loss_rate\",-2.8465006824625663],[\"standard_deviation\",0.11219135371098693]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59],[\"heat_loss_rate\",56441.646738190946],[\"change_in_heat_loss_rate\",-1606.611859595716],[\"percent_change_in_heat_loss_rate\",-2.8465006824625663],[\"standard_deviation\",0.11219135371098693]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59.5],[\"heat_loss_rate\",54925.66656800196],[\"change_in_heat_loss_rate\",-1515.9801701889883],[\"percent_change_in_heat_loss_rate\",-2.760057847112506],[\"standard_deviation\",0.11013586977745508]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",59.5],[\"heat_loss_rate\",54925.66656800196],[\"change_in_heat_loss_rate\",-1515.9801701889883],[\"percent_change_in_heat_loss_rate\",-2.760057847112506],[\"standard_deviation\",0.11013586977745508]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",60],[\"heat_loss_rate\",53469.292882404676],[\"change_in_heat_loss_rate\",-1456.373685597282],[\"percent_change_in_heat_loss_rate\",-2.7237571456205583],[\"standard_deviation\",0.10873478491484781]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",60],[\"heat_loss_rate\",53469.292882404676],[\"change_in_heat_loss_rate\",-1456.373685597282],[\"percent_change_in_heat_loss_rate\",-2.7237571456205583],[\"standard_deviation\",0.10873478491484781]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",60.5],[\"heat_loss_rate\",52054.234365405966],[\"change_in_heat_loss_rate\",-1415.0585169987098],[\"percent_change_in_heat_loss_rate\",-2.718431140616535],[\"standard_deviation\",0.10796623014889713]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",60.5],[\"heat_loss_rate\",52054.234365405966],[\"change_in_heat_loss_rate\",-1415.0585169987098],[\"percent_change_in_heat_loss_rate\",-2.718431140616535],[\"standard_deviation\",0.10796623014889713]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",61],[\"heat_loss_rate\",50689.39313858954],[\"change_in_heat_loss_rate\",-1364.8412268164248],[\"percent_change_in_heat_loss_rate\",-2.692557835689256],[\"standard_deviation\",0.10802755725510106]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",61],[\"heat_loss_rate\",49034.24605150089],[\"change_in_heat_loss_rate\",-1346.9825032616063],[\"percent_change_in_heat_loss_rate\",-2.747023991858393],[\"standard_deviation\",0.08107920947236946]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",61],[\"heat_loss_rate\",49034.24605150089],[\"change_in_heat_loss_rate\",-1346.9825032616063],[\"percent_change_in_heat_loss_rate\",-2.747023991858393],[\"standard_deviation\",0.08107920947236946]]},{\"dataType\":\"Map\",\"value\":[[\"balance_point\",61.5],[\"heat_loss_rate\",47758.36993119142],[\"change_in_heat_loss_rate\",-1275.8761203094764],[\"percent_change_in_heat_loss_rate\",-2.671523592927719],[\"standard_deviation\",0.08118565683967957]]}]]]}],[\"billing_records\",[{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2020-10-02T00:00:00\"],[\"period_end_date\",\"2020-11-04T00:00:00\"],[\"usage\",29],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2020-11-05T00:00:00\"],[\"period_end_date\",\"2020-12-03T00:00:00\"],[\"usage\",36],[\"inclusion_override\",true],[\"analysis_type\",1],[\"default_inclusion\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",50387.45477657182]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2020-12-04T00:00:00\"],[\"period_end_date\",\"2021-01-07T00:00:00\"],[\"usage\",97],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",42511.72737306843]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-01-08T00:00:00\"],[\"period_end_date\",\"2021-02-05T00:00:00\"],[\"usage\",105],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",47454.94069060154]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-02-06T00:00:00\"],[\"period_end_date\",\"2021-03-05T00:00:00\"],[\"usage\",98],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",46937.122662347225]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-03-06T00:00:00\"],[\"period_end_date\",\"2021-04-06T00:00:00\"],[\"usage\",66],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-04-07T00:00:00\"],[\"period_end_date\",\"2021-05-05T00:00:00\"],[\"usage\",22],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-05-06T00:00:00\"],[\"period_end_date\",\"2021-06-07T00:00:00\"],[\"usage\",19],[\"inclusion_override\",false],[\"analysis_type\",-1],[\"default_inclusion\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-06-08T00:00:00\"],[\"period_end_date\",\"2021-07-06T00:00:00\"],[\"usage\",7],[\"inclusion_override\",false],[\"analysis_type\",-1],[\"default_inclusion\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-07-07T00:00:00\"],[\"period_end_date\",\"2021-08-04T00:00:00\"],[\"usage\",10],[\"inclusion_override\",false],[\"analysis_type\",-1],[\"default_inclusion\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-08-05T00:00:00\"],[\"period_end_date\",\"2021-09-08T00:00:00\"],[\"usage\",11],[\"inclusion_override\",false],[\"analysis_type\",-1],[\"default_inclusion\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-09-09T00:00:00\"],[\"period_end_date\",\"2021-10-05T00:00:00\"],[\"usage\",8],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-10-06T00:00:00\"],[\"period_end_date\",\"2021-11-03T00:00:00\"],[\"usage\",13],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-11-04T00:00:00\"],[\"period_end_date\",\"2021-12-06T00:00:00\"],[\"usage\",41],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion\",true],[\"eliminated_as_outlier\",true],[\"whole_home_heat_loss_rate\",37749.99196167326]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2021-12-07T00:00:00\"],[\"period_end_date\",\"2022-01-05T00:00:00\"],[\"usage\",86],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",51966.30480882896]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-01-06T00:00:00\"],[\"period_end_date\",\"2022-02-03T00:00:00\"],[\"usage\",132],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",54947.92599758739]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-02-04T00:00:00\"],[\"period_end_date\",\"2022-03-07T00:00:00\"],[\"usage\",116],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion\",true],[\"eliminated_as_outlier\",true],[\"whole_home_heat_loss_rate\",62092.26922926677]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-03-08T00:00:00\"],[\"period_end_date\",\"2022-04-04T00:00:00\"],[\"usage\",49],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-04-05T00:00:00\"],[\"period_end_date\",\"2022-05-05T00:00:00\"],[\"usage\",39],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-05-06T00:00:00\"],[\"period_end_date\",\"2022-06-06T00:00:00\"],[\"usage\",20],[\"inclusion_override\",false],[\"analysis_type\",-1],[\"default_inclusion\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-06-07T00:00:00\"],[\"period_end_date\",\"2022-07-05T00:00:00\"],[\"usage\",9],[\"inclusion_override\",false],[\"analysis_type\",-1],[\"default_inclusion\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-07-06T00:00:00\"],[\"period_end_date\",\"2022-08-03T00:00:00\"],[\"usage\",7],[\"inclusion_override\",false],[\"analysis_type\",-1],[\"default_inclusion\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-08-04T00:00:00\"],[\"period_end_date\",\"2022-09-03T00:00:00\"],[\"usage\",8],[\"inclusion_override\",false],[\"analysis_type\",-1],[\"default_inclusion\",true],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-09-04T00:00:00\"],[\"period_end_date\",\"2022-10-03T00:00:00\"],[\"usage\",8],[\"inclusion_override\",false],[\"analysis_type\",0],[\"default_inclusion\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]},{\"dataType\":\"Map\",\"value\":[[\"period_start_date\",\"2022-10-04T00:00:00\"],[\"period_end_date\",\"2022-11-03T00:00:00\"],[\"usage\",19],[\"inclusion_override\",false],[\"analysis_type\",1],[\"default_inclusion\",false],[\"eliminated_as_outlier\",false],[\"whole_home_heat_loss_rate\",null]]}]]]}" } as SchemaZodFromFormType, shouldValidate: 'onBlur', diff --git a/heat-stack/types/index.ts b/heat-stack/types/index.ts index cf106a39..a4ccfeb2 100644 --- a/heat-stack/types/index.ts +++ b/heat-stack/types/index.ts @@ -120,7 +120,7 @@ export const oneBillingRecordSchema = z.object({ */ // analysis_type: z.enum(["ALLOWED_HEATING_USAGE", "ALLOWED_NON_HEATING_USAGE", "NOT_ALLOWED_IN_CALCULATIONS"]), analysis_type: z.number(), - default_inclusion_by_calculation: z.boolean(), + default_inclusion: z.boolean(), eliminated_as_outlier: z.boolean(), whole_home_heat_loss_rate: z.number(), }); From 5a2b757163a6aa43e7ae23e1405ce6c9d92436f4 Mon Sep 17 00:00:00 2001 From: Thad Kerosky Date: Wed, 20 Nov 2024 01:50:07 +0000 Subject: [PATCH 4/4] changed pyodide-generated Map based the checkbox value Co-authored-by: Charlie Kelly Co-authored-by: plocket Co-authored-by: Ethan-Strominger --- .../EnergyUseHistoryChart.tsx | 77 +++++++++++++++++-- 1 file changed, 69 insertions(+), 8 deletions(-) diff --git a/heat-stack/app/components/ui/heat/CaseSummaryComponents/EnergyUseHistoryChart.tsx b/heat-stack/app/components/ui/heat/CaseSummaryComponents/EnergyUseHistoryChart.tsx index 086bf82b..b095b662 100644 --- a/heat-stack/app/components/ui/heat/CaseSummaryComponents/EnergyUseHistoryChart.tsx +++ b/heat-stack/app/components/ui/heat/CaseSummaryComponents/EnergyUseHistoryChart.tsx @@ -1,6 +1,6 @@ import { useState, useEffect } from 'react' import { type z } from 'zod' -import { type UsageDataSchema, type BillingRecordsSchema } from '#/types/types.ts' +import { type UsageDataSchema, type BillingRecordsSchema, BillingRecordSchema } from '#/types/types.ts' import { Checkbox } from '../../../../components/ui/checkbox.tsx' import { @@ -18,9 +18,10 @@ import NonHeatingUsage from './assets/NonHeatingUsage.svg' import NotAllowedInCalculations from './assets/NotAllowedInCalculations.svg' import { tr } from '@faker-js/faker' -import { FormMetadata, getInputProps } from '@conform-to/react' +import { FormMetadata, getInputProps, SubmissionResult } from '@conform-to/react' import { Button } from '#/app/components/ui/button.tsx' import { Input } from '../../input.tsx' +import { useActionData } from '@remix-run/react' // type NaturalGasBillRecord = z.infer // const naturalGasBillRecord01: NaturalGasBillRecord = { @@ -60,6 +61,7 @@ import { Input } from '../../input.tsx' export function EnergyUseHistoryChart({ usage_data, conform_form, fields }: { usage_data: UsageDataSchema, conform_form: FormMetadata, fields: any }) { const [billingRecords, setBillingRecords] = useState([]) + const lastResultAkaTheMap = useActionData() useEffect(() => { if (usage_data?.billing_records) { @@ -68,19 +70,77 @@ export function EnergyUseHistoryChart({ usage_data, conform_form, fields }: { us } }, [usage_data]) - const handleOverrideCheckboxChange = (index: number) => { + const handleOverrideCheckboxChange = (new_index: number) => { setBillingRecords((prevRecords) => { const newRecords = structuredClone(prevRecords) - const period = newRecords[index] + const period = newRecords[new_index] if (period) { const currentOverride = period.inclusion_override // Toggle 'inclusion_override' period.inclusion_override = !currentOverride - - newRecords[index] = { ...period } + newRecords[new_index] = { ...period } } + type ActionResult = + | SubmissionResult + | { data: string } + | undefined; + + /** typeguard for useAction between string[] and {data: string} */ + function hasDataProperty(result: ActionResult): result is { data: string } { + return result !== undefined && 'data' in result && typeof (result as any).data === 'string'; + } + + /** Pass this to JSON.parse() + * + * Usage: + * const originalValue = new Map([['a', 1]]); + * const str = JSON.stringify(originalValue, replacer); + * const newValue = JSON.parse(str, reviver); + * + * See https://stackoverflow.com/a/56150320 + */ + function reviver(key: any, value: any) { + if(typeof value === 'object' && value !== null) { + if (value.dataType === 'Map') { + return new Map(value.value); + } + } + return value; + } + + let newMap; + + try { + // Parse the JSON string from lastResult.data + newMap = JSON.parse(lastResultAkaTheMap.data, reviver) as any; + const billingRecordsFromMap = newMap.get('billing_records') ?? [] as Array + // TODO: try to do something more like this later, recognizing the outer is a Map, inner object is Array, and innermost is a Map. + // billingRecordsFromMap[ new_index ].set({ ...period }) + billingRecordsFromMap.forEach((record: any, index: number) => { + console.log( index, new_index, period?.inclusion_override ) + if ( index === new_index ) + record.set('inclusion_override', period?.inclusion_override); + }); + console.log("billingRecordsFromMap[new_index]", new_index, billingRecordsFromMap[new_index], newMap) + + } catch (error) { + console.error('Error parsing billingRecordsFromMap[new_index] data:', error); + } + + + + // const billingRecords = gasBillDataWithUserAdjustments.get('billing_records') + // billingRecords[ new_index ].set() + // // billingRecords.forEach((record: any, index: number) => { + // // if ( index === new_index ) + // // record.set('inclusion_override', true); + // // }); + // gasBillDataWithUserAdjustments.set('billing_records', null) + // gasBillDataWithUserAdjustments.set('billing_records', billingRecords) + // //console.log("(after customization) gasBillDataWithUserAdjustments billing records[0]", gasBillDataWithUserAdjustments.get('billing_records')[0]) + return newRecords }) } @@ -170,12 +230,13 @@ export function EnergyUseHistoryChart({ usage_data, conform_form, fields }: { us : '-'} -