Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle multi-item incentives, and more items #158

Merged
merged 3 commits into from
May 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 40 additions & 21 deletions src/api/calculator-types-v1.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,25 +28,46 @@ export interface Amount {
unit?: AmountUnit;
}

export type ItemType =
| 'battery_storage_installation'
| 'efficiency_rebates'
| 'electric_panel'
| 'electric_stove'
| 'electric_vehicle_charger'
| 'electric_wiring'
| 'geothermal_heating_installation'
| 'heat_pump_air_conditioner_heater'
| 'heat_pump_clothes_dryer'
| 'heat_pump_water_heater'
| 'new_electric_vehicle'
| 'rooftop_solar_installation'
| 'used_electric_vehicle'
| 'weatherization';
export const ITEMS = [
'air_sealing',
'air_to_water_heat_pump',
'attic_or_roof_insulation',
'basement_insulation',
'battery_storage_installation',
'central_air_conditioner',
'crawlspace_insulation',
'door_replacement',
'duct_replacement',
'duct_sealing',
'ducted_heat_pump',
'ductless_heat_pump',
'efficiency_rebates',
'electric_panel',
'electric_stove',
'electric_vehicle_charger',
'electric_wiring',
'energy_audit',
'floor_insulation',
'geothermal_heating_installation',
'heat_pump_air_conditioner_heater',
'heat_pump_clothes_dryer',
'heat_pump_water_heater',
'new_electric_vehicle',
'new_plugin_hybrid_vehicle',
'non_heat_pump_clothes_dryer',
'non_heat_pump_water_heater',
'other_heat_pump',
'other_insulation',
'other_weatherization',
'rooftop_solar_installation',
'used_electric_vehicle',
'used_plugin_hybrid_vehicle',
'wall_insulation',
'weatherization',
'window_replacement',
] as const;

export interface Item {
type: ItemType;
}
export type ItemType = (typeof ITEMS)[number];

