diff --git a/static/js/shop.jsx b/static/js/shop.jsx
index 72e9901..12adf3f 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 } from "./shop_components.jsx";import { OverlayTrigger } from "react-bootstrap";
+import { OptionsDialogPopup, OptionsSummaryPopup, 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());
@@ -538,6 +538,7 @@ class ProductCartItem extends React.PureComponent {
index: PropTypes.number.isRequired,
model: PropTypes.object.isRequired,
data: PropTypes.object,
+ ext_data: PropTypes.object,
onToggleOverlayRemove: PropTypes.func,
onClickRemoveItem: PropTypes.func,
onClickItem: PropTypes.func,
@@ -591,6 +592,7 @@ class ProductCartItem extends React.PureComponent {
model,
data,
index,
+ ext_data,
} = this.props;
let warning, options, options_data;
@@ -608,6 +610,7 @@ class ProductCartItem extends React.PureComponent {
options = data.options;
if (!data.options_data) data.options_data = {};
options_data = data.options_data;
+ options_data.ext_data = ext_data;
}
let render_progress;
@@ -702,7 +705,7 @@ class ProductCartItem extends React.PureComponent {
data={options_data}
key={"popover" + index}
id={"popover" + index}
- big={data.size == "big"}
+ big={data.size === "big"}
target={{
construct: ((outvar, value) => {
//console.log("construct", outvar, value, options_data);
@@ -867,6 +870,7 @@ class Cart extends React.PureComponent {
const products = data.items.map((item, index) => {
let itemData;
+ let ext_data = fill_ext_data(data.itemsData, index);
if (data.itemsData && index in data.itemsData) {
itemData = data.itemsData[index];
}
@@ -880,6 +884,7 @@ class Cart extends React.PureComponent {
id={item.id}
index={index}
data={itemData}
+ ext_data={ext_data}
onToggleOverlayRemove={onToggleOverlayRemove}
onClickRemoveItem={onClickRemoveItem}
onClickItem={onClickItem}
diff --git a/static/js/shop_components.jsx b/static/js/shop_components.jsx
index 3af8e87..c0d1224 100644
--- a/static/js/shop_components.jsx
+++ b/static/js/shop_components.jsx
@@ -436,12 +436,22 @@ export function OptionsSummaryPopup({id, data}) {
className="overlayVariant card border rounded"
id={id}>
- {Array.from(Object.entries(data).map(([key, value], _) => {
- return (
{key}: {stringify(value)}
);
- }))}
+ {Array.from(Object.entries(data)
+ .filter(([key, value], _) => key !== "ext_data")
+ .map(([key, value], _) => {
+ return (
{key}: {stringify(value)}
);
+ }))}
);
}
+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
+ }
+}
+
diff --git a/static/js/shop_data.js b/static/js/shop_data.js
index 505327c..0e4c44e 100644
--- a/static/js/shop_data.js
+++ b/static/js/shop_data.js
@@ -287,7 +287,17 @@ const shop_data = {
slotOccupied: 1,
clockOccupied: 0,
options: [
- {type: "Switch", args: {title: "Output first group", outvar: "out_first_group", tip: "Switch connectors 0-3 to output"}},
+ {
+ "if": [
+ {"var": "ext_data.has_other_dio"},
+ [
+ {type: "Switch", args: {title: "Output first group", fallback: true, outvar: "out_first_group", tip: "Switch connectors 0-3 to output"}}
+ ],
+ [
+ {type: "Switch", args: {title: "Output first group", outvar: "out_first_group", tip: "Switch connectors 0-3 to output"}}
+ ]
+ ]
+ },
{type: "Switch", args: {title: "Output second group", outvar: "out_second_group", fallback: true, tip: "Switch connectors 4-7 to output"}}
],
rules: {
@@ -312,7 +322,17 @@ const shop_data = {
datasheet_file: '/docs/sinara-datasheets/2118-2128.pdf',
datasheet_name: '2118/2128 BNC/SMA-TTL datasheet',
options: [
- {type: "Switch", args: {title: "Output first group", outvar: "out_first_group", tip: "Switch connectors 0-3 to output"}},
+ {
+ "if": [
+ {"var": "ext_data.has_other_dio"},
+ [
+ {type: "Switch", args: {title: "Output first group", fallback: true, outvar: "out_first_group", tip: "Switch connectors 0-3 to output"}}
+ ],
+ [
+ {type: "Switch", args: {title: "Output first group", outvar: "out_first_group", tip: "Switch connectors 0-3 to output"}}
+ ]
+ ]
+ },
{type: "Switch", args: {title: "Output second group", outvar: "out_second_group", fallback: true, tip: "Switch connectors 4-7 to output"}}
],
size: 'small',
@@ -349,7 +369,17 @@ const shop_data = {
datasheet_file: '/docs/sinara-datasheets/2238.pdf',
datasheet_name: '2238 MCX-TTL datasheet',
options: [
- {type: "Switch", args: {title: "Output first group", outvar: "out_first_group", tip: "Switch connectors 0-3 to output"}},
+ {
+ "if": [
+ {"var": "ext_data.has_other_dio"},
+ [
+ {type: "Switch", args: {title: "Output first group", fallback: true, outvar: "out_first_group", tip: "Switch connectors 0-3 to output"}}
+ ],
+ [
+ {type: "Switch", args: {title: "Output first group", outvar: "out_first_group", tip: "Switch connectors 0-3 to output"}}
+ ]
+ ]
+ },
{type: "Switch", args: {title: "Output second group", outvar: "out_second_group", fallback: true, tip: "Switch connectors 4-7 to output"}},
{type: "Switch", args: {title: "Output third group", outvar: "out_third_group", fallback: true, tip: "Switch connectors 8-11 to output"}},
{type: "Switch", args: {title: "Output fourth group", outvar: "out_fourth_group", fallback: true, tip: "Switch connectors 12-15 to output"}}
@@ -440,7 +470,13 @@ const shop_data = {
null,
[
{type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", fallback: {text: "125 MHz", checked: false}}},
- {type: "Switch", args: {title: "SUServo mode", outvar: "suservo", }}
+ {
+ "if": [
+ {"var": "ext_data.has_sampler"},
+ {type: "Switch", args: {title: "SUServo mode", outvar: "suservo"}},
+ null
+ ]
+ }
]
]
}
@@ -750,7 +786,13 @@ const shop_data = {
'Supports SU-Servo laser intensity stabilization servo in conjunction with Urukul.'
],
options: [
- {type: "Switch", args: {title: "SUServo mode", outvar: "suservo"}}
+ {
+ "if": [
+ {"var": "ext_data.has_dds"},
+ {type: "Switch", args: {title: "SUServo mode", outvar: "suservo"}},
+ null
+ ]
+ }
],
size: 'big',
type: 'novo',