diff --git a/static/js/shop/OptionsWrapper.jsx b/static/js/shop/OptionsWrapper.jsx index 73326c2..5a2103c 100644 --- a/static/js/shop/OptionsWrapper.jsx +++ b/static/js/shop/OptionsWrapper.jsx @@ -5,7 +5,8 @@ import {SummaryPopup} from "./options/SummaryPopup"; export function OptionsDialogWrapper({crate_index, card_index, first, last}) { const crate_id = useShopStore((state) => state.crates[crate_index].id); - const options = useShopStore((state) => state.crates[crate_index].items[card_index].options); + const use_options = useShopStore((state) => state.crateParams(state.crates[crate_index].crate_mode).options); + const options = useShopStore((state) => state.crates[crate_index].items[card_index][use_options]); const options_data = useShopStore((state) => state.crates[crate_index].items[card_index].options_data); const card_size = useShopStore((state) => state.crates[crate_index].items[card_index].size); const card_id = useShopStore((state) => state.crates[crate_index].items[card_index].id); @@ -53,7 +54,8 @@ export function OptionsDialogWrapper({crate_index, card_index, first, last}) { export function OptionsSummaryWrapper({crate_index, card_index}) { const card_id = useShopStore((state) => state.crates[crate_index].items[card_index].id); - const options = useShopStore((state) => state.crates[crate_index].items[card_index].options); + const use_options = useShopStore((state) => state.crateParams(state.crates[crate_index].crate_mode).options); + const options = useShopStore((state) => state.crates[crate_index].items[card_index][use_options]); const options_data = useShopStore((state) => state.crates[crate_index].items[card_index].options_data); return ( diff --git a/static/js/shop/ProductCartItem.jsx b/static/js/shop/ProductCartItem.jsx index 39b7fc7..559e692 100644 --- a/static/js/shop/ProductCartItem.jsx +++ b/static/js/shop/ProductCartItem.jsx @@ -25,7 +25,8 @@ export function ProductCartItem({card_index, crate_index, first, last}) { const card_counted_resources = useShopStore(state => state.crates[crate_index].items[card_index].counted_resources, compareObjectsEmptiness); const highlighted = useShopStore((state) => state.crates[crate_index].id === state.highlighted.crate && card_index === state.highlighted.card); - const options_disabled = useShopStore((state) => !!state.crateParams(state.crates[crate_index].crate_mode).warnings_disabled); + const warnings_disabled = useShopStore((state) => !!state.crateParams(state.crates[crate_index].crate_mode).warnings_disabled); + const use_options = useShopStore((state) => state.crateParams(state.crates[crate_index].crate_mode).options); const crate_id = useShopStore((state) => state.crates[crate_index].id); const setHighlight = useShopStore((state) => state.highlightCard); const removeHighlight = useShopStore((state) => state.highlightReset); @@ -35,9 +36,9 @@ export function ProductCartItem({card_index, crate_index, first, last}) { console.log("ProductCartItem renders: ", renderCount) - const options = !options_disabled && card && card.options && card.options.length > 0; - const warnings = !options_disabled && card_show_warnings && card_show_warnings.length > 0; - const resources = !options_disabled && card_counted_resources && card_counted_resources.length > 0; + const options = use_options && card && card[use_options] && card[use_options].length > 0; + const warnings = !warnings_disabled && card_show_warnings && card_show_warnings.length > 0; + const resources = !warnings_disabled && card_counted_resources && card_counted_resources.length > 0; return ( diff --git a/static/js/shop/SummaryCrateCard.jsx b/static/js/shop/SummaryCrateCard.jsx index 3edc55d..00c5658 100644 --- a/static/js/shop/SummaryCrateCard.jsx +++ b/static/js/shop/SummaryCrateCard.jsx @@ -23,16 +23,16 @@ export function SummaryCrateCard({crate_index, card_index}) { (a, b) => a.id === b.id); const card_show_warnings = useShopStore(state => state.crates[crate_index].items[card_index].show_warnings, compareObjectsEmptiness); const card_options_data = useShopStore(state => state.crates[crate_index].items[card_index].options_data, compareObjectsEmptiness); - const options_disabled = useShopStore((state) => !!state.crateParams(state.crates[crate_index].crate_mode).warnings_disabled); - + const warnings_disabled = useShopStore((state) => !!state.crateParams(state.crates[crate_index].crate_mode).warnings_disabled); + const use_options = useShopStore((state) => state.crateParams(state.crates[crate_index].crate_mode).options); // #!render_count console.log("SummaryCrateCard renders: ", renderCount) - const options = !options_disabled && card && card.options && card.options.length > 0; - const options_data = !options_disabled && card_options_data && Object.keys(card_options_data).length > 0; - const warnings = !options_disabled && card_show_warnings && card_show_warnings.length > 0; + const options = use_options && card && card[use_options] && card[use_options].length > 0; + const options_data = card_options_data && Object.keys(card_options_data).length > 0; + const warnings = !warnings_disabled && card_show_warnings && card_show_warnings.length > 0; return ( { setShow(!show); }; diff --git a/static/js/shop_data.js b/static/js/shop_data.js index bc147dd..a17847d 100644 --- a/static/js/shop_data.js +++ b/static/js/shop_data.js @@ -6,20 +6,23 @@ const shop_data = { id: 'rack', name: 'Rack mountable crate', price: 550, - hp: 84 + hp: 84, + options: "options" }, desktop: { id: 'desktop', name: 'Desktop crate', price: 500, - hp: 42 + hp: 42, + options: "options" }, no_crate: { id: 'no_crate', name: 'Spare cards', price: 0, hp: -1, - warnings_disabled: true + warnings_disabled: true, + options: "crateless_options" } }, crateModeOrder: [