export interface Incentive {
payment_methods: IncentiveType[];
Expand All @@ -55,9 +76,7 @@ export interface Incentive {
program: string;
program_url: string;
more_info_url?: string;
// TODO when "items" backend change is deployed, remove "item"
item: Item;
items?: ItemType[];
items: ItemType[];
amount: Amount;
start_date?: string;
end_date?: string;
Expand Down
27 changes: 27 additions & 0 deletions src/i18n/strings/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,15 @@ import { str } from '../str';

export const templates = {
s019265199296d7b0: `Hawái`,
s025c15001425a689: `reemplazo de ventanas`,
s04009ba1826b5fca: `Idaho`,
s04c4b18eb3941d37: `California`,
s07ecbff17886eb50: `un vehículo eléctrico usado`,
s08fb6007b5965c82: `Vehículo eléctrico`,
s0ec469a91a15f4a5: `kilovatio hora`,
s0f06604c95e47b84: `Wisconsin`,
s12603afef80b713c: `Estufa/cocina`,
s12bb428bacdba1ab: `un calentador de agua eléctrico`,
s12c2889034735d5e: `Empresa de servicios eléctricos`,
s13c6836e829c6f0d: `instalación de calefacción geotérmica`,
s16c70c46d6c9d383: `techo solar`,
Expand All @@ -26,6 +28,8 @@ export const templates = {
s1cc63fbd986ae5d9: `Descuento en impermeabilización`,
s1e73057deee4510e: `Sin embargo, los reembolsos se aplicarán de forma diferente en cada estado, de manera que no podemos garantizar los montos finales, la elegibilidad ni los plazos.`,
s1f0dc611dbdf4115: `Ingresa sus ingresos brutos (ingresos antes de impuestos). Incluye salarios y sueldos, además de otras formas de ingresos, como pensiones, intereses, dividendos e ingresos por alquiler. Si está casado y presenta una declaración conjunta, incluye los ingresos de su cónyuge.`,
s22fdf6e102292d52: `un vehículo híbrido enchufable`,
s2361ab00b9155f96: `una bomba de calor de aire a agua`,
s24ea3f43230aae41: `[email protected]`,
s255857544a9d5ec0: `Reiniciar`,
s26946b3c896d36d6: `Vehículo eléctrico`,
Expand Down Expand Up @@ -58,10 +62,14 @@ export const templates = {
s459781c939bc83e5: `Ingresos del hogar`,
s45d344440b59c309: `Manténgase al día sobre incentivos, reembolsos, y más de Rewiring America.`,
s475d01cc643aa9fc: `Subscríbase para recibir actualizaciones de Rewiring America.`,
s48ad5711856cfb44: `un vehículo híbrido enchufable nuevo`,
s48b23a6c3431c19e: `una secadora con bomba de calor`,
s4b0d7bd386d61b46: `Colorado`,
s4b3298c4c6db9310: str`\$${0} de descuento en ${1}`,
s4c498b8628becdec: `un calentador de agua`,
s4fc629e3c9345af1: `un vehículo usado`,
s50994ba3f0a45429: `Presentado en colaboración con`,
s50c22fc6197c004a: `un vehículo nuevo`,
s50e95c2064db3522: `Calculadora por`,
s56f9b2194465973e: `tonelada`,
s57355ce02837df3c: `Illinois`,
Expand All @@ -75,6 +83,7 @@ export const templates = {
s635e3d7c474426ce: `Descuento en una secadora con bomba de calor`,
s64fbe9b97e397b12: `Estamos dedicados a proteger su privacidad.`,
s675cdfc08b387d5a: `Ohio`,
s67d20e39f7ca49f9: `aislamiento del piso`,
s67ef2eb5002eaaa5: `Podría ser que no hay incentivos en su área o que usted no califica financieramente para recibir ningún incentivo.`,
s682a379fdd67cad0: `Alabama`,
s68467de4d67c9732: `pie cuadrado`,
Expand All @@ -89,16 +98,22 @@ export const templates = {
s777612e8117ff021: `Tennessee`,
s79fd9ba9e498d3da: str`${0} del costo de ${1}, hasta \$${2}`,
s7a73c90a7c3b43b4: `un calentador de agua con bomba de calor`,
s7ac656d7ee9d3ee9: `una auditoría energética`,
s7b55523ddae83552: `sellado de ductos`,
s7bd0de02e230dc75: `Calentador de agua`,
s7d340cf80adae3a4: `Misuri`,
s7f5b705d1bd02849: `La elegibilidad depende de la ubicación de residencia.`,
s8194d17164cbd6de: `Florida`,
s81aa671e64f2010e: `Dakota del Norte`,
s82397872ac9bddcf: `Tamaño del hogar`,
s863623721dcb0072: str`Esperado en ${0}`,
s8735995522894316: `una secadora`,
s8b29a87eb1bdd138: `Otros incentivos disponibles para usted`,
s8d144dc64bfb64a5: `un vehículo híbrido enchufable usado`,
s8e22cc4a5315cc18: `sellado del aire`,
s8e35f6b4e6e0adb9: `Pensilvania`,
s8e7e52ad112342ab: `un cargador de vehículos eléctricos`,
s8eb01eb62cbb17ed: `reemplazo de puertas`,
s8ee1a34f2ada948d: str`Los lineamientos federals permiten un reembolso de hasta \$${0}, basado en el ahorro de energía simulado o en el ahorro de energía medido logrado por el reacondicionamiento.`,
s8f668dd0fa1b8c4e: `Reembolso por eficiencia`,
s8fd029fdcc452602: `Ingrese su código postal para seleccionar una empresa de servicios eléctricos.`,
Expand All @@ -111,9 +126,11 @@ export const templates = {
s9eba0933010df96e: `Más información`,
s9fbb21f25571fff1: `Le informaremos sobre incentivos, reembolsos, y más de Rewiring America.`,
s9fc7054353f62fda: `Casado que presenta una declaración por separado`,
sa23c90be33fdda77: `una secadora eléctrica`,
sa413e4572603726f: `Almacenamiento de baterías`,
sa59611704b7a37f7: `Maryland`,
sa8693630efda6dd3: `Crédito fiscal`,
sa9e16de0ec0154b3: `aire acondicionado central`,
saa36bebd89cbd670: `Alaska`,
sab07cf2bfae8483f: `Política de privacidad`,
sabd5662f3f0a76be: `Descuento por adelantado`,
Expand All @@ -133,18 +150,23 @@ export const templates = {
sb661e8297dd681e2: `Incentivo`,
sb694f3d582a0dbb9: `Selecciona "Cabeza de familia" si tiene un hijo o pariente que vive con usted y paga más de la mitad de los gastos de su hogar. Selecciona "Conjunta" si declara sus impuestos como pareja casada.`,
sb6975fd8aa3fa26f: `Climatización`,
sb842284a98e8aed1: `una bomba de calor sin ductos`,
sb932cf0734934406: `Su código postal ayuda a determinar la cantidad de descuentos y créditos fiscales para los que califica.`,
sb9e8a9bfc8bcf398: `Rhode Island`,
sba0e115b257c6647: `una bomba de calor de fuente de aire`,
sbafed52303428041: `https://homes.rewiringamerica.org/es/federal-incentives/home-efficiency-rebates`,
sbc39e1d2cd027ca9: `una bomba de calor con ductos`,
sbc39ee880f922370: `Ninguno seleccionado`,
sbc6f031a2851e3fd: str`\$${0}/${1} de descuento en ${2}, hasta \$${3}`,
sbd6f35e4bb46fc68: `una estufa eléctrica/inducción`,
sbd73a9b9860a2ae3: `Massachusetts`,
sbe4508f09222c889: `Soltero`,
sc026bbb64721085f: `Casado que presenta una declaración conjunta`,
sc2e0d466583b17f8: `aislamiento del entrepiso`,
sc373af4c1a974b57: `Cocina`,
sc5b20cb72269bc4f: `Los propietarios y inquilinos califican para diferentes incentivos.`,
sc9266b1b6ae1aad4: `Esperado en 2024-2025`,
sc991c5ecbb3023ef: `aislamiento térmico`,
sc997cfdf24ba9b58: `Aún no tenemos datos sobre las empresas de servicios eléctricos en su área.`,
sc9e494c8346b7cb5: `Otra`,
sca61f9664c0f6099: `https://homes.rewiringamerica.org/es/federal-incentives/home-electrification-appliance-rebates`,
Expand All @@ -162,6 +184,7 @@ export const templates = {
sdb1f28de105f079e: `Dirección de correo electrónico (opcional)`,
sdc1f8a2139793221: `Volver a la calculadora`,
sdca5ca4d7a86693d: `Deseleccionar todo`,
se024b39a39b61641: `aislamiento del muro`,
se0f90ce39968b1d5: `Cabeza de familia`,
se4572a1a2528a7d4: `Código postal`,
se510125be9bcd015: `Seleccione su empresa de servicios eléctricos`,
Expand All @@ -170,11 +193,15 @@ export const templates = {
se6845b7d2d664ad8: `Dakota del Sur`,
se86b0c32ca2d7413: `Ahora está suscrito a nuestro boletín informativo.`,
se94a76041107bbf3: `Eléctrico`,
sec13c0ca288e67eb: `aislamiento del desván/techo`,
secc3df112f8ab69d: `un vehículo eléctrico`,
sf05c1c17e90b0ddd: `Inquilino`,
sf12bd6cb13bc154f: `Arizona`,
sf1e2063bc64f3539: `Arkansas`,
sf3affd5c9f2915e0: `Connecticut`,
sf459faf797f733a9: `Impermeabilización`,
sf59668536419404a: `aislamiento del sótano`,
sf685070e5a85e7d1: `reemplazo de ductos`,
sf844ac31d5fba2c9: `impermeabilización`,
sf8b5deb9ea9f5054: `Descuento en una estufa eléctrica`,
sfa7338035e1ef173: `Alquilar o poseer`,
Expand Down
6 changes: 6 additions & 0 deletions src/i18n/use-translated.ts
Original file line number Diff line number Diff line change
Expand Up @@ -107,3 +107,9 @@ export const useTranslated = (): { msg: MsgFn; locale: Locale } => {

return { msg, locale };
};

/** FOR TESTING ONLY: a version of msg that just passes the original through. */
export const passthroughMsg: MsgFn = str =>
typeof str === 'string'
? str
: assembleStrResult(str.template, str.values, null);
4 changes: 2 additions & 2 deletions src/ira-rebates.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ const hearRebates: {
maxAmount: 2500,
},
{
project: 'heat_pump_water_heater',
project: 'water_heater',
getHeadline: msg => msg('Discount off a heat pump water heater'),
maxAmount: 1750,
},
Expand All @@ -44,7 +44,7 @@ const hearRebates: {
maxAmount: 8000,
},
{
project: 'heat_pump_clothes_dryer',
project: 'clothes_dryer',
getHeadline: msg => msg('Discount off a heat pump clothes dryer'),
maxAmount: 840,
},
Expand Down
Loading
Loading