Files
NANOKVM-sipeed_wiki-MIRROR/layout/home.html
2025-10-07 13:54:37 +08:00

341 lines
9.5 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- 翻译:
1. teedoc serve 预览
2. 使用 {{_("翻译内容")}} 标记需要翻译的文字
3. 由于 teedoc 对翻译文件还没有做实时监测更改,需要:
保存一下此页面teedoc 会自动搜索需要翻译的文字
4. 在 layout/locales 目录下手动翻译 po 文件
5. 最后保存一下本页面预览会自动刷新
-->
{% extends "page_base.html" %} {% block content %}
<script src="/static/js/tailwind.js"></script>
{% include "style.html" %}
<script src="/static/js/vue.global.prod.js"></script>
<script src="/static/js/naive-ui.prod.js"></script>
<div id="root">
<div id="products" class="flex flex-col lg:flex-row justify-center">
<div id="products_menu">
<ul id="menuItems">
<li
v-for="(item, key) in data.products"
class="menuItem menuItem1"
@click="setContent(item)"
:id="'menu_'+item.content"
>
<span>{[ item.label ]}</span>
</li>
</ul>
</div>
<div
id="content"
style="overflow-wrap: anywhere"
>
<!-- 修改完以下字页面到本文档来保存一下即可刷新页面 -->
<div id="page_maix" class="hidden h-full w-full">
{% include "maix.html" %}
</div>
<div id="page_tang" class="hidden h-full w-full">
{% include "tang.html" %}
</div>
<div id="page_licheepi" class="hidden h-full w-full">
{% include "licheepi.html" %}
</div>
<div id="page_maixsense" class="hidden h-full w-full">
{% include "maixsense.html" %}
</div>
<div id="page_nanokvm" class="hidden h-full w-full">
{% include "nanokvm.html" %}
</div>
<div id="page_slogic" class="hidden h-full w-full">
{% include "slogic.html" %}
</div>
<div id="page_news" class="hidden h-full w-full">
<n-carousel
show-arrow
dot-type="line"
dot-placement="bottom"
class="carousel"
:show-dots="true"
:draggable="true"
:autoplay="true"
:interval="6000"
>
<!-- for item, key is index -->
<n-carousel-item
class="carousel_item"
v-for="(item, key) in data.head"
>
<img class="carousel-img" :src="item.img" />
<div class="carousel_item_bottom">
<div class="btn_contrainer">
<a
v-for="(btn, key2) in item.btns"
:href="btn.link"
target="_blank"
:class="key2 === item.btns.length - 1? 'btn_home_head btn_home_head_last' : 'btn_home_head'"
>
{[ btn.lable ]}
</a>
</div>
</div>
</n-carousel-item>
</n-carousel>
</div>
</div>
</div>
</div>
<script lang="ts">
const data = {
head: [
// 图片分辨率为: 1800x600 左右两边各留 200px 不包含实际内容只有背景,中间 1400px 是内容
{
img: "{{_('/static/home/banner_maixcam_pro.jpg')}}",
btns: [
{
lable: "{{_('硬件文档')}}",
link: "{{_('/maixcam-pro')}}",
},
{
lable: "软件 MaixPy",
link: "{{_('/maixpy/')}}",
},
{
lable: "{{_('购买')}}",
link: "{{_('https://item.taobao.com/item.htm?id=846226367137')}}",
},
],
},
{
img: "{{_('/static/home/banner_tang_console.jpg')}}",
btns: [
{
lable: "{{_('文档和购买')}}",
link: "/tangconsole",
}
],
},
{
img: "{{_('/static/home/banner_nanokvm_zh.jpg')}}",
btns: [
{
lable: "{{_('文档')}}",
link: "{{_('/nanokvm')}}",
},
{
lable: "{{_('购买')}}",
link: "{{_('https://item.taobao.com/item.htm?id=811206560480')}}",
}
],
},
{
img: "{{_('/static/home/banner_nanokvm_pcie.jpg')}}",
btns: [
{
lable: "{{_('文档和购买')}}",
link: "/nanokvmpcie",
}
],
},
{
img: "{{_('/static/home/banner_nanokvm_usb.jpg')}}",
btns: [
{
lable: "{{_('文档和购买')}}",
link: "/nanokvmusb",
}
],
},
{
img: "/static/home/25K.jpg",
btns: [
{
lable: "{{_('文档')}}",
link: "/tang25k",
},
{
lable: "{{_('购买')}}",
link: "/store",
},
],
},
{
img: "/static/home/138K.jpg",
btns: [
{
lable: "{{_('文档')}}",
link: "/tang138k",
},
{
lable: "{{_('购买')}}",
link: "/store",
},
],
},
{
img: "/static/home/banner_slogic.jpg",
btns: [
{
lable: "{{_('文档')}}",
link: "/slogic",
},
{
lable: "{{_('购买')}}",
link: "{{_('https://item.taobao.com/item.htm?id=737788586308')}}",
},
],
}
],
products: [
// 只写公司重点运营的,不是重点推的产品不要写在这里,文档里面可以有,但是这里不写
// 改了需要同步改前面的 include 部分
{
label: "{{_('产品动态')}}",
content: "news",
},
{
label: "{{_('Maix AI 视觉')}}",
content: "maix", // maix.html
},
{
label: "Lichee / Longan",
content: "licheepi",
},
{
label: "Tang FPGA",
content: "tang",
},
{
label: "{{_('MaixSense 传感器')}}",
content: "maixsense",
},
{
label: "{{_('NanoKVM')}}",
content: "nanokvm",
},
{
label: "{{_('SLogic')}}",
content: "slogic",
},
],
};
function isLimitedNetwork() {
var connection = navigator.connection ||
navigator.mozConnection ||
navigator.webkitConnection || { type: "unknown" };
const notLimitTypes = ["ethernet", "wifi", "wimax"];
const limitTypes = ["bluetooth", "cellular"];
var system = {
win: false,
mac: false,
x11: false,
ipad: false,
};
var p = navigator.platform;
system.win = p.indexOf("Win") == 0;
system.mac = p.indexOf("Mac") == 0;
system.x11 = p == "X11" || p.indexOf("Linux") == 0;
system.ipad = navigator.userAgent.match(/iPad/i) != null ? true : false;
if (notLimitTypes.indexOf(connection.type) >= 0) {
return false;
}
if (
(system.win || system.mac || system.x11 || system.ipad) &&
limitTypes.indexOf(connection.type) < 0
) {
return false;
}
return true;
}
const allHandling = {
compilerOptions: {
delimiters: ["{[", "]}"],
},
data() {
return {
data: data,
deviceWidth: window.innerWidth,
data_maix: data_maix,
data_maixcam: data_maixcam,
data_lichee: data_lichee,
data_arm: data_arm,
data_tang: data_tang,
data_maixsense: data_maixsense,
data_nanokvm: data_nanokvm,
data_slogic: data_slogic,
};
},
mounted() {
var isWechat = window.WeixinJSBridge;
if (!isWechat) {
document.addEventListener(
"WeixinJSBridgeReady",
function () {
var players_mask = document.getElementsByClassName("play_mask");
for (var i = 0; i < players_mask.length; ++i) {
players_mask[i].style.display = "block";
}
},
false
);
}
if (isLimitedNetwork() || isWechat) {
var players_mask = document.getElementsByClassName("play_mask");
for (var i = 0; i < players_mask.length; ++i) {
players_mask[i].style.display = "block";
}
} else {
var players = document.getElementsByClassName("video_player");
for (var i = 0; i < players.length; ++i) {
players[i].play();
}
}
// set content default page
this.setContent(this.data.products[0]);
},
methods: {
playVideo(event) {
// remove play button and paly video
el = event.target;
el.style.display = "none";
player = el.parentElement.getElementsByTagName("video")[0];
player.play();
},
setContent(item) {
// set page_{item.content} in content visible, others hidden
let contentEl = document.getElementById("content");
// data.products
for (var i = 0; i < this.data.products.length; ++i) {
let el = document.getElementById(
"page_" + this.data.products[i].content
);
if (this.data.products[i].content == item.content) {
el.style.display = "block";
} else {
el.style.display = "none";
}
}
// set menu active
var ul = document.getElementById("menuItems");
var items = ul.getElementsByTagName("li");
for (var i = 0; i < items.length; ++i) {
items[i].classList.remove("active");
if (items[i].id == "menu_" + item.content) {
items[i].classList.add("active");
}
}
},
},
};
var app = Vue.createApp(allHandling);
app.use(naive);
var vm = app.mount("#root");
</script>
{{ body|safe }} {% endblock%}