diff --git a/static/images/shop/graphic-03_VHDCI_carrier.svg b/static/images/shop/graphic-03_VHDCI_carrier.svg
new file mode 100644
index 0000000..3cd6a4d
--- /dev/null
+++ b/static/images/shop/graphic-03_VHDCI_carrier.svg
@@ -0,0 +1,533 @@
+
+
diff --git a/static/js/shop.jsx b/static/js/shop.jsx
index 2406e83..6ca3d64 100644
--- a/static/js/shop.jsx
+++ b/static/js/shop.jsx
@@ -627,6 +627,14 @@ class ProductCartItem extends React.PureComponent {
);
break;
+ case 'vhdcicarrier':
+ render_progress = (
+
+
{`${data.nbrCurrentSlot}/${model.nbrSlotMax} EEM connectors used`}
+
+ );
+ break;
+
case 'zotino':
case 'hd68':
render_progress = (
@@ -2006,7 +2014,7 @@ class Shop extends React.PureComponent {
// check the number of EEM connectors available for all Kasli
const idxK = itemsCloned.reduce((prev, next, i) => {
- if (next.type === 'kasli') {
+ if (next.type === 'kasli' || next.type === 'vhdcicarrier') {
prev.push(i);
}
return prev;
@@ -2080,7 +2088,7 @@ class Shop extends React.PureComponent {
if (itemsCloned.length > (idx + 1)) {
const ddkali = itemsCloned[idx + 1];
- if (ddkali.type === 'kasli') {
+ if (ddkali.type === 'kasli' || ddkali.type === 'vhdcicarrier') {
rules[ddkali.rules.follow.type] = {...ddkali.rules.follow};
}
}
diff --git a/static/js/shop.min.js b/static/js/shop.min.js
index 6a97b03..753cbcb 100644
--- a/static/js/shop.min.js
+++ b/static/js/shop.min.js
@@ -385,7 +385,7 @@ var Layout = /*#__PURE__*/function (_React$PureComponent) {
className: "small"
}, "Input the JSON description below. Should be something like:", /*#__PURE__*/React.createElement("br", null), JSON.stringify({
"items": [{
- "pn": "1123"
+ "pn": "1124"
}, {
"pn": "2118"
}, {
@@ -687,6 +687,12 @@ var ProductCartItem = /*#__PURE__*/function (_React$PureComponent3) {
}, /*#__PURE__*/React.createElement("p", null, "".concat(data.nbrCurrentSlot, "/").concat(model.nbrSlotMax, " EEM connectors used")), /*#__PURE__*/React.createElement("p", null, "".concat(data.nbrCurrentClock, "/").concat(model.nbrClockMax, " Clock connectors used")));
break;
+ case 'vhdcicarrier':
+ render_progress = /*#__PURE__*/React.createElement("div", {
+ className: "k-popup-connectors"
+ }, /*#__PURE__*/React.createElement("p", null, "".concat(data.nbrCurrentSlot, "/").concat(model.nbrSlotMax, " EEM connectors used")));
+ break;
+
case 'zotino':
case 'hd68':
render_progress = /*#__PURE__*/React.createElement("div", {
@@ -2016,7 +2022,7 @@ var Shop = /*#__PURE__*/function (_React$PureComponent12) {
var idxK = itemsCloned.reduce(function (prev, next, i) {
- if (next.type === 'kasli') {
+ if (next.type === 'kasli' || next.type === 'vhdcicarrier') {
prev.push(i);
}
@@ -2096,7 +2102,7 @@ var Shop = /*#__PURE__*/function (_React$PureComponent12) {
if (itemsCloned.length > idx + 1) {
var ddkali = itemsCloned[idx + 1];
- if (ddkali.type === 'kasli') {
+ if (ddkali.type === 'kasli' || ddkali.type === 'vhdcicarrier') {
rules[ddkali.rules.follow.type] = _objectSpread({}, ddkali.rules.follow);
}
}
diff --git a/static/js/shop_data.js b/static/js/shop_data.js
index a131337..74b8a80 100644
--- a/static/js/shop_data.js
+++ b/static/js/shop_data.js
@@ -93,7 +93,51 @@ const shop_data = {
type: 'kasli-follow',
icon: '/shop/icon-reminder.svg',
name: 'Kasli',
- message: 'Due to wiring constraints, a Kasli can only connect to EEM cards immediately at its right, without crossing another Kasli.',
+ message: 'Due to wiring constraints, a Kasli can only connect to EEM cards immediately at its right, without crossing another carrier.',
+ },
+ },
+ },
+ 'vhdcicarrier': {
+ id: 'vhdcicarrier',
+ name: 'VHDCI Carrier',
+ name_number: '1008',
+ name_codename: '',
+ price: 400,
+ image: '/shop/graphic-03_VHDCI_carrier.svg',
+ specs: [
+ 'Passive adapter between VHDCI and EEMs.',
+ 'VHDCI (SCSI-3) cables can carry EEM signals over short distances between crates.',
+ 'Bidirectional: can be driven by Kasli (contact us), or can drive other cards.',
+ 'A pair of VHDCI carriers is a simple, low-latency and low-cost alternative to DRTIO for some applications.',
+ ],
+ size: 'big',
+ type: 'vhdcicarrier',
+ hp: 8,
+ nbrSlotMin: 0,
+ nbrSlotMax: 8,
+ nbrCurrentSlot: 0,
+ nbrClockMax: 0,
+ nbrCurrentClock: 0,
+ slotOccupied: 1,
+ clockOccupied: 0,
+ rules: {
+ maxSlot: {
+ type: 'vhdcicarrier-max-slot',
+ icon: '/shop/icon-reminder.svg',
+ name: 'VHDCI carrier',
+ message: 'Insufficient EEM connectors.',
+ },
+ maxSlotWarning: {
+ type: 'vhdcicarrier-max-slot-warning',
+ icon: '/shop/icon-warning.svg',
+ name: 'VHDCI carrier',
+ message: 'Insufficient EEM connectors',
+ },
+ follow: {
+ type: 'vhdcicarrier-follow',
+ icon: '/shop/icon-reminder.svg',
+ name: 'VHDCI carrier',
+ message: 'Due to wiring constraints, a VHDCI carrier can only connect to EEM cards immediately at its right, without crossing another carrier.',
},
},
},
@@ -589,6 +633,7 @@ const shop_data = {
/* itemIds define items order - change order to suit your need */
itemIds: [
'kasli',
+ 'vhdcicarrier',
'bnc-dio',
'sma-dio',
'rj45-dio',