Fixed initial display of empty options in the options summary

Signed-off-by: Egor Savkin <es@m-labs.hk>
Egor Savkin 2023-09-18 11:49:56 +08:00
parent 3aa4cff4bf
commit edb2815e95
2 changed files with 8 additions and 25 deletions

View File

@ -721,23 +721,14 @@ class ProductCartItem extends React.PureComponent {
big={data.size === "big"}
target={{
construct: ((outvar, value) => {
console.log("construct", outvar, value, options_data);
// console.log("construct", outvar, value, options_data);
options_data[outvar] = value;
this.setState(options_data);
}),
update: ((outvar, value) => {
console.log("update", outvar, value, options_data);
// console.log("update", outvar, value, options_data);
if (outvar in options_data) options_data[outvar] = value;
this.setState(options_data);
}),
unmount: ((outvar) => {
console.log("delete", outvar);
//let opt_data = this.state;
//delete opt_data[outvar];
//this.setState(opt_data);
// TODO this needs to be stopped when the whole card getting unmounted
//if (this.state.alive)
// delete options_data[outvar];
})
}}
/>) : null) }
@ -885,8 +876,6 @@ class Cart extends React.PureComponent {
const shouldTooltipWarningClassInverted = nbrSlots - nbrOccupied < 5;
console.log(data.items);
const products = data.items.map((item, index) => {
let itemData;
let ext_data = fill_ext_data(data.itemsData, index);
@ -1457,9 +1446,6 @@ class OrderSumary extends React.PureComponent {
}
options = itemsData[index] && itemsData[index].options;
options_data = itemsData[index] && itemsData[index].options_data;
let options_data_clone = Object.assign({}, options_data)
let display_options = FilterOptions(options, options_data_clone); // TODO fix faulty display
console.log(options, options_data, display_options)
return (
<tr key={item.id}
@ -1488,7 +1474,7 @@ class OrderSumary extends React.PureComponent {
src={`/images/${warning.icon}`}
/>
) : ( (options && options_data) ?
( <OptionsSummaryPopup id={item.id + "options"} data={display_options} /> ) : null
( <OptionsSummaryPopup id={item.id + "options"} options={options} data={options_data} /> ) : null
)}
{(!warning && !options) && (
@ -1741,7 +1727,6 @@ class Shop extends React.PureComponent {
}
handleDeleteItem(index) {
console.log(this.state.columns.cart.items)
let cloned = Array.from(this.state.columns.cart.items);
let cloned_data = Array.from(this.state.columns.cart.itemsData);
cloned.splice(index, 1);
@ -1899,7 +1884,7 @@ class Shop extends React.PureComponent {
const item_data = clonedCartData[i];
crate.items.push({
'pn': item.name_number,
'options': (item_data.options_data && item_data.options) ? FilterOptions(item_data.options, item_data.options_data) : null, // TODO
'options': (item_data.options_data && item_data.options) ? FilterOptions(item_data.options, item_data.options_data) : null,
});
}
@ -1984,7 +1969,7 @@ class Shop extends React.PureComponent {
const item_data = clonedCartData[i];
crate.items.push({
'pn': item.name_number,
'options': item_data.options_data ? item_data.options_data : null,
'options': (item_data.options_data && item_data.options) ? FilterOptions(item_data.options, item_data.options_data) : null,
});
}

View File

@ -336,7 +336,6 @@ export function ProcessOptions({options, data, target, id}) {
export function FilterOptions(options, data) {
let options_t = trueTypeOf(options);
let target = {};
console.log(options, data);
if (options_t === "array") {
options.map((option_item, _) => {
@ -348,7 +347,6 @@ export function FilterOptions(options, data) {
(trueTypeOf(options.args) === "object" || trueTypeOf(options.items) === "array")
) {
if (options.type in componentsList) {
console.log(options.args.outvar, data[options.args.outvar], data);
target[options.args.outvar] = data[options.args.outvar];
} else if (options.type === "Group") {
Object.assign(target, FilterOptions(jsonLogic.apply(options.items, data), data))
@ -357,7 +355,6 @@ export function FilterOptions(options, data) {
Object.assign(target, FilterOptions(jsonLogic.apply(options, data), data))
}
}
console.log(target)
return target
}
@ -391,10 +388,11 @@ export function OptionsDialogPopup({options, data, target, id, big}) {
);
}
export function OptionsSummaryPopup({id, data}) {
export function OptionsSummaryPopup({id, options, data}) {
const [show, setShow] = useState(false);
const [position, setPosition] = useState({x: 0, y: 0});
const [size, setSize] = useState({w: 0, h: 0});
let display_options = FilterOptions(options, data);
const close = () => {
setShow(false);
document.removeEventListener("scroll", handleScroll, true);
@ -472,7 +470,7 @@ export function OptionsSummaryPopup({id, data}) {
className="overlayVariant card border rounded"
id={id}>
<div className="card-body">
{Array.from(Object.entries(data)
{Array.from(Object.entries(display_options)
.filter(([key, value], _) => key !== "ext_data")
.map(([key, value], _) => {
return (<p className="card-text" key={id + key}><i>{key}</i>: {stringify(value)}</p>);