diff --git a/static/js/shop.jsx b/static/js/shop.jsx
index dc95982..b4e208e 100644
--- a/static/js/shop.jsx
+++ b/static/js/shop.jsx
@@ -6,7 +6,7 @@ import { createRoot } from "react-dom/client";
import PropTypes from "prop-types";
import { DragDropContext, Droppable, Draggable } from "react-beautiful-dnd";
import { v4 as uuidv4 } from 'uuid';
-import { OptionsDialogPopup, OptionsSummaryPopup, fill_ext_data } from "./shop_components.jsx";import { OverlayTrigger } from "react-bootstrap";
+import { OptionsDialogPopup, OptionsSummaryPopup, FilterOptions, fill_ext_data } from "./shop_components.jsx";import { OverlayTrigger } from "react-bootstrap";
const data = window.shop_data;
const itemsUnfoldedList = Array.from(data.columns.backlog.categories.map(groupId => groupId.itemIds).flat());
@@ -718,13 +718,13 @@ class ProductCartItem extends React.PureComponent {
this.setState(options_data);
}),
unmount: ((outvar) => {
- console.log("delete", outvar, this.state.alive);
+ 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];
+ //if (this.state.alive)
+ // delete options_data[outvar];
})
}}
/>) : null) }
@@ -1442,6 +1442,9 @@ 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 (
) : ( (options && options_data) ?
- ( ) : null
+ ( ) : null
)}
{(!warning && !options) && (
@@ -1848,7 +1851,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, // TODO
});
}
diff --git a/static/js/shop_components.jsx b/static/js/shop_components.jsx
index 1657e89..beaadd4 100644
--- a/static/js/shop_components.jsx
+++ b/static/js/shop_components.jsx
@@ -97,10 +97,6 @@ class Switch extends Component {
this.props.target.construct(this.props.outvar, this.state.checked);
}
- componentWillUnmount() {
- this.props.target.unmount(this.props.outvar);
- }
-
handleClick() {
// Update the state object with the new value for outvar
let new_checked = !this.state.checked;
@@ -165,10 +161,6 @@ class Line extends Component {
this.props.target.construct(this.props.outvar, this.state.text);
}
- componentWillUnmount() {
- this.props.target.unmount(this.props.outvar);
- }
-
handleClick(element) {
let text = element.target.value;
this.setState({
@@ -225,10 +217,6 @@ class SwitchLine extends Component {
this.props.target.construct(this.props.outvar, this.state);
}
- componentWillUnmount() {
- this.props.target.unmount(this.props.outvar);
- }
-
handleText(element) {
let new_state = {
...this.state,
@@ -329,7 +317,12 @@ export function ProcessOptions({options, data, target, id}) {
} else if (options.type === "Group") {
return (
- { ProcessOptions({options: jsonLogic.apply(options.items, data), data: data, target: target, id: id}) }
+ {ProcessOptions({
+ options: jsonLogic.apply(options.items, data),
+ data: data,
+ target: target,
+ id: id
+ })}
);
} else {
return componentsList["Default"](options.type, id + "missing");
@@ -340,6 +333,34 @@ 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, _) => {
+ Object.assign(target, FilterOptions(option_item, data))
+ });
+ } else if (options_t === "object") {
+ if (
+ trueTypeOf(options.type) === "string" &&
+ (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))
+ }
+ } else {
+ Object.assign(target, FilterOptions(jsonLogic.apply(options, data), data))
+ }
+ }
+ console.log(target)
+ return target
+}
+
export function OptionsDialogPopup({options, data, target, id, big}) {
const [show, setShow] = useState(false);
const ref = useClickAway((e) => {
@@ -465,8 +486,8 @@ export function OptionsSummaryPopup({id, data}) {
export function fill_ext_data(data, index) {
return {
has_other_dio: data.filter((value, item_index) => index !== item_index && value.name.endsWith("-TTL")).length > 0,
- has_dds: data.filter(((value, _) => value.name === "DDS" )).length > 0,
- has_sampler: data.filter(((value, _) => value.name === "Sampler" )).length > 0
+ has_dds: data.filter(((value, _) => value.name === "DDS")).length > 0,
+ has_sampler: data.filter(((value, _) => value.name === "Sampler")).length > 0
}
}
diff --git a/static/js/shop_data.js b/static/js/shop_data.js
index eebe791..6ffe8b4 100644
--- a/static/js/shop_data.js
+++ b/static/js/shop_data.js
@@ -302,10 +302,10 @@ const shop_data = {
"if": [
{"!": {"var": "out_first_group"}},
{type: "Group", items: [
- {type: "Switch", args: {title: "Termination #0", fallback: true, outvar: "term_0", tip: "Enable termination on channel #0"}},
- {type: "Switch", args: {title: "Termination #1", fallback: true, outvar: "term_1", tip: "Enable termination on channel #1"}},
- {type: "Switch", args: {title: "Termination #2", fallback: true, outvar: "term_2", tip: "Enable termination on channel #2"}},
- {type: "Switch", args: {title: "Termination #3", fallback: true, outvar: "term_3", tip: "Enable termination on channel #3"}},
+ {type: "Switch", args: {title: "Termination #0", outvar: "term_0", tip: "Enable termination on channel #0"}},
+ {type: "Switch", args: {title: "Termination #1", outvar: "term_1", tip: "Enable termination on channel #1"}},
+ {type: "Switch", args: {title: "Termination #2", outvar: "term_2", tip: "Enable termination on channel #2"}},
+ {type: "Switch", args: {title: "Termination #3", outvar: "term_3", tip: "Enable termination on channel #3"}},
]},
null
]
@@ -315,10 +315,10 @@ const shop_data = {
"if": [
{"!": {"var": "out_second_group"}},
{type: "Group", items: [
- {type: "Switch", args: {title: "Termination #4", fallback: true, outvar: "term_4", tip: "Enable termination on channel #4"}},
- {type: "Switch", args: {title: "Termination #5", fallback: true, outvar: "term_5", tip: "Enable termination on channel #5"}},
- {type: "Switch", args: {title: "Termination #6", fallback: true, outvar: "term_6", tip: "Enable termination on channel #6"}},
- {type: "Switch", args: {title: "Termination #7", fallback: true, outvar: "term_7", tip: "Enable termination on channel #7"}},
+ {type: "Switch", args: {title: "Termination #4", outvar: "term_4", tip: "Enable termination on channel #4"}},
+ {type: "Switch", args: {title: "Termination #5", outvar: "term_5", tip: "Enable termination on channel #5"}},
+ {type: "Switch", args: {title: "Termination #6", outvar: "term_6", tip: "Enable termination on channel #6"}},
+ {type: "Switch", args: {title: "Termination #7", outvar: "term_7", tip: "Enable termination on channel #7"}},
]},
null
]
@@ -361,10 +361,10 @@ const shop_data = {
"if": [
{"!": {"var": "out_first_group"}},
{type: "Group", items: [
- {type: "Switch", args: {title: "Termination #0", fallback: true, outvar: "term_0", tip: "Enable termination on channel #0"}},
- {type: "Switch", args: {title: "Termination #1", fallback: true, outvar: "term_1", tip: "Enable termination on channel #1"}},
- {type: "Switch", args: {title: "Termination #2", fallback: true, outvar: "term_2", tip: "Enable termination on channel #2"}},
- {type: "Switch", args: {title: "Termination #3", fallback: true, outvar: "term_3", tip: "Enable termination on channel #3"}},
+ {type: "Switch", args: {title: "Termination #0", outvar: "term_0", tip: "Enable termination on channel #0"}},
+ {type: "Switch", args: {title: "Termination #1", outvar: "term_1", tip: "Enable termination on channel #1"}},
+ {type: "Switch", args: {title: "Termination #2", outvar: "term_2", tip: "Enable termination on channel #2"}},
+ {type: "Switch", args: {title: "Termination #3", outvar: "term_3", tip: "Enable termination on channel #3"}},
]},
null
]
@@ -374,10 +374,10 @@ const shop_data = {
"if": [
{"!": {"var": "out_second_group"}},
{type: "Group", items: [
- {type: "Switch", args: {title: "Termination #4", fallback: true, outvar: "term_4", tip: "Enable termination on channel #4"}},
- {type: "Switch", args: {title: "Termination #5", fallback: true, outvar: "term_5", tip: "Enable termination on channel #5"}},
- {type: "Switch", args: {title: "Termination #6", fallback: true, outvar: "term_6", tip: "Enable termination on channel #6"}},
- {type: "Switch", args: {title: "Termination #7", fallback: true, outvar: "term_7", tip: "Enable termination on channel #7"}},
+ {type: "Switch", args: {title: "Termination #4", outvar: "term_4", tip: "Enable termination on channel #4"}},
+ {type: "Switch", args: {title: "Termination #5", outvar: "term_5", tip: "Enable termination on channel #5"}},
+ {type: "Switch", args: {title: "Termination #6", outvar: "term_6", tip: "Enable termination on channel #6"}},
+ {type: "Switch", args: {title: "Termination #7", outvar: "term_7", tip: "Enable termination on channel #7"}},
]},
null
]
@@ -432,10 +432,10 @@ const shop_data = {
"if": [
{"!": {"var": "out_first_group"}},
{type: "Group", items: [
- {type: "Switch", args: {title: "Termination #0", fallback: true, outvar: "term_0", tip: "Enable termination on channel #0"}},
- {type: "Switch", args: {title: "Termination #1", fallback: true, outvar: "term_1", tip: "Enable termination on channel #1"}},
- {type: "Switch", args: {title: "Termination #2", fallback: true, outvar: "term_2", tip: "Enable termination on channel #2"}},
- {type: "Switch", args: {title: "Termination #3", fallback: true, outvar: "term_3", tip: "Enable termination on channel #3"}},
+ {type: "Switch", args: {title: "Termination #0", outvar: "term_0", tip: "Enable termination on channel #0"}},
+ {type: "Switch", args: {title: "Termination #1", outvar: "term_1", tip: "Enable termination on channel #1"}},
+ {type: "Switch", args: {title: "Termination #2", outvar: "term_2", tip: "Enable termination on channel #2"}},
+ {type: "Switch", args: {title: "Termination #3", outvar: "term_3", tip: "Enable termination on channel #3"}},
]},
null
]
@@ -445,10 +445,10 @@ const shop_data = {
"if": [
{"!": {"var": "out_second_group"}},
{type: "Group", items: [
- {type: "Switch", args: {title: "Termination #4", fallback: true, outvar: "term_4", tip: "Enable termination on channel #4"}},
- {type: "Switch", args: {title: "Termination #5", fallback: true, outvar: "term_5", tip: "Enable termination on channel #5"}},
- {type: "Switch", args: {title: "Termination #6", fallback: true, outvar: "term_6", tip: "Enable termination on channel #6"}},
- {type: "Switch", args: {title: "Termination #7", fallback: true, outvar: "term_7", tip: "Enable termination on channel #7"}},
+ {type: "Switch", args: {title: "Termination #4", outvar: "term_4", tip: "Enable termination on channel #4"}},
+ {type: "Switch", args: {title: "Termination #5", outvar: "term_5", tip: "Enable termination on channel #5"}},
+ {type: "Switch", args: {title: "Termination #6", outvar: "term_6", tip: "Enable termination on channel #6"}},
+ {type: "Switch", args: {title: "Termination #7", outvar: "term_7", tip: "Enable termination on channel #7"}},
]},
null
]
@@ -458,10 +458,10 @@ const shop_data = {
"if": [
{"!": {"var": "out_third_group"}},
{type: "Group", items: [
- {type: "Switch", args: {title: "Termination #8", fallback: true, outvar: "term_8", tip: "Enable termination on channel #8"}},
- {type: "Switch", args: {title: "Termination #9", fallback: true, outvar: "term_9", tip: "Enable termination on channel #9"}},
- {type: "Switch", args: {title: "Termination #10", fallback: true, outvar: "term_10", tip: "Enable termination on channel #10"}},
- {type: "Switch", args: {title: "Termination #11", fallback: true, outvar: "term_11", tip: "Enable termination on channel #11"}},
+ {type: "Switch", args: {title: "Termination #8", outvar: "term_8", tip: "Enable termination on channel #8"}},
+ {type: "Switch", args: {title: "Termination #9", outvar: "term_9", tip: "Enable termination on channel #9"}},
+ {type: "Switch", args: {title: "Termination #10", outvar: "term_10", tip: "Enable termination on channel #10"}},
+ {type: "Switch", args: {title: "Termination #11", outvar: "term_11", tip: "Enable termination on channel #11"}},
]},
null
]
@@ -471,10 +471,10 @@ const shop_data = {
"if": [
{"!": {"var": "out_fourth_group"}},
{type: "Group", items: [
- {type: "Switch", args: {title: "Termination #12", fallback: true, outvar: "term_12", tip: "Enable termination on channel #12"}},
- {type: "Switch", args: {title: "Termination #13", fallback: true, outvar: "term_13", tip: "Enable termination on channel #13"}},
- {type: "Switch", args: {title: "Termination #14", fallback: true, outvar: "term_14", tip: "Enable termination on channel #14"}},
- {type: "Switch", args: {title: "Termination #15", fallback: true, outvar: "term_15", tip: "Enable termination on channel #15"}},
+ {type: "Switch", args: {title: "Termination #12", outvar: "term_12", tip: "Enable termination on channel #12"}},
+ {type: "Switch", args: {title: "Termination #13", outvar: "term_13", tip: "Enable termination on channel #13"}},
+ {type: "Switch", args: {title: "Termination #14", outvar: "term_14", tip: "Enable termination on channel #14"}},
+ {type: "Switch", args: {title: "Termination #15", outvar: "term_15", tip: "Enable termination on channel #15"}},
]},
null
]