Compare commits

...

15 Commits

Author SHA1 Message Date
8fc3f3086d Embed microdata to some pages
Only to some, where it is not invasive and can be useful. If the microdata will be successful in SE rankings, it can be expanded more.

Signed-off-by: Egor Savkin <es@m-labs.hk>
2025-01-23 16:04:31 +08:00
c92e4c5488 Fix links and nested p tags
Signed-off-by: Egor Savkin <es@m-labs.hk>
2025-01-23 16:04:31 +08:00
feda1c2942 Add alternate links to target different regions and make .hk site canonical
Signed-off-by: Egor Savkin <es@m-labs.hk>
2025-01-23 16:04:31 +08:00
c9190565a0 Remove dead SW code
Signed-off-by: Egor Savkin <es@m-labs.hk>
2025-01-23 16:04:31 +08:00
3ccbd41ef2 Fix and optimize shop styles and remove jquery
Reduce bootstrap bundle, replace jquery dependant code and remove jquery. Optimize style loading.
Overall the lighthouse metrics are far better now.

Signed-off-by: Egor Savkin <es@m-labs.hk>
2025-01-23 16:04:31 +08:00
037cadbe6d Replace deferred styles with standard linking
This alone improves CLS from 0.9 down to 0.005, and overall score in lighthouse to green values

Signed-off-by: Egor Savkin <es@m-labs.hk>
2025-01-23 16:04:31 +08:00
68828c65d3 Fix robots.txt
Signed-off-by: Egor Savkin <es@m-labs.hk>
2025-01-23 16:04:31 +08:00
a083a4f3ab update MCX prices 2025-01-21 14:58:03 +08:00
4af4e4c055 faq: raise APC threshold 2025-01-20 10:03:41 +08:00
573fd4a848 Add switch for requesting manufacturing outside HK
Signed-off-by: Egor Savkin <es@m-labs.hk>
2025-01-10 13:03:31 +08:00
3daa02c5bb Fix adapter datasheet links 2025-01-08 19:02:43 +01:00
7841bd804a Remove layout_html shortcode
It is used only once and can easily be replaced with inline div, resulting in shorter code. Also fixes broken email within its usage

Signed-off-by: Egor Savkin <es@m-labs.hk>
2025-01-07 17:37:50 +08:00
47e8999927 link new datasheets 2025-01-04 16:34:57 +08:00
ee29235b74 add new datasheets 2025-01-04 16:23:10 +08:00
1efcdc11d3 update datasheets 2025-01-04 16:21:29 +08:00
36 changed files with 929 additions and 370 deletions

View File

@ -1,4 +1,4 @@
base_url = "/"
base_url = "https://m-labs.hk"
title = "M-Labs"
description = "Open tools for open physics."

View File

@ -44,7 +44,7 @@ M-Labs ships with UPS by default, and we also offer FedEx or DHL shipping for an
##### Can I have a discount?
M-Labs offers discounts in the following cases:
* 10% discount plus free DAP shipping if the research supported by our equipment is made public and exclusively published in a non-predatory scientific journal. A non-predatory journal is defined as an open access journal with an article processing fee of USD 500.00 or less.
* 10% discount plus free DAP shipping if the research supported by our equipment is made public and exclusively published in a non-predatory scientific journal. A non-predatory journal is defined as an open access journal with an article processing fee of USD 650.00 or less.
* Volume discounts (applies to new orders and not retroactively, volume is determined over the 365 days prior to the new order, the new order is included in the amount compared against the threshold):
- 2% discount with an order volume exceeding USD 100,000.00.
- 4% discount with an order volume exceeding USD 250,000.00.

View File

@ -37,7 +37,7 @@ The <a href="https://github.com/quartiq/stabilizer" target="_blank" rel="noopene
{% layout_html(css='row d-flex align-items-top mt-5 mb-5') %}
<div class="row d-flex align-items-top mt-5 mb-5">
<div class="col-12 col-md-3">
<ul>
@ -66,7 +66,7 @@ The <a href="https://github.com/quartiq/stabilizer" target="_blank" rel="noopene
</p>
</div>
{% end %}
</div>

View File

