forked from M-Labs/web2019
Compare commits
5 Commits
148-phaser
...
master
Author | SHA1 | Date |
---|---|---|
Sebastien Bourdeauducq | bb42788fd3 | |
Egor Savkin | f29807a913 | |
Egor Savkin | 9d9a4c9f5a | |
Egor Savkin | 92f7428ac8 | |
Egor Savkin | a163a269b9 |
|
@ -170,13 +170,6 @@ We welcome inquiries from research groups of all sizes.<br>[See what has been fu
|
||||||
<a href="https://github.com/cnourshargh/Bham-ARTIQ-examples" target="_blank" rel="noopener noreferrer">Repository</a>
|
<a href="https://github.com/cnourshargh/Bham-ARTIQ-examples" target="_blank" rel="noopener noreferrer">Repository</a>
|
||||||
{% end %}
|
{% end %}
|
||||||
|
|
||||||
|
|
||||||
{% layout_card(title="Deltaflow-on-ARTIQ", sameheight=120) %}
|
|
||||||
<small>Run programs in the Deltaflow language from Riverlane on simulated ARTIQ</small>
|
|
||||||
|
|
||||||
<a href="https://github.com/riverlane/deltaflow-on-artiq" target="_blank" rel="noopener noreferrer">Repository</a>
|
|
||||||
{% end %}
|
|
||||||
|
|
||||||
{% layout_card(title="DAX - Duke ARTIQ extensions", sameheight=120) %}
|
{% layout_card(title="DAX - Duke ARTIQ extensions", sameheight=120) %}
|
||||||
<small>A library to provide tools for system organization/abstraction and to improve usability by automating common functionality.</small>
|
<small>A library to provide tools for system organization/abstraction and to improve usability by automating common functionality.</small>
|
||||||
|
|
||||||
|
|
|
@ -90,28 +90,52 @@ a {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-light .navbar-nav .nav-link,
|
.navbar {
|
||||||
.dropdown-item {
|
.navbar-light .navbar-nav .nav-link,
|
||||||
outline: none;
|
.dropdown-item {
|
||||||
color: $color-primary;
|
outline: none;
|
||||||
text-decoration: none;
|
|
||||||
|
|
||||||
&:visited {
|
|
||||||
color: $color-primary;
|
color: $color-primary;
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
|
&:visited {
|
||||||
|
color: $color-primary;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: $color-secondary;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
.navbar-light .navbar-nav .active>.nav-link,
|
||||||
|
.navbar-light .navbar-nav .nav-link.active,
|
||||||
|
.navbar-light .navbar-nav .nav-link.show,
|
||||||
|
.navbar-light .navbar-nav .show>.nav-link {
|
||||||
color: $color-secondary;
|
color: $color-secondary;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-light .navbar-nav .active>.nav-link,
|
.dropdown-menu {
|
||||||
.navbar-light .navbar-nav .nav-link.active,
|
border: none;
|
||||||
.navbar-light .navbar-nav .nav-link.show,
|
}
|
||||||
.navbar-light .navbar-nav .show>.nav-link {
|
.dropdown-item {
|
||||||
color: $color-secondary;
|
&:hover,
|
||||||
}
|
&:active {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.dropdown-item.active {
|
||||||
|
color: $color-secondary;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-toggler {
|
||||||
|
outline: none;
|
||||||
|
|
||||||
|
&:focus,
|
||||||
|
&:hover {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -127,22 +151,6 @@ a {
|
||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-menu {
|
|
||||||
border: none;
|
|
||||||
margin-top: 0;
|
|
||||||
padding-top: 0;
|
|
||||||
}
|
|
||||||
.dropdown-item {
|
|
||||||
&:hover,
|
|
||||||
&:active {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.dropdown-item.active {
|
|
||||||
color: $color-secondary;
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary {
|
.btn-primary {
|
||||||
background-color: $btn-primary-2;
|
background-color: $btn-primary-2;
|
||||||
color: #fff !important;
|
color: #fff !important;
|
||||||
|
@ -155,18 +163,11 @@ a {
|
||||||
border: 1px solid $btn-secondary-2 !important;
|
border: 1px solid $btn-secondary-2 !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-lg {
|
.btn-lg {
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
padding: 1rem 1.25rem;
|
padding: 1rem 1.25rem;
|
||||||
}
|
}
|
||||||
.navbar-toggler {
|
|
||||||
outline: none;
|
|
||||||
|
|
||||||
&:focus,
|
|
||||||
&:hover {
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.th {
|
ul.th {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
|
@ -200,6 +201,63 @@ ul:not(.navbar-nav) li {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.download-selector {
|
||||||
|
display: inline-flex;
|
||||||
|
|
||||||
|
.divider {
|
||||||
|
border-right: solid 1px white;
|
||||||
|
margin: 0.125rem 0;
|
||||||
|
height: inherit;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dropdown-menu {
|
||||||
|
border: none;
|
||||||
|
margin-top: 0;
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
background-color: $btn-primary-2;
|
||||||
|
&:hover {
|
||||||
|
background-color: $btn-secondary-2;
|
||||||
|
}
|
||||||
|
&:after {
|
||||||
|
align-self: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
button {
|
||||||
|
&[aria-expanded='true']:after {
|
||||||
|
transform: rotate(-180deg);
|
||||||
|
}
|
||||||
|
span {
|
||||||
|
margin-right: 0.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
list-style: none;
|
||||||
|
margin-left: 0!important;
|
||||||
|
width: 100%;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
li {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
a {
|
||||||
|
padding: 0.75rem 0.5rem 0.75rem 1.25rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
li::before {
|
||||||
|
content: none;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.bg-white-shadow {
|
.bg-white-shadow {
|
||||||
background: url(../images/migen-links@2x.png);
|
background: url(../images/migen-links@2x.png);
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
<svg width="48" height="48" version="1.1" viewBox="0 0 12.7 12.7" xmlns="http://www.w3.org/2000/svg"><g fill="#fff" stroke-linecap="round" stroke-opacity=".6" stroke-width=".35269"><path d="m0.52917 0.52917h5.5563v5.5563h-5.5563z"/><path d="m6.6146 0.52917h5.5563v5.5563h-5.5563z"/><path d="m0.52917 6.6146h5.5563v5.5563h-5.5563z"/><path d="m6.6146 6.6146h5.5563v5.5563h-5.5563z"/></g></svg>
|
After Width: | Height: | Size: 392 B |
File diff suppressed because one or more lines are too long
|
@ -480,7 +480,7 @@ const useCart = ((set, get) => ({
|
||||||
let itemsCopy = Array.from(crate.items);
|
let itemsCopy = Array.from(crate.items);
|
||||||
const disabled = !!get().crateParams(crate.crate_mode).warnings_disabled;
|
const disabled = !!get().crateParams(crate.crate_mode).warnings_disabled;
|
||||||
itemsCopy = FillResources(itemsCopy, disabled);
|
itemsCopy = FillResources(itemsCopy, disabled);
|
||||||
itemsCopy = TriggerWarnings(itemsCopy, disabled, crate);
|
itemsCopy = TriggerWarnings(itemsCopy, disabled);
|
||||||
const [crate_warnings, occupied] = TriggerCrateWarnings(crate);
|
const [crate_warnings, occupied] = TriggerCrateWarnings(crate);
|
||||||
return {
|
return {
|
||||||
...crate,
|
...crate,
|
||||||
|
|
|
@ -30,14 +30,14 @@ const find_next_source_index = (data, index, source) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const not_enough_resource_trigger = (name) => {
|
const not_enough_resource_trigger = (name) => {
|
||||||
return (_data, _index, counters, _crate) => {
|
return (_data, _index, counters) => {
|
||||||
const resource = find_in_counters(counters, name);
|
const resource = find_in_counters(counters, name);
|
||||||
return resource.occupied > resource.max;
|
return resource.occupied > resource.max;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const no_source_trigger = (name) => {
|
const no_source_trigger = (name) => {
|
||||||
return (data, index, _counters, _crate) => {
|
return (data, index, _counters) => {
|
||||||
const occupied = item_occupied_counters[name](data[index]);
|
const occupied = item_occupied_counters[name](data[index]);
|
||||||
if (occupied > 0)
|
if (occupied > 0)
|
||||||
return !find_previous_source(data, index, name);
|
return !find_previous_source(data, index, name);
|
||||||
|
@ -46,20 +46,12 @@ const no_source_trigger = (name) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const wiring_constraint = (name) => {
|
const wiring_constraint = (name) => {
|
||||||
return (data, index, _counters, _crate) => {
|
return (data, index, _counters) => {
|
||||||
const next = find_next_source_index(data, index, name);
|
const next = find_next_source_index(data, index, name);
|
||||||
return next - index === 1;
|
return next - index === 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const phaser_next_card_long = (data, index, counters, crate) => {
|
|
||||||
const nbrOccupied = resource_counters.hp(crate.items, -1);
|
|
||||||
const nbrHP = useShopStore.getState().crateParams(crate.crate_mode).hp;
|
|
||||||
return (index < data.length - 1) ? (
|
|
||||||
(data[index+1].consumes && data[index+1].consumes.depth && data[index+1].consumes.depth >= 8.5)
|
|
||||||
) : (nbrOccupied >= nbrHP && nbrHP > 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
const Types = {
|
const Types = {
|
||||||
"eem_resource": {
|
"eem_resource": {
|
||||||
level: "warning",
|
level: "warning",
|
||||||
|
@ -96,27 +88,22 @@ const Types = {
|
||||||
trigger: wiring_constraint("eem"),
|
trigger: wiring_constraint("eem"),
|
||||||
message: "Due to wiring constraints, the carrier can only connect to EEM cards immediately at its right, without crossing another carrier."
|
message: "Due to wiring constraints, the carrier can only connect to EEM cards immediately at its right, without crossing another carrier."
|
||||||
},
|
},
|
||||||
"phaser_next_card_long": {
|
|
||||||
level: "reminder",
|
|
||||||
trigger: phaser_next_card_long,
|
|
||||||
message: "Next card may interfere with this Phaser. Consider placing a short card after this Phaser."
|
|
||||||
},
|
|
||||||
"default": {
|
"default": {
|
||||||
level: "warning",
|
level: "warning",
|
||||||
trigger: (_a, _b, _c, _d) => {
|
trigger: (_a, _b, _c) => {
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
message: 'This item has unimplemented warning'
|
message: 'This item has unimplemented warning'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function TriggerWarnings(data, disabled, crate) {
|
export function TriggerWarnings(data, disabled) {
|
||||||
return data.map((element, index) => {
|
return data.map((element, index) => {
|
||||||
if (!element.warnings) return element;
|
if (!element.warnings) return element;
|
||||||
element.show_warnings = disabled ? [] :element.warnings
|
element.show_warnings = disabled ? [] :element.warnings
|
||||||
.map((warning, _) => {
|
.map((warning, _) => {
|
||||||
if (!!Types[warning])
|
if (!!Types[warning])
|
||||||
return Types[warning].trigger(data, index, element.counted_resources, crate) ? {trigger: undefined, name: warning, ...Types[warning]} : null;
|
return Types[warning].trigger(data, index, element.counted_resources) ? {trigger: undefined, name: warning, ...Types[warning]} : null;
|
||||||
else
|
else
|
||||||
return Types.default;
|
return Types.default;
|
||||||
})
|
})
|
||||||
|
@ -156,22 +143,6 @@ const crate_warnings = {
|
||||||
const nbrHPDesktop = useShopStore.getState().crate_modes.desktop.hp;
|
const nbrHPDesktop = useShopStore.getState().crate_modes.desktop.hp;
|
||||||
return crate.crate_mode === useShopStore.getState().crate_modes.rack.id && occupied < nbrHPDesktop;
|
return crate.crate_mode === useShopStore.getState().crate_modes.rack.id && occupied < nbrHPDesktop;
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"phaser_not_fit": {
|
|
||||||
message: "Since one or more Phasers may interfere with their next cards, they may additional space, that wouldn't fit into the crate. Consider removing cards, placing short cards after Phaser(s), or choosing larger crate.",
|
|
||||||
level: "warning",
|
|
||||||
trigger: (crate, occupied) => {
|
|
||||||
const nbrHP = useShopStore.getState().crateParams(crate.crate_mode).hp;
|
|
||||||
const stacked_phasers = crate.items.filter((elem, index, data) => {
|
|
||||||
return (elem.name_codename === "Phaser") && ((index < data.length - 1) ? (
|
|
||||||
(data[index + 1].consumes && data[index + 1].consumes.depth && data[index + 1].consumes.depth >= 8.5)
|
|
||||||
) : (occupied >= nbrHP && nbrHP > 0))
|
|
||||||
}
|
|
||||||
).length;
|
|
||||||
// #!debug
|
|
||||||
console.log(stacked_phasers, occupied)
|
|
||||||
return stacked_phasers > 0 && (occupied + stacked_phasers*2 >= nbrHP) && nbrHP >0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,8 +51,8 @@ const shop_data = {
|
||||||
title: "Optional pre-installed NUC mini-computer",
|
title: "Optional pre-installed NUC mini-computer",
|
||||||
outvar: "nuc",
|
outvar: "nuc",
|
||||||
tip: "Pre-installed NixOS desktop with ARTIQ and other scientific software. " +
|
tip: "Pre-installed NixOS desktop with ARTIQ and other scientific software. " +
|
||||||
"Hardware: Intel® NUC 13 Pro Kit NUC13ANKi7, i7-1360P CPU, " +
|
"Hardware: ASUS® NUC 14 Pro Kit, Intel® i7-155H CPU, " +
|
||||||
"32GB RAM, 1TB NVMe. Other options contact us.",
|
"32GB RAM, 1TB NVMe. For other options contact us.",
|
||||||
fallback: true,
|
fallback: true,
|
||||||
}},
|
}},
|
||||||
{
|
{
|
||||||
|
@ -221,8 +221,7 @@ const shop_data = {
|
||||||
"eem_wiring_constraint"
|
"eem_wiring_constraint"
|
||||||
],
|
],
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 8,
|
hp: 8
|
||||||
depth: 20
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'kaslisoc': {
|
'kaslisoc': {
|
||||||
|
@ -298,8 +297,7 @@ const shop_data = {
|
||||||
"eem_wiring_constraint"
|
"eem_wiring_constraint"
|
||||||
],
|
],
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 8,
|
hp: 8
|
||||||
depth: 20
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'vhdcicarrier': {
|
'vhdcicarrier': {
|
||||||
|
@ -324,8 +322,7 @@ const shop_data = {
|
||||||
"eem_wiring_constraint"
|
"eem_wiring_constraint"
|
||||||
],
|
],
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 8,
|
hp: 8
|
||||||
depth: 16
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'bnc-dio': {
|
'bnc-dio': {
|
||||||
|
@ -396,8 +393,7 @@ const shop_data = {
|
||||||
],
|
],
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 8,
|
hp: 8,
|
||||||
eem: 1,
|
eem: 1
|
||||||
depth: 7
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'sma-dio': {
|
'sma-dio': {
|
||||||
|
@ -462,8 +458,7 @@ const shop_data = {
|
||||||
],
|
],
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 4,
|
hp: 4,
|
||||||
eem: 1,
|
eem: 1
|
||||||
depth: 7
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'mcx-dio': {
|
'mcx-dio': {
|
||||||
|
@ -554,8 +549,7 @@ const shop_data = {
|
||||||
],
|
],
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 4,
|
hp: 4,
|
||||||
eem: 2,
|
eem: 2
|
||||||
depth: 23
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'rj45-dio': {
|
'rj45-dio': {
|
||||||
|
@ -641,8 +635,7 @@ const shop_data = {
|
||||||
],
|
],
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 4,
|
hp: 4,
|
||||||
eem: 2,
|
eem: 2
|
||||||
depth: 7
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'urukul': {
|
'urukul': {
|
||||||
|
@ -707,8 +700,7 @@ const shop_data = {
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 4,
|
hp: 4,
|
||||||
eem: 2,
|
eem: 2,
|
||||||
clk: 1,
|
clk: 1
|
||||||
depth: 16
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'urukul_4412': {
|
'urukul_4412': {
|
||||||
|
@ -746,8 +738,7 @@ const shop_data = {
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 4,
|
hp: 4,
|
||||||
eem: 2,
|
eem: 2,
|
||||||
clk: 1,
|
clk: 1
|
||||||
depth: 16
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'phaser': {
|
'phaser': {
|
||||||
|
@ -776,14 +767,12 @@ const shop_data = {
|
||||||
size: 'small',
|
size: 'small',
|
||||||
warnings: [
|
warnings: [
|
||||||
"no_eem_source",
|
"no_eem_source",
|
||||||
"no_clk_source",
|
"no_clk_source"
|
||||||
"phaser_next_card_long"
|
|
||||||
],
|
],
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 4,
|
hp: 4,
|
||||||
eem: 1,
|
eem: 1,
|
||||||
clk: 1,
|
clk: 1
|
||||||
depth: 16 // heatsink 8.5
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'zotino': {
|
'zotino': {
|
||||||
|
@ -825,8 +814,7 @@ const shop_data = {
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 4,
|
hp: 4,
|
||||||
eem: 1,
|
eem: 1,
|
||||||
tec: 1,
|
tec: 1
|
||||||
depth: 16
|
|
||||||
},
|
},
|
||||||
resources: [
|
resources: [
|
||||||
{name: "idc", max: 4}
|
{name: "idc", max: 4}
|
||||||
|
@ -854,8 +842,7 @@ const shop_data = {
|
||||||
],
|
],
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 4,
|
hp: 4,
|
||||||
eem: 1,
|
eem: 1
|
||||||
depth: 17
|
|
||||||
},
|
},
|
||||||
resources: [
|
resources: [
|
||||||
{name: "idc", max: 4}
|
{name: "idc", max: 4}
|
||||||
|
@ -879,8 +866,7 @@ const shop_data = {
|
||||||
],
|
],
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 8,
|
hp: 8,
|
||||||
idc: 1,
|
idc: 1
|
||||||
depth: 6
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'hvamp32': {
|
'hvamp32': {
|
||||||
|
@ -917,8 +903,7 @@ const shop_data = {
|
||||||
],
|
],
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 4,
|
hp: 4,
|
||||||
idc: 4,
|
idc: 4
|
||||||
depth: 16
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'idc-sma-adapter': {
|
'idc-sma-adapter': {
|
||||||
|
@ -939,8 +924,7 @@ const shop_data = {
|
||||||
],
|
],
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 4,
|
hp: 4,
|
||||||
idc: 1,
|
idc: 1
|
||||||
depth: 6
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'idc-mcx-adapter': {
|
'idc-mcx-adapter': {
|
||||||
|
@ -983,8 +967,7 @@ const shop_data = {
|
||||||
"idc_resource"
|
"idc_resource"
|
||||||
],
|
],
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 4,
|
hp: 4
|
||||||
depth: 5
|
|
||||||
},
|
},
|
||||||
resources: [
|
resources: [
|
||||||
{name: "idc", max: 4}
|
{name: "idc", max: 4}
|
||||||
|
@ -1037,8 +1020,7 @@ const shop_data = {
|
||||||
],
|
],
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 8,
|
hp: 8,
|
||||||
eem: 2,
|
eem: 2
|
||||||
depth: 16
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'koster': {
|
'koster': {
|
||||||
|
@ -1064,8 +1046,7 @@ const shop_data = {
|
||||||
],
|
],
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 4,
|
hp: 4,
|
||||||
eem: 2,
|
eem: 2
|
||||||
depth: 7.5
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'clocker': {
|
'clocker': {
|
||||||
|
@ -1096,8 +1077,7 @@ const shop_data = {
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 4,
|
hp: 4,
|
||||||
eem: 1,
|
eem: 1,
|
||||||
clk: 1,
|
clk: 1
|
||||||
depth: 7
|
|
||||||
},
|
},
|
||||||
resources: [
|
resources: [
|
||||||
{name: "clk", max: 6}
|
{name: "clk", max: 6}
|
||||||
|
@ -1134,8 +1114,7 @@ const shop_data = {
|
||||||
],
|
],
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 4,
|
hp: 4,
|
||||||
eem: 1,
|
eem: 1
|
||||||
depth: 16
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'fast_servo': {
|
'fast_servo': {
|
||||||
|
@ -1169,8 +1148,7 @@ const shop_data = {
|
||||||
],
|
],
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 4,
|
hp: 4,
|
||||||
eem: 1,
|
eem: 1
|
||||||
depth: 16
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'mirny': {
|
'mirny': {
|
||||||
|
@ -1201,8 +1179,7 @@ const shop_data = {
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 4,
|
hp: 4,
|
||||||
eem: 1,
|
eem: 1,
|
||||||
clk: 1,
|
clk: 1
|
||||||
depth: 16
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'almazny': {
|
'almazny': {
|
||||||
|
@ -1230,8 +1207,7 @@ const shop_data = {
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 8,
|
hp: 8,
|
||||||
eem: 1,
|
eem: 1,
|
||||||
clk: 1,
|
clk: 1
|
||||||
depth: 16
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'thermostat-eem': {
|
'thermostat-eem': {
|
||||||
|
@ -1259,7 +1235,6 @@ const shop_data = {
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 4,
|
hp: 4,
|
||||||
eem: 1,
|
eem: 1,
|
||||||
depth: 16
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'thermostat2ch': {
|
'thermostat2ch': {
|
||||||
|
@ -1278,8 +1253,7 @@ const shop_data = {
|
||||||
],
|
],
|
||||||
size: 'small',
|
size: 'small',
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 4,
|
hp: 4
|
||||||
depth: 12
|
|
||||||
},
|
},
|
||||||
resources: [
|
resources: [
|
||||||
{name: "tec", max: 2}
|
{name: "tec", max: 2}
|
||||||
|
@ -1308,8 +1282,7 @@ const shop_data = {
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 8,
|
hp: 8,
|
||||||
eem: 1,
|
eem: 1,
|
||||||
clk: 1,
|
clk: 1
|
||||||
depth: 8
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'pounder': {
|
'pounder': {
|
||||||
|
@ -1343,8 +1316,7 @@ const shop_data = {
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 8,
|
hp: 8,
|
||||||
eem: 1,
|
eem: 1,
|
||||||
clk: 1,
|
clk: 1
|
||||||
depth: 16
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'eem_pwr_mod': {
|
'eem_pwr_mod': {
|
||||||
|
@ -1369,7 +1341,6 @@ const shop_data = {
|
||||||
warnings: [],
|
warnings: [],
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 8,
|
hp: 8,
|
||||||
depth: 20
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'kirdy': {
|
'kirdy': {
|
||||||
|
@ -1401,7 +1372,6 @@ const shop_data = {
|
||||||
warnings: [],
|
warnings: [],
|
||||||
consumes: {
|
consumes: {
|
||||||
hp: 8,
|
hp: 8,
|
||||||
depth: 16
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -53,12 +53,29 @@
|
||||||
<a href="{{ get_url(path='@/experiment-control/place-order.md') }}" class="btn btn-primary btn-inversed btn-lg">Order hardware</a>
|
<a href="{{ get_url(path='@/experiment-control/place-order.md') }}" class="btn btn-primary btn-inversed btn-lg">Order hardware</a>
|
||||||
<a href="https://m-labs.hk/artiq/manual/" class="btn btn-primary btn-lg">Manual</a>
|
<a href="https://m-labs.hk/artiq/manual/" class="btn btn-primary btn-lg">Manual</a>
|
||||||
<a href="https://forum.m-labs.hk" class="btn btn-primary btn-lg">Forum</a>
|
<a href="https://forum.m-labs.hk" class="btn btn-primary btn-lg">Forum</a>
|
||||||
<a href="https://nixbld.m-labs.hk/job/artiq/extra/msys2-offline-installer/latest/download/1" class="btn btn-primary btn-lg d-inline-flex">
|
|
||||||
<img src="/images/icons/icon-download.svg" class="d-inline-block align-self-center mx-1" style="height: 1rem" alt="download">
|
|
||||||
Windows installer
|
|
||||||
</a>
|
|
||||||
<a href="{{ get_url(path='@/experiment-control/artiq.md') }}" class="btn btn-primary btn-lg">More...</a>
|
<a href="{{ get_url(path='@/experiment-control/artiq.md') }}" class="btn btn-primary btn-lg">More...</a>
|
||||||
|
<div class="btn-group download-selector">
|
||||||
|
<a class="btn btn-primary btn-lg d-inline-flex" href="https://nixbld.m-labs.hk/job/artiq/extra/msys2-offline-installer/latest/download/1">
|
||||||
|
<img src="/images/icons/icon-windows.svg" class="d-inline-block align-self-center mx-1" style="height: 1rem" alt="windows">
|
||||||
|
<span class="d-inline-block">Download <sup>.exe</sup></span>
|
||||||
|
</a>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<button type="button" class="btn btn-primary btn-lg dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
|
<span>stable</span>
|
||||||
|
</button>
|
||||||
|
<ul class="dropdown-menu shadow dropdown-menu-end">
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item" href="https://nixbld.m-labs.hk/job/artiq/extra/msys2-offline-installer/latest/download/1">
|
||||||
|
ARTIQ-8 (stable) for Windows
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item" href="https://nixbld.m-labs.hk/job/artiq/extra-beta/msys2-offline-installer/latest/download/1">
|
||||||
|
ARTIQ-9 (beta) for Windows
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue