diff --git a/package-lock.json b/package-lock.json
index 77875ba..cb9ec6e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,9 +7,6 @@
"": {
"name": "m-labs-zola",
"version": "1.0.0",
- "dependencies": {
- "json-logic-js": "^2.0.2"
- },
"devDependencies": {
"@babel/cli": "^7.22.6",
"@babel/core": "^7.22.8",
@@ -20,6 +17,7 @@
"babel-preset-minify": "^0.5.2",
"bootstrap": "^5.3.0",
"jquery": "^3.7.0",
+ "json-logic-js": "^2.0.2",
"prop-types": "^15.8.1",
"react": "^18.2.0",
"react-beautiful-dnd": "^13.1.1",
@@ -3661,7 +3659,8 @@
"node_modules/json-logic-js": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/json-logic-js/-/json-logic-js-2.0.2.tgz",
- "integrity": "sha512-ZBtBdMJieqQcH7IX/LaBsr5pX+Y5JIW+EhejtM3Ffg2jdN9Iwf+Ht6TbHnvAZ/YtwyuhPaCBlnvzrwVeWdvGDQ=="
+ "integrity": "sha512-ZBtBdMJieqQcH7IX/LaBsr5pX+Y5JIW+EhejtM3Ffg2jdN9Iwf+Ht6TbHnvAZ/YtwyuhPaCBlnvzrwVeWdvGDQ==",
+ "dev": true
},
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
diff --git a/static/images/shop/icon-customize.svg b/static/images/shop/icon-customize.svg
index cee836b..43a4c44 100644
--- a/static/images/shop/icon-customize.svg
+++ b/static/images/shop/icon-customize.svg
@@ -1,47 +1 @@
-
-
+
diff --git a/static/js/shop_components.jsx b/static/js/shop_components.jsx
index 4e6c154..a63e691 100644
--- a/static/js/shop_components.jsx
+++ b/static/js/shop_components.jsx
@@ -318,6 +318,7 @@ export function CustomizeData({id, data}) {
return (
diff --git a/static/js/shop_data.js b/static/js/shop_data.js
index 6dcfbeb..b645a62 100644
--- a/static/js/shop_data.js
+++ b/static/js/shop_data.js
@@ -83,8 +83,7 @@ const shop_data = {
],
null
]
- },
- null
+ }
],
rules: {
maxSlot: {
@@ -166,8 +165,7 @@ const shop_data = {
],
null
]
- },
- null
+ }
],
rules: {
maxSlot: {
@@ -285,8 +283,8 @@ const shop_data = {
slotOccupied: 1,
clockOccupied: 0,
options: [
- {type: "Switch", args: {title: "Output upper bank", outvar: "upper_bank"}},
- {type: "Switch", args: {title: "Output lower bank", outvar: "lower_bank", fallback: true}}
+ {type: "Switch", args: {title: "Output first group", outvar: "out_first_group"}},
+ {type: "Switch", args: {title: "Output second group", outvar: "out_second_group", fallback: true}}
],
rules: {
resources: {
@@ -310,8 +308,8 @@ 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 upper bank", outvar: "upper_bank"}},
- {type: "Switch", args: {title: "Output lower bank", outvar: "lower_bank", fallback: true}}
+ {type: "Switch", args: {title: "Output first group", outvar: "out_first_group"}},
+ {type: "Switch", args: {title: "Output second group", outvar: "out_second_group", fallback: true}}
],
size: 'small',
type: null,
@@ -346,6 +344,12 @@ 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"}},
+ {type: "Switch", args: {title: "Output second group", outvar: "out_second_group", fallback: true}},
+ {type: "Switch", args: {title: "Output third group", outvar: "out_third_group", fallback: true}},
+ {type: "Switch", args: {title: "Output fourth group", outvar: "out_fourth_group", fallback: true}}
+ ],
size: 'small',
type: null,
hp: 4,
@@ -416,6 +420,30 @@ const shop_data = {
],
datasheet_file: '/docs/sinara-datasheets/4410-4412.pdf',
datasheet_name: '4410/4412 Urukul datasheet',
+ options: [
+ {type: "Switch", args: {title: "AD9912 instead of AD9910", outvar: "ad9912"}},
+ {
+ "if": [
+ {"var": "ad9912"},
+ [
+ {type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", fallback: {text: "125 MHz", checked: false}}},
+ ],
+ [
+ {type: "Switch", args: {title: "Synchronization", outvar: "sync"}},
+ {
+ "if": [
+ {"var": "sync"},
+ null,
+ [
+ {type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", fallback: {text: "125 MHz", checked: false}}},
+ {type: "Switch", args: {title: "SUServo mode", outvar: "suservo"}}
+ ]
+ ]
+ }
+ ]
+ ]
+ }
+ ],
size: 'small',
type: 'urukul',
hp: 4,
@@ -461,6 +489,9 @@ const shop_data = {
'Internal MMCX clock from Kasli/Clocker and external SMA.',
'The upconverter is optional, if you would like the baseband version please leave us a note.'
],
+ options: [
+ {type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", fallback: {text: "125 MHz", checked: false}}}
+ ],
size: 'small',
type: 'urukul',
hp: 4,
@@ -714,6 +745,9 @@ const shop_data = {
'Full-scale input ranges between +-10mV and +-10V.',
'Supports SU-Servo laser intensity stabilization servo in conjunction with Urukul.'
],
+ options: [
+ {type: "Switch", args: {title: "SUServo mode", outvar: "suservo"}}
+ ],
size: 'big',
type: 'novo',
hp: 8,
@@ -788,6 +822,9 @@ const shop_data = {
'Frequency up to 1GHz.',
'Low jitter <100fs RMS.'
],
+ options: [
+ {type: "Switch", args: {title: "Ext CLK", outvar: "ext_clk"}}
+ ],
size: 'small',
type: 'clocker',
hp: 4,
@@ -850,6 +887,9 @@ const shop_data = {
'Lower jitter and phase noise.',
'Large frequency changes take several milliseconds.',
],
+ options: [
+ {type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", fallback: {text: "125 MHz", checked: false}}}
+ ],
size: 'small',
type: null,
hp: 4,
@@ -879,6 +919,9 @@ const shop_data = {
'Additional 4 channels up to 12 GHz.',
'Each Almazny channel outputs twice the frequency of its corresponding Mirny channel.',
],
+ options: [
+ {type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", fallback: {text: "125 MHz", checked: false}}}
+ ],
size: 'big',
type: null,
hp: 8,