@ -13,25 +13,25 @@ template = "page.html"
{% layout_card(title="ARTIQ manual", sameheight=100) %}
<small>Stable version</small>
<a href="https://m-labs.hk/artiq/manual.pdf" target="_blank">PDF</a> | <a href="https://m-labs.hk/artiq/manual/" target="_blank" rel="noopener noreferrer">HTML</a>
<a href="https://m-labs.hk/artiq/manual.pdf" target="_blank" itemprop="url">PDF</a> | <a href="https://m-labs.hk/artiq/manual/" target="_blank" rel="noopener noreferrer" itemprop="url">HTML</a>
{% end %}
{% layout_card(title="SiPyCo manual", sameheight=100) %}
<small>Starting with ARTIQ-5, this library replaces <tt>artiq.protocols</tt>.</small>
<a href="https://m-labs.hk/artiq/sipyco-manual.pdf" target="_blank">PDF</a> | <a href="https://m-labs.hk/artiq/sipyco-manual/" target="_blank" rel="noopener noreferrer">HTML</a>
<a href="https://m-labs.hk/artiq/sipyco-manual.pdf" target="_blank" itemprop="url">PDF</a> | <a href="https://m-labs.hk/artiq/sipyco-manual/" target="_blank" rel="noopener noreferrer" itemprop="url">HTML</a>
{% end %}
{% layout_card(title="ARTIQ manual", sameheight=100) %}
<small>Beta (development) version</small>
<a href="https://m-labs.hk/artiq/manual-beta.pdf" target="_blank">PDF</a> | <a href="https://m-labs.hk/artiq/manual-beta/" target="_blank" rel="noopener noreferrer">HTML</a>
<a href="https://m-labs.hk/artiq/manual-beta.pdf" target="_blank" itemprop="url">PDF</a> | <a href="https://m-labs.hk/artiq/manual-beta/" target="_blank" rel="noopener noreferrer" itemprop="url">HTML</a>
{% end %}
{% layout_card(title="ARTIQ manual", sameheight=100) %}
<small>Legacy version</small>
<a href="https://m-labs.hk/artiq/manual-legacy.pdf" target="_blank">PDF</a> | <a href="https://m-labs.hk/artiq/manual-legacy/" target="_blank" rel="noopener noreferrer">HTML</a>
<a href="https://m-labs.hk/artiq/manual-legacy.pdf" target="_blank" itemprop="url">PDF</a> | <a href="https://m-labs.hk/artiq/manual-legacy/" target="_blank" rel="noopener noreferrer" itemprop="url">HTML</a>
{% end %}
@ -39,14 +39,14 @@ template = "page.html"
{% layout_card(title="Slideshow", sameheight=100) %}
<small>The ARTIQ experiment control system</small>
<a href="/docs/artiq/artiq_overview.pdf" target="_blank" rel="noopener noreferrer">View slides</a>
<a href="/docs/artiq/artiq_overview.pdf" target="_blank" rel="noopener noreferrer" itemprop="url">View slides</a>
{% end %}
{% layout_card(title="Slideshow", sameheight=100) %}
<small>Timing control in ARTIQ</small>
<a href="/docs/artiq/slides_timing.pdf" target="_blank" rel="noopener noreferrer">View slides</a>
<a href="/docs/artiq/slides_timing.pdf" target="_blank" rel="noopener noreferrer" itemprop="url">View slides</a>
{% end %}
</div>
@ -64,40 +64,40 @@ template = "page.html"
<div class="row mt-5">
{% layout_card(src="images/mattermost@2x.png", css="col-12 col-md-4 text-center") %}
<a href="http://chat.m-labs.hk/" target="_blank" rel="noopener noreferrer">Mattermost live chat</a>
<a href="http://chat.m-labs.hk/" target="_blank" rel="noopener noreferrer" itemprop="url">Mattermost live chat</a>
<small>(bridged to IRC)</small>
{% end %}
{% layout_card(src="images/forum@2x.png", css="col-12 col-md-4 text-center") %}
<a href="https://forum.m-labs.hk/" target="_blank" rel="noopener noreferrer">Forum</a>
<a href="https://forum.m-labs.hk/" target="_blank" rel="noopener noreferrer" itemprop="url">Forum</a>
<small>&nbsp;</small>
{% end %}
{% layout_card(src="images/irc@2x.png", css="col-12 col-md-4 text-center") %}
<a href="https://webchat.oftc.net/" target="_blank" rel="noopener noreferrer">IRC: #m-labs</a>
<a href="https://webchat.oftc.net/" target="_blank" rel="noopener noreferrer" itemprop="url">IRC: #m-labs</a>
<small>on OFTC</small>
{% end %}
{% layout_card(src="images/press@2x.png", css="col-12 col-md-4 text-center") %}
<a href="https://www.nist.gov/news-events/news/2015/01/open-source-software-quantum-information" target="_blank" rel="noopener noreferrer">NIST ARTIQ press release</a>
<a href="https://www.nist.gov/news-events/news/2015/01/open-source-software-quantum-information" target="_blank" rel="noopener noreferrer" itemprop="url">NIST ARTIQ press release</a>
<small>&nbsp;</small>
{% end %}
{% layout_card(src="images/git@2x.png", css="col-12 col-md-4 text-center") %}
<a href="https://github.com/m-labs/artiq" target="_blank" rel="noopener noreferrer">ARTIQ source code repository</a>
<a href="https://github.com/m-labs/artiq" target="_blank" rel="noopener noreferrer" itemprop="url">ARTIQ source code repository</a>
<small>on GitHub</small>
{% end %}
{% layout_card(src="images/git@2x.png", css="col-12 col-md-4 text-center") %}
<a href="https://git.m-labs.hk" target="_blank" rel="noopener noreferrer">Gitea</a>
<a href="https://git.m-labs.hk" target="_blank" rel="noopener noreferrer" itemprop="url">Gitea</a>
<small>&nbsp;</small>
{% end %}
@ -129,108 +129,108 @@ We welcome inquiries from research groups of all sizes.<br>[See what has been fu
{% layout_card(title="Entangler core", sameheight=120) %}
<small>A FPGA core written in Migen with ARTIQ interface, for controlling remote quantum entanglement of trapped ions.</small>
<a href="https://github.com/OxfordIonTrapGroup/entangler-core" target="_blank" rel="noopener noreferrer">Repository</a> | <a href="https://arxiv.org/abs/1911.10841" target="_blank" rel="noopener noreferrer">Paper</a>
<a href="https://github.com/OxfordIonTrapGroup/entangler-core" target="_blank" rel="noopener noreferrer" itemprop="url">Repository</a> | <a href="https://arxiv.org/abs/1911.10841" target="_blank" rel="noopener noreferrer" itemprop="url">Paper</a>
{% end %}
{% layout_card(title="ndscan", sameheight=120) %}
<small>N-dimensional scans for ARTIQ</small>
<a href="https://github.com/OxfordIonTrapGroup/ndscan" target="_blank" rel="noopener noreferrer">Repository</a>
<a href="https://github.com/OxfordIonTrapGroup/ndscan" target="_blank" rel="noopener noreferrer" itemprop="url">Repository</a>
{% end %}
{% layout_card(title="Oxford routines", sameheight=120) %}
<small>Oxford Ion-Trap Group routines</small>
<a href="https://github.com/OxfordIonTrapGroup/oitg" target="_blank" rel="noopener noreferrer">Repository</a>
<a href="https://github.com/OxfordIonTrapGroup/oitg" target="_blank" rel="noopener noreferrer" itemprop="url">Repository</a>
{% end %}
{% layout_card(title="UCLA routines", sameheight=120) %}
<small>ARTIQ experiments in use at UCLA AMO</small>
<a href="https://github.com/EGGS-Experiment/LAX_exp" target="_blank" rel="noopener noreferrer">Repository</a>
<a href="https://github.com/EGGS-Experiment/LAX_exp" target="_blank" rel="noopener noreferrer" itemprop="url">Repository</a>
{% end %}
{% layout_card(title="nvOS", sameheight=120) %}
<small>A quantum operating system built around ARTIQ and NV centers in diamond.</small>
<a href="https://github.com/vontell/nvOS" target="_blank" rel="noopener noreferrer">Repository</a>
<a href="https://github.com/vontell/nvOS" target="_blank" rel="noopener noreferrer" itemprop="url">Repository</a>
{% end %}
{% layout_card(title="Haeffner Lab routines", sameheight=120) %}
<small>Haeffner Lab (Berkeley) routines</small>
<a href="https://github.com/HaeffnerLab/artiq-work-lattice" target="_blank" rel="noopener noreferrer">Repository</a>
<a href="https://github.com/HaeffnerLab/artiq-work-lattice" target="_blank" rel="noopener noreferrer" itemprop="url">Repository</a>
{% end %}
{% layout_card(title="Birmingham examples", sameheight=120) %}
<small>A repository of simple examples of ARTIQ code</small>
<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" itemprop="url">Repository</a>
{% end %}
{% 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>
<a href="https://gitlab.com/duke-artiq" target="_blank" rel="noopener noreferrer">Repositories</a>
<a href="https://gitlab.com/duke-artiq" target="_blank" rel="noopener noreferrer" itemprop="url">Repositories</a>
{% end %}
{% layout_card(title="Argent", sameheight=120) %}
<small>High-level sequence control interface for ARTIQ.</small>
<a href="https://github.com/robertfasano/argent" target="_blank" rel="noopener noreferrer">Repository</a>
<a href="https://github.com/robertfasano/argent" target="_blank" rel="noopener noreferrer" itemprop="url">Repository</a>
{% end %}
{% layout_card(title="flake8-artiq", sameheight=120) %}
<small>A Flake8 plugin for checking ARTIQ code</small>
<a href="https://gitlab.com/duke-artiq/flake8-artiq" target="_blank" rel="noopener noreferrer">Repository</a>
<a href="https://gitlab.com/duke-artiq/flake8-artiq" target="_blank" rel="noopener noreferrer" itemprop="url">Repository</a>
{% end %}
{% layout_card(title="GenericSCPIDriver", sameheight=120) %}
<small>A generic Python driver for SCPI devices driven over serial connections. Compatible with ARTIQ.</small>
<a href="https://github.com/charlesbaynham/GenericSCPIDriver" target="_blank" rel="noopener noreferrer">Repository</a>
<a href="https://github.com/charlesbaynham/GenericSCPIDriver" target="_blank" rel="noopener noreferrer" itemprop="url">Repository</a>
{% end %}
{% layout_card(title="artiq_influx_generic", sameheight=120) %}
<small>RPC interface to InfluxDB with support for generic data logging.</small>
<a href="https://gitlab.com/charlesbaynham/artiq_influx_generic" target="_blank" rel="noopener noreferrer">Repository</a>
<a href="https://gitlab.com/charlesbaynham/artiq_influx_generic" target="_blank" rel="noopener noreferrer" itemprop="url">Repository</a>
{% end %}
{% layout_card(title="DP700", sameheight=120) %}
<small>ARTIQ NDSP for RIGOL DP700 Series power supplies.</small>
<a href="https://github.com/OregonIons/DP700" target="_blank" rel="noopener noreferrer">Repository</a>
<a href="https://github.com/OregonIons/DP700" target="_blank" rel="noopener noreferrer" itemprop="url">Repository</a>
{% end %}
{% layout_card(title="AGUC8", sameheight=120) %}
<small>ARTIQ NDSP for Newport AG-UC8 piezo motor controller.</small>
<a href="https://github.com/OregonIons/AGUC8" target="_blank" rel="noopener noreferrer">Repository</a>
<a href="https://github.com/OregonIons/AGUC8" target="_blank" rel="noopener noreferrer" itemprop="url">Repository</a>
{% end %}
{% layout_card(title="TSICam", sameheight=120) %}
<small>ARTIQ NDSP for Thorlabs Scientific Imaging cameras.</small>
<a href="https://github.com/OregonIons/TSICam" target="_blank" rel="noopener noreferrer">Repository</a>
<a href="https://github.com/OregonIons/TSICam" target="_blank" rel="noopener noreferrer" itemprop="url">Repository</a>
{% end %}
{% layout_card(title="U Toronto examples", sameheight=120) %}
<small>A repository of examples of ARTIQ code and instructions</small>
<a href="https://github.com/vuthalab/artiq" target="_blank" rel="noopener noreferrer">Repository</a>
<a href="https://github.com/vuthalab/artiq" target="_blank" rel="noopener noreferrer" itemprop="url">Repository</a>
{% end %}
{% layout_card(title="OffsetStabilizer", sameheight=120) %}
<small>Stabilizer firmware for laser frequency offset stabilization</small>
<a href="https://github.com/PhBrb/OffsetStabilizer" target="_blank" rel="noopener noreferrer">Repository</a>
<a href="https://github.com/PhBrb/OffsetStabilizer" target="_blank" rel="noopener noreferrer" itemprop="url">Repository</a>
{% end %}
</div>

View File

@ -28,6 +28,10 @@ One of the main devices in the Sinara family is the 1124 Carrier (codenamed Kasl
<a href="https://github.com/sinara-hw/Kasli/wiki" target="_blank" rel="noopener noreferrer">More information</a>
<p style="padding-top: 8px">
<span class='doc-icon'></span> <a href="/docs/sinara-datasheets/1124.pdf" target="_blank" rel="noopener noreferrer">1124 Carrier Kasli 2.0 datasheet</a>
</p>
{% end %}
{% layout_text_img(src="images/kasli-soc@2x.png", popup="images/origin/kasli-soc.jpg", alt="", textleft=true, shadow=false) %}
@ -40,6 +44,10 @@ See our paper <a href="https://arxiv.org/abs/2111.15290" target="_blank" rel="no
<a href="https://github.com/sinara-hw/Kasli-SoC/wiki" target="_blank" rel="noopener noreferrer">More information</a>
<p style="padding-top: 8px">
<span class='doc-icon'></span> <a href="/docs/sinara-datasheets/1125.pdf" target="_blank" rel="noopener noreferrer">1125 Carrier Kasli SoC datasheet</a>
</p>
{% end %}
{% layout_text_img(src="images/isolated-ttl@2x.png", popup="images/origin/dio.jpg", alt="", shadow=false) %}
@ -167,6 +175,11 @@ Comparing Mirny to Urukul:
<a href="https://github.com/sinara-hw/mirny/wiki" target="_blank" rel="noopener noreferrer">More information</a>
<p style="padding-top: 8px">
<span class='doc-icon'></span> <a href="/docs/sinara-datasheets/4456.pdf" target="_blank" rel="noopener noreferrer">4456 Synthesizer Mirny datasheet</a>
</p>
{% end %}
@ -233,6 +246,11 @@ In SU-Servo mode, the 5108 Sampler can be used in combination with the 4410 DDS
Note that update rate specification on this page is for the hardware only; ARTIQ kernel and RTIO overhead make the effective sample rate lower. Typically, only with gateware (e.g. SU-Servo) can the maximum bandwidth be achieved. SU-Servo is part of the regular ARTIQ firmware; development of other gateware can be purchased separately.
<p style="padding-top: 8px">
<span class='doc-icon'></span> <a href="/docs/sinara-datasheets/5108.pdf" target="_blank" rel="noopener noreferrer">5108 ADC Sampler datasheet</a>
</p>
{% end %}
@ -259,6 +277,11 @@ The Sinara 7210 is a low-noise clock distribution module that can be used to dis
<a href="https://github.com/sinara-hw/Clocker/wiki" target="_blank" rel="noopener noreferrer">More information</a>
<p style="padding-top: 8px">
<span class='doc-icon'></span> <a href="/docs/sinara-datasheets/7210.pdf" target="_blank" rel="noopener noreferrer">7210 Clocker datasheet</a>
</p>
{% end %}

859
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,8 @@
"start": "npx webpack --watch",
"build": "npx webpack",
"start-dev": "npx webpack --watch --mode=development --devtool=inline-source-map",
"build-dev": "npx webpack --mode=development --devtool=inline-source-map"
"build-dev": "npx webpack --mode=development --devtool=inline-source-map",
"optimize-bootstrap": "zola build -o tmp_out && npx purgecss --css static/css/bootstrap-5.3.0.min.css --content 'tmp_out/**/*.html' -o static/css/bootstrap-5.3.0.opt.css --safelist modal-backdrop && rm -rf tmp_out"
},
"repository": {
"type": "git",
@ -33,7 +34,8 @@
"babel-preset-minify": "^0.5.2",
"webpack": "^5.93.0",
"webpack-cli": "^5.1.4",
"webpack-preprocessor-loader": "^1.3.0"
"webpack-preprocessor-loader": "^1.3.0",
"purgecss": "^7.0.2"
},
"babel": {
"presets": [

View File

@ -107,10 +107,14 @@ h3, h2, h1 {
padding: .4rem; }
p ~ h5 {
p ~ h5, div.desc-wrapper ~ h5 {
margin-top: 3rem;
}
div.desc-wrapper {
margin-bottom: 1rem;
}
img.kf25 {
width: 310px;
}

5
static/css/bootstrap-5.3.0.opt.css vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,32 +0,0 @@
(function () {
var swRegistration;
var newWorker;
var isRefreshing = false;
var pathname = window.location.pathname;
var deferredPrompt;
if ('serviceWorker' in navigator) {
console.info('Service Worker is supported');
window.addEventListener('load', function () {
navigator.serviceWorker.register('/sw.js', {
updateViaCache: 'all',
}).then(function (registration) {
swRegistration = registration;
console.log('[SW] registration successful with scope: ', swRegistration.scope);
console.log('[SW] is waiting: ', swRegistration.waiting);
navigator.serviceWorker.addEventListener('controllerchange', function () {
if (isRefreshing) {
return;
}
window.location.reload();
isRefreshing = true;
});
}, function (err) {
console.log('[SW] registration failed: ', err);
});
});
}
})();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -129,6 +129,12 @@ const shop_data = {
{type: "Line", args: {title: "Please provide delivery address",
outvar: "shipping_instructions", fallback: "",}}],
]},
{type: "Switch", args: {
title: "I would like this order made outside Hong Kong (see FAQ)",
outvar: "outside_hk",
tip: "For the convenience of our customers who may be discouraged from doing business with companies registered in Hong Kong, M-Labs can manufacture Sinara hardware orders upon request in Manila, Philippines. Additional fees and terms may apply.",
fallback: false,
}},
]}
],
@ -178,6 +184,8 @@ const shop_data = {
'4 MMCX clock outputs.',
'Price includes bitstream generation, flashing, testing, and firmware updates for 1 year (USD 1,400.00).',
],
datasheet_file: '/docs/sinara-datasheets/1124.pdf',
datasheet_name: '1124 Carrier Kasli 2.0 datasheet',
size: 'big',
options: [
{type: "Radio", args: {title: "DRTIO role", outvar: "drtio_role", variants: ["standalone", "master", "satellite"], tip: "Distributed Real Time Input/Output allows ARTIQ RTIO channels to be distributed among several satellite devices synchronized and controlled by a central core(master) device. Standalone option disables this feature."}},
@ -242,6 +250,8 @@ const shop_data = {
'12 EEM connectors.',
'4 MMCX clock outputs.',
],
datasheet_file: '/docs/sinara-datasheets/1125.pdf',
datasheet_name: '1124 Carrier Kasli SoC datasheet',
size: 'big',
hp: 8,
nbrSlotMin: 0,
@ -466,7 +476,7 @@ const shop_data = {
name: 'MCX-TTL',
name_number: '2238',
name_codename: '',
price: 600,
price: 700,
image: '/images/shop/graphic-03_MCX-TTL.svg',
specs: [
'16 single-ended digital signals on MCX connectors.',
@ -860,6 +870,8 @@ const shop_data = {
'Each card provides 8 channels.',
'Breaking out all 32 channels from a Zotino requires 4 IDC-BNC cards.'
],
datasheet_file: '/docs/sinara-datasheets/5518-5528.pdf',
datasheet_name: '5518 BNC-IDC / 5528 SMA-IDC datasheet',
size: 'big',
warnings: [
"no_idc_source"
@ -909,6 +921,8 @@ const shop_data = {
'Each card provides 8 channels.',
'Breaking out all 32 channels from a Zotino requires 4 SMA-IDC cards.'
],
datasheet_file: '/docs/sinara-datasheets/5518-5528.pdf',
datasheet_name: '5518 BNC-IDC / 5528 SMA-IDC datasheet',
size: 'small',
warnings: [
"no_idc_source"
@ -923,7 +937,7 @@ const shop_data = {
name: 'MCX-IDC',
name_number: '5538',
name_codename: '',
price: 320,
price: 900,
image: '/images/shop/graphic-03_MCX-IDC32.svg',
specs: [
'Breaks out analog signals from Zotino or HD68-IDC to MCX connectors.',
@ -949,6 +963,8 @@ const shop_data = {
specs: [
'Connects an external HD68 cable to IDC-BNC, IDC-SMA or IDC-MCX cards.',
],
datasheet_file: '/docs/sinara-datasheets/5568.pdf',
datasheet_name: '5568 HD68-IDC datasheet',
size: 'small',
options: [
{type: "Radio", args: {title: "Cable length", outvar: "hd68_cable_len", variants: ["1 M", "2 M", "3 M"], tip: "The desired length of the HD68 cable", fallback: 1}},
@ -980,6 +996,8 @@ const shop_data = {
'Full-scale input ranges between +-10mV and +-10V.',
'Supports SU-Servo laser intensity stabilization servo in conjunction with Urukul.'
],
datasheet_file: '/docs/sinara-datasheets/5108.pdf',
datasheet_name: '5108 ADC Sampler datasheet',
options: [
{type: "Switch", args: {title: "1 EEM mode", outvar: "mono_eem"}},
{
@ -1054,6 +1072,8 @@ const shop_data = {
'Frequency up to 1GHz.',
'Low jitter <100fs RMS.'
],
datasheet_file: '/docs/sinara-datasheets/7210.pdf',
datasheet_name: '7210 Clocker datasheet',
options: [
{type: "Switch", args: {title: "Ext CLK", outvar: "ext_clk"}},
{type: "Switch", args: {title: "Ext power", outvar: "ext_pwr", "tip": "Use external power supply in order to reduce number of used EEM connectors"}}
@ -1157,6 +1177,8 @@ const shop_data = {
'Lower jitter and phase noise.',
'Large frequency changes take several milliseconds.',
],
datasheet_file: '/docs/sinara-datasheets/4456.pdf',
datasheet_name: '4456 Synthesizer Mirny datasheet',
options: [
{type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk",
validator: {name: "frequency", params: {min: 10e6, max: 600e6}},

View File

@ -1,40 +0,0 @@
var CACHE_NAME = 'ml-03';
var urlsToCache = [
'/css/bootstrap-5.3.0.min.css',
'/css/styles.css',
'/js/jquery-3.7.0.slim.min.js',
'/js/jquery-3.7.0.min.js',
'/js/bootstrap-5.3.0.min.js',
'/js/react.production.min.js',
'/js/react-dom.production.min.js',
'/js/prop-types.min.js',
'/js/react-beautiful-dnd.min.js',
'/js/uuid_v4@latest.js',
];
self.addEventListener('install', function(event) {
console.log('[SW] Install');
event.waitUntil(
caches.open(CACHE_NAME)
.then(function(cache) {
console.log('[SW] add to cache');
return cache.addAll(urlsToCache);
})
);
});
self.addEventListener('fetch', function (event) {
console.log('[SW] Fetch');
event.respondWith(
caches.match(event.request).then(function (response) {
return response || fetch(event.request);
})
);
});
self.addEventListener('message', function (event) {
if (event.data.action === 'skipWaiting') {
self.skipWaiting();
caches.delete(CACHE_NAME);
}
});

View File

@ -43,7 +43,7 @@
<link href="{{ get_url(path='favicon.ico', cachebust=true) }}" rel="shortcut icon" type="image/x-icon">
<link href="{{ get_url(path='favicon.ico', cachebust=true) }}" rel="icon" type="image/x-icon">
<link rel="stylesheet" href="{{ get_url(path='css/bootstrap-5.3.0.min.css', cachebust=true) }}">
<link rel="stylesheet" href="{{ get_url(path='css/bootstrap-5.3.0.opt.css', cachebust=true) }}">
<link rel="stylesheet" href="{{ get_url(path='css/styles.css', cachebust=true) }}">
{% block styles %}{% endblock %}
</head>
@ -85,7 +85,7 @@
</a>
<div class="dropdown-menu shadow-none shadow-lg text-end text-lg-start" aria-labelledby="navbarDropdown">
{% for page in subsection.pages %}
<a class="dropdown-item pt-2 pb-2 pt-sm-3 pb-sm-3" href="{{ page.permalink }}">{{ page.title }}</a>
<a class="dropdown-item pt-2 pb-2 pt-sm-3 pb-sm-3" href="{{ page.permalink | safe }}">{{ page.title }}</a>
{% endfor %}
</div>
</li>
@ -93,7 +93,7 @@
{% elif subsection.title != 'Other' %}
<li class="nav-item ms-0 ms-md-4">
<a class="nav-link" href="{{ subsection.permalink }}">{{ subsection.title }}</a>
<a class="nav-link" href="{{ subsection.permalink | safe }}">{{ subsection.title }}</a>
</li>
{% endif %}
@ -155,7 +155,6 @@
<!-- ./FOOTER -->
<script src="{{ get_url(path='js/jquery-3.7.0.slim.min.js', cachebust=true) }}"></script>
<script src="{{ get_url(path='js/bootstrap-5.3.0.bundle.min.js', cachebust=true) }}"></script>
<script>

View File

@ -17,8 +17,8 @@
<meta property="og:description" content="{% block og_description%}{{ config.description }}{% endblock %}">
{% endblock %}
<meta property="og:site_name" content="{{ config.extra.author }}">
<meta property="og:url" content="{{ config.base_url }}">
<meta property="og:image" content={{ get_url(path='images/logo@2x.png', cachebust=true) }}>
<meta property="og:url" content="{{ config.base_url | safe }}">
<meta property="og:image" content="{{ get_url(path='images/logo@2x.png', cachebust=true) }}">
{% block meta %}{% endblock meta %}
<meta name="theme-color" content="#715ec7">
@ -42,11 +42,21 @@
<link href="{{ get_url(path='favicon.ico', cachebust=true) }}" rel="shortcut icon" type="image/x-icon">
<link href="{{ get_url(path='favicon.ico', cachebust=true) }}" rel="icon" type="image/x-icon">
{% block styles %}{% endblock %}
<link href="https://m-labs.hk{{ current_path | safe }}" rel="canonical" >
<link href="https://m-labs.hk{{ current_path | safe }}" rel="alternate" hreflang="x-default" >
<link href="https://m-labs.ph{{ current_path | safe }}" rel="alternate" hreflang="en-ph" >
<link href="https://m-labs-intl.com{{ current_path | safe }}" rel="alternate" hreflang="en-us" >
{% block links %}{% endblock %}
{% block styles %}
<link rel="stylesheet" href="{{ get_url(path='css/bootstrap-5.3.0.opt.css', cachebust=true) }}">
<link rel="stylesheet" href="{{ get_url(path='css/styles.css', cachebust=true) }}">
{% endblock %}
</head>
<body>
<body itemscope itemtype="https://schema.org/WebPage">
<!-- HEADER -->
@ -54,7 +64,7 @@
<header class="container">
<nav class="navbar navbar-expand-lg navbar-light bg-th-1 justify-content-center justify-content-between pt-md-3 pb-md-3" role="navigation">
<nav class="navbar navbar-expand-lg navbar-light bg-th-1 justify-content-center justify-content-between pt-md-3 pb-md-3" role="navigation" itemscope itemtype="http://schema.org/SiteNavigationElement">
<a class="navbar-brand logo me-0" href="/">
<img src="{{ get_url(path='images/logo@2x.png') }}" height="40" alt="logo">
@ -84,11 +94,11 @@
<div class="dropdown-menu shadow-none shadow-lg text-start text-lg-start" aria-labelledby="navbarDropdown">
{% for tmp_page in subsection.pages %}
{% if tmp_page.extra.menu_item and tmp_page.extra.menu_item == "th1" %}
<a class="dropdown-item pt-2 pb-2 mx-4 mt-2 mb-2 mt-sm-3 mb-sm-3 w-auto btn btn-primary btn-inversed {% if current_path == tmp_page.path %}active{% endif %} rounded-1" href="{{ tmp_page.permalink }}">
<a class="dropdown-item pt-2 pb-2 mx-4 mt-2 mb-2 mt-sm-3 mb-sm-3 w-auto btn btn-primary btn-inversed {% if current_path == tmp_page.path %}active{% endif %} rounded-1" href="{{ tmp_page.permalink | safe }}" itemprop="url">
<center>{{ tmp_page.title }}</center>
</a>
{% else %}
<a class="dropdown-item pt-2 pb-2 {% if current_path == tmp_page.path %}active{% endif %}" href="{{ tmp_page.permalink }}">{{ tmp_page.title }}</a>
<a class="dropdown-item pt-2 pb-2 {% if current_path == tmp_page.path %}active{% endif %}" href="{{ tmp_page.permalink | safe }}" itemprop="url">{{ tmp_page.title }}</a>
{% endif %}
{% endfor %}
</div>
@ -97,7 +107,7 @@
{% elif subsection.title != 'Other' %}
<li class="nav-item ms-0 ms-md-4 {% if current_path == subsection.path %}active{% endif %}">
<a class="nav-link" href="{{ subsection.permalink }}">{{ subsection.title }}</a>
<a class="nav-link" href="{{ subsection.permalink | safe }}">{{ subsection.title }}</a>
</li>
{% endif %}
@ -126,25 +136,6 @@
{% endblock %}
<!-- ./MAIN CONTENT -->
<noscript id="deferred-main-styles">
<link rel="stylesheet" href="{{ get_url(path='css/bootstrap-5.3.0.min.css', cachebust=true) }}">
<link rel="stylesheet" href="{{ get_url(path='css/styles.css', cachebust=true) }}">
{% block deferred_styles %}{% endblock %}
</noscript>
<script>
var loadDeferredMainStyles = function() {
var addStylesNode = document.getElementById("deferred-main-styles");
var replacement = document.createElement("div");
replacement.innerHTML = addStylesNode.textContent;
document.body.appendChild(replacement)
addStylesNode.parentElement.removeChild(addStylesNode);
};
var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame ||
window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;
if (raf) raf(function() { window.setTimeout(loadDeferredMainStyles, 0); });
else window.addEventListener('load', loadDeferredMainStyles);
</script>
<!-- FOOTER -->
{% block footer %}
@ -156,8 +147,8 @@
{% endblock %}
<p class="pt-4 pb-2 text-center">
<small>Copyright &copy; <span id="copyright_year"></span>, M-Labs. All rights reserved. ARTIQ, the ARTIQ logo, Migen and nMigen are registered or unregistered trademarks.</small>
<p class="pt-4 pb-2 text-center" itemprop="copyrightNotice">
<small>Copyright &copy; <span id="copyright_year" itemprop="copyrightYear">{{ now() | date(format="%Y") }}</span>, <span itemprop="copyrightHolder">M-Labs</span>. All rights reserved. ARTIQ, the ARTIQ logo, Migen and nMigen are registered or unregistered trademarks.</small>
</p>
{% block fcopyright %}
@ -182,11 +173,7 @@
</div>
</div>
<!-- <script src="{{ get_url(path='js/as.js', cachebust=true) }}"></script> -->
<script src="{{ get_url(path='js/jquery-3.7.0.min.js', cachebust=true) }}"></script>
<script src="{{ get_url(path='js/bootstrap-5.3.0.bundle.min.js', cachebust=true) }}"></script>
<script src="{{ get_url(path='js/bootstrap-5.3.0.bundle.min.js', cachebust=true) }}" defer></script>
<script>
@ -200,16 +187,20 @@
</script>
<script>
$(function () {
$('#modalEnlarged').on('hidden.bs.modal', function (e) {
$('#enlarged').attr('src', '');
});
document.addEventListener('DOMContentLoaded', function() {
const modal = document.getElementById('modalEnlarged');
const enlargedImg = document.getElementById('enlarged');
$('[data-popup]').click(function (evt) {
var _self = $(this);
var _img_enlarged = _self.data('nsrc');
$('#enlarged').attr('src', _img_enlarged);
$('#modalEnlarged').modal('show');
modal.addEventListener('hidden.bs.modal', function() {
enlargedImg.src = '';
});
document.querySelectorAll('[data-popup]').forEach(function(element) {
element.addEventListener('click', function() {
const imgSrc = this.dataset.nsrc;
enlargedImg.src = imgSrc;
const bsModal = new bootstrap.Modal(modal);
bsModal.show();
});
});
});
</script>

View File

@ -1,28 +1,32 @@
<div class="row pt-5 pb-5">
<div class="col-12 col-md-6 pb-5 pb-md-0">
<div class="col-12 col-md-6 pb-5 pb-md-0" itemscope itemtype="https://schema.org/ContactPoint">
<h5 class="pb-3">Sales inquiries</h5>
<h5 class="pb-3" itemprop="contactType">Sales inquiries</h5>
<p>
To purchase ARTIQ Sinara hardware, software and gateware development services, or to enter a technical support agreement, write to <a href="mailto:sales@{{get_env(name="DOMAINNAME", default="m-labs.hk")}}">sales@{{get_env(name="DOMAINNAME", default="m-labs.hk")}}</a>.
<p itemprop="description">
To purchase ARTIQ Sinara hardware, software and gateware development services, or to enter a technical support agreement, write to <a href="mailto:sales@{{get_env(name="DOMAINNAME", default="m-labs.hk")}}" itemprop="email">sales@{{get_env(name="DOMAINNAME", default="m-labs.hk")}}</a>.
</p>
</div>
<div class="col-12 col-md-6 pb-5 pb-md-0">
<h5 class="pb-3">Commercial technical support</h5>
<div class="pb-3" itemscope itemtype="https://schema.org/ContactPoint">
<h5 class="pb-3" itemprop="contactType">Commercial technical support</h5>
<p>
If you need help setting up ARTIQ hardware purchased from us, or if you have a commercial technical support agreement with us, email us anytime at <a href="mailto:helpdesk@{{get_env(name="DOMAINNAME", default="m-labs.hk")}}">helpdesk@{{get_env(name="DOMAINNAME", default="m-labs.hk")}}</a>.
If you need help setting up ARTIQ hardware purchased from us, or if you have a commercial technical support agreement with us, email us anytime at <a href="mailto:helpdesk@{{get_env(name="DOMAINNAME", default="m-labs.hk")}}" itemprop="email">helpdesk@{{get_env(name="DOMAINNAME", default="m-labs.hk")}}</a>.
</p>
</div>
<h5 class="pb-3">Community support</h5>
<div class="mt-3" itemscope itemtype="https://schema.org/ContactPoint">
<h5 class="pb-3" itemprop="contactType">Community support</h5>
<p>
Our open source projects such as ARTIQ have an active user community. Get and offer help on the <a href="https://chat.m-labs.hk/" target="_blank" rel="noopener noreferrer">Mattermost chat</a>, on IRC #m-labs on OFTC, or on <a href="https://forum.m-labs.hk/" rel="noopener noreferrer" target="_blank">the forum</a>.
<p itemprop="description">
Our open source projects such as ARTIQ have an active user community. Get and offer help on the <a href="https://chat.m-labs.hk/" target="_blank" rel="noopener noreferrer" itemprop="url">Mattermost chat</a>, on IRC #m-labs on OFTC, or on <a href="https://forum.m-labs.hk/" rel="noopener noreferrer" target="_blank" itemprop="url">the forum</a>.
</p>
</div>
</div>

View File

@ -1,5 +1,8 @@
{% extends '_base.html' %}
{% block links %}
<link rel="preload" href="images/hero@2x.png" as="image" >
{% endblock %}
{% block hero %}
@ -11,7 +14,7 @@
<div class="col-12 text-center">
<h1>Open tools for open physics.</h1>
<h1 itemprop="headline">Open tools for open physics.</h1>
<img src="{{ get_url(path='images/ion@2x.png', cachebust=true) }}" height="12" alt="ion">
@ -34,14 +37,15 @@
<div class="col-12">
<div class="card shadow mt-3 mb-3">
<div class="card shadow mt-3 mb-3" itemscope itemtype="https://schema.org/Poster">
<div class="card-body p-3 p-md-5 card-artiq">
<div class="col-12 col-md-6 ps-0 pe-0">
<h5 class="card-title">ARTIQ</h5>
<h5 class="card-title" itemprop="headline">ARTIQ</h5>
<div class="desc-wrapper" itemprop="description">
<p class="card-text pt-3">
ARTIQ (Advanced Real-Time Infrastructure for Quantum physics) is a leading-edge control system for quantum information experiments, developed in partnership with a growing number of research institutions worldwide.
</p>
@ -49,12 +53,13 @@
<p class="card-text pt-3 pb-3">
The system features a high-level programming language that helps describe complex experiments, which is compiled and executed on dedicated hardware with nanosecond timing resolution and sub-microsecond latency.
</p>
</div>
<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://forum.m-labs.hk" class="btn btn-primary btn-lg">Forum</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 href="{{ get_url(path='@/experiment-control/place-order.md') }}" class="btn btn-primary btn-inversed btn-lg" itemprop="url">Order hardware</a>
<a href="https://m-labs.hk/artiq/manual/" class="btn btn-primary btn-lg" itemprop="url">Manual</a>
<a href="https://forum.m-labs.hk" class="btn btn-primary btn-lg" itemprop="url">Forum</a>
<a href="{{ get_url(path='@/experiment-control/artiq.md') }}" class="btn btn-primary btn-lg" itemprop="url">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>
@ -64,15 +69,25 @@
<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
<li itemscope itemtype="https://schema.org/SoftwareApplication">
<a class="dropdown-item" href="https://nixbld.m-labs.hk/job/artiq/extra/msys2-offline-installer/latest/download/1" itemprop="downloadUrl">
<span itemprop="softwareVersion"><span itemprop="name">ARTIQ</span>-8 (stable) for <span itemprop="operatingSystem">Windows</span></span>
</a>
<div hidden itemprop="offers" itemtype="https://schema.org/Offer" itemscope>
<div itemprop="price">
0
</div>
</div>
</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
<li itemscope itemtype="https://schema.org/SoftwareApplication">
<a class="dropdown-item" href="https://nixbld.m-labs.hk/job/artiq/extra-beta/msys2-offline-installer/latest/download/1" itemprop="downloadUrl">
<span itemprop="softwareVersion"><span itemprop="name">ARTIQ</span>-9 (beta) for <span itemprop="operatingSystem">Windows</span></span>
</a>
<div hidden itemprop="offers" itemtype="https://schema.org/Offer" itemscope>
<div itemprop="price">
0
</div>
</div>
</li>
</ul>
</div>
@ -90,22 +105,24 @@
<div class="col-12">
<div class="card shadow mt-3 mb-3">
<div class="card shadow mt-3 mb-3" itemscope itemtype="https://schema.org/Poster">
<div class="card-body p-3 p-md-5 card-jobs">
<div class="col-12 col-md-6 ps-0 pe-0">
<h5 class="card-title">Jobs</h5>
<h5 class="card-title" itemprop="headline">Jobs</h5>
<div class="desc-wrapper" itemprop="description">
<p class="card-text pt-3">
We are always looking for talented people to join our team and help us deliver the systems that enable the experimental quantum research of tomorrow.
</p>
<p class="card-text pt-3">
If you are good at software, electronics or photonics, and physics makes you tick, then you should get in touch. Locations in Hong Kong and Manila available.
</p>
</div>
<a href="{{ get_url(path='@/about-us/jobs.md') }}" class="btn btn-primary btn-lg">Find out more...</a>
<a href="{{ get_url(path='@/about-us/jobs.md') }}" class="btn btn-primary btn-lg" itemprop="url">Find out more...</a>
</div>
@ -121,14 +138,15 @@
<div class="col-12">
<div class="card shadow mt-3 mb-3">
<div class="card shadow mt-3 mb-3" itemscope itemtype="https://schema.org/Poster">
<div class="card-body p-3 p-md-5 card-gateware">
<div class="col-12 col-md-6 ps-0 pe-0">
<h5 class="card-title">Gateware and system-on-chip design</h5>
<h5 class="card-title" itemprop="headline">Gateware and system-on-chip design</h5>
<div class="desc-wrapper" itemprop="description">
<p class="card-text pt-3">
Traditional gateware design with Verilog and VHDL is well known to be tedious and inefficient. M-Labs have developed Migen, a Python-based HDL and toolbox that addresses many of their issues and makes gateware design more productive.
</p>
@ -136,8 +154,9 @@
<p class="card-text pt-3 pb-3">
Built on Migen, MiSoC provides a high performance, flexible and lightweight solution to build system-on-chips for various applications.
</p>
</div>
<a href="{{ get_url(path='@/gateware/migen.md') }}" class="btn btn-primary btn-lg">Read more...</a>
<a href="{{ get_url(path='@/gateware/migen.md') }}" class="btn btn-primary btn-lg" itemprop="url">Read more...</a>
</div>

View File

@ -1,8 +1,9 @@
{% extends 'section.html' %}
{% block deferred_styles %}
{{ super() }}
{% block styles %}
<link rel="stylesheet" href="{{ get_url(path='css/bootstrap-5.3.0.min.css', cachebust=true) }}">
<link rel="stylesheet" href="{{ get_url(path='css/styles.css', cachebust=true) }}">
<link rel="stylesheet" href="{{ get_url(path='css/order-hardware.css', cachebust=true) }}">
{% endblock %}

View File

@ -1,6 +1,7 @@
{% extends 'section.html' %}
{% block styles %}
{{ super() }}
<style>
h5 {
margin-bottom: 2rem!important;

View File

@ -2,7 +2,7 @@
{% block main %}
<main class="container {% block maincss %}{% endblock %}">
<main class="container {% block maincss %}{% endblock %}" xmlns="http://www.w3.org/1999/html">
<div class="row">
{% block main_content %}
@ -14,26 +14,28 @@
{% set publications = load_data(path=page.extra.data, format="yaml") -%}
{% for publication in publications %}
<div class="col">
<div class="card shadow h-100" >
<div class="card shadow h-100" itemscope itemtype="https://schema.org/ScholarlyArticle">
<div class="card-body">
<strong class="card-title">{{ publication.title | safe }}</strong>
<strong class="card-title" itemprop="headline">{{ publication.title | safe }}</strong>
{% if publication.authors.short or publication.authors.full %}
<p class="card-text">
<span itemprop="author">
{{ publication.authors.short | safe }}
<span class="collapse" id="viewdetails{{ publication.title | slugify | truncate(length=20, end="")}}">
{{ publication.authors.full }}
</span>
</span>
<a data-bs-toggle="collapse" class="hide-expanded" data-bs-target="#viewdetails{{ publication.title | slugify | truncate(length=20, end="") }}"> ...more</a>
<a data-bs-toggle="collapse" class="show-expanded" data-bs-target="#viewdetails{{ publication.title | slugify | truncate(length=20, end="") }}"><br>less</a>
</p>
{% else %}
<p class="card-text">{{ publication.authors }}</p>
<p class="card-text" itemprop="author">{{ publication.authors }}</p>
{% endif %}
</div>
<div class="card-footer border-light-subtle">
{% for link in publication.links %}
{% if link.path %}
<a href="{{link.path}}" class="card-link">{{link.name}}</a>
<a href="{{link.path | safe}}" class="card-link" itemprop="archivedAt">{{link.name}}</a>
{% else %}
<div class="card-link d-inline">{{link.name}}</div>
{% endif %}

View File

@ -1,23 +1,23 @@
<div class="{% if css %}{{ css }}{% else %}col-12 col-md-4{% endif %} mb-4">
<div class="{% if not rmcard %}card shadow{% endif %} h-100">
<div class="{% if not rmcard %}card shadow{% endif %} h-100" itemscope itemtype="https://schema.org/Thing">
{% if not imgbottom %}
{% if src %}
<div class="px-auto pt-4">
<img src="{{ get_url(path=src, cachebust=true) }}" width="40px">
<img src="{{ get_url(path=src, cachebust=true) }}" width="40px" itemprop="image">
</div>
{% endif %}
<div class="card-body">
{% if title %}
<div class="card-title">
<div class="card-title" itemprop="name">
<h5 class="mb-0">{{ title }}</h5>
</div>
{% endif %}
<div {% if sameheight %}style="min-height: {{ sameheight }}px"{% endif%}>
<div {% if sameheight %}style="min-height: {{ sameheight }}px"{% endif%} itemprop="description">
{{ body | markdown | safe }}
</div>
@ -27,18 +27,18 @@
<div class="card-body">
{% if title %}
<div class="card-title">
<div class="card-title" itemprop="name">
<h5 class="mb-0">{{ title }}</h5>
</div>
{% endif %}
{{ body | markdown | safe }}
<span itemprop="description">{{ body | markdown | safe }}</span>
</div>
{% if src %}
<div class="">
<img src="{{ get_url(path=src, cachebust=true) }}" class="card-img img-fluid">
<img src="{{ get_url(path=src, cachebust=true) }}" class="card-img img-fluid" itemprop="image">
</div>
{% endif %}

View File

@ -1,24 +1,24 @@
{% if position == "left" %}
<div class="card mb-3 shadow" style="max-width: 80%;margin-right: 20%;">
<div class="card mb-3 shadow" style="max-width: 80%;margin-right: 20%;" itemscope itemtype="https://schema.org/Grant">
<div class="row g-0">
<div class="col-md-4 funding-logo-start d-flex p-1 justify-content-center">
{% if logo %}
{% if logo_link %}<a href="{{ logo_link }}" class="align-self-center">{% endif %}
<img src="{{ logo }}" class="img-fluid rounded" alt="{{ logo_alt }}"/>
{% if logo_link %}<a href="{{ logo_link | safe }}" class="align-self-center" itemprop="url">{% endif %}
<img src="{{ logo | safe }}" class="img-fluid rounded" alt="{{ logo_alt }}" itemprop="image"/>
{% if logo_link %}</a>{% endif %}
{% endif %}
</div>
<div class="col-md-8">
<div class="card-body">
{% if title %}<h5 class="card-title">{{ title | markdown | safe }}</h5>{% endif %}
{% if title %}<h5 class="card-title" itemprop="sponsor">{{ title | markdown | safe }}</h5>{% endif %}
{% if icon %}
<span class="badge bg-transparent position-absolute top-0 start-100 translate-middle-x">
<img src="{{ icon }}" alt="{{ icon }}" class="rounded"
<img src="{{ icon | safe }}" alt="{{ icon }}" class="rounded"
style="height: 2rem;"/>
</span>
{% endif %}
<p class="card-text">{{ body | markdown | safe }}</p>
<div class="card-text" itemprop="description">{{ body | markdown | safe }}</div>
</div>
</div>
</div>
@ -26,24 +26,24 @@
{% elif position == "right" %}
<div class="card mb-3 shadow" style="max-width: 80%;margin-left: 20%;">
<div class="card mb-3 shadow" style="max-width: 80%;margin-left: 20%;" itemscope itemtype="https://schema.org/Grant">
<div class="row g-0">
<div class="col-md-8">
<div class="card-body">
{% if title %}<h5 class="card-title text-end">{{ title | markdown | safe }}</h5>{% endif %}
{% if title %}<h5 class="card-title text-end" itemprop="sponsor">{{ title | markdown | safe }}</h5>{% endif %}
{% if icon %}
<span class="badge bg-transparent position-absolute top-0 start-0 translate-middle-x">
<img src="{{ icon }}" alt="{{ icon }}" class="rounded"
<img src="{{ icon | safe }}" alt="{{ icon }}" class="rounded"
style="height: 2rem;"/>
</span>
{% endif %}
<p class="card-text">{{ body | markdown | safe }}</p>
<div class="card-text" itemprop="description">{{ body | markdown | safe }}</div>
</div>
</div>
<div class="col-md-4 funding-logo-end d-flex p-1 justify-content-center">
{% if logo %}
{% if logo_link %}<a href="{{ logo_link }}" class="align-self-center">{% endif %}
<img src="{{ logo }}" class="img-fluid rounded" alt="{{ logo_alt }}"/>
{% if logo_link %}<a href="{{ logo_link | safe }}" class="align-self-center" itemprop="url">{% endif %}
<img src="{{ logo | safe }}" class="img-fluid rounded" alt="{{ logo_alt }}" itemprop="image" />
{% if logo_link %}</a>{% endif %}
{% endif %}
</div>
@ -52,12 +52,12 @@
{% else %}
<div class="card mb-3 shadow-sm" style="max-width: 100%;">
<div class="card mb-3 shadow-sm" style="max-width: 100%;" itemscope itemtype="https://schema.org/Poster">
<div class="row g-0">
<div class="col-md-12">
<div class="card-body">
{% if title %}<h4 class="card-title text-center">{{ title | markdown | safe }}</h4>{% endif %}
<p class="card-text">{{ body | markdown | safe }}</p>
{% if title %}<h4 class="card-title text-center" itemprop="headline">{{ title | markdown | safe }}</h4>{% endif %}
<div class="card-text" itemprop="description">{{ body | markdown | safe }}</div>
</div>
</div>
</div>

View File

@ -1,5 +0,0 @@
<div class="{% if css %}{{ css }}{% else %}row d-flex align-items-center mt-5 mb-5{% endif %}">
{{ body | safe }}
</div>