fix some bug
@@ -104,7 +104,7 @@ html,body
|
||||
box-shadow: 0px 0px 3px #DCDCDC;
|
||||
}
|
||||
|
||||
#HotModel_Search_Btn img
|
||||
.searchBtn img
|
||||
{
|
||||
filter: brightness(78%);
|
||||
}
|
||||
@@ -137,24 +137,24 @@ html,body
|
||||
filter: invert(1);
|
||||
}
|
||||
|
||||
#HotModel_Search_Bar
|
||||
.searchBar
|
||||
{
|
||||
border: 1px solid #5C5C5C;
|
||||
background-color: #242428;
|
||||
}
|
||||
|
||||
#HotModel_Search_InputArea
|
||||
.searchInputArea
|
||||
{
|
||||
}
|
||||
|
||||
#HotModel_Search_Input
|
||||
.searchInput
|
||||
{
|
||||
background-color: #242428;
|
||||
caret-color: white;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
#HotModel_Search_Btn img
|
||||
.searchBtn img
|
||||
{
|
||||
filter: invert(100%) brightness(100);
|
||||
}
|
||||
@@ -188,4 +188,17 @@ html,body
|
||||
#HideBtn:hover
|
||||
{
|
||||
background-color: rgba(70, 70, 71, 1);
|
||||
}
|
||||
|
||||
/*wiki.css*/
|
||||
.topicBlock{
|
||||
background-color: #000000;
|
||||
}
|
||||
|
||||
.card{
|
||||
background-color: #737373;
|
||||
}
|
||||
|
||||
.topicCard{
|
||||
background-color: #737373;
|
||||
}
|
||||
@@ -162,7 +162,7 @@
|
||||
}
|
||||
|
||||
/*-----Search Bar------*/
|
||||
#HotModel_Search_Bar
|
||||
.searchBar
|
||||
{
|
||||
display: none;
|
||||
align-items: center;
|
||||
@@ -174,7 +174,7 @@
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
#HotModel_Search_InputArea
|
||||
.searchInputArea
|
||||
{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -183,7 +183,7 @@
|
||||
border-radius: 22px 0px 0px 22px;
|
||||
}
|
||||
|
||||
#HotModel_Search_Input
|
||||
.searchInput
|
||||
{
|
||||
height: 30px;
|
||||
flex-grow: 1;
|
||||
@@ -193,7 +193,7 @@
|
||||
}
|
||||
|
||||
|
||||
#HotModel_Search_Btn
|
||||
.searchBtn
|
||||
{
|
||||
width: 60px;
|
||||
height: 100%;
|
||||
|
||||
281
resources/web/homepage3/css/wiki.css
Normal file
@@ -0,0 +1,281 @@
|
||||
html{
|
||||
padding-top: 28px !important;
|
||||
padding-bottom: 0 !important;
|
||||
padding-left: 0 !important;
|
||||
padding-right: 0 !important;
|
||||
}
|
||||
|
||||
body{
|
||||
max-width: none !important;
|
||||
}
|
||||
/* -----------searchBlock----------- */
|
||||
.searchBlock{
|
||||
height: 60px;
|
||||
padding: 0 88px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.searchBar{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
border-radius: 22px;
|
||||
border: 1px solid #C2C2C2;
|
||||
flex-grow: 1;
|
||||
background-color: #F7F7F7;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.searchBtn{
|
||||
width: 60px;
|
||||
height: 100%;
|
||||
border-radius: 0px 22px 22px 0px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.searchInputArea{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-grow: 1;
|
||||
padding: 0px 22px 0px 0px;
|
||||
border-radius: 22px 0px 0px 22px;
|
||||
}
|
||||
|
||||
.searchInput{
|
||||
height: 30px;
|
||||
flex-grow: 1;
|
||||
outline: none;
|
||||
font-size: 16px;
|
||||
background-color: #F7F7F7;
|
||||
}
|
||||
|
||||
.searchResultArea{
|
||||
width: calc(100% - 176px);
|
||||
max-height: 300px;
|
||||
overflow-y: auto;
|
||||
background-color: #FFFFFF;
|
||||
position: absolute;
|
||||
left: 88px;
|
||||
right: 0; /* 与输入框同宽 */
|
||||
top: calc(100% - 6px);
|
||||
z-index: 2;
|
||||
box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.searchResult{
|
||||
height: 30px;
|
||||
border-bottom: #C2C2C2 1px solid;
|
||||
line-height: 30px;
|
||||
padding: 0px 16px;
|
||||
}
|
||||
|
||||
.searchResult:hover{
|
||||
background-color: #F0F0F0;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* -----------academyBlock----------- */
|
||||
.academyBlock{
|
||||
position: relative;
|
||||
padding-left: 48px;
|
||||
}
|
||||
|
||||
.titleBlock{
|
||||
display: flex;
|
||||
padding-right: 48px;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
flex-grow: 1;
|
||||
}
|
||||
.more {
|
||||
font-size: 16px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.academyContent{
|
||||
margin-top: 20px;
|
||||
height: 268px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
.cardContent{
|
||||
display: flex;
|
||||
height: 100%;
|
||||
gap: 16px;
|
||||
align-items:center;
|
||||
}
|
||||
.card {
|
||||
width: 240px;
|
||||
height: 100%;
|
||||
border-radius: 12px;
|
||||
background-color: #F8F8F8;
|
||||
box-sizing: border-box;
|
||||
padding: 36px 39px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.cardImg {
|
||||
width: 162px;
|
||||
}
|
||||
|
||||
.cardTitle {
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.switchBlock{
|
||||
position: absolute;
|
||||
margin-top: 20px;
|
||||
width: calc(100% - 48px);
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
height: 268px;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/*share*/
|
||||
.leftSwitch{
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
.leftSwitch:active { transform: rotate(180deg) translateY(-1px); }
|
||||
.rightSwitch:active { transform: translateY(1px); }
|
||||
|
||||
/*share*/
|
||||
.switchBtn{
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
background-image: url("../img/switch_page.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
background-clip: content-box;
|
||||
background-size: cover;
|
||||
cursor: pointer;
|
||||
opacity: 0.2;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.switchBtn:hover{
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
/* -----------tutorialBlock----------- */
|
||||
.tutorialBlock{
|
||||
margin-top: 48px;
|
||||
position: relative;
|
||||
padding-left: 48px;
|
||||
}
|
||||
|
||||
.tutorialContent{
|
||||
margin-top: 20px;
|
||||
height: 290px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.videoCard{
|
||||
width: 352px;
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.videoThumbnail{
|
||||
width: 352px;
|
||||
}
|
||||
|
||||
.tutorialSwitchBlock{
|
||||
position: absolute;
|
||||
margin-top: 20px;
|
||||
width: calc(100% - 48px);
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
height: 290px;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* -----------topicBlock----------- */
|
||||
.topicBlock{
|
||||
padding: 48px 48px;
|
||||
background-color: #F8F8F8;
|
||||
margin-top: 48px;
|
||||
}
|
||||
|
||||
.topicContent{
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 20px;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.topicCard{
|
||||
padding: 24px 24px;
|
||||
flex: 1 1 300px;
|
||||
min-width: 600px;
|
||||
background-color: #FFFFFF;
|
||||
box-sizing: border-box;;
|
||||
}
|
||||
|
||||
.topicTitle{
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ul{
|
||||
margin-top: 18px;
|
||||
padding-left: 18px;
|
||||
}
|
||||
|
||||
li {
|
||||
color: #4479fb;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* -----------footerBlock----------- */
|
||||
.footerBlock{
|
||||
width: 100%;
|
||||
aspect-ratio: 2536 / 416;
|
||||
background-image: url("../img/wiki_bottom_banner.png");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
background-clip: content-box;
|
||||
background-size: cover;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.rabbit{
|
||||
width: 18%;
|
||||
position: absolute;
|
||||
bottom: 10%;
|
||||
right: 20%;
|
||||
}
|
||||
|
||||
.bannerContent{
|
||||
height: 100%;
|
||||
width: 50%;
|
||||
padding: 32px 54px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.bannerTitle{
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.bannerBtn{
|
||||
border: 1px solid #000000;
|
||||
border-radius: 3px;
|
||||
padding: 10px 45px;
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
margin-top: 24px;
|
||||
}
|
||||
@@ -14,7 +14,8 @@
|
||||
<link rel="stylesheet" type="text/css" href="./css/dark.css" />
|
||||
|
||||
<script type="text/javascript" src="../include/jquery-2.1.1.min.js"></script>
|
||||
<script type="text/javascript" src="../include/json2.js"></script>
|
||||
<script type="text/javascript" src="../include/json2.js"></script>
|
||||
<script type="text/javascript" src="../include/purify.min.js"></script>
|
||||
<script type="text/javascript" src="../include/globalapi.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../data/text.js"></script>
|
||||
@@ -33,12 +34,12 @@
|
||||
<img src="img/project_new.svg" /><span class="trans" tid='t32'>Create new project</span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="HotModel_Search_Bar">
|
||||
<div id="HotModel_Search_Btn" >
|
||||
<div id="HotModel_Search_Bar" class="searchBar">
|
||||
<div id="HotModel_Search_Btn" class="searchBtn">
|
||||
<img src="img/search.svg" />
|
||||
</div>
|
||||
<div id="HotModel_Search_InputArea">
|
||||
<input id="HotModel_Search_Input" maxlength="1000" placeholder="" />
|
||||
<div id="HotModel_Search_InputArea" class="searchInputArea">
|
||||
<input id="HotModel_Search_Input" class="searchInput" maxlength="1000" placeholder="" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
BIN
resources/web/homepage3/img/QIDIStudio.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
resources/web/homepage3/img/printer_q1pro.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
resources/web/homepage3/img/printer_q2.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
resources/web/homepage3/img/printer_xmax3.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
resources/web/homepage3/img/printer_xplus3.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
resources/web/homepage3/img/printer_xplus4.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
resources/web/homepage3/img/printer_xsmart3.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
1
resources/web/homepage3/img/switch_page.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1758367827282" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7546" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M512 64c249.856 0 448 198.656 448 448s-198.656 448-448 448-448-198.144-448-448S262.656 64 512 64M512 0C230.4 0 0 230.4 0 512s230.4 512 512 512 512-230.4 512-512S793.6 0 512 0z" p-id="7547" fill="#707070"></path><path d="M450.56 291.84c-10.24-10.24-30.72-10.24-46.08 0-10.24 10.24-10.24 30.72 0 46.08l179.2 179.2-184.32 184.32c-10.24 10.24-10.24 30.72 0 46.08 5.12 5.12 15.36 10.24 20.48 10.24s15.36-5.12 20.48-10.24l204.8-204.8c5.12-5.12 10.24-15.36 10.24-20.48 0-10.24-5.12-15.36-10.24-20.48L450.56 291.84z" p-id="7548" fill="#707070"></path></svg>
|
||||
|
After Width: | Height: | Size: 882 B |
BIN
resources/web/homepage3/img/wiki_bottom_banner.png
Normal file
|
After Width: | Height: | Size: 321 KiB |
@@ -330,10 +330,10 @@ function ShowRecentFileList( pList )
|
||||
{
|
||||
let OneFile=pList[n];
|
||||
|
||||
let sPath=OneFile['path'];
|
||||
let sImg=OneFile["image"] || sImages[sPath];
|
||||
let sPath=DOMPurify.sanitize(OneFile['path']);
|
||||
let sImg=DOMPurify.sanitize(OneFile["image"]) || sImages[sPath];
|
||||
let sTime=OneFile['time'];
|
||||
let sName=OneFile['project_name'];
|
||||
let sName=DOMPurify.sanitize(OneFile['project_name']);
|
||||
sImages[sPath] = sImg;
|
||||
|
||||
//let index=sPath.lastIndexOf('\\')>0?sPath.lastIndexOf('\\'):sPath.lastIndexOf('\/');
|
||||
|
||||
@@ -31,9 +31,9 @@ function HandleStudio( pVal )
|
||||
|
||||
if(strCmd=='studio_userlogin')
|
||||
{
|
||||
let lastLoginInfo = pVal;
|
||||
var lastLoginInfo = pVal;
|
||||
SetLoginInfo(pVal['data']['avatar'],pVal['data']['name']);
|
||||
if (!m_GetPrintHistoryStatus) {
|
||||
if (!m_GetPrintHistoryStatus && (pVal != lastLoginInfo)) {
|
||||
SendMsg_GetPrintHistory();
|
||||
}
|
||||
SetLoginInfo(pVal['data']['avatar'],pVal['data']['name']);
|
||||
|
||||
591
resources/web/homepage3/js/wiki.js
Normal file
@@ -0,0 +1,591 @@
|
||||
var cardData = [
|
||||
{
|
||||
"title": "Q2",
|
||||
"img": "img/printer_q2.png",
|
||||
"link": "Q2"
|
||||
},
|
||||
{
|
||||
"title": "X-Plus 4",
|
||||
"img": "img/printer_xplus4.png",
|
||||
"link": "X-Plus4"
|
||||
},
|
||||
{
|
||||
"title": "Q1 Pro",
|
||||
"img": "img/printer_q1pro.png",
|
||||
"link": "Q1-Pro"
|
||||
},
|
||||
{
|
||||
"title": "X-Max 3",
|
||||
"img": "img/printer_xmax3.png",
|
||||
"link": "X-Max3"
|
||||
},
|
||||
{
|
||||
"title": "X-Plus 3",
|
||||
"img": "img/printer_xplus3.png",
|
||||
"link": "X-Plus3"
|
||||
},
|
||||
{
|
||||
"title": "X-Smart 3",
|
||||
"img": "img/printer_xsmart3.png",
|
||||
"link": "X-Smart3"
|
||||
},
|
||||
{
|
||||
"title": "QIDI Studio",
|
||||
"img": "img/QIDIStudio.png",
|
||||
"link": "software/qidi-studio"
|
||||
},
|
||||
];
|
||||
|
||||
// var youtubeData = [
|
||||
// {
|
||||
// "id": "8TQCRVS72Us",
|
||||
// "title": "Intro: Overview of Bambu Studio"
|
||||
// },
|
||||
// {
|
||||
// "id": "AdHUVQiVeDI",
|
||||
// "title": "Episode 1: Set Up Your Environment"
|
||||
// },
|
||||
// {
|
||||
// "id": "LDrCjCPYbhE",
|
||||
// "title": "Episode 2: Import 3D Printing Models"
|
||||
// },
|
||||
// {
|
||||
// "id": "3MYKsbd7k0c",
|
||||
// "title": "Episode 3: Adjust the Models to Be Printable - Part 1"
|
||||
// },
|
||||
// {
|
||||
// "id": "KcMBajgOzS0",
|
||||
// "title": "Episode 4: Adjust the Models to Be Printable - Part 2"
|
||||
// },
|
||||
// {
|
||||
// "id": "4W4vczKsiX8",
|
||||
// "title": "Episode 5: Setup for Filaments"
|
||||
// },
|
||||
// {
|
||||
// "id": "lQ4ySwPQeY4",
|
||||
// "title": "Episode 6: Color Models for Multi-Color Prints"
|
||||
// },
|
||||
// {
|
||||
// "id": "3tft_Ahkd_w",
|
||||
// "title": "Episode 7: Divide and Print Your Models on Multiple Plates"
|
||||
// },
|
||||
// {
|
||||
// "id": "ZH9xqdQYXsI",
|
||||
// "title": "Episode 8: The Basic Quality Settings"
|
||||
// },
|
||||
// {
|
||||
// "id": "FRLympzHsWY",
|
||||
// "title": "Episode 9: The Basic Strength Settings"
|
||||
// },
|
||||
// {
|
||||
// "id": "1QJ2UKDamzc",
|
||||
// "title": "Episode 10: The Basic Support Settings"
|
||||
// },
|
||||
// {
|
||||
// "id": "EHZtnnQLtGs",
|
||||
// "title": "Episode 11: The Basic Other Settings"
|
||||
// },
|
||||
// {
|
||||
// "id": "DWna4Mwjs5c",
|
||||
// "title": "Episode 12: Check Your Sliced Model in Preview"
|
||||
// },
|
||||
// {
|
||||
// "id": "pnd1CZ-Dp34",
|
||||
// "title": "Episode 13: Send a Print Job to Your Printer"
|
||||
// },
|
||||
// {
|
||||
// "id": "SZCWxYeMZro",
|
||||
// "title": "Episode 14: During the Print"
|
||||
// },
|
||||
// ];
|
||||
|
||||
var topicData = [
|
||||
{
|
||||
"title": "Quick Start",
|
||||
"zhcn-title": "快速开始",
|
||||
"children": [
|
||||
{
|
||||
"title": "QIDI Studio Quick Start Guide",
|
||||
"zhcn-title": "QIDI Studio 快速上手教程",
|
||||
"link": "software/qidi-studio/quick-guide"
|
||||
},
|
||||
{
|
||||
"title": "Connect device and Fluidd",
|
||||
"zhcn-title": "设备连接与Fluidd页面",
|
||||
"link": "software/qidi-studio/fluidd"
|
||||
},
|
||||
// {
|
||||
// "title": "QIDI Box使用教程",
|
||||
// "zhcn-title": "QIDI Box User Guide",
|
||||
// "link": "software/qidi-studio/use-box-guide"
|
||||
// },
|
||||
// {
|
||||
// "title": "QIDI Studio Multi Plate Printing Guide",
|
||||
// "zhcn-title": "QIDI Studio 多盘打印指南",
|
||||
// "link": "software/qidi-studio/multi-plate-printing"
|
||||
// },
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Gizmo",
|
||||
"zhcn-title": "顶部工具栏",
|
||||
"children": [
|
||||
{
|
||||
"title": "Variable Layer Height",
|
||||
"zhcn-title": "可变层高",
|
||||
"link": "software/qidi-studio/toolbar/variable-layer-height"
|
||||
},
|
||||
{
|
||||
"title": "Cut Tool",
|
||||
"zhcn-title": "切割工具",
|
||||
"link": "software/qidi-studio/toolbar/cut-tool"
|
||||
},
|
||||
{
|
||||
"title": "Auto Orientation",
|
||||
"zhcn-title": "自动朝向",
|
||||
"link": "software/qidi-studio/toolbar/autoOrient"
|
||||
},
|
||||
{
|
||||
"title": "Split to Objects/Parts",
|
||||
"zhcn-title": "拆分为对象/零件",
|
||||
"link": "software/qidi-studio/toolbar/split-obj-part"
|
||||
},
|
||||
{
|
||||
"title": "Support Painting Guide",
|
||||
"zhcn-title": "支撑绘制",
|
||||
"link": "software/qidi-studio/toolbar/support-paint-guide"
|
||||
},
|
||||
{
|
||||
"title": "3D Text",
|
||||
"zhcn-title": "添加 3D 文本",
|
||||
"link": "software/qidi-studio/toolbar/3dtext"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Right-click Tool",
|
||||
"zhcn-title": "右键工具",
|
||||
"children": [
|
||||
{
|
||||
"title": "Fix Model",
|
||||
"zhcn-title": "修复模型",
|
||||
"link": "software/qidi-studio/toolbar/fix-model"
|
||||
},
|
||||
{
|
||||
"title": "Simplify Model",
|
||||
"zhcn-title": "简化模型",
|
||||
"link": "software/qidi-studio/toolbar/simplify-model"
|
||||
},
|
||||
{
|
||||
"title": "Negative Part",
|
||||
"zhcn-title": "负零件",
|
||||
"link": "software/qidi-studio/toolbar/negative-part"
|
||||
},
|
||||
{
|
||||
"title": "Modifier Operation Guide",
|
||||
"zhcn-title": "修改器操作指南",
|
||||
"link": "software/qidi-studio/toolbar/add-modify"
|
||||
}
|
||||
]
|
||||
},
|
||||
// {
|
||||
// "title": "Multi-material Printing",
|
||||
// "zhcn-title": "多材料打印",
|
||||
// "children": [
|
||||
// {
|
||||
// "title": "Multi-Color Printing",
|
||||
// "zhcn-title": "多色打印指南",
|
||||
// "link": "software/qidi-studio/multi-color-printing/multi-color-printing"
|
||||
// },
|
||||
// {
|
||||
// "title": "Color Painting Tool",
|
||||
// "zhcn-title": "涂色工具使用指南",
|
||||
// "link": "software/qidi-studio/multi-color-printing/color-painting-tool"
|
||||
// },
|
||||
// {
|
||||
// "title": "Reduce Waste during Filament Change",
|
||||
// "zhcn-title": "减少多色打印时的材料浪费",
|
||||
// "link": "software/qidi-studio/multi-color-printing/reduce-wasting-during-filament-change"
|
||||
// },
|
||||
// ]
|
||||
// },
|
||||
{
|
||||
"title": "Print Settings",
|
||||
"zhcn-title": "打印设置",
|
||||
"children": [
|
||||
// {
|
||||
// "title": "Special Slicing Mode in Bambu Studio",
|
||||
// "zhcn-title": "Bambu Studio 特殊切片模式",
|
||||
// "link": "software/bambu-studio/special-slicing-modes"
|
||||
// },
|
||||
{
|
||||
"title": "How to Create Custom Preset",
|
||||
"zhcn-title": "创建自定义预设",
|
||||
"link": "software/qidi-studio/print-settings/custom-filament"
|
||||
},
|
||||
{
|
||||
"title": "Seam Settings",
|
||||
"zhcn-title": "接缝设置",
|
||||
"link": "software/qidi-studio/print-settings/seam"
|
||||
},
|
||||
{
|
||||
"title": "Support settings in Bambu Studio",
|
||||
"zhcn-title": "支撑耗材与支撑功能的介绍",
|
||||
"link": "software/qidi-studio/print-settings/support"
|
||||
},
|
||||
{
|
||||
"title": "Brim",
|
||||
"zhcn-title": "Brim",
|
||||
"link": "software/qidi-studio/print-settings/brim"
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Calibration",
|
||||
"zhcn-title": "流量校准",
|
||||
"children": [
|
||||
// {
|
||||
// "title": "Flow Rate Calibration",
|
||||
// "zhcn-title": "流量比例",
|
||||
// "link": "software/bambu-studio/calibration_flow_rate"
|
||||
// },
|
||||
// {
|
||||
// "title": "Flow Dynamics Calibration",
|
||||
// "zhcn-title": "动态流量校准",
|
||||
// "link": "software/bambu-studio/calibration_pa"
|
||||
// }
|
||||
{
|
||||
"title": "Calibration",
|
||||
"zhcn-title": "校准",
|
||||
"link": "software/qidi-studio/calibration"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Troubleshooting",
|
||||
"zhcn-title": "故障排除",
|
||||
"children": [
|
||||
{
|
||||
"title": "Failed to send print files or failed to connect printer",
|
||||
"zhcn-title": "无法发送打印文件或无法连接打印机",
|
||||
"link": "software/qidi-studio/troubleshooting/connect-send-problem"
|
||||
},
|
||||
{
|
||||
"title": "QIDI Studio crashes/freezes troubleshooting guide",
|
||||
"zhcn-title": "QIDI Studio 崩溃/冻结故障排除指南",
|
||||
"link": "software/qidi-studio/troubleshooting/crash_freeze_guide"
|
||||
},
|
||||
{
|
||||
"title": "Export QIDI Studio software log",
|
||||
"zhcn-title": "导出QIDI PC软件日志",
|
||||
"link": "software/qidi-studio/troubleshooting/export-logs"
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
var $prev;
|
||||
var $next;
|
||||
|
||||
var video_prev;
|
||||
var video_next;
|
||||
|
||||
function OnInit() {
|
||||
createCardHTML();
|
||||
createVideoHTML();
|
||||
if (IsChinese())
|
||||
$("#tutorial_block").hide();
|
||||
createTopicHTML();
|
||||
TranslatePage();
|
||||
|
||||
$prev = $('#academy_Left_Btn');
|
||||
$next = $('#academy_Right_Btn');
|
||||
|
||||
$prev.on('click', () => scrollByStep(-1));
|
||||
$next.on('click', () => scrollByStep(+1));
|
||||
$('#academy_content').on('scroll', updateButtons);
|
||||
$(window).on('resize', updateButtons);
|
||||
updateButtons();
|
||||
|
||||
$video_prev = $('#tutorial_Left_Btn');
|
||||
$video_next = $('#tutorial_Right_Btn');
|
||||
$video_prev.on('click', () => scrollVideoByStep(-1));
|
||||
$video_next.on('click', () => scrollVideoByStep(+1));
|
||||
$('#tutorial_content').on('scroll', updateVideoButtons);
|
||||
$(window).on('resize', updateVideoButtons);
|
||||
updateVideoButtons();
|
||||
|
||||
$("#Wiki_Search_Input").on("input", debounce(function() {
|
||||
let keyword = $(this).val();
|
||||
searchWiki(keyword);
|
||||
}, 500));
|
||||
$("#Wiki_Search_Input").on("focus", function () {
|
||||
if (this.value.trim().length) {
|
||||
$(this).trigger("input");
|
||||
}
|
||||
});
|
||||
|
||||
// $(".searchResult").on("click", function(e) {
|
||||
// console.log(e);
|
||||
// });
|
||||
$(document).on('click', function (e) {
|
||||
if (!$(e.target).closest('.search').length) {
|
||||
$('#search_result_area').empty();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function debounce(fn, delay){
|
||||
let t;
|
||||
return function(...args){
|
||||
clearTimeout(t);
|
||||
t = setTimeout(() => fn.apply(this, args), delay);
|
||||
};
|
||||
}
|
||||
|
||||
// search
|
||||
|
||||
function searchWiki(keyword) {
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="search_wiki";
|
||||
tSend['data']={};
|
||||
tSend['data']['keyword']=keyword;
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
function updateSearchResult(result) {
|
||||
let data = result["pages"]["search"];
|
||||
$('#search_result_area').empty();
|
||||
if (data["totalHits"] > 0) {
|
||||
data["results"].forEach(element => {
|
||||
if (IsChinese()) {
|
||||
if (element["locale"] != "zh")
|
||||
return;
|
||||
}else {
|
||||
if (element["locale"] != "en")
|
||||
return;
|
||||
}
|
||||
let html = `<div class="searchResult" onclick="openWikiUrl('${element.path}')">${element.title}</div>`;
|
||||
$('#search_result_area').append(html);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
//--------------- Academy Cards -------------------
|
||||
|
||||
function createCardHTML() {
|
||||
for (let i = 0; i < cardData.length; i++) {
|
||||
let html = `<div class="card" data-idx="${i}" onclick="openAcademyUrl('${cardData[i].link}')">
|
||||
<img class="cardImg" src="${cardData[i].img}" />
|
||||
<div class="cardTitle">${cardData[i].title}</div>
|
||||
</div>`;
|
||||
$('#academy_Card_Content').append(html)
|
||||
}
|
||||
}
|
||||
|
||||
function stepCardSize() {
|
||||
const $first = $('#academy_Card_Content').children().first();
|
||||
if ($first.length === 0) return 0;
|
||||
let gap = 16;
|
||||
return $first.outerWidth(true) + gap;
|
||||
}
|
||||
|
||||
function maxScrollLeft() {
|
||||
var a = $('#academy_Card_Content').outerWidth(true);
|
||||
var b = $('#academy_content').innerWidth();
|
||||
return Math.max(0, $('#academy_Card_Content').outerWidth(true) - $('#academy_content').innerWidth());
|
||||
}
|
||||
|
||||
function clampScroll(x) {
|
||||
const max = maxScrollLeft();
|
||||
return Math.min(Math.max(0, x), max);
|
||||
}
|
||||
|
||||
function updateButtons() {
|
||||
const x = Math.round($('#academy_content').scrollLeft());
|
||||
const max = Math.round(maxScrollLeft());
|
||||
$prev.prop('disabled', x <= 0);
|
||||
$next.prop('disabled', x >= max);
|
||||
}
|
||||
|
||||
function scrollByStep(dir) {
|
||||
const step = stepCardSize();
|
||||
if (!step) return;
|
||||
const current = $('#academy_content').scrollLeft();
|
||||
const target = clampScroll(current + dir * step);
|
||||
$('#academy_content').stop(true, false).animate({ scrollLeft: target }, 260, 'swing', updateButtons);
|
||||
}
|
||||
|
||||
function openAcademyUrl(path)
|
||||
{
|
||||
let open_url = "";
|
||||
if (IsChinese()){
|
||||
open_url = "https://wiki.qidi3d.com/zh/";
|
||||
}else{
|
||||
let strLang=langStringTransfer();
|
||||
open_url = "https://wiki.qidi3d.com/en/";
|
||||
}
|
||||
open_url += path;
|
||||
OpenUrlInLocalBrowser(open_url);
|
||||
}
|
||||
|
||||
|
||||
// ---------------- Tutorials -------------------
|
||||
|
||||
function createVideoHTML() {
|
||||
// let academyData = youtubeData;
|
||||
// for (let i = 0; i < academyData.length; i++) {
|
||||
// let html = `<div class="videoCard" onclick="openVideoUrl('${academyData[i].id}')">
|
||||
// <img class="videoThumbnail" src="img/${academyData[i].id}.jpg" />
|
||||
// <div class="videoTitle TextS1">${academyData[i].title}</div>
|
||||
// </div>`;
|
||||
// $('#tutorial_Card_Content').append(html)
|
||||
// }
|
||||
}
|
||||
|
||||
function stepVideoCardSize() {
|
||||
const $first = $('#tutorial_Card_Content').children().first();
|
||||
if ($first.length === 0) return 0;
|
||||
let gap = 16;
|
||||
return $first.outerWidth(true) + gap;
|
||||
}
|
||||
|
||||
function maxVideoScrollLeft() {
|
||||
var a = $('#tutorial_Card_Content').outerWidth(true);
|
||||
var b = $('#tutorial_content').innerWidth();
|
||||
return Math.max(0, $('#tutorial_Card_Content').outerWidth(true) - $('#tutorial_content').innerWidth());
|
||||
}
|
||||
|
||||
function videoClampScroll(x) {
|
||||
const max = maxVideoScrollLeft();
|
||||
return Math.min(Math.max(0, x), max);
|
||||
}
|
||||
|
||||
function updateVideoButtons() {
|
||||
const x = Math.round($('#tutorial_content').scrollLeft());
|
||||
const max = Math.round(maxVideoScrollLeft());
|
||||
$video_prev.prop('disabled', x <= 0);
|
||||
$video_next.prop('disabled', x >= max);
|
||||
}
|
||||
|
||||
function scrollVideoByStep(dir) {
|
||||
const step = stepVideoCardSize();
|
||||
if (!step) return;
|
||||
const current = $('#tutorial_content').scrollLeft();
|
||||
const target = videoClampScroll(current + dir * step);
|
||||
$('#tutorial_content').stop(true, false).animate({ scrollLeft: target }, 260, 'swing', updateVideoButtons);
|
||||
}
|
||||
|
||||
function openVideoUrl(path)
|
||||
{
|
||||
let open_url = "https://www.youtube.com/watch?v=";
|
||||
open_url += path;
|
||||
OpenUrlInLocalBrowser(open_url);
|
||||
}
|
||||
|
||||
// ---------------- topic -------------------
|
||||
|
||||
function createTopicHTML() {
|
||||
for (let i = 0; i < topicData.length; i++) {
|
||||
let title;
|
||||
if (IsChinese()){
|
||||
title = topicData[i]['zhcn-title'];
|
||||
} else {
|
||||
title = topicData[i].title;
|
||||
}
|
||||
let html = `<div class="topicCard">
|
||||
<div class="topicTitle">${title}</div>
|
||||
<ul>`
|
||||
for (let j=0; j < topicData[i].children.length; j++) {
|
||||
let child_title;
|
||||
if (IsChinese()){
|
||||
child_title = topicData[i].children[j]['zhcn-title'];
|
||||
} else {
|
||||
child_title = topicData[i].children[j].title;
|
||||
}
|
||||
html += `<li onclick="openWikiUrl('${topicData[i].children[j].link}')">${child_title}</li>`;
|
||||
}
|
||||
html += `</ul></div>`;
|
||||
$('#topic_content').append(html)
|
||||
}
|
||||
}
|
||||
|
||||
function openWikiUrl(path)
|
||||
{
|
||||
let open_url = "https://wiki.qidi3d.com/"
|
||||
if (IsChinese()){
|
||||
open_url += "zh/";
|
||||
}else{
|
||||
open_url += "en/";
|
||||
}
|
||||
open_url += path;
|
||||
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="userguide_wiki_open";
|
||||
tSend['data']={};
|
||||
tSend['data']['url']=open_url;
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
// --------------------common ----------------
|
||||
|
||||
function IsChinese()
|
||||
{
|
||||
let strLang=GetQueryString("lang");
|
||||
if(strLang!=null)
|
||||
{}else{
|
||||
strLang=localStorage.getItem(LANG_COOKIE_NAME);
|
||||
}
|
||||
|
||||
if(strLang!=null)
|
||||
return strLang.includes('zh')
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
function langStringTransfer()
|
||||
{
|
||||
let strLang=GetQueryString("lang");
|
||||
if(strLang==null)
|
||||
strLang=localStorage.getItem(LANG_COOKIE_NAME);
|
||||
|
||||
if(strLang.includes('zh')){
|
||||
return 'zh';
|
||||
}else if(strLang.includes('en')){
|
||||
return 'en';
|
||||
}else if(strLang.includes('fr')){
|
||||
return 'fr-fr';
|
||||
}else if(strLang.includes('de')){
|
||||
return 'de-de';
|
||||
}else if(strLang.includes('es')){
|
||||
return 'es-mx';
|
||||
}else if(strLang.includes('it')){
|
||||
return 'it-it';
|
||||
}else if(strLang.includes('ja')){
|
||||
return 'ja-jp';
|
||||
}else if(strLang.includes('ko')){
|
||||
return 'ko-kr';
|
||||
}else if(strLang.includes('pt')){
|
||||
return 'pt-br';
|
||||
}else if(strLang.includes('nl')){
|
||||
return 'nl-nl';
|
||||
}else{
|
||||
return 'en';
|
||||
}
|
||||
}
|
||||
|
||||
function HandleStudio( pVal )
|
||||
{
|
||||
let strCmd = pVal['command'];
|
||||
if(strCmd=='search_wiki_get')
|
||||
{
|
||||
updateSearchResult(pVal['data']);
|
||||
}
|
||||
}
|
||||
|
||||
//---------------Global-----------------
|
||||
window.postMessage = HandleStudio;
|
||||
107
resources/web/homepage3/wiki.html
Normal file
@@ -0,0 +1,107 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Cache-Control" content="max-age=7200" />
|
||||
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
|
||||
<title>wiki</title>
|
||||
<link rel="stylesheet" type="text/css" href="./css/common.css" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/rightcommon.css" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/wiki.css" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/dark.css" />
|
||||
|
||||
<script type="text/javascript" src="../include/jquery-2.1.1.min.js"></script>
|
||||
<script type="text/javascript" src="../include/json2.js"></script>
|
||||
<script type="text/javascript" src="../include/globalapi.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../data/text.js"></script>
|
||||
<script type="text/javascript" src="js/wiki.js"></script>
|
||||
</head>
|
||||
<body onLoad="OnInit()">
|
||||
<div class="searchBlock">
|
||||
<div id="Wiki_Search_Bar" class="searchBar">
|
||||
<div id="Wiki_Search_Btn" class="searchBtn">
|
||||
<img src="img/search.svg" />
|
||||
</div>
|
||||
<div id="Wiki_Search_InputArea" class="searchInputArea">
|
||||
<input id="Wiki_Search_Input" class="searchInput" maxlength="1000" placeholder="" />
|
||||
</div>
|
||||
<div id="search_result_area" class="searchResultArea">
|
||||
<!-- <div class="searchResult">title</div>
|
||||
<div class="searchResult">title</div>
|
||||
<div class="searchResult">title</div>
|
||||
<div class="searchResult">title</div>
|
||||
<div class="searchResult">title</div>
|
||||
<div class="searchResult">title</div>
|
||||
<div class="searchResult">title</div>
|
||||
<div class="searchResult">title</div>
|
||||
<div class="searchResult">title</div>
|
||||
<div class="searchResult">title</div>
|
||||
<div class="searchResult">title</div>
|
||||
<div class="searchResult">title</div> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="academyBlock">
|
||||
<div class="titleBlock">
|
||||
<div class="title trans TextS1" tid="wk17">QIDI Tech Academy</div>
|
||||
<div class="more TextS1" onclick="openAcademyUrl('support/academy')"><span class="trans" tid="t108">MORE</span> ></div>
|
||||
</div>
|
||||
<div class="switchBlock">
|
||||
<div id="academy_Left_Btn" class="leftSwitch switchBtn"></div>
|
||||
<div id="academy_Right_Btn" class="rightSwitch switchBtn"></div>
|
||||
</div>
|
||||
<div id="academy_content" class="academyContent">
|
||||
<div id="academy_Card_Content" class="cardContent">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!--div class="tutorialBlock" id="tutorial_block">
|
||||
<div class="titleBlock">
|
||||
<div class="title trans TextS1" tid="wk18">Quick Start Tutorial</div>
|
||||
<div class="more TextS1" onclick="OpenUrlInLocalBrowser('https://www.youtube.com/playlist?list=PLFUVS59deIm2mawl3Zjk1XI9yp7H7955J')"><span class="trans" tid="t108">MORE</span> ></div>
|
||||
</div>
|
||||
<div class="tutorialSwitchBlock">
|
||||
<div id="tutorial_Left_Btn" class="leftSwitch switchBtn"></div>
|
||||
<div id="tutorial_Right_Btn" class="rightSwitch switchBtn"></div>
|
||||
</div>
|
||||
<div id="tutorial_content" class="tutorialContent">
|
||||
<div id="tutorial_Card_Content" class="cardContent">
|
||||
< <div class="videoCard">
|
||||
<div class="videoThumbnail" style="width: 352px;height:264px;background-color: aquamarine;"> </div>
|
||||
<div class="videoTitle">Intro: Overview of QIDI Studio</div>
|
||||
</div>>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<div class="topicBlock">
|
||||
<div class="titleBlock">
|
||||
<div class="title trans TextS1" tid="wk19">Learn by Topic</div>
|
||||
<div class="more TextS1" onclick="openWikiUrl('qidi-studio')"><span class="trans" tid="t108">MORE</span> ></div>
|
||||
</div>
|
||||
<div id="topic_content" class="topicContent">
|
||||
<!-- <div class="topicCard">
|
||||
<div class="topicTitle">Quick Start</div>
|
||||
<ul>
|
||||
<li>QIDI Studio Quick Start Guide</li>
|
||||
<li>Remote Control & Monitoring</li>
|
||||
<li>Multi-Color Printing</li>
|
||||
</ul>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footerBlock">
|
||||
<!-- <img class="rabbit" src="img/wiki_bottom_banner_2.png" /> -->
|
||||
<div class="bannerContent">
|
||||
<div class="bannerTitle trans" tid="wk20">Filament Guide</div>
|
||||
<!-- <div class="bannerText">Perhaps there are a few too many old ideas baked into Perhamany old ideas baked into </div> -->
|
||||
<div class="bannerBtn trans" onclick="openAcademyUrl('Memo/Filament-Guide')" tid="wk21">Explore now</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||