NEW: New UI of Homepage
JIRA: NONE Change-Id: I2a25d087f7708b06b8fa8a48f190856963bc4644
@ -104,7 +104,10 @@ var LangText={
|
||||
"t110":"Custom Filaments",
|
||||
"t111":"Create New",
|
||||
"t112":"Join the Program",
|
||||
"t113":"You may change your choice in preference anytime."
|
||||
"t113":"You may change your choice in preference anytime.",
|
||||
"t114":"Home",
|
||||
"t115":"Batch",
|
||||
"t116":"Retry"
|
||||
},
|
||||
"zh_CN": {
|
||||
"t1": "欢迎使用Bambu Studio",
|
||||
@ -212,6 +215,9 @@ var LangText={
|
||||
"t111":"新建",
|
||||
"t112":"加入该计划",
|
||||
"t113":"您可以随时更改您的偏好。",
|
||||
"t114":"首页",
|
||||
"t115":"批量处理",
|
||||
"t116": "重试",
|
||||
"wk1": "快速入门指南",
|
||||
"wk2": "本文介绍了Bambu Studio的最基本用法。它指导用户配置软件,创建项目,并逐步完成第一个打印任务。",
|
||||
"wk3": "基于项目的工作流",
|
||||
@ -334,7 +340,10 @@ var LangText={
|
||||
"t110":"カスタムフィラメント",
|
||||
"t111":"新規作成",
|
||||
"t112":"この計画に参加する",
|
||||
"t113":"好みはいつでも変更できます."
|
||||
"t113":"好みはいつでも変更できます.",
|
||||
"t114":"トップページ",
|
||||
"t115":"バッチ",
|
||||
"t116": "[再試行]"
|
||||
},
|
||||
"it_IT": {
|
||||
"t1": "Benvenuti allo Studio Bambu",
|
||||
@ -441,7 +450,10 @@ var LangText={
|
||||
"t110":"Filamenti Personalizzati",
|
||||
"t111":"Crea Nuovo",
|
||||
"t112":"Partecipa al programma",
|
||||
"t113":"Puoi cambiare la tua scelta in qualsiasi momento."
|
||||
"t113":"Puoi cambiare la tua scelta in qualsiasi momento.",
|
||||
"t114":"Home",
|
||||
"t115":"Lotto",
|
||||
"t116":"Riprova"
|
||||
},
|
||||
"fr_FR": {
|
||||
"t1": "Bienvenue chez Bambu Studio",
|
||||
@ -548,7 +560,10 @@ var LangText={
|
||||
"t110":"Filaments Personnalisés",
|
||||
"t111":"Créer Nouveau",
|
||||
"t112":"Rejoignez le programme",
|
||||
"t113":"Vous pouvez modifier vos préférences à tout moment."
|
||||
"t113":"Vous pouvez modifier vos préférences à tout moment.",
|
||||
"t114":"Accueil",
|
||||
"t115":"Un lot de",
|
||||
"t116":"Retenter"
|
||||
},
|
||||
"de_DE": {
|
||||
"t1": "Willkommen im Bambu Studio",
|
||||
@ -655,7 +670,10 @@ var LangText={
|
||||
"t110":"Benutzerdefinierte Filamente",
|
||||
"t111":"Neu erstellen",
|
||||
"t112":"Teilnahme am Programm",
|
||||
"t113":"Sie können Ihre Wahl jederzeit ändern."
|
||||
"t113":"Sie können Ihre Wahl jederzeit ändern.",
|
||||
"t114":"Startseite",
|
||||
"t115":"Charge",
|
||||
"t116":"Erneut versuchen"
|
||||
},
|
||||
"hu_HU": {
|
||||
"t1": "Üdvözöljük a Bambu Stúdióban",
|
||||
@ -762,7 +780,10 @@ var LangText={
|
||||
"t110":"Egyedi Filamentek",
|
||||
"t111":"Új Létrehozása",
|
||||
"t112":"Csatlakozás a programhoz",
|
||||
"t113":"Bármikor megváltoztathatja a preferenciáját."
|
||||
"t113":"Bármikor megváltoztathatja a preferenciáját.",
|
||||
"t114":"honlap",
|
||||
"t115":"Tétel",
|
||||
"t116":"Újrapróbálkozás"
|
||||
},
|
||||
"es_ES": {
|
||||
"t1": "Bienvenido a Bambu Studio",
|
||||
@ -869,7 +890,10 @@ var LangText={
|
||||
"t110":"Filamenti Personalizzati",
|
||||
"t111":"Crea Nuovo",
|
||||
"t112":"Unirse al programa",
|
||||
"t113":"Puede cambiar sus preferencias en cualquier momento."
|
||||
"t113":"Puede cambiar sus preferencias en cualquier momento.",
|
||||
"t114":"Página de inicio",
|
||||
"t115":"Un lote",
|
||||
"t116":"Reintentar"
|
||||
},
|
||||
"sv_SE": {
|
||||
"t1": "Välkommen till Bambu Studio",
|
||||
@ -976,7 +1000,10 @@ var LangText={
|
||||
"t110":"Anpassade filament",
|
||||
"t111":"Skapa ny",
|
||||
"t112":"Gå med i programmet",
|
||||
"t113":"Du kan ändra ditt val när som helst."
|
||||
"t113":"Du kan ändra ditt val när som helst.",
|
||||
"t114":"startsida",
|
||||
"t115":"Batch",
|
||||
"t116":"Försök igen"
|
||||
},
|
||||
"cs_CZ": {
|
||||
"t1": "Vítejte v Bambu Studio",
|
||||
@ -1083,7 +1110,10 @@ var LangText={
|
||||
"t110":"Samostatné materiály",
|
||||
"t111":"Nové",
|
||||
"t112":"Připojte se k programu",
|
||||
"t113":"Své preference můžete kdykoliv změnit.",
|
||||
"t113":"Své preference můžete kdykoliv změnit.",
|
||||
"t114":"domovská stránka",
|
||||
"t115":"Šarže",
|
||||
"t116":"Zkuste to znovu"
|
||||
},
|
||||
"nl_NL": {
|
||||
"t1": "Welkom bij Bambu Studio",
|
||||
@ -1190,7 +1220,10 @@ var LangText={
|
||||
"t110":"Aangepaste filamenten",
|
||||
"t111":"Nieuw maken",
|
||||
"t112":"Deelnemen aan het programma",
|
||||
"t113":"U kunt uw keuze op elk gewenst moment wijzigen."
|
||||
"t113":"U kunt uw keuze op elk gewenst moment wijzigen.",
|
||||
"t114":"startpagina",
|
||||
"t115":"Batch",
|
||||
"t116":"Probeer het opnieuw"
|
||||
},
|
||||
"ru_RU": {
|
||||
"t1": "Приветствуем в Bambu Studio!",
|
||||
@ -1297,7 +1330,10 @@ var LangText={
|
||||
"t110":"Пользовательские прутки",
|
||||
"t111":"Создать новый",
|
||||
"t112":"Присоединяйтесь к программе",
|
||||
"t113":"Вы можете изменить свои предпочтения в любое время."
|
||||
"t113":"Вы можете изменить свои предпочтения в любое время.",
|
||||
"t114":"Главная страница",
|
||||
"t115":"Одна партия",
|
||||
"t116":"Повторить попытку"
|
||||
}
|
||||
};
|
||||
|
||||
@ -1323,7 +1359,7 @@ function TranslatePage()
|
||||
|
||||
if( !LangText.hasOwnProperty(strLang) )
|
||||
strLang="en";
|
||||
|
||||
|
||||
let AllNode=$(".trans");
|
||||
let nTotal=AllNode.length;
|
||||
for(let n=0;n<nTotal;n++)
|
||||
@ -1335,5 +1371,9 @@ function TranslatePage()
|
||||
{
|
||||
$(OneNode).html(LangText[strLang][tid]);
|
||||
}
|
||||
else if(strLang!='en' && LangText['en'].hasOwnProperty(tid) )
|
||||
{
|
||||
$(OneNode).html(LangText['en'][tid]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
164
resources/web/homepage2/css/common.css
Normal file
@ -0,0 +1,164 @@
|
||||
/*---Whole---*/
|
||||
*
|
||||
{
|
||||
padding:0px;
|
||||
border: 0px;
|
||||
margin: 0px;
|
||||
font-family: "system-ui", "Segoe UI", Roboto, Oxygen, Ubuntu, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-sans;
|
||||
border-color: #D7D7D7;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
html, body {
|
||||
line-height: 20px;
|
||||
font-size: 14px;
|
||||
padding:0px;
|
||||
border: 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
/*---字体----*/
|
||||
.TextS1
|
||||
{
|
||||
color:#333333;
|
||||
}
|
||||
|
||||
.TextS2
|
||||
{
|
||||
color:#6B6B6B;
|
||||
}
|
||||
|
||||
.TextS3
|
||||
{
|
||||
color: #ACACAC;
|
||||
}
|
||||
|
||||
/*-------按钮------*/
|
||||
.Btn_White
|
||||
{
|
||||
background-color:#E5E5E5;
|
||||
border: 1px solid #BABABA;
|
||||
border-radius: 8px;
|
||||
padding: 4px 20px;
|
||||
color: black;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.Btn_White:hover
|
||||
{
|
||||
background-color:#EBEBEB;
|
||||
border: 1px solid #C2C2C2;
|
||||
}
|
||||
|
||||
.Btn_Green
|
||||
{
|
||||
background-color:#00AE42;
|
||||
border: 1px solid #009438;
|
||||
border-radius: 8px;
|
||||
color: white;
|
||||
padding: 4px 20px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.Btn_Green:hover
|
||||
{
|
||||
background-color:#00A03D;
|
||||
border: 1px solid #009438;
|
||||
}
|
||||
|
||||
/*---滚动条---*/
|
||||
.ZScrol::-webkit-scrollbar {/*滚动条整体样式*/
|
||||
width: 12px; /*高宽分别对应横竖滚动条的尺寸*/
|
||||
height: 1px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.ZScrol::-webkit-scrollbar-thumb {/*滚动条里面小方块*/
|
||||
border-radius: 6px;
|
||||
-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
|
||||
box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
|
||||
background-color: #AAAAAA;
|
||||
}
|
||||
|
||||
.ZScrol::-webkit-scrollbar-track {/*滚动条里面轨道*/
|
||||
-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
|
||||
box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
|
||||
border-radius: 10px;
|
||||
background: #EDEDED;
|
||||
}
|
||||
|
||||
/*------Top Menu-----*/
|
||||
#MenuArea
|
||||
{
|
||||
display:flex;
|
||||
justify-content: flex-end;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.Menu_Btn
|
||||
{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 40px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.Menu_Btn img
|
||||
{
|
||||
margin-right: 6px;
|
||||
width: 18px;
|
||||
}
|
||||
|
||||
/*---弹性内容块---*/
|
||||
.GuideBlock
|
||||
{
|
||||
margin: 0px 10px 24px 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 815px) {
|
||||
.GuideBlock
|
||||
{
|
||||
width: calc(50% - 20px);
|
||||
}
|
||||
.SingleGuideBar :nth-child(n+3)
|
||||
{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and ( min-width:816px) and ( max-width:1087px )
|
||||
{
|
||||
.GuideBlock
|
||||
{
|
||||
width: calc(33% - 20px);
|
||||
}
|
||||
.SingleGuideBar :nth-child(n+4)
|
||||
{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and ( min-width:1088px) and (max-width:1359px ) {
|
||||
.GuideBlock
|
||||
{
|
||||
width: calc(25% - 20px);
|
||||
}
|
||||
.SingleGuideBar :nth-child(n+5)
|
||||
{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and ( min-width:1360px) {
|
||||
.GuideBlock
|
||||
{
|
||||
width: calc(20% - 20px);
|
||||
}
|
||||
.SingleGuideBar :nth-child(n+6)
|
||||
{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
/*---打开/新建项目---*/
|
109
resources/web/homepage2/css/dark.css
Normal file
@ -0,0 +1,109 @@
|
||||
html,body
|
||||
{
|
||||
background-color:#242428;
|
||||
}
|
||||
|
||||
*
|
||||
{
|
||||
border-color: #3E3E45;
|
||||
}
|
||||
|
||||
|
||||
.TextS1
|
||||
{
|
||||
color:#efeff0;
|
||||
}
|
||||
|
||||
.TextS2
|
||||
{
|
||||
color:#F8F8F8;
|
||||
}
|
||||
|
||||
|
||||
/*---字体----*/
|
||||
.ZScrol::-webkit-scrollbar-thumb {/*滚动条里面小方块*/
|
||||
background-color: #939594;
|
||||
}
|
||||
|
||||
.ZScrol::-webkit-scrollbar-track {/*滚动条里面轨道*/
|
||||
background: #161817;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*----Left Menu Button----*/
|
||||
#LogoutBtn:hover
|
||||
{
|
||||
background: #243E30;
|
||||
color: #efeff0;
|
||||
}
|
||||
|
||||
.BtnItem
|
||||
{
|
||||
color:#B3B3B5;
|
||||
}
|
||||
|
||||
.BtnItem:hover
|
||||
{
|
||||
color: #efeff0;
|
||||
background-color: #243E30;
|
||||
}
|
||||
|
||||
.BtnItem:hover .LeftIcon
|
||||
{
|
||||
filter: brightness(300%);
|
||||
}
|
||||
|
||||
.BtnItemSelected
|
||||
{
|
||||
color: #efeff0;
|
||||
background-color: #243E30;
|
||||
}
|
||||
|
||||
.BtnItemSelected .LeftIcon
|
||||
{
|
||||
filter: brightness(300%);
|
||||
}
|
||||
|
||||
/*-----Right Top MenuBtn-----*/
|
||||
.MenuItem:hover
|
||||
{
|
||||
border-color: #4CAA50;
|
||||
background-color: #243E30;
|
||||
}
|
||||
|
||||
#RecentClearAllBtn:hover
|
||||
{
|
||||
color: #000;
|
||||
}
|
||||
|
||||
#recnet_context_menu
|
||||
{
|
||||
color: #efeff0;
|
||||
background-color:#242428;
|
||||
border: 0px;
|
||||
box-shadow: 0px 0px 3px #DCDCDC;
|
||||
}
|
||||
|
||||
/*----User Manual------*/
|
||||
.UG_DESC
|
||||
{
|
||||
color:#818183;
|
||||
}
|
||||
|
||||
/*---Staff PIck----*/
|
||||
.HotModelPiece
|
||||
{
|
||||
background-color: #4C4C55;
|
||||
}
|
||||
|
||||
#HotModel_RIGHT_Title
|
||||
{
|
||||
color: #818183;
|
||||
}
|
||||
|
||||
.HotModel_click_info img
|
||||
{
|
||||
filter: invert(1);
|
||||
}
|
46
resources/web/homepage2/css/disconnect.css
Normal file
@ -0,0 +1,46 @@
|
||||
html
|
||||
{
|
||||
background-color: white;
|
||||
height:100%;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
border: 0px;
|
||||
}
|
||||
|
||||
body
|
||||
{
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
border: 0px;
|
||||
}
|
||||
|
||||
|
||||
#WarnMainArea
|
||||
{
|
||||
width:500px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
#WarnIcon
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#WarnTip
|
||||
{
|
||||
font-weight:700;
|
||||
line-height: 30px;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
#WarnBtn
|
||||
{
|
||||
margin-top: 10px;
|
||||
padding: 8px 24px;
|
||||
}
|
63
resources/web/homepage2/css/home.css
Normal file
@ -0,0 +1,63 @@
|
||||
/*------------------*/
|
||||
#DebugText
|
||||
{
|
||||
height:30px;
|
||||
}
|
||||
|
||||
/*------------------*/
|
||||
body
|
||||
{
|
||||
display:flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
/*------MakerLab-------*/
|
||||
#MakerlabArea
|
||||
{
|
||||
display:none;
|
||||
}
|
||||
|
||||
#LabList
|
||||
{
|
||||
display:flex;
|
||||
|
||||
}
|
||||
|
||||
.MakerlabImg img
|
||||
{
|
||||
width: 100%;
|
||||
aspect-radio: 16/9;
|
||||
border-radius: 8px 8px 0px 0px;
|
||||
}
|
||||
|
||||
.MakerlabTextBlock
|
||||
{
|
||||
background-color: white;
|
||||
padding: 0px 8px;
|
||||
}
|
||||
|
||||
.MakerlabTextBlock div
|
||||
{
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.MakerlabName
|
||||
{
|
||||
color:#333333;
|
||||
font-weight:700;
|
||||
}
|
||||
|
||||
.MakerlabDesc
|
||||
{
|
||||
color:#6B6B6B;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.MakerlabAuthor
|
||||
{
|
||||
font-size: 10px;
|
||||
color: #ACACAC;
|
||||
}
|
264
resources/web/homepage2/css/left.css
Normal file
@ -0,0 +1,264 @@
|
||||
*
|
||||
{
|
||||
padding:0px;
|
||||
border: 0px;
|
||||
margin: 0px;
|
||||
font-family: "system-ui", "Segoe UI", Roboto, Oxygen, Ubuntu, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-sans;
|
||||
border-color: #D7D7D7;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
html, body {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
line-height: 20px;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.ZScrol::-webkit-scrollbar {/*滚动条整体样式*/
|
||||
width: 12px; /*高宽分别对应横竖滚动条的尺寸*/
|
||||
height: 1px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.ZScrol::-webkit-scrollbar-thumb {/*滚动条里面小方块*/
|
||||
border-radius: 6px;
|
||||
-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
|
||||
box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
|
||||
background-color: #AAAAAA;
|
||||
}
|
||||
|
||||
.ZScrol::-webkit-scrollbar-track {/*滚动条里面轨道*/
|
||||
-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
|
||||
box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
|
||||
border-radius: 10px;
|
||||
background: #EDEDED;
|
||||
}
|
||||
|
||||
|
||||
.RedFont
|
||||
{
|
||||
font-size:12px;
|
||||
color: #F07E4A;
|
||||
}
|
||||
|
||||
.LinkBtn
|
||||
{
|
||||
font-size:12px;
|
||||
color: #1200FF;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.LinkBtn:hover
|
||||
{
|
||||
text-decoration:underline;
|
||||
}
|
||||
|
||||
/*------------------*/
|
||||
#DebugText
|
||||
{
|
||||
height:30px;
|
||||
}
|
||||
|
||||
/*------------------*/
|
||||
body
|
||||
{
|
||||
display:flex;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
#LeftBoard
|
||||
{
|
||||
border-right-width: 1px;
|
||||
border-right-style: solid;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#LoginArea
|
||||
{
|
||||
height: 180px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-wrap: nowrap;
|
||||
position: relative;
|
||||
width:100%;
|
||||
}
|
||||
|
||||
|
||||
#Login1
|
||||
{
|
||||
height:36px;
|
||||
line-height: 36px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
#LoginBtn
|
||||
{
|
||||
cursor:pointer;
|
||||
}
|
||||
|
||||
#LoginBtn:hover
|
||||
{
|
||||
font-size:17px;
|
||||
}
|
||||
|
||||
|
||||
#NoPluginTip
|
||||
{
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
bottom: 0px;
|
||||
right: 0px;
|
||||
z-index: 1;
|
||||
display: none;
|
||||
flex-direction: column;
|
||||
justify-content: flex-end;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
|
||||
#DownloadBtn
|
||||
{
|
||||
color:#0A00FF;
|
||||
}
|
||||
|
||||
|
||||
#Icon1
|
||||
{
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
#BBLIcon
|
||||
{
|
||||
height:36px;
|
||||
}
|
||||
|
||||
#Login2
|
||||
{
|
||||
display: none;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#UserAvatarIcon
|
||||
{
|
||||
height: 85px;
|
||||
}
|
||||
|
||||
#UserName
|
||||
{
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
text-align: center;
|
||||
overflow: hidden;
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
#LogoutBtn
|
||||
{
|
||||
font-size: 14px;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
color: #00B731;
|
||||
border: 1px solid #00AE42;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
margin-top: 5px;
|
||||
padding: 0px 8px;
|
||||
}
|
||||
|
||||
#LogoutBtn:hover
|
||||
{
|
||||
background: #00B731;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
|
||||
/*------------------*/
|
||||
#BtnArea
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
.BtnItem
|
||||
{
|
||||
padding-left:30px;
|
||||
padding-right: 14px;
|
||||
height:50px;
|
||||
line-height: 50px;
|
||||
display: flex;
|
||||
justify-content:flex-start;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.BtnItem[menu="online"]
|
||||
{
|
||||
display: none;
|
||||
}
|
||||
|
||||
.BtnItem[menu="makerlab"]
|
||||
{
|
||||
display: none;
|
||||
}
|
||||
|
||||
.BtnItem:hover
|
||||
{
|
||||
background-color: #E0FCEB;
|
||||
}
|
||||
|
||||
.BtnItemSelected
|
||||
{
|
||||
background-color: #E0FCEB;
|
||||
}
|
||||
|
||||
.BtnIcon
|
||||
{
|
||||
margin-right:6px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.BtnText
|
||||
{
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.LeftIcon
|
||||
{
|
||||
width:24px;
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
.BtnNewIcon
|
||||
{
|
||||
height: 12px;
|
||||
line-height: 12px;
|
||||
font-size: 10px;
|
||||
background-color: #00AE42;
|
||||
color: white;
|
||||
padding: 2px 4px;
|
||||
position: absolute;
|
||||
top: calc(50% - 8px);
|
||||
right: 12px;
|
||||
display: none;
|
||||
}
|
||||
|
0
resources/web/homepage2/css/light.css
Normal file
47
resources/web/homepage2/css/manual.css
Normal file
@ -0,0 +1,47 @@
|
||||
/*---------Wiki----------*/
|
||||
|
||||
#WikiGuideBoard
|
||||
{
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-content: flex-start;
|
||||
overflow-y: auto;
|
||||
position: relative;
|
||||
top: 0px;
|
||||
bottom: 0px;
|
||||
right: 0px;
|
||||
left: 0px;
|
||||
}
|
||||
|
||||
.UG_IMG
|
||||
{
|
||||
width: 100%;
|
||||
line-height: 0px;
|
||||
border-radius: 8px;
|
||||
line-height: 0px;
|
||||
}
|
||||
|
||||
.UG_IMG img
|
||||
{
|
||||
width: 100%;
|
||||
border-radius: 8px;
|
||||
aspect-ratio: 4/3;
|
||||
}
|
||||
|
||||
.UG_TITLE
|
||||
{
|
||||
font-size: 18px;
|
||||
font-weight: 700;
|
||||
line-height: 20px;
|
||||
width: 100%;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.UG_DESC
|
||||
{
|
||||
width: 100%;
|
||||
line-height: 18px;
|
||||
color: #4E5454;
|
||||
font-size: 14px;
|
||||
}
|
161
resources/web/homepage2/css/online.css
Normal file
@ -0,0 +1,161 @@
|
||||
.RedFont
|
||||
{
|
||||
font-size:12px;
|
||||
color: #F07E4A;
|
||||
}
|
||||
|
||||
.LinkBtn
|
||||
{
|
||||
font-size:12px;
|
||||
color: #1200FF;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.LinkBtn:hover
|
||||
{
|
||||
text-decoration:underline;
|
||||
}
|
||||
|
||||
|
||||
/*------------------*/
|
||||
|
||||
/*--------------------*/
|
||||
#ContentBoard
|
||||
{
|
||||
overflow-y:auto;
|
||||
padding: 0px 40px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#Online_Models_Bar
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#ForU_Models_Bar
|
||||
{
|
||||
display:none;
|
||||
}
|
||||
|
||||
|
||||
/*--Staff Pick--*/
|
||||
#HotModelArea
|
||||
{
|
||||
display: none;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#HotModelList
|
||||
{
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-content: flex-start;
|
||||
}
|
||||
|
||||
.HotModelPiece
|
||||
{
|
||||
display:flex;
|
||||
flex-direction: column;
|
||||
cursor: pointer;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.HotModel_PrevBlock
|
||||
{
|
||||
text-align: center;
|
||||
background-color: #E4E4E4;
|
||||
width: 100%;
|
||||
border-radius: 8px;
|
||||
line-height: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.HotModel_PrevImg
|
||||
{
|
||||
border-radius: 8px;
|
||||
width: 100%;
|
||||
aspect-ratio: 4/3;
|
||||
}
|
||||
|
||||
.HotModel_Designer_Info
|
||||
{
|
||||
display:flex;
|
||||
align-items: center;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
padding: 4px 2px;
|
||||
}
|
||||
|
||||
.HotModel_Author_HeadIcon
|
||||
{
|
||||
margin-right: 6px;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
.HotModel_Author_HeadIcon img
|
||||
{
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 16px;
|
||||
}
|
||||
|
||||
.HotModel_Right_1
|
||||
{
|
||||
flex: 1 1 auto;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
padding: 0px 4px;
|
||||
}
|
||||
|
||||
.HotModel_Name
|
||||
{
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
|
||||
.HotModel_Right_1_2
|
||||
{
|
||||
display:flex;
|
||||
}
|
||||
|
||||
.HotModel_Author_Name
|
||||
{
|
||||
flex: 1 1 auto;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
|
||||
.HotModel_click_info
|
||||
{
|
||||
flex: 0 0 auto;
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
font-size: 12px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.HotModel_click_info img
|
||||
{
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.Model_Click_Number
|
||||
{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
256
resources/web/homepage2/css/recent.css
Normal file
@ -0,0 +1,256 @@
|
||||
|
||||
|
||||
#RecentFileArea
|
||||
{
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
position: relative;
|
||||
top: 0px;
|
||||
bottom: 0px;
|
||||
right: 0px;
|
||||
left: 0px;
|
||||
}
|
||||
|
||||
#RecentTitleBlock
|
||||
{
|
||||
display:flex;
|
||||
align-items: center;
|
||||
justify-content:space-between;
|
||||
padding: 6px 10px;
|
||||
}
|
||||
|
||||
#RecentClearAllBtn
|
||||
{
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
padding: 0px 10px;
|
||||
border-radius: 6px;
|
||||
line-height: 26px;
|
||||
height: 26px;
|
||||
margin-left: 20px;
|
||||
cursor: pointer;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#RecentClearAllBtn:hover
|
||||
{
|
||||
background-color:#CDCECE;
|
||||
}
|
||||
|
||||
#Recent_LEFT_Title
|
||||
{
|
||||
display:flex;
|
||||
align-items: center;
|
||||
padding: 0px 0px;
|
||||
}
|
||||
|
||||
#Right_Title_Block
|
||||
{
|
||||
display:flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.Right_Title_Btn
|
||||
{
|
||||
display:flex;
|
||||
align-items: center;
|
||||
margin-right: 16px;
|
||||
}
|
||||
|
||||
.Right_Title_Btn_Icon
|
||||
{
|
||||
width:16px;
|
||||
height: 16px;
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
#Menu_Delete
|
||||
{
|
||||
display:none;
|
||||
}
|
||||
|
||||
#Menu_Cancel
|
||||
{
|
||||
display:none;
|
||||
}
|
||||
|
||||
#FileList
|
||||
{
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-content: flex-start;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.FileItem
|
||||
{
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
word-break: break-all;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.FileMask
|
||||
{
|
||||
position:absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
bottom: 0px;
|
||||
background-color: darkgrey;
|
||||
opacity: 0.3;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.FileCheckBox
|
||||
{
|
||||
position:absolute;
|
||||
top: 14px;
|
||||
left: 14px;
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
border:1px solid grey;
|
||||
border-radius: 4px;
|
||||
background-color: white;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.FileCheckBox_checked
|
||||
{
|
||||
background-image: url("../img/checkbox.svg");
|
||||
background-size: contain;
|
||||
}
|
||||
|
||||
.FileCheckBox_checked:hover
|
||||
{
|
||||
background-image: url("../img/checkbox_hover.svg");
|
||||
}
|
||||
|
||||
.FileTip
|
||||
{
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.FileImg
|
||||
{
|
||||
text-align: center;
|
||||
background-color: #E4E4E4;
|
||||
width: 100%;
|
||||
border-radius: 8px;
|
||||
line-height: 0px;
|
||||
}
|
||||
|
||||
.FileImg img
|
||||
{
|
||||
border-radius: 8px;
|
||||
width: 100%;
|
||||
aspect-ratio: 4/3;
|
||||
}
|
||||
|
||||
.FileName
|
||||
{
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
word-break: break-all;
|
||||
line-height: 32px;
|
||||
font-weight: 700;
|
||||
padding: 0px 4px;
|
||||
}
|
||||
|
||||
.FileDate
|
||||
{
|
||||
color: #A8A8A8;
|
||||
font-size: 10px;
|
||||
padding: 0px 4px;
|
||||
}
|
||||
|
||||
#recnet_context_menu
|
||||
{
|
||||
position: absolute;
|
||||
margin: 0px;
|
||||
padding: 10px;
|
||||
border: 0px;
|
||||
min-width: 100px;
|
||||
border: 1px solid #D7D7D7;
|
||||
top: 100px;
|
||||
border-radius: 5px;
|
||||
color: #323A3D;
|
||||
background-color: #fff;
|
||||
display: none;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.CT_Item
|
||||
{
|
||||
padding: 4px 12px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.CT_Item:hover
|
||||
{
|
||||
cursor: pointer;
|
||||
background-color: #0078D4;
|
||||
border-radius: 4px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
|
||||
.CT_Icon
|
||||
{
|
||||
margin-right: 6px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
#CT_Delete_Bar:hover .CT_Delete
|
||||
{
|
||||
background: url("../img/remove2.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
}
|
||||
|
||||
.CT_Delete
|
||||
{
|
||||
background: url("../img/remove.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
}
|
||||
|
||||
#CT_Folder_Bar:hover .CT_Explore
|
||||
{
|
||||
background: url("../img/open_folder2.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
}
|
||||
|
||||
.CT_Explore
|
||||
{
|
||||
background: url("../img/open_folder.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
}
|
||||
|
||||
|
||||
.CT_Seperate
|
||||
{
|
||||
border-bottom:1px solid #C5C5C5;
|
||||
}
|
||||
|
||||
.CT_Text
|
||||
{
|
||||
line-height: 20px;
|
||||
height: 20px;
|
||||
display: block;
|
||||
}
|
58
resources/web/homepage2/css/rightcommon.css
Normal file
@ -0,0 +1,58 @@
|
||||
|
||||
html
|
||||
{
|
||||
background-color: #F8F8F8;
|
||||
padding: 28px 36px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
body
|
||||
{
|
||||
width: 100%;
|
||||
min-width: 544px;
|
||||
max-width:1776px;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
/*----TITLE-------*/
|
||||
.Title_Bar
|
||||
{
|
||||
display:flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0px 10px;
|
||||
}
|
||||
|
||||
.Title_Left_Area
|
||||
{
|
||||
display:flex;
|
||||
align-items: center;
|
||||
padding: 6px 0px;
|
||||
}
|
||||
|
||||
.TitleSmallIcon
|
||||
{
|
||||
width:30px;
|
||||
height: 30px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.Content-Title
|
||||
{
|
||||
line-height: 30px;
|
||||
font-weight: 700;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
|
||||
.Right_Title_More
|
||||
{
|
||||
font-size:16px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.Right_Title_More:hover
|
||||
{
|
||||
color:#00AE42;
|
||||
}
|
42
resources/web/homepage2/disconnect.html
Normal file
@ -0,0 +1,42 @@
|
||||
<!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>homepage</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/disconnect.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/home.js"></script>
|
||||
</head>
|
||||
<body class="ZScrol" onLoad="OnLineInit()">
|
||||
<div id="WarnMainArea">
|
||||
<div id="WarnIcon"><img src="img/disconnect.svg" /></div>
|
||||
<div id="WarnTip" class="trans TextS1" tid="t40">Network disconnect, please check and try again later.</div>
|
||||
<div id="WarnBtn" class="trans Btn_Green" tid="" onClick="SwitchContent('online')">Retry</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
332
resources/web/homepage2/home.html
Normal file
@ -0,0 +1,332 @@
|
||||
<!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>homepage</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/recent.css" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/online.css" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/home.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/test.js"></script>
|
||||
<script type="text/javascript" src="js/home.js"></script>
|
||||
</head>
|
||||
<body class="ZScrol" onLoad="OnHomeInit()">
|
||||
|
||||
<!----------Project Menu---------->
|
||||
<div id="MenuArea">
|
||||
<div class="Menu_Btn Btn_White" onClick="OnClickOpenProject()">
|
||||
<img src="img/project_open.svg" /><span class="trans" tid='t33'>Open Project</span>
|
||||
</div>
|
||||
<div class="Menu_Btn Btn_Green" onClick="OnClickNewProject()">
|
||||
<img src="img/project_new.svg" /><span class="trans" tid='t32'>Create new project</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!----------Recent open---------->
|
||||
<div id="RecentFileArea">
|
||||
<div class="Title_Bar">
|
||||
<div class="Title_Left_Area">
|
||||
<img class="TitleSmallIcon" src="./img/t2.svg" />
|
||||
<div id="HotModelTitle" class="Content-Title trans TextS1" tid="t35">Recent Files</div>
|
||||
</div>
|
||||
<div class="Right_Title_More TextS1" onClick="SwtichLeftMenu('recent')"><span class="trans" tid="t108">MORE</span> ></div>
|
||||
</div>
|
||||
<div id="FileList" class="SingleGuideBar">
|
||||
<!-- <div class="FileItem GuideBlock" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
|
||||
<a class="FileTip" title="d:\model\11.3mf"></a>
|
||||
<div class="FileImg"><img src="img/wiki.png"/></div>
|
||||
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
|
||||
<div class="FileDate TextS2">2021/12/27 09:22</div>
|
||||
</div>
|
||||
<div class="FileItem GuideBlock" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
|
||||
<a class="FileTip" title="d:\model\11.3mf"></a>
|
||||
<div class="FileImg"><img src="img/wiki.png"/></div>
|
||||
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
|
||||
<div class="FileDate TextS2">2021/12/27 09:22</div>
|
||||
</div>
|
||||
<div class="FileItem GuideBlock" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
|
||||
<a class="FileTip" title="d:\model\11.3mf"></a>
|
||||
<div class="FileImg"><img src="img/wiki.png"/></div>
|
||||
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
|
||||
<div class="FileDate TextS2">2021/12/27 09:22</div>
|
||||
</div>
|
||||
<div class="FileItem GuideBlock" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
|
||||
<a class="FileTip" title="d:\model\11.3mf"></a>
|
||||
<div class="FileImg"><img src="img/wiki.png"/></div>
|
||||
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
|
||||
<div class="FileDate TextS2">2021/12/27 09:22</div>
|
||||
</div>
|
||||
<div class="FileItem GuideBlock" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
|
||||
<a class="FileTip" title="d:\model\11.3mf"></a>
|
||||
<div class="FileImg"><img src="img/wiki.png"/></div>
|
||||
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
|
||||
<div class="FileDate TextS2">2021/12/27 09:22</div>
|
||||
</div>
|
||||
<div class="FileItem GuideBlock" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
|
||||
<a class="FileTip" title="d:\model\11.3mf"></a>
|
||||
<div class="FileImg"><img src="img/wiki.png"/></div>
|
||||
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
|
||||
<div class="FileDate TextS2">2021/12/27 09:22</div>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="recnet_context_menu">
|
||||
<div id="CT_Delete_Bar" class="CT_Item" onClick="OnDeleteRecentFile()">
|
||||
<div class="CT_Icon CT_Delete"></div>
|
||||
<div class="CT_Text trans" tid="t88">clear</div>
|
||||
</div>
|
||||
<div id="CT_Folder_Bar" class="CT_Item " onClick="OnExploreRecentFile()" >
|
||||
<div class="CT_Icon CT_Explore"></div>
|
||||
<div class="CT_Text trans" tid="t89">open in explorer </div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!----------Online Models--------->
|
||||
<div id="HotModelArea">
|
||||
<div id="Online_Models_Bar" class="Title_Bar">
|
||||
<div class="Title_Left_Area">
|
||||
<img class="TitleSmallIcon" src="./img/fire.svg" />
|
||||
<div class="Content-Title trans TextS1" tid="t107">Online Models</div>
|
||||
</div>
|
||||
<div class="Right_Title_More TextS1" onClick="SwtichLeftMenu('online')"><span class="trans" tid="t108">MORE</span> ></div>
|
||||
</div>
|
||||
<div id="ForU_Models_Bar" class="Title_Bar">
|
||||
<div class="Title_Left_Area">
|
||||
<img class="TitleSmallIcon" src="./img/foru.svg" />
|
||||
<div class="Content-Title trans TextS1" tid="">For You</div>
|
||||
</div>
|
||||
<div class="Right_Title_More TextS1" onClick="SwtichLeftMenu('online')"><span class="trans" tid="t108">MORE</span> ></div>
|
||||
</div>
|
||||
<div id="HotModelList" class="SingleGuideBar">
|
||||
<!-- <div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
|
||||
<div class="HotModel_PrevBlock">
|
||||
<img class="HotModel_PrevImg" src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Designer_Info">
|
||||
<div class="HotModel_Author_HeadIcon">
|
||||
<img src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Right_1">
|
||||
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
|
||||
<div class="HotModel_Right_1_2">
|
||||
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
|
||||
<div class="HotModel_click_info TextS2">
|
||||
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
|
||||
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
|
||||
<div class="HotModel_PrevBlock">
|
||||
<img class="HotModel_PrevImg" src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Designer_Info">
|
||||
<div class="HotModel_Author_HeadIcon">
|
||||
<img src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Right_1">
|
||||
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
|
||||
<div class="HotModel_Right_1_2">
|
||||
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
|
||||
<div class="HotModel_click_info TextS2">
|
||||
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
|
||||
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
|
||||
<div class="HotModel_PrevBlock">
|
||||
<img class="HotModel_PrevImg" src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Designer_Info">
|
||||
<div class="HotModel_Author_HeadIcon">
|
||||
<img src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Right_1">
|
||||
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
|
||||
<div class="HotModel_Right_1_2">
|
||||
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
|
||||
<div class="HotModel_click_info TextS2">
|
||||
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
|
||||
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
|
||||
<div class="HotModel_PrevBlock">
|
||||
<img class="HotModel_PrevImg" src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Designer_Info">
|
||||
<div class="HotModel_Author_HeadIcon">
|
||||
<img src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Right_1">
|
||||
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
|
||||
<div class="HotModel_Right_1_2">
|
||||
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
|
||||
<div class="HotModel_click_info TextS2">
|
||||
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
|
||||
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
|
||||
<div class="HotModel_PrevBlock">
|
||||
<img class="HotModel_PrevImg" src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Designer_Info">
|
||||
<div class="HotModel_Author_HeadIcon">
|
||||
<img src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Right_1">
|
||||
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
|
||||
<div class="HotModel_Right_1_2">
|
||||
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
|
||||
<div class="HotModel_click_info TextS2">
|
||||
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
|
||||
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
|
||||
<div class="HotModel_PrevBlock">
|
||||
<img class="HotModel_PrevImg" src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Designer_Info">
|
||||
<div class="HotModel_Author_HeadIcon">
|
||||
<img src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Right_1">
|
||||
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
|
||||
<div class="HotModel_Right_1_2">
|
||||
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
|
||||
<div class="HotModel_click_info TextS2">
|
||||
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
|
||||
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
|
||||
<div class="HotModel_PrevBlock">
|
||||
<img class="HotModel_PrevImg" src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Designer_Info">
|
||||
<div class="HotModel_Author_HeadIcon">
|
||||
<img src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Right_1">
|
||||
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
|
||||
<div class="HotModel_Right_1_2">
|
||||
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
|
||||
<div class="HotModel_click_info TextS2">
|
||||
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
|
||||
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!----------Makerlab--------->
|
||||
<div id="MakerlabArea">
|
||||
<div id="RecentTitleBlock">
|
||||
<div id="Recent_LEFT_Title">
|
||||
<img class="TitleSmallIcon" src="./img/ml.svg" />
|
||||
<div id="RecentTitle" class="Content-Title trans TextS1" tid="">Makerlab</div>
|
||||
</div>
|
||||
<div class="Right_Title_More TextS1" onClick="SwtichLeftMenu('makerlab')"><span class="trans" tid="t108">MORE</span> ></div>
|
||||
</div>
|
||||
<div id="LabList" class="SingleGuideBar">
|
||||
<!-- <div class="FileItem GuideBlock" onClick="OnOpenOneMakerlab('aaaa')" >
|
||||
<div class="MakerlabImg"><img src="img/ml1.jpg"/></div>
|
||||
<div class="MakerlabTextBlock">
|
||||
<div class="MakerlabName">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
|
||||
<div class="MakerlabDesc">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
|
||||
<div class="MakerlabAuthor">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="FileItem GuideBlock" onClick="OnOpenOneMakerlab('aaaa')" >
|
||||
<div class="MakerlabImg"><img src="img/ml1.jpg"/></div>
|
||||
<div class="MakerlabTextBlock">
|
||||
<div class="MakerlabName">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
|
||||
<div class="MakerlabDesc">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
|
||||
<div class="MakerlabAuthor">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="FileItem GuideBlock" onClick="OnOpenOneMakerlab('aaaa')" >
|
||||
<div class="MakerlabImg"><img src="img/ml1.jpg"/></div>
|
||||
<div class="MakerlabTextBlock">
|
||||
<div class="MakerlabName">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
|
||||
<div class="MakerlabDesc">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
|
||||
<div class="MakerlabAuthor">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="FileItem GuideBlock" onClick="OnOpenOneMakerlab('aaaa')" >
|
||||
<div class="MakerlabImg"><img src="img/ml1.jpg"/></div>
|
||||
<div class="MakerlabTextBlock">
|
||||
<div class="MakerlabName">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
|
||||
<div class="MakerlabDesc">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
|
||||
<div class="MakerlabAuthor">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="FileItem GuideBlock" onClick="OnOpenOneMakerlab('aaaa')" >
|
||||
<div class="MakerlabImg"><img src="img/ml1.jpg"/></div>
|
||||
<div class="MakerlabTextBlock">
|
||||
<div class="MakerlabName">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
|
||||
<div class="MakerlabDesc">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
|
||||
<div class="MakerlabAuthor">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="FileItem GuideBlock" onClick="OnOpenOneMakerlab('aaaa')" >
|
||||
<div class="MakerlabImg"><img src="img/ml1.jpg"/></div>
|
||||
<div class="MakerlabTextBlock">
|
||||
<div class="MakerlabName">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
|
||||
<div class="MakerlabDesc">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
|
||||
<div class="MakerlabAuthor">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
BIN
resources/web/homepage2/img/3d_text.png
Normal file
After Width: | Height: | Size: 69 KiB |
BIN
resources/web/homepage2/img/a.jpg
Normal file
After Width: | Height: | Size: 55 KiB |
BIN
resources/web/homepage2/img/b.jpg
Normal file
After Width: | Height: | Size: 169 KiB |
1
resources/web/homepage2/img/batch.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="1710300425854" class="icon" viewBox="0 0 1025 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1613" xmlns:xlink="http://www.w3.org/1999/xlink" width="200.1953125" height="200"><path d="M1024 1023.950928l-478.969727 0L545.030273 545.037598l478.969727 0L1024 1023.950928 1024 1023.950928zM594.578613 974.406738l379.873047 0 0-379.829102-379.873047 0L594.578613 974.406738 594.578613 974.406738z" fill="#272536" p-id="1614"></path><path d="M478.969727 1023.950928l-478.969727 0L0 545.037598l478.969727 0L478.969727 1023.950928 478.969727 1023.950928zM49.550293 974.406738l379.871094 0 0-379.829102-379.871094 0L49.550293 974.406738 49.550293 974.406738z" fill="#272536" p-id="1615"></path><path d="M1024 478.96875l-478.969727 0 0-478.919434 478.969727 0L1024 478.96875 1024 478.96875zM594.578613 429.422363l379.873047 0 0-379.829102-379.873047 0L594.578613 429.422363 594.578613 429.422363z" fill="#272536" p-id="1616"></path><path d="M174.614244 471.151348 5.263144 254.760248 44.285144 224.230448 172.219244 387.695348 433.834944 10.694348 474.553744 38.947748 174.614244 471.151348Z" fill="#272536" p-id="1617"></path></svg>
|
After Width: | Height: | Size: 1.3 KiB |
BIN
resources/web/homepage2/img/c.jpg
Normal file
After Width: | Height: | Size: 38 KiB |
1
resources/web/homepage2/img/cancel.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="1710300802459" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2735" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M512 1024C229.229714 1024 0 794.770286 0 512S229.229714 0 512 0s512 229.229714 512 512-229.229714 512-512 512z m0-950.857143C283.087238 73.142857 73.142857 283.087238 73.142857 512s209.944381 438.857143 438.857143 438.857143 438.857143-209.944381 438.857143-438.857143S740.912762 73.142857 512 73.142857z m229.449143 671.963429a48.713143 48.713143 0 0 1-68.949333 0l-155.160381-155.136-155.160381 155.136a48.737524 48.737524 0 1 1-68.973715-68.949334l155.160381-155.160381-155.160381-155.160381a48.761905 48.761905 0 0 1 68.973715-68.949333l155.160381 155.160381 155.160381-155.160381a48.761905 48.761905 0 1 1 68.949333 68.949333l-155.160381 155.160381 155.160381 155.160381a48.761905 48.761905 0 0 1 0 68.949334z" fill="#323232" p-id="2736"></path></svg>
|
After Width: | Height: | Size: 1.1 KiB |
1
resources/web/homepage2/img/checkbox.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="1710302912261" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3376" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M910.222222 0a113.777778 113.777778 0 0 1 113.777778 113.777778v796.444444a113.777778 113.777778 0 0 1-113.777778 113.777778H113.777778a113.777778 113.777778 0 0 1-113.777778-113.777778V113.777778a113.777778 113.777778 0 0 1 113.777778-113.777778h796.444444z m-114.915555 320.739556a45.909333 45.909333 0 0 0-65.080889 0l-310.897778 310.897777-135.907556-135.964444a45.909333 45.909333 0 0 0-65.080888 0 45.909333 45.909333 0 0 0 0 65.137778l168.561777 168.448a45.909333 45.909333 0 0 0 65.080889 0l343.608889-343.552a45.738667 45.738667 0 0 0-0.284444-64.967111z" fill="#00AE42" p-id="3377"></path></svg>
|
After Width: | Height: | Size: 938 B |
1
resources/web/homepage2/img/checkbox_hover.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="1710302912261" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3376" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M910.222222 0a113.777778 113.777778 0 0 1 113.777778 113.777778v796.444444a113.777778 113.777778 0 0 1-113.777778 113.777778H113.777778a113.777778 113.777778 0 0 1-113.777778-113.777778V113.777778a113.777778 113.777778 0 0 1 113.777778-113.777778h796.444444z m-114.915555 320.739556a45.909333 45.909333 0 0 0-65.080889 0l-310.897778 310.897777-135.907556-135.964444a45.909333 45.909333 0 0 0-65.080888 0 45.909333 45.909333 0 0 0 0 65.137778l168.561777 168.448a45.909333 45.909333 0 0 0 65.080889 0l343.608889-343.552a45.738667 45.738667 0 0 0-0.284444-64.967111z" fill="#00A03D" p-id="3377"></path></svg>
|
After Width: | Height: | Size: 938 B |
1
resources/web/homepage2/img/clear.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="1710300842871" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6290" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M876.564398 512.149985h30.697002c7.699248 0 15.398496 0 22.997754-2.599746 33.296748-8.999121 46.095498-43.495752 37.096378-104.889757-3.799629-28.197246-24.297627-46.095498-54.99463-46.095498H614.290011v-24.297627c0-65.293624-3.799629-130.487257 0-195.780881C616.889757 75.792598 589.992384 18.198223 537.49751 2.899717c-15.398496-3.799629-38.39625-3.799629-51.195 0C458.105263 13.098721 421.008886 39.996094 413.409628 79.692218c-2.599746 12.79875-3.799629 24.297627-3.799629 35.796504v243.076262H113.938873c-40.896006 0-60.094131 19.198125-60.094131 61.394004v7.699249c0 72.892882 7.699248 80.59213 80.592129 84.491748 2.599746 0 6.399375 1.299873 10.199004 1.299873-28.197246 145.885753-56.294502 290.471634-86.991504 435.057514-7.699248 35.796504 0 62.693878 30.697002 75.492628h844.417537c29.397129-12.79875 38.39625-38.39625 31.996876-72.892882-30.597012-145.985744-58.794258-290.571624-88.191388-438.957133zM509.300264 54.094717c31.996875 0 52.494874 22.997754 52.494873 61.394005 0 74.192755 1.299873 147.185626 1.299873 221.378381v21.797871H459.405136V115.488722c0-37.096377 19.198125-60.194122 49.895128-61.394005zM102.439996 460.954985v-51.195001h818.820037V460.954985H102.439996z m200.880383 511.750024c8.999121-63.993751 17.898252-133.087003 26.897373-199.580509 1.299873-11.498877 2.599746-21.797871 3.799629-31.996876 1.299873-15.398496-3.799629-28.197246-19.198125-30.697002-17.898252-2.599746-28.197246 6.399375-30.697002 22.997754-6.399375 42.195879-11.498877 83.191876-17.898252 125.387755-3.799629 37.096377-8.999121 75.492628-14.098624 113.888878H103.739869c33.296748-153.585001 66.493506-307.070013 101.090128-460.655014h610.340397c33.296748 153.585001 66.493506 307.070013 101.090127 460.655014h-612.940142z" p-id="6291"></path></svg>
|
After Width: | Height: | Size: 2.0 KiB |
BIN
resources/web/homepage2/img/d.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
1
resources/web/homepage2/img/delete.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="1710300760113" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1754" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M901.78839 187.42834H711.384091C707.955184 84.013425 623.257795 1.105764 519.008365 1.105764c-104.320811 0-189.0182 82.906362-192.374428 186.322576H120.911169c-28.23203 0-46.020299 12.521612-46.0203 42.943107s17.788269 49.040385 46.021597 49.040386h16.55921v556.16438c0 103.414915 70.033034 187.270003 156.335858 187.270002h440.264192c86.228847 0 156.263179-83.855087 156.263179-187.270002v-556.165678h24.010139c28.230733 0 34.717364-20.869354 34.717364-49.039088 0-28.171032-19.114667-42.943108-47.274018-42.943107zM518.852624 86.962129c72.951888 0 96.167747 55.781394 96.167746 100.466211H422.683579c0-35.646621 23.217156-100.46621 96.169045-100.466211z m284.306007 195.155711v590.805171c0 34.36435-26.242433 62.345896-58.688568 62.345896H278.145136c-32.446134 0-58.604208-27.981546-58.604208-62.344598V282.11784c0-1.227762 0.08436-2.455523 0.16872-3.681987h583.277668c0 1.226464 0.16872 2.454226 0.168719 3.681987zM362.088477 761.792406c22.543574 0 40.853577-18.246408 40.853576-40.796472V487.379873c0-22.624041-18.3113-40.869151-40.853576-40.869151-22.614956 0-40.924958 18.24511-40.924959 40.869151v233.614763c0.072679 22.550063 18.382682 40.796471 40.924959 40.796472z m148.239898 0c22.540978 0 40.778302-18.246408 40.778302-40.796472V487.379873c0-22.624041-18.237323-40.869151-40.778302-40.869151-22.616253 0-40.927554 18.24511-40.927554 40.869151v233.614763c0.072679 22.550063 18.38398 40.796471 40.926256 40.796472z m155.605171 0c22.614956 0 40.853577-18.246408 40.853577-40.796472V487.379873c0-22.624041-18.238621-40.869151-40.853577-40.869151s-40.779599 18.24511-40.779599 40.869151v233.614763c0.072679 22.550063 18.237323 40.796471 40.779599 40.796472z" fill="#000000" p-id="1755"></path></svg>
|
After Width: | Height: | Size: 2.0 KiB |
1
resources/web/homepage2/img/delete2.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="1710301438198" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7301" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M354.133333 418.133333c-17.066667 0-34.133333 12.8-34.133333 34.133334v341.333333c0 17.066667 12.8 34.133333 34.133333 34.133333s29.866667-17.066667 29.866667-34.133333v-341.333333c0-21.333333-12.8-34.133333-29.866667-34.133334zM512 418.133333c-17.066667 0-34.133333 12.8-34.133333 34.133334v341.333333c0 17.066667 12.8 34.133333 34.133333 34.133333s34.133333-12.8 34.133333-34.133333v-341.333333c0-21.333333-17.066667-34.133333-34.133333-34.133334zM640 452.266667v341.333333c0 17.066667 12.8 34.133333 34.133333 34.133333s34.133333-12.8 34.133334-34.133333v-341.333333c0-17.066667-12.8-34.133333-34.133334-34.133334s-34.133333 12.8-34.133333 34.133334z" fill="#ffffff" p-id="7302"></path><path d="M938.666667 128h-213.333334v-21.333333C725.333333 46.933333 678.4 0 618.666667 0h-213.333334C345.6 0 298.666667 46.933333 298.666667 106.666667V128H85.333333c-25.6 0-42.666667 17.066667-42.666666 42.666667s17.066667 42.666667 42.666666 42.666666h42.666667v704C128 977.066667 174.933333 1024 234.666667 1024h554.666666c59.733333 0 106.666667-46.933333 106.666667-106.666667V213.333333h42.666667c25.6 0 42.666667-17.066667 42.666666-42.666666s-17.066667-42.666667-42.666666-42.666667zM384 106.666667c0-12.8 8.533333-21.333333 21.333333-21.333334h213.333334c12.8 0 21.333333 8.533333 21.333333 21.333334V128H384v-21.333333z m426.666667 810.666666c0 12.8-8.533333 21.333333-21.333334 21.333334h-554.666666c-12.8 0-21.333333-8.533333-21.333334-21.333334V213.333333h597.333334v704z" fill="#ffffff" p-id="7303"></path></svg>
|
After Width: | Height: | Size: 1.8 KiB |
22
resources/web/homepage2/img/disconnect.svg
Normal file
@ -0,0 +1,22 @@
|
||||
<svg width="200" height="160" viewBox="0 0 200 160" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="200" height="160" fill="white"/>
|
||||
<path d="M159.874 79.8081C159.874 96.5711 153.027 111.681 142.048 122.542C131.306 133.285 116.431 139.777 100.023 139.777C83.7317 139.777 68.8574 133.166 57.9969 122.542C47.0183 111.681 40.1714 96.5711 40.1714 79.8081C40.1714 46.6361 66.9686 19.8389 100.023 19.8389C133.076 19.8389 159.874 46.7542 159.874 79.8081Z" fill="#F8F8F8" stroke="#E4E4E4" stroke-width="2" stroke-miterlimit="10"/>
|
||||
<path d="M154.681 40.4994C157.354 40.4994 159.521 38.3324 159.521 35.6594C159.521 32.9863 157.354 30.8193 154.681 30.8193C152.008 30.8193 149.841 32.9863 149.841 35.6594C149.841 38.3324 152.008 40.4994 154.681 40.4994Z" fill="#E4E4E4"/>
|
||||
<path d="M161.765 21.6108C163.59 21.6108 165.07 20.1309 165.07 18.3054C165.07 16.4799 163.59 15 161.765 15C159.939 15 158.459 16.4799 158.459 18.3054C158.459 20.1309 159.939 21.6108 161.765 21.6108Z" fill="#E4E4E4"/>
|
||||
<path d="M42.0603 40.3813C43.8858 40.3813 45.3657 38.9014 45.3657 37.0759C45.3657 35.2504 43.8858 33.7705 42.0603 33.7705C40.2348 33.7705 38.7549 35.2504 38.7549 37.0759C38.7549 38.9014 40.2348 40.3813 42.0603 40.3813Z" fill="#E4E4E4"/>
|
||||
<path d="M30.1386 104.127C33.5288 104.127 36.2772 101.378 36.2772 97.9882C36.2772 94.5979 33.5288 91.8496 30.1386 91.8496C26.7483 91.8496 24 94.5979 24 97.9882C24 101.378 26.7483 104.127 30.1386 104.127Z" fill="#E4E4E4"/>
|
||||
<path d="M153.52 45.4365V110.842C153.52 113.564 151.34 115.72 148.669 115.72H50.1509C47.4797 115.72 45.2654 113.529 45.2654 110.842V45.4365C45.2654 42.7496 47.4445 40.5576 50.1509 40.5576H148.669C151.34 40.5576 153.52 42.7496 153.52 45.4365Z" fill="white" stroke="#E4E4E4" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
|
||||
<path d="M153.52 45.4365V52.7548H45.2654V45.4365C45.2654 42.7496 47.4445 40.5576 50.1509 40.5576H148.669C151.34 40.5576 153.52 42.7496 153.52 45.4365Z" fill="#E4E4E4"/>
|
||||
<path d="M52.0863 48.4757C53.0957 48.4757 53.914 47.6526 53.914 46.6372C53.914 45.6219 53.0957 44.7988 52.0863 44.7988C51.0769 44.7988 50.2587 45.6219 50.2587 46.6372C50.2587 47.6526 51.0769 48.4757 52.0863 48.4757Z" fill="#CCCCCC"/>
|
||||
<path d="M58.06 48.4757C59.0694 48.4757 59.8876 47.6526 59.8876 46.6372C59.8876 45.6219 59.0694 44.7988 58.06 44.7988C57.0506 44.7988 56.2323 45.6219 56.2323 46.6372C56.2323 47.6526 57.0506 48.4757 58.06 48.4757Z" fill="#CCCCCC"/>
|
||||
<path d="M64.0008 48.4757C65.0102 48.4757 65.8284 47.6526 65.8284 46.6372C65.8284 45.6219 65.0102 44.7988 64.0008 44.7988C62.9914 44.7988 62.1731 45.6219 62.1731 46.6372C62.1731 47.6526 62.9914 48.4757 64.0008 48.4757Z" fill="#CCCCCC"/>
|
||||
<path d="M67.8658 97.3008H130.92" stroke="#E4E4E4" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M77.8135 104.054H120.975" stroke="#E4E4E4" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M88.8509 78.2789V81.9203H86.6366V85.4204H82.4892V81.9203H73.3508V77.7485L81.8214 65.9049H86.6717V78.3142H88.8509V78.2789ZM82.4892 70.7484L77.217 78.2789H82.4892V70.7484Z" fill="#CCCCCC"/>
|
||||
<path d="M99.2545 85.8093C94.8259 85.8093 90.9245 81.9203 90.9245 75.6273C90.9245 69.3343 94.7908 65.4453 99.2545 65.4453C103.718 65.4453 107.584 69.3343 107.584 75.6273C107.584 81.9203 103.718 85.8093 99.2545 85.8093ZM99.2545 82.0617C101.328 82.0617 103.402 79.9758 103.402 75.6626C103.402 71.3494 101.328 69.2636 99.2545 69.2636C97.1808 69.2636 95.1071 71.3494 95.1071 75.6626C95.1071 79.9758 97.1808 82.0617 99.2545 82.0617Z" fill="#CCCCCC"/>
|
||||
<path d="M125.475 78.2789V81.9203H123.26V85.4204H119.113V81.9203H109.974V77.7485L118.445 65.9049H123.295V78.3142H125.475V78.2789ZM119.078 70.7484L113.806 78.2789H119.078V70.7484Z" fill="#CCCCCC"/>
|
||||
<path d="M149.735 130.163L126.188 106.634L131.586 101.236L155.114 124.783L149.735 130.163Z" fill="#E4E4E4" stroke="#CCCCCC" stroke-width="2" stroke-miterlimit="10"/>
|
||||
<path d="M157.918 138.442L139.863 120.386C138.355 118.878 138.355 116.421 139.863 114.913C141.37 113.405 143.827 113.405 145.335 114.913L163.391 132.969C164.899 134.477 164.899 136.934 163.391 138.442C161.883 139.949 159.426 139.949 157.918 138.442Z" fill="#E4E4E4" stroke="#CCCCCC" stroke-width="2" stroke-miterlimit="10"/>
|
||||
<path d="M156.636 139.595L133.405 116.365C132.865 115.825 132.865 114.95 133.405 114.392L139.343 108.454C139.883 107.914 140.758 107.914 141.316 108.454L164.547 131.684C165.087 132.224 165.087 133.099 164.547 133.657L158.609 139.595C158.05 140.135 157.175 140.135 156.636 139.595Z" fill="#E4E4E4" stroke="#CCCCCC" stroke-width="2" stroke-miterlimit="10"/>
|
||||
<path d="M99.5306 30.8184C74.8852 30.8184 54.9121 50.7915 54.9121 75.4368C54.9121 100.064 74.8852 120.055 99.512 120.055C124.157 120.055 144.13 100.082 144.13 75.4368C144.13 50.7915 124.157 30.8184 99.5306 30.8184ZM99.5306 111.791C79.7436 111.791 63.7167 95.503 63.7167 75.4182C63.7167 55.3334 79.7436 39.0645 99.5306 39.0645C119.318 39.0645 135.344 55.352 135.344 75.4368C135.344 95.5217 119.299 111.791 99.5306 111.791Z" fill="#E4E4E4" stroke="#CCCCCC" stroke-width="2" stroke-miterlimit="10"/>
|
||||
</svg>
|
After Width: | Height: | Size: 5.0 KiB |
14
resources/web/homepage2/img/fire.svg
Normal file
@ -0,0 +1,14 @@
|
||||
<svg width="28" height="29" viewBox="0 0 28 29" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.0006 26.1909C9.03926 26.1909 4.66724 22.6909 4.66724 16.8576C4.66724 14.4774 5.44501 11.3663 7.00057 7.52425C7.77835 9.46869 8.36168 11.0243 8.75057 12.1909C9.13946 13.3576 9.72279 14.1354 10.5006 14.5243C10.0008 13.079 10.0008 11.5234 10.5006 9.85758C11.6672 5.96869 13.6117 3.63536 16.3339 2.85758C16.0448 5.67959 16.8226 8.01292 18.6672 9.85758C19.8339 11.0243 23.3339 13.3576 23.3339 18.0243C23.3339 22.6909 18.9619 26.1909 14.0006 26.1909Z" fill="url(#paint0_linear_15292_10438)"/>
|
||||
<path d="M19.7265 14.6689C20.5291 15.6181 21.0004 16.7758 21.0004 18.0251C21.0004 21.2468 17.8664 23.8585 14.0004 23.8585C10.5532 23.8585 7.68793 21.7819 7.10767 19.048C8.37462 20.5463 10.4669 21.5251 12.8336 21.5251C16.4615 21.5251 20.5778 18.68 19.7265 14.6689Z" fill="url(#paint1_linear_15292_10438)"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_15292_10438" x1="14.0003" y1="26.1909" x2="14.0003" y2="2.85758" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.427" stop-color="#FF5F5F"/>
|
||||
<stop offset="1" stop-color="#FF5F5F"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_15292_10438" x1="14.054" y1="17.3209" x2="14.054" y2="25.065" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FFD600"/>
|
||||
<stop offset="1" stop-color="#FFD800" stop-opacity="0.6"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
9
resources/web/homepage2/img/foru.svg
Normal file
@ -0,0 +1,9 @@
|
||||
<svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M10.8959 19.4245L11.8796 17.1823C12.755 15.187 14.3307 13.5986 16.2962 12.7303L19.0039 11.5342C19.8647 11.154 19.8647 9.90766 19.0039 9.5274L16.3808 8.36864C14.3647 7.47805 12.7608 5.83087 11.9003 3.76745L10.9039 1.37794C10.5341 0.491206 9.30294 0.491208 8.93318 1.37794L7.93672 3.76743C7.07624 5.83087 5.47227 7.47805 3.45623 8.36864L0.833144 9.5274C-0.0277141 9.90766 -0.0277152 11.154 0.833144 11.5342L3.54079 12.7303C5.5063 13.5986 7.08201 15.187 7.95743 17.1823L8.94114 19.4245C9.31927 20.2863 10.5177 20.2863 10.8959 19.4245ZM19.8481 23.9915L20.1247 23.3605C20.6179 22.2354 21.5062 21.3396 22.6145 20.8496L23.4667 20.4727C23.9278 20.2689 23.9278 19.6022 23.4667 19.3984L22.6622 19.0426C21.5253 18.54 20.6211 17.611 20.1364 16.4477L19.8524 15.7659C19.6543 15.2907 18.9941 15.2907 18.7961 15.7659L18.512 16.4477C18.0274 17.611 17.1232 18.54 15.9863 19.0426L15.1817 19.3984C14.7208 19.6022 14.7208 20.2689 15.1817 20.4727L16.034 20.8496C17.1424 21.3396 18.0305 22.2354 18.5237 23.3605L18.8004 23.9915C19.0029 24.4534 19.6456 24.4534 19.8481 23.9915Z" fill="url(#paint0_linear_15338_49166)"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_15338_49166" x1="12.448" y1="0.712891" x2="12.448" y2="25.2302" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.375" stop-color="#5FB2FF"/>
|
||||
<stop offset="0.765" stop-color="#5F8CFF"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
BIN
resources/web/homepage2/img/high_speed_print_at_quality.png
Normal file
After Width: | Height: | Size: 79 KiB |
BIN
resources/web/homepage2/img/i1.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
resources/web/homepage2/img/i2.png
Normal file
After Width: | Height: | Size: 6.0 KiB |
BIN
resources/web/homepage2/img/i3.png
Normal file
After Width: | Height: | Size: 5.2 KiB |
BIN
resources/web/homepage2/img/i4.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
resources/web/homepage2/img/i5.png
Normal file
After Width: | Height: | Size: 5.8 KiB |
BIN
resources/web/homepage2/img/i6.png
Normal file
After Width: | Height: | Size: 5.8 KiB |
3
resources/web/homepage2/img/left_home.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.5385 3.19792C12.226 2.93403 11.7712 2.93403 11.4587 3.19792L2.29201 10.9757C1.94131 11.2743 1.89965 11.7986 2.19479 12.1493C2.48992 12.5 3.0177 12.5417 3.3684 12.2465L4.22256 11.5243V18C4.22256 19.5347 5.46562 20.7778 7.00034 20.7778H17.0003C18.5351 20.7778 19.7781 19.5347 19.7781 18V11.5243L20.6288 12.2465C20.9795 12.5451 21.5073 12.5 21.8024 12.1493C22.0976 11.7986 22.0559 11.2708 21.7052 10.9757L12.5385 3.19792ZM5.88923 18V10.1111L12.0003 4.92708L18.1115 10.1111V18C18.1115 18.6146 17.6149 19.1111 17.0003 19.1111H15.3337V13.8333C15.3337 13.066 14.7121 12.4444 13.9448 12.4444H10.0559C9.28853 12.4444 8.66701 13.066 8.66701 13.8333V19.1111H7.00034C6.38576 19.1111 5.88923 18.6146 5.88923 18ZM10.3337 19.1111V14.1111H13.667V19.1111H10.3337Z" fill="#6B6B6B"/>
|
||||
</svg>
|
After Width: | Height: | Size: 881 B |
5
resources/web/homepage2/img/left_manual.svg
Normal file
@ -0,0 +1,5 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M7.55249 3.74951H18.8035C19.2177 3.74951 19.5535 4.0853 19.5535 4.49951V19.5009C19.5535 19.9151 19.2177 20.2509 18.8035 20.2509H7.55249V3.74951Z" stroke="#6B6B6B" stroke-width="1.5"/>
|
||||
<path d="M4.44641 4.49951C4.44641 4.0853 4.7822 3.74951 5.19641 3.74951H7.44675V20.2509H5.19641C4.7822 20.2509 4.44641 19.9151 4.44641 19.5009V4.49951Z" stroke="#6B6B6B" stroke-width="1.5"/>
|
||||
<path d="M16.1784 8.16178L15.2675 7.5545C14.9484 7.34176 14.5326 7.34176 14.2135 7.5545L13.3026 8.16178V3.74951H16.1784V8.16178Z" stroke="#6B6B6B" stroke-width="1.5" stroke-linecap="round"/>
|
||||
</svg>
|
After Width: | Height: | Size: 678 B |
10
resources/web/homepage2/img/left_ml.svg
Normal file
@ -0,0 +1,10 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M3.54932 6.10791C3.54932 5.00334 4.44475 4.10791 5.54932 4.10791H11.3673C12.4719 4.10791 13.3673 5.00334 13.3673 6.10791V19.8573H3.54932V6.10791Z" stroke="#6B6B6B" stroke-width="1.5"/>
|
||||
<path d="M13.3673 8.23975H18.8158C19.9204 8.23975 20.8158 9.13518 20.8158 10.2397V19.8573H13.3673V8.23975Z" stroke="#6B6B6B" stroke-width="1.5"/>
|
||||
<path d="M15.9335 11.9829H18.2498" stroke="#6B6B6B" stroke-width="1.5" stroke-linecap="round"/>
|
||||
<path d="M15.9335 15.6187H18.2498" stroke="#6B6B6B" stroke-width="1.5" stroke-linecap="round"/>
|
||||
<path d="M6.33215 8.34619H10.5843" stroke="#6B6B6B" stroke-width="1.5" stroke-linecap="round"/>
|
||||
<path d="M6.33215 11.9829H10.5843" stroke="#6B6B6B" stroke-width="1.5" stroke-linecap="round"/>
|
||||
<path d="M6.33215 15.6187H10.5843" stroke="#6B6B6B" stroke-width="1.5" stroke-linecap="round"/>
|
||||
<path d="M1.50085 19.8921H22.4992" stroke="#6B6B6B" stroke-width="1.5" stroke-linecap="round"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1019 B |
3
resources/web/homepage2/img/left_online.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M4.77354 7.93554L11.5978 10.6327C11.8544 10.7342 12.1416 10.725 12.3913 10.6075L19.0006 7.49613M12 11.8902V19.3602M4.03951 17.8569L11.5745 20.9435C11.8446 21.0542 12.1495 21.0413 12.4093 20.9083L20.0372 17.0024C20.3713 16.8314 20.5814 16.4876 20.5814 16.1123V7.06862C20.5814 6.66273 20.3361 6.2971 19.9605 6.14325L12.4141 3.05195C12.1506 2.94402 11.8536 2.95352 11.5976 3.07807L3.98114 6.78306C3.637 6.95047 3.41858 7.29961 3.41858 7.68231V16.9316C3.41858 17.3374 3.66392 17.7031 4.03951 17.8569Z" stroke="#6B6B6B" stroke-width="1.5" stroke-linecap="round"/>
|
||||
</svg>
|
After Width: | Height: | Size: 671 B |
4
resources/web/homepage2/img/left_recent.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M17.5146 19.1515C15.9887 20.3295 14.0765 21.0308 12 21.0308C7.01274 21.0308 2.96924 16.9873 2.96924 12C2.96924 7.01274 7.01274 2.96924 12 2.96924C16.9873 2.96924 21.0308 7.01274 21.0308 12C21.0308 13.4369 20.6952 14.7943 20.098 16.001" stroke="#6B6B6B" stroke-width="1.5" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path d="M11.2958 6.52979V12.1951C11.2958 12.4485 11.5012 12.6539 11.7546 12.6539H16.7912" stroke="#6B6B6B" stroke-width="1.5" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
</svg>
|
After Width: | Height: | Size: 607 B |
24
resources/web/homepage2/img/ml.svg
Normal file
@ -0,0 +1,24 @@
|
||||
<svg width="27" height="28" viewBox="0 0 27 28" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M18.7153 13.9438C19.4768 14.8444 19.924 15.9427 19.924 17.128C19.924 20.1845 16.9506 22.6623 13.2828 22.6623C10.0122 22.6623 7.29386 20.6922 6.74335 18.0984C7.94536 19.52 9.93038 20.4486 12.1758 20.4486C15.6177 20.4486 19.523 17.7493 18.7153 13.9438Z" fill="url(#paint0_linear_15422_3332)"/>
|
||||
<path d="M2.52472 6.57275C2.52472 5.46818 3.42015 4.57275 4.52472 4.57275H13.6134C14.718 4.57275 15.6134 5.46818 15.6134 6.57275V24.4316H3.02472C2.74858 24.4316 2.52472 24.2078 2.52472 23.9316V6.57275Z" fill="url(#paint1_linear_15422_3332)"/>
|
||||
<path d="M15.6134 11.644H21.8954C23 11.644 23.8954 12.5395 23.8954 13.644V23.932C23.8954 24.2081 23.6716 24.432 23.3954 24.432H15.6134V11.644Z" fill="url(#paint2_linear_15422_3332)"/>
|
||||
<rect x="4.81342" y="8.66357" width="8.51118" height="1.60713" rx="0.803563" fill="white"/>
|
||||
<rect x="17.1576" y="14.6587" width="4.61918" height="1.60713" rx="0.803563" fill="white"/>
|
||||
<rect x="17.1576" y="18.7334" width="4.61918" height="1.60713" rx="0.803563" fill="white"/>
|
||||
<rect x="4.81342" y="13.6982" width="8.51118" height="1.60713" rx="0.803563" fill="white"/>
|
||||
<rect x="4.81342" y="18.7334" width="8.51118" height="1.60713" rx="0.803563" fill="white"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_15422_3332" x1="13.3337" y1="16.4599" x2="13.3337" y2="23.807" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FFD600"/>
|
||||
<stop offset="1" stop-color="#FFD800" stop-opacity="0.6"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_15422_3332" x1="9.06907" y1="4.57275" x2="9.06907" y2="24.4316" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#605DFF"/>
|
||||
<stop offset="1" stop-color="#207DEB"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_15422_3332" x1="19.7544" y1="24.432" x2="19.7544" y2="12.0018" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#5862FD"/>
|
||||
<stop offset="1" stop-color="#2979EE"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 1.9 KiB |
BIN
resources/web/homepage2/img/ml1.jpg
Normal file
After Width: | Height: | Size: 125 KiB |
BIN
resources/web/homepage2/img/ml2.jpg
Normal file
After Width: | Height: | Size: 346 KiB |
BIN
resources/web/homepage2/img/ml3.jpg
Normal file
After Width: | Height: | Size: 128 KiB |
BIN
resources/web/homepage2/img/multi_color_printing.png
Normal file
After Width: | Height: | Size: 183 KiB |
14
resources/web/homepage2/img/online.svg
Normal file
@ -0,0 +1,14 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.5 16.646V21.2895C7.5 21.3382 7.5071 21.3866 7.52109 21.4332C7.60044 21.6977 7.87918 21.8478 8.14367 21.7684L12 20.6115L15.8563 21.7684C15.9029 21.7824 15.9513 21.7895 16 21.7895C16.2761 21.7895 16.5 21.5656 16.5 21.2895V16.6462L15.7247 16.7081C15.0954 16.7583 14.498 17.0058 14.0175 17.4152L13.379 17.9594C12.5851 18.6359 11.4175 18.6359 10.6237 17.9594L9.98515 17.4152C9.50466 17.0058 8.90724 16.7583 8.27795 16.7081L7.5 16.646Z" fill="url(#paint0_linear_10080_34787)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.2125 2.79872C11.7202 2.44222 12.4121 2.46866 12.8925 2.87803L13.531 3.42217C14.1316 3.93401 14.8784 4.24333 15.665 4.3061L16.5013 4.37284C17.1739 4.42651 17.708 4.9606 17.7616 5.63318L17.8284 6.46944C17.8912 7.25606 18.2005 8.00284 18.7123 8.60345L19.2565 9.24197C19.6941 9.75551 19.6941 10.5108 19.2565 11.0244L18.7123 11.6629C18.2005 12.2635 17.8912 13.0103 17.8284 13.7969L17.7616 14.6331C17.708 15.3057 17.1739 15.8398 16.5013 15.8935L15.665 15.9602C14.8784 16.023 14.1316 16.3323 13.531 16.8442L12.8925 17.3883C12.379 17.8259 11.6237 17.8259 11.1101 17.3883L10.4716 16.8442C9.871 16.3323 9.12423 16.023 8.33761 15.9602L7.50135 15.8935C6.82876 15.8398 6.29468 15.3057 6.241 14.6331L6.17427 13.7969C6.1115 13.0103 5.80217 12.2635 5.29033 11.6629L4.72569 12.1441L5.29033 11.6629L4.7462 11.0244C4.30856 10.5108 4.30856 9.75551 4.7462 9.24197L5.29033 8.60345C5.80217 8.00284 6.1115 7.25606 6.17427 6.46944L6.241 5.63318C6.29468 4.9606 6.82876 4.42651 7.50135 4.37284L8.33761 4.3061C9.12423 4.24333 9.871 3.93401 10.4716 3.42217L11.1101 2.87803C11.1433 2.84977 11.1775 2.82333 11.2125 2.79872ZM15 10.133C15 11.7898 13.6569 13.133 12 13.133C10.3431 13.133 9 11.7898 9 10.133C9 8.47613 10.3431 7.13298 12 7.13298C13.6569 7.13298 15 8.47613 15 10.133Z" fill="url(#paint1_linear_10080_34787)"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_10080_34787" x1="12.3119" y1="13.1333" x2="12.6038" y2="22.5666" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#00AE42" stop-opacity="0.24"/>
|
||||
<stop offset="1" stop-color="#00AE42" stop-opacity="0.64"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_10080_34787" x1="12.0013" y1="1.7998" x2="12.0013" y2="18.4665" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#00AE42"/>
|
||||
<stop offset="1" stop-color="#00AE42" stop-opacity="0.64"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 2.4 KiB |
4
resources/web/homepage2/img/open_folder.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M8.34801 3.82127C8.71179 4.19206 9.20969 4.40069 9.7295 4.40069H11.3196C11.4502 4.40069 11.5773 4.41559 11.7 4.44276V3.14981C11.7 2.62475 11.274 2.19873 10.749 2.19873H7.00335C6.92533 2.19873 6.8517 2.211 6.77895 2.22853C6.79385 2.24256 6.80875 2.25483 6.82277 2.26886L8.34801 3.82127Z" stroke="#6B6B6B" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path d="M11.7 4.44284C11.5773 4.41566 11.4502 4.40076 11.3196 4.40076H9.72951C9.2097 4.40076 8.71268 4.19214 8.34803 3.82135L6.82279 2.26893C6.80876 2.25491 6.79298 2.24176 6.77896 2.22861C6.45726 1.92269 6.03036 1.75 5.58419 1.75H2.34787C1.374 1.75 0.583328 2.53979 0.583328 3.51455V10.6402C0.583328 11.615 1.37312 12.4048 2.34787 12.4048H11.3196C12.2944 12.4048 13.0842 11.615 13.0842 10.6402V6.16531C13.0842 5.32117 12.4916 4.61728 11.7 4.44284Z" stroke="#6B6B6B" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
</svg>
|
After Width: | Height: | Size: 980 B |
4
resources/web/homepage2/img/open_folder2.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M8.34801 3.82127C8.71179 4.19206 9.20969 4.40069 9.7295 4.40069H11.3196C11.4502 4.40069 11.5773 4.41559 11.7 4.44276V3.14981C11.7 2.62475 11.274 2.19873 10.749 2.19873H7.00335C6.92533 2.19873 6.8517 2.211 6.77895 2.22853C6.79385 2.24256 6.80875 2.25483 6.82277 2.26886L8.34801 3.82127Z" stroke="white" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path d="M11.7 4.44284C11.5773 4.41566 11.4502 4.40076 11.3196 4.40076H9.72951C9.2097 4.40076 8.71268 4.19214 8.34803 3.82135L6.82279 2.26893C6.80876 2.25491 6.79298 2.24176 6.77896 2.22861C6.45726 1.92269 6.03036 1.75 5.58419 1.75H2.34787C1.374 1.75 0.583328 2.53979 0.583328 3.51455V10.6402C0.583328 11.615 1.37312 12.4048 2.34787 12.4048H11.3196C12.2944 12.4048 13.0842 11.615 13.0842 10.6402V6.16531C13.0842 5.32117 12.4916 4.61728 11.7 4.44284Z" stroke="white" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
</svg>
|
After Width: | Height: | Size: 976 B |
BIN
resources/web/homepage2/img/project_based_workflow.png
Normal file
After Width: | Height: | Size: 18 KiB |
6
resources/web/homepage2/img/project_new.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<svg width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M3.25354 8.78418H13.0143" stroke="white" stroke-width="1.5" stroke-linecap="round"/>
|
||||
<path d="M8.13403 13.2837L8.13403 4.28357" stroke="white" stroke-width="1.5" stroke-linecap="round"/>
|
||||
<rect x="0.75" y="1.28369" width="14.768" height="14.2502" rx="1.25" stroke="white" stroke-width="1.5"/>
|
||||
<path d="M17.4881 3.5332H17.5216C18.6261 3.5332 19.5216 4.42863 19.5216 5.5332V16.5334C19.5216 17.638 18.6261 18.5334 17.5216 18.5334H5.37138C4.651 18.5334 4.06702 17.9494 4.06702 17.229V17.229" stroke="white" stroke-width="1.5" stroke-linecap="round"/>
|
||||
</svg>
|
After Width: | Height: | Size: 658 B |
11
resources/web/homepage2/img/project_open.svg
Normal file
@ -0,0 +1,11 @@
|
||||
<svg width="19" height="18" viewBox="0 0 19 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_15338_48708)">
|
||||
<path d="M0.361206 2.74391C5.4629 -1.65474 8.87444 1.21112 11.3272 5.56635L13.5079 4.27671C13.664 4.18987 13.8468 4.18987 13.9806 4.29842C14.1144 4.40698 14.1813 4.58067 14.1367 4.7587L13.0798 11.411C13.0129 11.6498 12.7631 11.7844 12.5402 11.741L6.43062 9.31367C6.31913 9.29196 6.22994 9.20512 6.16305 9.11827C6.14075 9.07485 6.11845 9.00972 6.11845 8.96629C6.09615 8.79261 6.18534 8.61458 6.34143 8.52773L8.47754 7.25981C6.08723 2.96102 3.79504 1.47599 0.361206 3.2259V2.74391Z" fill="#323A3D"/>
|
||||
<path d="M12 1.3335H15.6C16.7046 1.3335 17.6 2.22893 17.6 3.3335V14.5335C17.6 15.6381 16.7046 16.5335 15.6 16.5335H2.80005C1.69548 16.5335 0.800049 15.6381 0.800049 14.5335V7.3335" stroke="#323A3D" stroke-width="1.5" stroke-linecap="round"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_15338_48708">
|
||||
<rect width="18.4" height="16.8" fill="white" transform="translate(0 0.533691)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 1.0 KiB |
BIN
resources/web/homepage2/img/quick_start.png
Normal file
After Width: | Height: | Size: 8.5 KiB |
BIN
resources/web/homepage2/img/remote_control_and_monitoring.png
Normal file
After Width: | Height: | Size: 55 KiB |
14
resources/web/homepage2/img/remove.svg
Normal file
@ -0,0 +1,14 @@
|
||||
<svg width="14" height="15" viewBox="0 0 14 15" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_7828_34220)">
|
||||
<path d="M11.8245 5.10425V13.1577C11.8245 13.431 11.5708 13.6544 11.2604 13.6544H2.73973C2.42934 13.6544 2.17566 13.431 2.17566 13.1577V5.10425" stroke="#D01B1B" stroke-width="0.8" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path d="M0.965012 3.55176H13.0353" stroke="#D01B1B" stroke-width="0.8" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path d="M4.31033 1.55829C4.31033 1.55829 4.31033 1.38921 4.31033 1.18246C4.31033 0.975717 4.56401 0.806641 4.8744 0.806641H9.1263C9.43668 0.806641 9.69036 0.975717 9.69036 1.18246C9.69036 1.38921 9.69036 1.55829 9.69036 1.55829" stroke="#D01B1B" stroke-width="0.8" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path d="M5.23859 5.29443V12.0461" stroke="#D01B1B" stroke-width="0.8" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path d="M8.76242 5.29443V12.0461" stroke="#D01B1B" stroke-width="0.8" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_7828_34220">
|
||||
<rect width="14" height="15" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
14
resources/web/homepage2/img/remove2.svg
Normal file
@ -0,0 +1,14 @@
|
||||
<svg width="14" height="15" viewBox="0 0 14 15" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_7844_34237)">
|
||||
<path d="M11.8245 5.10425V13.1577C11.8245 13.431 11.5708 13.6544 11.2604 13.6544H2.73973C2.42934 13.6544 2.17566 13.431 2.17566 13.1577V5.10425" stroke="white" stroke-width="0.8" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path d="M0.965012 3.55176H13.0353" stroke="white" stroke-width="0.8" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path d="M4.31033 1.55829C4.31033 1.55829 4.31033 1.38921 4.31033 1.18246C4.31033 0.975717 4.56401 0.806641 4.8744 0.806641H9.1263C9.43668 0.806641 9.69036 0.975717 9.69036 1.18246C9.69036 1.38921 9.69036 1.55829 9.69036 1.55829" stroke="white" stroke-width="0.8" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path d="M5.23859 5.29443V12.0461" stroke="white" stroke-width="0.8" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path d="M8.76242 5.29443V12.0461" stroke="white" stroke-width="0.8" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_7844_34237">
|
||||
<rect width="14" height="15" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 36 KiB |
BIN
resources/web/homepage2/img/step.png
Normal file
After Width: | Height: | Size: 22 KiB |
10
resources/web/homepage2/img/t2.svg
Normal file
@ -0,0 +1,10 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.4145 8.28147C12.4145 7.82507 12.0445 7.45508 11.5881 7.45508C11.1317 7.45508 10.7617 7.82507 10.7617 8.28147V12.3419C10.7597 12.3655 10.7587 12.3893 10.7587 12.4133C10.7587 12.8604 11.1138 13.2246 11.5573 13.2392C11.5675 13.2396 11.5778 13.2398 11.5881 13.2398L11.6017 13.2397H14.0642C14.5206 13.2397 14.8906 12.8697 14.8906 12.4133C14.8906 11.9569 14.5206 11.5869 14.0642 11.5869H12.4145V8.28147ZM19 12C19 15.866 15.866 19 12 19C8.13401 19 5 15.866 5 12C5 8.13401 8.13401 5 12 5C15.866 5 19 8.13401 19 12Z" fill="url(#paint0_linear_10269_34622)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 19C15.866 19 19 15.866 19 12C19 8.13401 15.866 5 12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19ZM12 20.5C16.6944 20.5 20.5 16.6944 20.5 12C20.5 7.30558 16.6944 3.5 12 3.5C7.30558 3.5 3.5 7.30558 3.5 12C3.5 16.6944 7.30558 20.5 12 20.5Z" fill="#00AE42" fill-opacity="0.4"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_10269_34622" x1="17.6667" y1="5.38889" x2="17.6667" y2="18.6111" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#00AE42"/>
|
||||
<stop offset="1" stop-color="#00AE42" stop-opacity="0.64"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
BIN
resources/web/homepage2/img/wiki.png
Normal file
After Width: | Height: | Size: 460 KiB |
BIN
resources/web/homepage2/img/wiki2.png
Normal file
After Width: | Height: | Size: 341 KiB |
BIN
resources/web/homepage2/img/wiki3.png
Normal file
After Width: | Height: | Size: 514 KiB |
5
resources/web/homepage2/img/xia.svg
Normal file
@ -0,0 +1,5 @@
|
||||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.00168 2.83838C7.23263 2.83838 7.41986 3.02449 7.41986 3.25407V9.60403C7.41986 9.83361 7.23263 10.0197 7.00168 10.0197C6.77072 10.0197 6.5835 9.83361 6.5835 9.60403V3.25407C6.5835 3.02449 6.77072 2.83838 7.00168 2.83838Z" fill="#333333"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.31487 6.95476C4.47818 6.79242 4.74295 6.79242 4.90626 6.95476L7.00017 9.03619L9.09408 6.95476C9.25739 6.79242 9.52217 6.79242 9.68548 6.95476C9.84878 7.1171 9.84878 7.3803 9.68548 7.54263L7.29587 9.918C7.13256 10.0803 6.86778 10.0803 6.70447 9.918L4.31487 7.54263C4.15156 7.3803 4.15156 7.1171 4.31487 6.95476Z" fill="#333333"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.19238 11.2077C4.19238 10.9781 4.37961 10.792 4.61056 10.792H9.38978C9.62073 10.792 9.80796 10.9781 9.80796 11.2077C9.80796 11.4373 9.62073 11.6234 9.38978 11.6234H4.61056C4.37961 11.6234 4.19238 11.4373 4.19238 11.2077Z" fill="#333333"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.0 KiB |
4
resources/web/homepage2/img/zan.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.95276 2.86133C6.01688 2.71791 6.15995 2.62549 6.31783 2.62549C7.20041 2.62549 7.91584 3.33668 7.91584 4.21398V5.40535H9.91133C10.262 5.40211 10.5966 5.55179 10.8268 5.8149C11.0575 6.07866 11.1601 6.42986 11.1073 6.77545L10.556 10.3495C10.556 10.3496 10.5561 10.3493 10.556 10.3495C10.4664 10.9358 9.95645 11.3676 9.36007 11.3622H4.71982C4.49918 11.3622 4.32031 11.1844 4.32031 10.9651V6.59672C4.32031 6.54116 4.33204 6.48621 4.35474 6.43543L5.95276 2.86133ZM6.56075 3.4571L5.11932 6.681V10.5679H9.36657C9.56579 10.5702 9.73619 10.4262 9.76607 10.2304L10.3174 6.65626C10.3174 6.65615 10.3174 6.65638 10.3174 6.65626C10.3349 6.54118 10.3007 6.42392 10.2239 6.33609C10.147 6.24815 10.0351 6.19825 9.91788 6.19957L9.91336 6.19962L7.51634 6.19959C7.29571 6.19959 7.11683 6.0218 7.11683 5.80247V4.21398C7.11683 3.85952 6.88326 3.55929 6.56075 3.4571Z" fill="#333333"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.6563 6.15492H4.71977C4.94041 6.15492 5.11928 6.33272 5.11928 6.55204V10.9644C5.11928 11.1837 4.94041 11.3615 4.71977 11.3615H3.65634C2.98737 11.3713 2.41609 10.8828 2.32636 10.2233C2.32396 10.2057 2.32275 10.1879 2.32275 10.1701V7.39026C2.32275 7.37247 2.32396 7.35468 2.32636 7.33705C2.41249 6.70407 2.96166 6.14481 3.6563 6.15492ZM3.12176 7.42044V10.1396C3.16703 10.3895 3.38838 10.5718 3.64604 10.5673L3.6531 10.5672L4.32027 10.5672V6.94916H3.64603C3.41291 6.94507 3.17072 7.14432 3.12176 7.42044Z" fill="#333333"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.6 KiB |
773
resources/web/homepage2/js/home.js
Normal file
@ -0,0 +1,773 @@
|
||||
//var TestData={"sequence_id":"0","command":"get_recent_projects","response":[{"path":"D:\\work\\Models\\Toy\\3d-puzzle-cube-model_files\\3d-puzzle-cube.3mf","time":"2022\/3\/24 20:33:10"},{"path":"D:\\work\\Models\\Art\\Carved Stone Vase - remeshed+drainage\\Carved Stone Vase.3mf","time":"2022\/3\/24 17:11:51"},{"path":"D:\\work\\Models\\Art\\Kity & Cat\\Cat.3mf","time":"2022\/3\/24 17:07:55"},{"path":"D:\\work\\Models\\Toy\\鐩村墤.3mf","time":"2022\/3\/24 17:06:02"},{"path":"D:\\work\\Models\\Toy\\minimalistic-dual-tone-whistle-model_files\\minimalistic-dual-tone-whistle.3mf","time":"2022\/3\/22 21:12:22"},{"path":"D:\\work\\Models\\Toy\\spiral-city-model_files\\spiral-city.3mf","time":"2022\/3\/22 18:58:37"},{"path":"D:\\work\\Models\\Toy\\impossible-dovetail-puzzle-box-model_files\\impossible-dovetail-puzzle-box.3mf","time":"2022\/3\/22 20:08:40"}]};
|
||||
|
||||
var m_HotModelList=null;
|
||||
var m_ForUModelList=null;
|
||||
|
||||
function OnHomeInit()
|
||||
{
|
||||
//-----Official-----
|
||||
TranslatePage();
|
||||
|
||||
SendMsg_GetRecentFile();
|
||||
SendMsg_GetStaffPick();
|
||||
SendMsg_GetMakerlabList();
|
||||
|
||||
//ShowMakerlabList(Test_MakerlabList['list']);
|
||||
}
|
||||
|
||||
//Recent详情页面的状态
|
||||
var Recent_Normal=1;
|
||||
var Recent_BatchDelete=2;
|
||||
|
||||
var RecentPage_Mode=Recent_Normal;
|
||||
|
||||
function OnRecentInit()
|
||||
{
|
||||
TranslatePage();
|
||||
|
||||
SendMsg_GetRecentFile();
|
||||
Set_RecentFile_Delete_Checkbox_Event();
|
||||
}
|
||||
|
||||
function OnLineInit()
|
||||
{
|
||||
TranslatePage();
|
||||
|
||||
SendMsg_GetStaffPick();
|
||||
}
|
||||
|
||||
//------最佳打开文件的右键菜单功能----------
|
||||
var RightBtnFilePath='';
|
||||
|
||||
var MousePosX=0;
|
||||
var MousePosY=0;
|
||||
var sImages = {};
|
||||
|
||||
function Set_RecentFile_MouseRightBtn_Event()
|
||||
{
|
||||
$(".FileItem").mousedown(
|
||||
function(e)
|
||||
{
|
||||
//FilePath
|
||||
RightBtnFilePath=$(this).attr('fpath');
|
||||
|
||||
if(e.which == 3){
|
||||
//鼠标点击了右键+$(this).attr('ff') );
|
||||
ShowRecnetFileContextMenu();
|
||||
}else if(e.which == 2){
|
||||
//鼠标点击了中键
|
||||
}else if(e.which == 1){
|
||||
//鼠标点击了左键
|
||||
OnOpenRecentFile( encodeURI(RightBtnFilePath) );
|
||||
}
|
||||
});
|
||||
|
||||
$(document).bind("contextmenu",function(e){
|
||||
//在这里书写代码,构建个性右键化菜单
|
||||
return false;
|
||||
});
|
||||
|
||||
$(document).mousemove( function(e){
|
||||
MousePosX=e.pageX;
|
||||
MousePosY=e.pageY;
|
||||
|
||||
let ContextMenuWidth=$('#recnet_context_menu').width();
|
||||
let ContextMenuHeight=$('#recnet_context_menu').height();
|
||||
|
||||
let DocumentWidth=$(document).width();
|
||||
let DocumentHeight=$(document).height();
|
||||
|
||||
//$("#DebugText").text( ContextMenuWidth+' - '+ContextMenuHeight+'<br/>'+
|
||||
// DocumentWidth+' - '+DocumentHeight+'<br/>'+
|
||||
// MousePosX+' - '+MousePosY +'<br/>' );
|
||||
} );
|
||||
|
||||
|
||||
$(document).click( function(){
|
||||
var e = e || window.event;
|
||||
var elem = e.target || e.srcElement;
|
||||
while (elem) {
|
||||
if (elem.id && elem.id == 'recnet_context_menu') {
|
||||
return;
|
||||
}
|
||||
elem = elem.parentNode;
|
||||
}
|
||||
|
||||
$("#recnet_context_menu").hide();
|
||||
} );
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
function HandleStudio( pVal )
|
||||
{
|
||||
let strCmd = pVal['command'];
|
||||
|
||||
if(strCmd=='get_recent_projects')
|
||||
{
|
||||
ShowRecentFileList(pVal['response']);
|
||||
}
|
||||
else if( strCmd=="studio_set_mallurl" )
|
||||
{
|
||||
SetMallUrl( pVal['data']['url'] );
|
||||
}
|
||||
else if( strCmd=="studio_clickmenu" )
|
||||
{
|
||||
let strName=pVal['data']['menu'];
|
||||
|
||||
GotoMenu(strName);
|
||||
}
|
||||
else if( strCmd=="network_plugin_installtip" )
|
||||
{
|
||||
let nShow=pVal["show"]*1;
|
||||
|
||||
if(nShow==1)
|
||||
{
|
||||
$("#NoPluginTip").show();
|
||||
$("#NoPluginTip").css("display","flex");
|
||||
}
|
||||
else
|
||||
{
|
||||
$("#NoPluginTip").hide();
|
||||
}
|
||||
}
|
||||
else if( strCmd=="modelmall_model_advise_get")
|
||||
{
|
||||
//alert('hot');
|
||||
if( m_HotModelList!=null )
|
||||
{
|
||||
let SS1=JSON.stringify(pVal['hits']);
|
||||
let SS2=JSON.stringify(m_HotModelList);
|
||||
|
||||
if( SS1==SS2 )
|
||||
return;
|
||||
}
|
||||
|
||||
$("#Online_Models_Bar").css('display','flex');
|
||||
$("#ForU_Models_Bar").css('display','none');
|
||||
|
||||
m_HotModelList=pVal['hits'];
|
||||
ShowStaffPick( m_HotModelList );
|
||||
}
|
||||
else if( strCmd=="modelmall_model_customized_get")
|
||||
{
|
||||
//alert('hot');
|
||||
if( m_ForUModelList!=null )
|
||||
{
|
||||
let SS1=JSON.stringify(pVal['hits']);
|
||||
let SS2=JSON.stringify(m_ForUModelList);
|
||||
|
||||
if( SS1==SS2 )
|
||||
return;
|
||||
}
|
||||
|
||||
$("#Online_Models_Bar").css('display','none');
|
||||
$("#ForU_Models_Bar").css('display','flex');
|
||||
|
||||
m_ForUModelList=pVal['hits'];
|
||||
Show4UPick( m_ForUModelList );
|
||||
}
|
||||
else if(strCmd=='homepage_makerlab_get')
|
||||
{
|
||||
ShowMakerlabList(pVal['list']);
|
||||
}
|
||||
}
|
||||
|
||||
function SwtichLeftMenu( strMenu )
|
||||
{
|
||||
//SendWX
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="homepage_leftmenu_switch";
|
||||
tSend['menu']=strMenu;
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
function SetMallUrl( strUrl )
|
||||
{
|
||||
$("#MallWeb").prop("src",strUrl);
|
||||
}
|
||||
|
||||
|
||||
function ShowRecentFileList( pList )
|
||||
{
|
||||
let nTotal=pList.length;
|
||||
|
||||
let strHtml='';
|
||||
for(let n=0;n<nTotal;n++)
|
||||
{
|
||||
let OneFile=pList[n];
|
||||
|
||||
let sPath=OneFile['path'];
|
||||
let sImg=OneFile["image"] || sImages[sPath];
|
||||
let sTime=OneFile['time'];
|
||||
let sName=OneFile['project_name'];
|
||||
sImages[sPath] = sImg;
|
||||
|
||||
//let index=sPath.lastIndexOf('\\')>0?sPath.lastIndexOf('\\'):sPath.lastIndexOf('\/');
|
||||
//let sShortName=sPath.substring(index+1,sPath.length);
|
||||
|
||||
let TmpHtml='<div class="FileItem GuideBlock" fpath="'+sPath+'" >'+
|
||||
'<a class="FileTip" title="'+sPath+'"></a>'+
|
||||
'<div class="FileImg" ><img src="'+sImg+'" onerror="this.onerror=null;this.src=\'img/d.png\';" alt="No Image" /></div>'+
|
||||
'<div class="FileName TextS1">'+sName+'</div>'+
|
||||
'<div class="FileDate TextS2">'+sTime+'</div>'+
|
||||
'<div class="FileMask"></div>'+
|
||||
'<div class="FileCheckBox"></div>'+
|
||||
'</div>';
|
||||
|
||||
strHtml+=TmpHtml;
|
||||
}
|
||||
|
||||
$("#FileList").html(strHtml);
|
||||
|
||||
Set_RecentFile_MouseRightBtn_Event();
|
||||
UpdateRecentClearBtnDisplay();
|
||||
Set_RecentFile_Delete_Checkbox_Event();
|
||||
}
|
||||
|
||||
function ShowRecnetFileContextMenu()
|
||||
{
|
||||
if( RecentPage_Mode!=Recent_Normal )
|
||||
return;
|
||||
|
||||
$("#recnet_context_menu").offset({top: 10000, left:-10000});
|
||||
$('#recnet_context_menu').show();
|
||||
|
||||
let ContextMenuWidth=$('#recnet_context_menu').width();
|
||||
let ContextMenuHeight=$('#recnet_context_menu').height();
|
||||
|
||||
let DocumentWidth=$(document).width();
|
||||
let DocumentHeight=$(document).height();
|
||||
|
||||
let RealX=MousePosX;
|
||||
let RealY=MousePosY;
|
||||
|
||||
if( MousePosX + ContextMenuWidth + 24 >DocumentWidth )
|
||||
RealX=DocumentWidth-ContextMenuWidth-24;
|
||||
if( MousePosY+ContextMenuHeight+24>DocumentHeight )
|
||||
RealY=DocumentHeight-ContextMenuHeight-24;
|
||||
|
||||
$("#recnet_context_menu").offset({top: RealY, left:RealX});
|
||||
}
|
||||
|
||||
/*-------RecentFile MX Message------*/
|
||||
function SendMsg_GetLoginInfo()
|
||||
{
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="get_login_info";
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
|
||||
function SendMsg_GetRecentFile()
|
||||
{
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="get_recent_projects";
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
function OnClickModelDepot()
|
||||
{
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="homepage_modeldepot";
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
function OnClickNewProject()
|
||||
{
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="homepage_newproject";
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
function OnClickOpenProject()
|
||||
{
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="homepage_openproject";
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
function OnOpenRecentFile( strPath )
|
||||
{
|
||||
if( RecentPage_Mode!=Recent_Normal )
|
||||
return;
|
||||
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="homepage_open_recentfile";
|
||||
tSend['data']={};
|
||||
tSend['data']['path']=decodeURI(strPath);
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
function OnDeleteRecentFile( )
|
||||
{
|
||||
//Clear in UI
|
||||
$("#recnet_context_menu").hide();
|
||||
|
||||
let AllFile=$(".FileItem");
|
||||
let nFile=AllFile.length;
|
||||
for(let p=0;p<nFile;p++)
|
||||
{
|
||||
let pp=AllFile[p].getAttribute("fpath");
|
||||
if(pp==RightBtnFilePath)
|
||||
$(AllFile[p]).remove();
|
||||
}
|
||||
|
||||
UpdateRecentClearBtnDisplay();
|
||||
|
||||
//Send Msg to C++
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="homepage_delete_recentfile";
|
||||
tSend['data']={};
|
||||
tSend['data']['path']=RightBtnFilePath;
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
function OnDeleteAllRecentFiles()
|
||||
{
|
||||
$('#FileList').html('');
|
||||
UpdateRecentClearBtnDisplay();
|
||||
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="homepage_delete_all_recentfile";
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
function UpdateRecentClearBtnDisplay()
|
||||
{
|
||||
let AllFile=$(".FileItem");
|
||||
let nFile=AllFile.length;
|
||||
if( nFile>0 )
|
||||
{
|
||||
$("#Menu_Clear").show();
|
||||
$('#Menu_Batch').show();
|
||||
}
|
||||
else
|
||||
{
|
||||
$("#Menu_Clear").hide();
|
||||
$('#Menu_Batch').hide();
|
||||
}
|
||||
}
|
||||
|
||||
function OnExploreRecentFile( )
|
||||
{
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="homepage_explore_recentfile";
|
||||
tSend['data']={};
|
||||
tSend['data']['path']=decodeURI(RightBtnFilePath);
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
|
||||
$("#recnet_context_menu").hide();
|
||||
}
|
||||
|
||||
function BeginDownloadNetworkPlugin()
|
||||
{
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="begin_network_plugin_download";
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
function OutputKey(keyCode, isCtrlDown, isShiftDown, isCmdDown) {
|
||||
var tSend = {};
|
||||
tSend['sequence_id'] = Math.round(new Date() / 1000);
|
||||
tSend['command'] = "get_web_shortcut";
|
||||
tSend['key_event'] = {};
|
||||
tSend['key_event']['key'] = keyCode;
|
||||
tSend['key_event']['ctrl'] = isCtrlDown;
|
||||
tSend['key_event']['shift'] = isShiftDown;
|
||||
tSend['key_event']['cmd'] = isCmdDown;
|
||||
|
||||
SendWXMessage(JSON.stringify(tSend));
|
||||
}
|
||||
|
||||
function SendMsg_GetMakerlabList()
|
||||
{
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="homepage_makerlab_get";
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
function SwitchContent(strMenu)
|
||||
{
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="homepage_leftmenu_clicked";
|
||||
tSend['menu']=strMenu;
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
function OnBatchDelete()
|
||||
{
|
||||
//切换页面工作模式
|
||||
RecentPage_Mode=Recent_BatchDelete;
|
||||
|
||||
$('#Menu_Batch').hide();
|
||||
$('#Menu_Clear').hide();
|
||||
|
||||
$('#Menu_Delete').css('display','flex');
|
||||
$('#Menu_Cancel').css('display','flex');
|
||||
|
||||
$('.FileCheckBox.FileCheckBox_checked').removeClass('FileCheckBox_checked');
|
||||
$('.FileCheckBox').show();
|
||||
}
|
||||
|
||||
function OnCancelDelete()
|
||||
{
|
||||
//切换页面工作模式
|
||||
RecentPage_Mode=Recent_Normal;
|
||||
|
||||
$('#Menu_Batch').css('display','flex');
|
||||
$('#Menu_Clear').css('display','flex');
|
||||
|
||||
$('#Menu_Delete').hide();
|
||||
$('#Menu_Cancel').hide();
|
||||
|
||||
|
||||
$('.FileCheckBox.FileCheckBox_checked').removeClass('FileCheckBox_checked');
|
||||
$('.FileCheckBox').hide();
|
||||
$('.FileMask').hide();
|
||||
}
|
||||
|
||||
function OnMultiDelete()
|
||||
{
|
||||
let ChooseFiles=$('.FileCheckBox.FileCheckBox_checked');
|
||||
let nChoose=ChooseFiles.length;
|
||||
|
||||
var tBatchDel={};
|
||||
tBatchDel['sequence_id']=Math.round(new Date() / 1000);
|
||||
tBatchDel['command']="homepage_delete_recentfile";
|
||||
tBatchDel['data']={};
|
||||
|
||||
for(let n=0;n<nChoose;n++)
|
||||
{
|
||||
let OneItem=ChooseFiles[n];
|
||||
let ParentItem=$(OneItem).parent();
|
||||
|
||||
let fPath=$(ParentItem).attr("fpath");
|
||||
|
||||
//删除文件对象
|
||||
$(ParentItem).remove();
|
||||
|
||||
//发送WX消息
|
||||
tBatchDel['data']['path']=fPath;
|
||||
SendWXMessage( JSON.stringify(tBatchDel) );
|
||||
}
|
||||
|
||||
//更新按钮状态
|
||||
OnCancelDelete();
|
||||
UpdateRecentClearBtnDisplay();
|
||||
}
|
||||
|
||||
function Set_RecentFile_Delete_Checkbox_Event()
|
||||
{
|
||||
$(".FileCheckBox").mousedown(
|
||||
function(e)
|
||||
{
|
||||
//FilePath
|
||||
if(e.which == 3){
|
||||
//鼠标点击了右键+$(this).attr('ff') );
|
||||
}else if(e.which == 2){
|
||||
//鼠标点击了中键
|
||||
}else if(e.which == 1){
|
||||
//鼠标点击了左键
|
||||
if( $(this).hasClass('FileCheckBox_checked') )
|
||||
{
|
||||
$(this).removeClass('FileCheckBox_checked');
|
||||
$(this).prev('.FileMask').hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
$(this).addClass('FileCheckBox_checked');
|
||||
$(this).prev('.FileMask').show();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//-------------User Manual------------
|
||||
|
||||
function OpenWikiUrl( strUrl )
|
||||
{
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="userguide_wiki_open";
|
||||
tSend['data']={};
|
||||
tSend['data']['url']=strUrl;
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
//--------------Staff Pick-------
|
||||
var StaffPickSwiper=null;
|
||||
function InitStaffPick()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
function SendMsg_GetStaffPick()
|
||||
{
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="modelmall_model_advise_get";
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
|
||||
setTimeout("SendMsg_GetStaffPick()",3600*1000*6);
|
||||
}
|
||||
|
||||
function ExNumber( number )
|
||||
{
|
||||
let nNew=number;
|
||||
if( number>=1000*1000*1000 )
|
||||
{
|
||||
nNew=Math.round(number/(1000*1000*1000)*10)/10;
|
||||
nNew=nNew+'b';
|
||||
}
|
||||
else if( number>=1000*1000 )
|
||||
{
|
||||
nNew=Math.round(number/(1000*1000)*10)/10;
|
||||
nNew=nNew+'m';
|
||||
}
|
||||
if( number>=1000 )
|
||||
{
|
||||
nNew=Math.round(number/(1000)*10)/10;
|
||||
nNew=nNew+'k';
|
||||
}
|
||||
|
||||
return nNew;
|
||||
}
|
||||
|
||||
function ShowStaffPick( ModelList )
|
||||
{
|
||||
let PickTotal=ModelList.length;
|
||||
if(PickTotal==0)
|
||||
{
|
||||
$('#HotModelList').html('');
|
||||
$('#HotModelArea').hide();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
let strPickHtml='';
|
||||
for(let a=0;a<PickTotal;a++)
|
||||
{
|
||||
let OnePickModel=ModelList[a];
|
||||
|
||||
let ModelID=OnePickModel['design']['id'];
|
||||
let ModelName=OnePickModel['design']['title'];
|
||||
let ModelCover=OnePickModel['design']['cover']+'?image_process=resize,w_360/format,webp';
|
||||
|
||||
let DesignerName=OnePickModel['design']['designCreator']['name'];
|
||||
let DesignerAvatar=OnePickModel['design']['designCreator']['avatar']+'?image_process=resize,w_32/format,webp';
|
||||
|
||||
let NumZan=OnePickModel['design']['likeCount'];
|
||||
let NumDownload=OnePickModel['design']['downloadCount'];
|
||||
NumZan=ExNumber(NumZan);
|
||||
NumDownload=ExNumber(NumDownload);
|
||||
|
||||
strPickHtml+=' <div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel('+ModelID+')">'+
|
||||
'<div class="HotModel_PrevBlock">'+
|
||||
' <img class="HotModel_PrevImg" src="'+ModelCover+'" />'+
|
||||
'</div>'+
|
||||
'<div class="HotModel_Designer_Info">'+
|
||||
' <div class="HotModel_Author_HeadIcon">'+
|
||||
' <img src="'+DesignerAvatar+'" />'+
|
||||
' </div>'+
|
||||
' <div class="HotModel_Right_1">'+
|
||||
' <div class="HotModel_Name TextS1">'+ModelName+'</div>'+
|
||||
' <div class="HotModel_Right_1_2">'+
|
||||
' <div class="HotModel_Author_Name TextS2">'+DesignerName+'</div>'+
|
||||
' <div class="HotModel_click_info TextS2">'+
|
||||
' <div class="Model_Click_Number"><img src="img/zan.svg"><span>'+NumZan+'</span></div>'+
|
||||
' <div class="Model_Click_Number"><img src="img/xia.svg"><span>'+NumDownload+'</span></div>'+
|
||||
' </div>'+
|
||||
' </div>'+
|
||||
' </div>'+
|
||||
'</div>'+
|
||||
'</div>';
|
||||
}
|
||||
|
||||
$('#HotModelList').html(strPickHtml);
|
||||
InitStaffPick();
|
||||
$('#HotModelArea').show();
|
||||
}
|
||||
|
||||
function Show4UPick( ModelList )
|
||||
{
|
||||
let PickTotal=ModelList.length;
|
||||
if(PickTotal==0)
|
||||
{
|
||||
$('#HotModelList').html('');
|
||||
$('#HotModelArea').hide();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
let strPickHtml='';
|
||||
for(let a=0;a<PickTotal;a++)
|
||||
{
|
||||
let OnePickModel=ModelList[a];
|
||||
|
||||
let ModelID=OnePickModel['id'];
|
||||
let ModelName=OnePickModel['title'];
|
||||
let ModelCover=OnePickModel['cover']+'?image_process=resize,w_360/format,webp';
|
||||
|
||||
let DesignerName=OnePickModel['designCreator']['name'];
|
||||
let DesignerAvatar=OnePickModel['designCreator']['avatar']+'?image_process=resize,w_32/format,webp';
|
||||
|
||||
let NumZan=OnePickModel['likeCount'];
|
||||
let NumDownload=OnePickModel['downloadCount'];
|
||||
NumZan=ExNumber(NumZan);
|
||||
NumDownload=ExNumber(NumDownload);
|
||||
|
||||
strPickHtml+=' <div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel('+ModelID+')">'+
|
||||
'<div class="HotModel_PrevBlock">'+
|
||||
' <img class="HotModel_PrevImg" src="'+ModelCover+'" />'+
|
||||
'</div>'+
|
||||
'<div class="HotModel_Designer_Info">'+
|
||||
' <div class="HotModel_Author_HeadIcon">'+
|
||||
' <img src="'+DesignerAvatar+'" />'+
|
||||
' </div>'+
|
||||
' <div class="HotModel_Right_1">'+
|
||||
' <div class="HotModel_Name TextS1">'+ModelName+'</div>'+
|
||||
' <div class="HotModel_Right_1_2">'+
|
||||
' <div class="HotModel_Author_Name TextS2">'+DesignerName+'</div>'+
|
||||
' <div class="HotModel_click_info TextS2">'+
|
||||
' <div class="Model_Click_Number"><img src="img/zan.svg"><span>'+NumZan+'</span></div>'+
|
||||
' <div class="Model_Click_Number"><img src="img/xia.svg"><span>'+NumDownload+'</span></div>'+
|
||||
' </div>'+
|
||||
' </div>'+
|
||||
' </div>'+
|
||||
'</div>'+
|
||||
'</div>';
|
||||
}
|
||||
|
||||
$('#HotModelList').html(strPickHtml);
|
||||
InitStaffPick();
|
||||
$('#HotModelArea').show();
|
||||
}
|
||||
|
||||
function OpenOneStaffPickModel( ModelID )
|
||||
{
|
||||
//alert(ModelID);
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="modelmall_model_open";
|
||||
tSend['data']={};
|
||||
tSend['data']['id']=ModelID;
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
|
||||
//----------MakerLab------------
|
||||
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 ShowMakerlabList( LabList )
|
||||
{
|
||||
let LabTotal=LabList.length;
|
||||
if(LabTotal==0)
|
||||
{
|
||||
$('#LabList').html('');
|
||||
$('#MakerlabArea').hide();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
let bCN=IsChinese();
|
||||
|
||||
let strLabHtml='';
|
||||
for(let a=0;a<LabTotal;a++)
|
||||
{
|
||||
let OneLabItem=LabList[a];
|
||||
let InfoItem=OneLabItem['info'];
|
||||
|
||||
let LabImg=OneLabItem['thumbnail']+'?image_process=resize,w_360/format,webp';
|
||||
let LabUrl=OneLabItem['jumpTo'];
|
||||
|
||||
let LabName='';
|
||||
let LabDesc='';
|
||||
let LabAuthor='';
|
||||
if(bCN && InfoItem.hasOwnProperty('zh_CN'))
|
||||
{
|
||||
LabName=InfoItem['zh_CN']['name'];
|
||||
LabDesc=InfoItem['zh_CN']['description'];
|
||||
LabAuthor=InfoItem['zh_CN']['author'];
|
||||
}
|
||||
else if( InfoItem.hasOwnProperty('en') )
|
||||
{
|
||||
LabName=InfoItem['en']['name'];
|
||||
LabDesc=InfoItem['en']['description'];
|
||||
LabAuthor=InfoItem['en']['author'];
|
||||
}
|
||||
else
|
||||
continue;
|
||||
|
||||
|
||||
strLabHtml+='<div class="FileItem GuideBlock" onClick="OnOpenOneMakerlab(\''+LabUrl+'\')" >'+
|
||||
'<div class="MakerlabImg"><img src="'+LabImg+'"/></div>'+
|
||||
'<div class="MakerlabTextBlock">'+
|
||||
'<div class="MakerlabName">'+LabName+'</div>'+
|
||||
'<div class="MakerlabDesc">'+LabDesc+'</div>'+
|
||||
'<div class="MakerlabAuthor">'+LabAuthor+'</div>'+
|
||||
'</div></div>';
|
||||
}
|
||||
|
||||
$('#LabList').html(strLabHtml);
|
||||
$('#MakerlabArea').show();
|
||||
}
|
||||
|
||||
function OnOpenOneMakerlab( ChildUrl )
|
||||
{
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="homepage_makerlab_open";
|
||||
tSend['url']=ChildUrl;
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
|
||||
//---------------Global-----------------
|
||||
window.postMessage = HandleStudio;
|
189
resources/web/homepage2/js/left.js
Normal file
@ -0,0 +1,189 @@
|
||||
//var TestData={"sequence_id":"0","command":"get_recent_projects","response":[{"path":"D:\\work\\Models\\Toy\\3d-puzzle-cube-model_files\\3d-puzzle-cube.3mf","time":"2022\/3\/24 20:33:10"},{"path":"D:\\work\\Models\\Art\\Carved Stone Vase - remeshed+drainage\\Carved Stone Vase.3mf","time":"2022\/3\/24 17:11:51"},{"path":"D:\\work\\Models\\Art\\Kity & Cat\\Cat.3mf","time":"2022\/3\/24 17:07:55"},{"path":"D:\\work\\Models\\Toy\\鐩村墤.3mf","time":"2022\/3\/24 17:06:02"},{"path":"D:\\work\\Models\\Toy\\minimalistic-dual-tone-whistle-model_files\\minimalistic-dual-tone-whistle.3mf","time":"2022\/3\/22 21:12:22"},{"path":"D:\\work\\Models\\Toy\\spiral-city-model_files\\spiral-city.3mf","time":"2022\/3\/22 18:58:37"},{"path":"D:\\work\\Models\\Toy\\impossible-dovetail-puzzle-box-model_files\\impossible-dovetail-puzzle-box.3mf","time":"2022\/3\/22 20:08:40"}]};
|
||||
|
||||
var m_HotModelList=null;
|
||||
|
||||
function OnInit()
|
||||
{
|
||||
//-----Official-----
|
||||
TranslatePage();
|
||||
|
||||
SendMsg_GetLoginInfo();
|
||||
GotoMenu( 'home' );
|
||||
}
|
||||
|
||||
function HandleStudio( pVal )
|
||||
{
|
||||
let strCmd = pVal['command'];
|
||||
|
||||
|
||||
if(strCmd=='studio_userlogin')
|
||||
{
|
||||
SetLoginInfo(pVal['data']['avatar'],pVal['data']['name']);
|
||||
}
|
||||
else if(strCmd=='studio_useroffline')
|
||||
{
|
||||
SetUserOffline();
|
||||
}
|
||||
else if(strCmd=='homepage_leftmenu_clicked')
|
||||
{
|
||||
let NewMenu=pVal['menu'];
|
||||
//alert('LeftMenu Clicked:'+strMenu );
|
||||
|
||||
GotoMenu(NewMenu);
|
||||
}
|
||||
else if(strCmd=='homepage_leftmenu_newtag')
|
||||
{
|
||||
let NewMenu=pVal['menu'];
|
||||
let nShow=pVal['show'];
|
||||
|
||||
ShowMenuNewTag(NewMenu,nShow);
|
||||
}
|
||||
else if(strCmd=='homepage_leftmenu_show')
|
||||
{
|
||||
let NewMenu=pVal['menu'];
|
||||
let nShow=pVal['show'];
|
||||
|
||||
ShowMenuBtn(NewMenu,nShow);
|
||||
}
|
||||
}
|
||||
|
||||
var NowMenu='';
|
||||
function GotoMenu( strMenu )
|
||||
{
|
||||
ShowMenuNewTag(strMenu,0);
|
||||
|
||||
if(NowMenu==strMenu)
|
||||
return;
|
||||
|
||||
NowMenu=strMenu;
|
||||
|
||||
let MenuList=$(".BtnItem");
|
||||
let nAll=MenuList.length;
|
||||
|
||||
for(let n=0;n<nAll;n++)
|
||||
{
|
||||
let OneBtn=MenuList[n];
|
||||
|
||||
if( $(OneBtn).attr("menu")==strMenu )
|
||||
{
|
||||
if(strMenu!=='makerlab')
|
||||
{
|
||||
$(".BtnItem").removeClass("BtnItemSelected");
|
||||
$(OneBtn).addClass("BtnItemSelected");
|
||||
}
|
||||
|
||||
//SendWX
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="homepage_leftmenu_clicked";
|
||||
tSend['menu']=strMenu;
|
||||
tSend['refresh']=0;
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function ShowMenuNewTag(MenuName,nStatus)
|
||||
{
|
||||
//alert(MenuName+" - "+nStatus);
|
||||
if(MenuName=='online')
|
||||
{
|
||||
if(nStatus==1)
|
||||
$('#OnlineNewTag').show();
|
||||
else
|
||||
$('#OnlineNewTag').hide();
|
||||
}
|
||||
else if(MenuName=='makerlab')
|
||||
{
|
||||
if(nStatus==1)
|
||||
$('#MakerlabNewTag').show();
|
||||
else
|
||||
$('#MakerlabNewTag').hide();
|
||||
}
|
||||
}
|
||||
|
||||
function ShowMenuBtn( MenuName,nShow)
|
||||
{
|
||||
let sKey='div[menu="'+MenuName+'"]';
|
||||
|
||||
if(nShow==1)
|
||||
$(sKey).css('display','flex');
|
||||
else
|
||||
$(sKey).css('display','none');
|
||||
}
|
||||
|
||||
|
||||
function SetLoginInfo( strAvatar, strName )
|
||||
{
|
||||
$("#Login1").hide();
|
||||
|
||||
$("#UserName").text(strName);
|
||||
|
||||
let OriginAvatar=$("#UserAvatarIcon").prop("src");
|
||||
if(strAvatar!=OriginAvatar)
|
||||
$("#UserAvatarIcon").prop("src",strAvatar);
|
||||
else
|
||||
{
|
||||
//alert('Avatar is Same');
|
||||
}
|
||||
|
||||
$("#Login2").show();
|
||||
$("#Login2").css("display","flex");
|
||||
}
|
||||
|
||||
function SetUserOffline()
|
||||
{
|
||||
$("#UserAvatarIcon").prop("src","img/c.jpg");
|
||||
$("#UserName").text('');
|
||||
$("#Login2").hide();
|
||||
|
||||
$("#Login1").show();
|
||||
$("#Login1").css("display","flex");
|
||||
}
|
||||
|
||||
function SetMallUrl( strUrl )
|
||||
{
|
||||
$("#MallWeb").prop("src",strUrl);
|
||||
}
|
||||
|
||||
/*-------RecentFile MX Message------*/
|
||||
function SendMsg_GetLoginInfo()
|
||||
{
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="get_login_info";
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
function OnLoginOrRegister()
|
||||
{
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="homepage_login_or_register";
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
function OnLogOut()
|
||||
{
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="homepage_logout";
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
function SendMsg_CheckNewTag()
|
||||
{
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="homepage_leftmenu_newtag";
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
|
||||
//---------------Global-----------------
|
||||
window.postMessage = HandleStudio;
|
57
resources/web/homepage2/js/test.js
Normal file
@ -0,0 +1,57 @@
|
||||
|
||||
var Test_MakerlabList={
|
||||
"result": 0,
|
||||
"list": [
|
||||
{
|
||||
"id": 1,
|
||||
"thumbnail": "https://public-cdn.bblmw.com/content-generator/nameplate/nameplate_card.png",
|
||||
"jumpTo": "makerlab/makeMySign",
|
||||
"info": {
|
||||
"en": {
|
||||
"name": "Make My Sign",
|
||||
"description": "Name plate, badge, sign, light box, anything flat",
|
||||
"author": "Makerlab official"
|
||||
},
|
||||
"zh_CN": {
|
||||
"name": "标牌定制器",
|
||||
"description": "办公桌铭牌、居家挂牌、名片、标签、钥匙扣轻松创作",
|
||||
"author": "Makerlab 官方"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"thumbnail": "https://public-cdn.bblmw.com/content-generator/vase/vase_card.jpeg",
|
||||
"jumpTo": "makerlab/makeMyVase",
|
||||
"info": {
|
||||
"en": {
|
||||
"name": "Make My Vase",
|
||||
"description": "Craft your dream vase by clicks",
|
||||
"author": "Makerlab official"
|
||||
},
|
||||
"zh_CN": {
|
||||
"name": "花瓶生成器",
|
||||
"description": "点击制作你梦想中的花瓶",
|
||||
"author": "Makerlab 官方"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"thumbnail": "https://public-cdn.bblmw.com/content-generator/pixel/pixel_card.jpg",
|
||||
"jumpTo": "makerlab/pixelPuzzleMaker",
|
||||
"info": {
|
||||
"en": {
|
||||
"name": "Pixel Puzzle Maker",
|
||||
"description": "Pixelize it. Print It. Build you own pixel puzzle",
|
||||
"author": "Makerlab official"
|
||||
},
|
||||
"zh_CN": {
|
||||
"name": "像素拼图生成器",
|
||||
"description": "定制你专属的像素拼图",
|
||||
"author": "Makerlab 官方"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
84
resources/web/homepage2/left.html
Normal file
@ -0,0 +1,84 @@
|
||||
<!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>homepage</title>
|
||||
<link rel="stylesheet" type="text/css" href="./css/common.css" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/left.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>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../include/swiper/swiper-bundle.min.css" />
|
||||
<script type="text/javascript" src="../include/swiper/swiper-bundle.min.js"></script>
|
||||
<script type="text/javascript" src="../data/text.js"></script>
|
||||
|
||||
<script type="text/javascript" src="js/left.js"></script>
|
||||
</head>
|
||||
<body class="ZScrol" onLoad="OnInit()">
|
||||
<div id="LeftBoard">
|
||||
<div id="LoginArea">
|
||||
<div id="Login1">
|
||||
<div id="Icon1"><img id="BBLIcon" src="../image/logo2.png" /></div>
|
||||
<div id="LoginBtn" class="TextS1" style="font-weight: 700;" onClick="OnLoginOrRegister()"><span class="trans" tid="t26">login</span>/<span class="trans" tid="t27">register</span></div>
|
||||
</div>
|
||||
|
||||
<div id="Login2">
|
||||
<div>
|
||||
<img id="UserAvatarIcon" src="img/c.jpg" onerror="this.onerror=null;this.src='img/c.jpg';" />
|
||||
</div>
|
||||
<div id="UserName" class="TextS1"></div>
|
||||
<div id="LogoutBtn" class="Btn trans" tid="t50" onClick="OnLogOut()">log out</div>
|
||||
</div>
|
||||
|
||||
<div id="NoPluginTip">
|
||||
<div id="NoPluginText"><a class="RedFont trans" tid="t76">Network plugin not detected. Click </a><a Class="LinkBtn trans" onClick="BeginDownloadNetworkPlugin()" tid="t77">here</a><a class="RedFont trans" tid="t78"> to install it.</a></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="BtnArea">
|
||||
<div menu="home" class="BtnItem BtnItemSelected" onClick="GotoMenu('home')">
|
||||
<div class="BtnIcon "><img class="LeftIcon" src="img/left_home.svg" /></div>
|
||||
<div class="BtnText trans" tid="t114">Home</div>
|
||||
</div>
|
||||
<div menu="recent" class="BtnItem" onClick="GotoMenu('recent')">
|
||||
<div class="BtnIcon "><img class="LeftIcon" src="img/left_recent.svg" /></div>
|
||||
<div class="BtnText trans" tid="t35">Recent</div>
|
||||
</div>
|
||||
<div menu="online" class="BtnItem" onClick="GotoMenu('online')">
|
||||
<div class="BtnIcon"><img class="LeftIcon" src="img/left_online.svg" /></div>
|
||||
<div class="BtnText trans" tid="t107">Online Models</div>
|
||||
<div id="OnlineNewTag" class="BtnNewIcon">New</div>
|
||||
</div>
|
||||
<div menu="makerlab" class="BtnItem" onClick="GotoMenu('makerlab')">
|
||||
<div class="BtnIcon "><img class="LeftIcon" src="img/left_ml.svg" /></div>
|
||||
<div class="BtnText trans" tid="">Makerlab</div>
|
||||
<div id="MakerlabNewTag" class="BtnNewIcon">New</div>
|
||||
</div>
|
||||
<div menu="manual" class="BtnItem" onClick="GotoMenu('manual')">
|
||||
<div class="BtnIcon "><img class="LeftIcon" src="img/left_manual.svg" /></div>
|
||||
<div class="BtnText trans" tid="t87">User Manual</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
113
resources/web/homepage2/manual.html
Normal file
@ -0,0 +1,113 @@
|
||||
<!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>homepage</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/manual.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/home.js"></script>
|
||||
</head>
|
||||
<body class="ZScrol">
|
||||
|
||||
<div id="WikiGuideBoard" >
|
||||
<div class="GuideBlock" onClick="OpenWikiUrl('https://wiki.bambulab.com/en/software/bambu-studio/studio-quick-start')">
|
||||
<div class="UG_IMG"><img src="img/quick_start.png" /></div>
|
||||
<div class="UG_TITLE trans TextS1" tid="wk1">Quick Start</div>
|
||||
<div class="UG_DESC trans" tid="wk2">This article introduces the most basic usage of Bambu Studio. It guides users to configure software, create projects, and complete the first printing task step by step. </div>
|
||||
</div>
|
||||
<div class="GuideBlock" onClick="OpenWikiUrl('https://wiki.bambulab.com/en/software/bambu-studio/project-based-workflow')">
|
||||
<div class="UG_IMG"><img src="img/project_based_workflow.png" /></div>
|
||||
<div class="UG_TITLE trans TextS1" tid="wk3">Project Based Workflow</div>
|
||||
<div class="UG_DESC trans" tid="wk4">Bambu Studio has put forward a leading workflow to truly achieve an “all in one” project. Based on the mainstream 3MF project format, it provides a series of revolutionary new features, such as Multi-Plate Support, a Project Resource Manager, and Assembly/Part View. It greatly improves the efficiency of both creators and regular users.</div>
|
||||
</div>
|
||||
<div class="GuideBlock" onClick="OpenWikiUrl('https://wiki.bambulab.com/en/software/bambu-studio/high-speed-print-at-quality')">
|
||||
<div class="UG_IMG"><img src="img/high_speed_print_at_quality.png" /></div>
|
||||
<div class="UG_TITLE trans TextS1" tid="wk5">High Speed Print at Quality</div>
|
||||
<div class="UG_DESC trans" tid="wk6">It is challenging to print at high speed while maintaining high quality. Bambu Studio makes this happen.
|
||||
"Arch Move" makes the toolhead move smoothly and reduces the machine's vibration. The smart cooling is based on fine-tuned cooling parameters for each filament type.
|
||||
"Auto slow down" for overhang walls works to prevent deformation at high speeds.</div>
|
||||
</div>
|
||||
<div class="GuideBlock" onClick="OpenWikiUrl('https://wiki.bambulab.com/en/software/bambu-studio/multi-color-printing')">
|
||||
<div class="UG_IMG"><img src="img/multi_color_printing.png" /></div>
|
||||
<div class="UG_TITLE trans TextS1" tid="wk7">Multi-Color Printing</div>
|
||||
<div class="UG_DESC trans" tid="wk8">Bambu Studio provides versatile colorizing tools to make a colorful model. You can freely add/remove filaments in a project and colorize your model with different brushes. Before printing, each filament will be auto-mapped to an AMS slot, not needing to manually change the spool placement in the AMS.</div>
|
||||
</div>
|
||||
<div class="GuideBlock" onClick="OpenWikiUrl('https://wiki.bambulab.com/en/software/bambu-studio/how-to-set-slicing-parameters')">
|
||||
<div class="UG_IMG"><img src="img/setting_guide_of_slicing_parameters.png" /></div>
|
||||
<div class="UG_TITLE trans TextS1" tid="wk9">Setting Guide of Slicing Parameters</div>
|
||||
<div class="UG_DESC trans" tid="wk10">The parameter management features in Bambu Studio provide very flexible and powerful control over the slicing process. This article introduces the organization of parameters and provides some skills on taking full advantage of these capabilities.</div>
|
||||
</div>
|
||||
<div class="GuideBlock" onClick="OpenWikiUrl('https://wiki.bambulab.com/en/software/bambu-studio/remote-control')">
|
||||
<div class="UG_IMG"><img src="img/remote_control_and_monitoring.png" /></div>
|
||||
<div class="UG_TITLE trans TextS1" tid="wk11">Remote Control & Monitoring</div>
|
||||
<div class="UG_DESC trans" tid="wk12">Bambu Studio support sending print job to your printer over WAN/LAN network, controlling & monitoring every aspect of your 3D printer and printing jobs. If you have more than one printer, you can easily switch between them in the device list.</div>
|
||||
</div>
|
||||
<div class="GuideBlock" onClick="OpenWikiUrl('https://wiki.bambulab.com/en/software/bambu-studio/step')">
|
||||
<div class="UG_IMG"><img src="img/step.png" /></div>
|
||||
<div class="UG_TITLE trans TextS1" tid="wk13">STEP Format</div>
|
||||
<div class="UG_DESC trans" tid="wk14">Compared with STL, STEP brings more effective information. Thanks to the high accuracy of STEP, a lot of extrusion paths can be generated as arcs. STEP also includes the assembly relationship of each part of a model, which can be used to restore the assembly view after a model is split.</div>
|
||||
</div>
|
||||
<div class="GuideBlock" onClick="OpenWikiUrl('https://wiki.bambulab.com/en/software/bambu-studio/3d-text')">
|
||||
<div class="UG_IMG"><img src="img/3d_text.png" /></div>
|
||||
<div class="UG_TITLE trans TextS1" tid="wk15">3D Text</div>
|
||||
<div class="UG_DESC trans" tid="wk16">With 3D Text tool, users can easily create various 3D text shapes in the project, making the model more personalized. Bambu Studio provides dozens of fonts and supports bold and italic styles to give text greater flexibility.</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
<script type="text/javascript">
|
||||
//HandleStudio(TestData);
|
||||
document.onkeydown = function (event) {
|
||||
var e = event || window.event || arguments.callee.caller.arguments[0];
|
||||
|
||||
if (e.ctrlKey && e.metaKey)
|
||||
OutputKey(e.keyCode, true, false, true);
|
||||
else if (e.ctrlKey)
|
||||
OutputKey(e.keyCode, true, false, false);
|
||||
else if (e.metaKey)
|
||||
OutputKey(e.keyCode, false, false, true);
|
||||
|
||||
if (e.shiftKey && e.ctrlKey)
|
||||
OutputKey(e.keyCode, true, true, false);
|
||||
|
||||
if (e.shiftKey && e.metaKey)
|
||||
OutputKey(e.keyCode, false, true, true);
|
||||
|
||||
if (window.event) {
|
||||
try { e.keyCode = 0; } catch (e) { }
|
||||
e.returnValue = false;
|
||||
}
|
||||
};
|
||||
|
||||
window.addEventListener('mousewheel', function (event) {
|
||||
if (event.ctrlKey === true || event.metaKey) {
|
||||
event.preventDefault();
|
||||
}
|
||||
}, { passive: false });
|
||||
|
||||
</script>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
236
resources/web/homepage2/online.html
Normal file
@ -0,0 +1,236 @@
|
||||
<!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>homepage</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/online.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/home.js"></script>
|
||||
</head>
|
||||
<body class="ZScrol" onLoad="OnLineInit()">
|
||||
<div id="HotModelArea">
|
||||
<div id="Online_Models_Bar" class="Title_Bar">
|
||||
<div class="Title_Left_Area">
|
||||
<img class="TitleSmallIcon" src="./img/fire.svg" />
|
||||
<div class="Content-Title trans TextS1" tid="t107">Online Models</div>
|
||||
</div>
|
||||
<div class="Right_Title_More" onClick="SwtichLeftMenu('online')"><span class="trans" tid="t108">MORE</span> ></div>
|
||||
</div>
|
||||
<div id="ForU_Models_Bar" class="Title_Bar">
|
||||
<div class="Title_Left_Area">
|
||||
<img class="TitleSmallIcon" src="./img/foru.svg" />
|
||||
<div class="Content-Title trans TextS1" tid="">For You</div>
|
||||
</div>
|
||||
<div class="Right_Title_More" onClick="SwtichLeftMenu('online')"><span class="trans" tid="t108">MORE</span> ></div>
|
||||
</div>
|
||||
<div id="HotModelList">
|
||||
<div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
|
||||
<div class="HotModel_PrevBlock">
|
||||
<img class="HotModel_PrevImg" src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Designer_Info">
|
||||
<div class="HotModel_Author_HeadIcon">
|
||||
<img src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Right_1">
|
||||
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
|
||||
<div class="HotModel_Right_1_2">
|
||||
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
|
||||
<div class="HotModel_click_info TextS2">
|
||||
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
|
||||
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
|
||||
<div class="HotModel_PrevBlock">
|
||||
<img class="HotModel_PrevImg" src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Designer_Info">
|
||||
<div class="HotModel_Author_HeadIcon">
|
||||
<img src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Right_1">
|
||||
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
|
||||
<div class="HotModel_Right_1_2">
|
||||
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
|
||||
<div class="HotModel_click_info TextS2">
|
||||
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
|
||||
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
|
||||
<div class="HotModel_PrevBlock">
|
||||
<img class="HotModel_PrevImg" src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Designer_Info">
|
||||
<div class="HotModel_Author_HeadIcon">
|
||||
<img src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Right_1">
|
||||
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
|
||||
<div class="HotModel_Right_1_2">
|
||||
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
|
||||
<div class="HotModel_click_info TextS2">
|
||||
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
|
||||
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
|
||||
<div class="HotModel_PrevBlock">
|
||||
<img class="HotModel_PrevImg" src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Designer_Info">
|
||||
<div class="HotModel_Author_HeadIcon">
|
||||
<img src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Right_1">
|
||||
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
|
||||
<div class="HotModel_Right_1_2">
|
||||
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
|
||||
<div class="HotModel_click_info TextS2">
|
||||
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
|
||||
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
|
||||
<div class="HotModel_PrevBlock">
|
||||
<img class="HotModel_PrevImg" src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Designer_Info">
|
||||
<div class="HotModel_Author_HeadIcon">
|
||||
<img src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Right_1">
|
||||
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
|
||||
<div class="HotModel_Right_1_2">
|
||||
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
|
||||
<div class="HotModel_click_info TextS2">
|
||||
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
|
||||
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
|
||||
<div class="HotModel_PrevBlock">
|
||||
<img class="HotModel_PrevImg" src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Designer_Info">
|
||||
<div class="HotModel_Author_HeadIcon">
|
||||
<img src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Right_1">
|
||||
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
|
||||
<div class="HotModel_Right_1_2">
|
||||
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
|
||||
<div class="HotModel_click_info TextS2">
|
||||
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
|
||||
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
|
||||
<div class="HotModel_PrevBlock">
|
||||
<img class="HotModel_PrevImg" src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Designer_Info">
|
||||
<div class="HotModel_Author_HeadIcon">
|
||||
<img src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Right_1">
|
||||
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
|
||||
<div class="HotModel_Right_1_2">
|
||||
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
|
||||
<div class="HotModel_click_info TextS2">
|
||||
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
|
||||
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
|
||||
<div class="HotModel_PrevBlock">
|
||||
<img class="HotModel_PrevImg" src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Designer_Info">
|
||||
<div class="HotModel_Author_HeadIcon">
|
||||
<img src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Right_1">
|
||||
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
|
||||
<div class="HotModel_Right_1_2">
|
||||
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
|
||||
<div class="HotModel_click_info TextS2">
|
||||
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
|
||||
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
|
||||
<div class="HotModel_PrevBlock">
|
||||
<img class="HotModel_PrevImg" src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Designer_Info">
|
||||
<div class="HotModel_Author_HeadIcon">
|
||||
<img src="img/a.jpg" />
|
||||
</div>
|
||||
<div class="HotModel_Right_1">
|
||||
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
|
||||
<div class="HotModel_Right_1_2">
|
||||
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
|
||||
<div class="HotModel_click_info TextS2">
|
||||
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
|
||||
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
179
resources/web/homepage2/recent.html
Normal file
@ -0,0 +1,179 @@
|
||||
<!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>homepage</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/recent.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/home.js"></script>
|
||||
</head>
|
||||
<body class="ZScrol" onLoad="OnRecentInit()">
|
||||
|
||||
<!----------Project Menu---------->
|
||||
<div id="MenuArea">
|
||||
<div class="Menu_Btn Btn_White" onClick="OnClickOpenProject()">
|
||||
<img src="img/project_open.svg" /><span class="trans" tid='t33'>Open Project</span>
|
||||
</div>
|
||||
<div class="Menu_Btn Btn_Green" onClick="OnClickNewProject()">
|
||||
<img src="img/project_new.svg" /><span class="trans" tid='t32'>Create new project</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="RecentFileArea">
|
||||
<div id="RecentTitleBlock">
|
||||
<div id="Recent_LEFT_Title">
|
||||
<img class="TitleSmallIcon" src="./img/t2.svg" />
|
||||
<div id="RecentTitle" class="Content-Title trans TextS1" tid="t35">Recently opened</div>
|
||||
</div>
|
||||
<div id="Right_Title_Block">
|
||||
<div id="Menu_Batch" class="Right_Title_Btn Btn_White" onClick="OnBatchDelete()">
|
||||
<img class="Right_Title_Btn_Icon" src="img/batch.svg" /><span class="trans" tid="t115">Batch</span>
|
||||
</div>
|
||||
<div id="Menu_Clear" class="Right_Title_Btn Btn_White" onClick="OnDeleteAllRecentFiles()">
|
||||
<img class="Right_Title_Btn_Icon" src="img/clear.svg" /><span class="trans" tid="t12">Clear</span>
|
||||
</div>
|
||||
<div id="Menu_Delete" class="Right_Title_Btn Btn_Green" onClick="OnMultiDelete()">
|
||||
<img class="Right_Title_Btn_Icon" src="img/delete2.svg" /><span class="trans" tid="t88">Remove</span>
|
||||
</div>
|
||||
<div id="Menu_Cancel" class="Right_Title_Btn Btn_White" onClick="OnCancelDelete()">
|
||||
<img class="Right_Title_Btn_Icon" src="img/cancel.svg" /><span class="trans" tid="t38">Cancel</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="FileList">
|
||||
<!-- <div class="FileItem GuideBlock" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
|
||||
<a class="FileTip" title="d:\model\11.3mf"></a>
|
||||
<div class="FileImg"><img src="img/wiki.png"/></div>
|
||||
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
|
||||
<div class="FileDate">2021/12/27 09:22</div>
|
||||
<div class="FileMask"></div>
|
||||
<div class="FileCheckBox"></div>
|
||||
</div>
|
||||
<div class="FileItem GuideBlock" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
|
||||
<a class="FileTip" title="d:\model\11.3mf"></a>
|
||||
<div class="FileImg"><img src="img/wiki3.png"/></div>
|
||||
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
|
||||
<div class="FileDate">2021/12/27 09:22</div>
|
||||
<div class="FileMask"></div>
|
||||
<div class="FileCheckBox"></div>
|
||||
</div>
|
||||
<div class="FileItem GuideBlock" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
|
||||
<a class="FileTip" title="d:\model\11.3mf"></a>
|
||||
<div class="FileImg"><img src="img/wiki.png"/></div>
|
||||
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
|
||||
<div class="FileDate">2021/12/27 09:22</div>
|
||||
<div class="FileMask"></div>
|
||||
<div class="FileCheckBox"></div>
|
||||
</div>
|
||||
<div class="FileItem GuideBlock" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
|
||||
<a class="FileTip" title="d:\model\11.3mf"></a>
|
||||
<div class="FileImg"><img src="img/wiki3.png"/></div>
|
||||
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
|
||||
<div class="FileDate">2021/12/27 09:22</div>
|
||||
<div class="FileMask"></div>
|
||||
<div class="FileCheckBox"></div>
|
||||
</div>
|
||||
<div class="FileItem GuideBlock" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
|
||||
<a class="FileTip" title="d:\model\11.3mf"></a>
|
||||
<div class="FileImg"><img src="img/wiki.png"/></div>
|
||||
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
|
||||
<div class="FileDate">2021/12/27 09:22</div>
|
||||
<div class="FileMask"></div>
|
||||
<div class="FileCheckBox"></div>
|
||||
</div>
|
||||
<div class="FileItem GuideBlock" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
|
||||
<a class="FileTip" title="d:\model\11.3mf"></a>
|
||||
<div class="FileImg"><img src="img/wiki3.png"/></div>
|
||||
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
|
||||
<div class="FileDate">2021/12/27 09:22</div>
|
||||
<div class="FileMask"></div>
|
||||
<div class="FileCheckBox"></div>
|
||||
</div>
|
||||
<div class="FileItem GuideBlock" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
|
||||
<a class="FileTip" title="d:\model\11.3mf"></a>
|
||||
<div class="FileImg"><img src="img/wiki.png"/></div>
|
||||
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
|
||||
<div class="FileDate">2021/12/27 09:22</div>
|
||||
<div class="FileMask"></div>
|
||||
<div class="FileCheckBox"></div>
|
||||
</div>
|
||||
<div class="FileItem GuideBlock" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
|
||||
<a class="FileTip" title="d:\model\11.3mf"></a>
|
||||
<div class="FileImg"><img src="img/wiki3.png"/></div>
|
||||
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
|
||||
<div class="FileDate">2021/12/27 09:22</div>
|
||||
<div class="FileMask"></div>
|
||||
<div class="FileCheckBox"></div>
|
||||
</div>
|
||||
<div class="FileItem GuideBlock" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
|
||||
<a class="FileTip" title="d:\model\11.3mf"></a>
|
||||
<div class="FileImg"><img src="img/wiki.png"/></div>
|
||||
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
|
||||
<div class="FileDate">2021/12/27 09:22</div>
|
||||
<div class="FileMask"></div>
|
||||
<div class="FileCheckBox"></div>
|
||||
</div>
|
||||
<div class="FileItem GuideBlock" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
|
||||
<a class="FileTip" title="d:\model\11.3mf"></a>
|
||||
<div class="FileImg"><img src="img/wiki3.png"/></div>
|
||||
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
|
||||
<div class="FileDate">2021/12/27 09:22</div>
|
||||
<div class="FileMask"></div>
|
||||
<div class="FileCheckBox"></div>
|
||||
</div>
|
||||
<div class="FileItem GuideBlock" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
|
||||
<a class="FileTip" title="d:\model\11.3mf"></a>
|
||||
<div class="FileImg"><img src="img/wiki.png"/></div>
|
||||
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
|
||||
<div class="FileDate">2021/12/27 09:22</div>
|
||||
<div class="FileMask"></div>
|
||||
<div class="FileCheckBox"></div>
|
||||
</div>
|
||||
<div class="FileItem GuideBlock" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
|
||||
<a class="FileTip" title="d:\model\11.3mf"></a>
|
||||
<div class="FileImg"><img src="img/wiki3.png"/></div>
|
||||
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
|
||||
<div class="FileDate">2021/12/27 09:22</div>
|
||||
<div class="FileMask"></div>
|
||||
<div class="FileCheckBox"></div>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="recnet_context_menu">
|
||||
<div id="CT_Delete_Bar" class="CT_Item" onClick="OnDeleteRecentFile()">
|
||||
<div class="CT_Icon CT_Delete"></div>
|
||||
<div class="CT_Text trans" tid="t88">clear</div>
|
||||
</div>
|
||||
<div id="CT_Folder_Bar" class="CT_Item " onClick="OnExploreRecentFile()" >
|
||||
<div class="CT_Icon CT_Explore"></div>
|
||||
<div class="CT_Text trans" tid="t89">open in explorer </div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
31
resources/web/homepage2/test.html
Normal file
@ -0,0 +1,31 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Cache-Control" content="max-age=7200" />
|
||||
<title>homepage</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/home.css" />
|
||||
<script type="text/javascript" src="js/jquery-3.6.0.min.js"></script>
|
||||
<script type="text/javascript" src="../data/text.js"></script>
|
||||
<script type="text/javascript" src="js/json2.js"></script>
|
||||
<script type="text/javascript" src="js/globalapi.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="d1">
|
||||
<div id="d2"></div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -23,7 +23,8 @@
|
||||
</head>
|
||||
<body onLoad="OnInit()">
|
||||
|
||||
<div id="EmptyArea">
|
||||
|
||||
<div id="EmptyArea">
|
||||
<div><img src="img/null.png"></div>
|
||||
<div>no model information</div>
|
||||
</div>
|
||||
@ -50,7 +51,7 @@
|
||||
<div id="Model_Basic" class="InfoBlock">
|
||||
<div id="Model_Name_Area" class="Text_TitleBoard">
|
||||
<div id="Model_Name_Line" class="Text_TitleArea">
|
||||
<div class="Text_Title" id="ModelNameBar" ><div class="trans" tid='t98' >Model name</div><div>:</div><div title="xxxxxxxxxx" id="ModelName" style="margin-left: 8px;">xxxxxxxxxx</div></div>
|
||||
<div class="Text_Title" id="ModelNameBar" ><div class="trans" tid='t98'>Model name</div><div>:</div><div class="" title="xxxxxxxxxx" id="ModelName" onClick="JumpToWeb()">xxxxxxxxxx</div></div>
|
||||
<div><span id="ModelAuthorType" class="trans" tid='t92'>Model Author</span><span>:</span><span id="ModelAuthorName" style="margin-left: 8px;" class="Text_Value">xxxxxxx</span></div>
|
||||
</div>
|
||||
<div id="ModelLicenceImg"><img src="img/by-nc-nd.png"></div>
|
||||
|
@ -125,7 +125,8 @@ body
|
||||
{
|
||||
overflow:hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
text-overflow: ellipsis;
|
||||
margin-left: 6px;
|
||||
}
|
||||
|
||||
|
||||
@ -241,6 +242,13 @@ body
|
||||
align-items: flex-end;
|
||||
}
|
||||
|
||||
.NameCanClick
|
||||
{
|
||||
color: #00AE42;
|
||||
text-decoration: underline;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#Model_Preview_Image
|
||||
{
|
||||
height: 480px;
|
||||
|
@ -1,6 +1,8 @@
|
||||
var ModelSwiper=null;
|
||||
var ProfileSwiper=null;
|
||||
|
||||
var m_ModelID=null;
|
||||
|
||||
function OnInit()
|
||||
{
|
||||
console.log(" 页面加载完成 ");
|
||||
@ -153,7 +155,13 @@ function HandleStudio(pVal)
|
||||
else if(strCmd=='clear_3mf_info')
|
||||
{
|
||||
ShowProjectInfo( null );
|
||||
}
|
||||
}
|
||||
else if(strCmd=='3mf_detail_set_modelid')
|
||||
{
|
||||
let ModelID=pVal['model_id'];
|
||||
|
||||
UpdateModelID( ModelID );
|
||||
}
|
||||
}
|
||||
|
||||
function ShowProjectInfo( p3MF )
|
||||
@ -166,11 +174,12 @@ function ShowProjectInfo( p3MF )
|
||||
}
|
||||
|
||||
//Check Data
|
||||
let nModelID=p3MF.hasOwnProperty('model_id')?p3MF['model_id']:0;
|
||||
let pModel=p3MF['model'];
|
||||
let pFile=p3MF['file'];
|
||||
let pProfile=p3MF['profile'];
|
||||
|
||||
ShowModelInfo( pModel );
|
||||
ShowModelInfo( pModel,nModelID );
|
||||
ShowFileInfo( pFile );
|
||||
ShowProfilelInfo(pProfile);
|
||||
|
||||
@ -197,7 +206,7 @@ function ShowProjectInfo( p3MF )
|
||||
AddScrollEvent();
|
||||
}
|
||||
|
||||
function ShowModelInfo( pModel )
|
||||
function ShowModelInfo( pModel, nID )
|
||||
{
|
||||
//==========Model Info==========
|
||||
let sModelName=decodeURIComponent(pModel.name);
|
||||
@ -206,6 +215,9 @@ function ShowModelInfo( pModel )
|
||||
let sLicence=pModel.license.toUpperCase();
|
||||
let sModelDesc=decodeURIComponent(pModel.description);
|
||||
|
||||
if( pModel.hasOwnProperty('model_id') )
|
||||
UpdateModelID( pModel['model_id'] );
|
||||
|
||||
SendWXDebugInfo("Model Name: "+sModelName);
|
||||
|
||||
$('#ModelName').html(sModelName);
|
||||
@ -580,9 +592,33 @@ function OnClickOpenImage( F_ID )
|
||||
$("img#"+F_ID).click();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function UpdateModelID( ModelId )
|
||||
{
|
||||
m_ModelID=ModelId;
|
||||
if( ModelId!='' )
|
||||
{
|
||||
if( !$('#ModelName').hasClass('NameCanClick') )
|
||||
$('#ModelName').addClass('NameCanClick');
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#ModelName').removeClass('NameCanClick');
|
||||
}
|
||||
}
|
||||
|
||||
function JumpToWeb()
|
||||
{
|
||||
if(m_ModelID=='')
|
||||
return;
|
||||
|
||||
var tSend={};
|
||||
tSend['sequence_id']=Math.round(new Date() / 1000);
|
||||
tSend['command']="modelmall_model_open";
|
||||
tSend['data']={};
|
||||
tSend['data']['id']=m_ModelID+'';
|
||||
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -3825,13 +3825,13 @@ void GUI_App::get_login_info()
|
||||
if (m_agent->is_user_login()) {
|
||||
std::string login_cmd = m_agent->build_login_cmd();
|
||||
wxString strJS = wxString::Format("window.postMessage(%s)", login_cmd);
|
||||
GUI::wxGetApp().run_script(strJS);
|
||||
GUI::wxGetApp().run_script_left(strJS);
|
||||
}
|
||||
else {
|
||||
m_agent->user_logout();
|
||||
std::string logout_cmd = m_agent->build_logout_cmd();
|
||||
wxString strJS = wxString::Format("window.postMessage(%s)", logout_cmd);
|
||||
GUI::wxGetApp().run_script(strJS);
|
||||
GUI::wxGetApp().run_script_left(strJS);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3975,7 +3975,7 @@ std::string GUI_App::handle_web_request(std::string cmd)
|
||||
else if (command_str.compare("modelmall_model_advise_get") == 0) {
|
||||
if (mainframe && this->app_config->get("staff_pick_switch") == "true") {
|
||||
if (mainframe->m_webview) {
|
||||
mainframe->m_webview->SendDesignStaffpick(has_model_mall());
|
||||
mainframe->m_webview->SendDesignStaffpick(has_model_mall());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4086,6 +4086,44 @@ std::string GUI_App::handle_web_request(std::string cmd)
|
||||
if (path.has_value()) {
|
||||
wxLaunchDefaultBrowser(path.value());
|
||||
}
|
||||
}
|
||||
else if (command_str.compare("homepage_leftmenu_clicked") == 0) {
|
||||
if (root.get_child_optional("menu") != boost::none) {
|
||||
std::string strMenu = root.get_optional<std::string>("menu").value();
|
||||
int nRefresh = root.get_child_optional("refresh") == boost::none ? 0 : root.get_optional<int>("refresh").value();
|
||||
|
||||
if (mainframe->m_webview) {
|
||||
mainframe->m_webview->SwitchWebContent(strMenu, nRefresh);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (command_str.compare("homepage_leftmenu_switch") == 0) {
|
||||
if (root.get_child_optional("menu") != boost::none) {
|
||||
std::string strMenu = root.get_optional<std::string>("menu").value();
|
||||
|
||||
if (mainframe->m_webview) { mainframe->m_webview->SwitchLeftMenu(strMenu); }
|
||||
}
|
||||
}
|
||||
else if (command_str.compare("homepage_makerlab_get") == 0) {
|
||||
if (mainframe->m_webview) { mainframe->m_webview->SendMakerlabList(); }
|
||||
}
|
||||
else if (command_str.compare("homepage_makerlab_open") == 0) {
|
||||
if (root.get_child_optional("url") != boost::none) {
|
||||
std::string strUrl = root.get_optional<std::string>("url").value();
|
||||
|
||||
if (mainframe->m_webview) { mainframe->m_webview->OpenOneMakerlab(strUrl); }
|
||||
}
|
||||
}
|
||||
else if (command_str.compare("makerworld_model_open") == 0)
|
||||
{
|
||||
if (root.get_child_optional("model") != boost::none) {
|
||||
pt::ptree data_node = root.get_child("model");
|
||||
boost::optional<std::string> path = data_node.get_optional<std::string>("url");
|
||||
if (path.has_value())
|
||||
{
|
||||
wxGetApp().request_model_download(path.value());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6206,6 +6244,12 @@ void GUI_App::run_script(wxString js)
|
||||
return mainframe->RunScript(js);
|
||||
}
|
||||
|
||||
void GUI_App::run_script_left(wxString js)
|
||||
{
|
||||
if (mainframe)
|
||||
return mainframe->RunScriptLeft(js);
|
||||
}
|
||||
|
||||
Notebook* GUI_App::tab_panel() const
|
||||
{
|
||||
if (mainframe)
|
||||
|
@ -554,6 +554,7 @@ public:
|
||||
void open_publish_page_dialog();
|
||||
void remove_mall_system_dialog();
|
||||
void run_script(wxString js);
|
||||
void run_script_left(wxString js);
|
||||
bool is_adding_script_handler() { return m_adding_script_handler; }
|
||||
void set_adding_script_handler(bool status) { m_adding_script_handler = status; }
|
||||
|
||||
|
@ -3724,6 +3724,12 @@ void MainFrame::RunScript(wxString js)
|
||||
m_webview->RunScript(js);
|
||||
}
|
||||
|
||||
void MainFrame::RunScriptLeft(wxString js)
|
||||
{
|
||||
if (m_webview != nullptr)
|
||||
m_webview->RunScriptLeft(js);
|
||||
}
|
||||
|
||||
void MainFrame::technology_changed()
|
||||
{
|
||||
// upadte DiffDlg
|
||||
|
@ -342,6 +342,7 @@ public:
|
||||
bool is_printer_view() const;
|
||||
void refresh_plugin_tips();
|
||||
void RunScript(wxString js);
|
||||
void RunScriptLeft(wxString js);
|
||||
void show_device(bool bBBLPrinter);
|
||||
|
||||
// OrcaSlicer calibration
|
||||
|
@ -32,16 +32,20 @@ namespace GUI {
|
||||
END_EVENT_TABLE()
|
||||
|
||||
|
||||
|
||||
WebViewPanel::WebViewPanel(wxWindow *parent)
|
||||
: wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize)
|
||||
{
|
||||
wxString url = wxString::Format("file://%s/web/homepage/index.html", from_u8(resources_dir()));
|
||||
wxString strlang = wxGetApp().current_language_code_safe();
|
||||
if (strlang != "")
|
||||
url = wxString::Format("file://%s/web/homepage/index.html?lang=%s", from_u8(resources_dir()), strlang);
|
||||
wxString UrlLeft = wxString::Format("file://%s/web/homepage2/left.html", from_u8(resources_dir()));
|
||||
wxString UrlRight = wxString::Format("file://%s/web/homepage2/home.html", from_u8(resources_dir()));
|
||||
|
||||
wxBoxSizer* topsizer = new wxBoxSizer(wxVERTICAL);
|
||||
wxString strlang = wxGetApp().current_language_code_safe();
|
||||
if (strlang != "")
|
||||
{
|
||||
UrlLeft = wxString::Format("file://%s/web/homepage2/left.html?lang=%s", from_u8(resources_dir()), strlang);
|
||||
UrlRight = wxString::Format("file://%s/web/homepage2/home.html?lang=%s", from_u8(resources_dir()), strlang);
|
||||
}
|
||||
|
||||
topsizer = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
#if !BBL_RELEASE_TO_PUBLIC
|
||||
// Create the button
|
||||
@ -82,26 +86,49 @@ WebViewPanel::WebViewPanel(wxWindow *parent)
|
||||
// Create the info panel
|
||||
m_info = new wxInfoBar(this);
|
||||
topsizer->Add(m_info, wxSizerFlags().Expand());
|
||||
|
||||
//Create Webview Panel
|
||||
m_home_web = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
// Create the webview
|
||||
m_browser = WebView::CreateWebView(this, url);
|
||||
m_browserLeft = WebView::CreateWebView(this, UrlLeft);
|
||||
//m_browserRight->SetBackgroundColour(*wxYELLOW);
|
||||
if (m_browserLeft == nullptr) {
|
||||
wxLogError("Could not init m_browser");
|
||||
return;
|
||||
}
|
||||
m_browserLeft->SetSize(wxSize(FromDIP(224), -1));
|
||||
m_browserLeft->SetMinSize(wxSize(FromDIP(224), -1));
|
||||
m_browserLeft->SetMaxSize(wxSize(FromDIP(224), -1));
|
||||
//m_browser->Hide();
|
||||
|
||||
m_browser = WebView::CreateWebView(this, UrlRight);
|
||||
//m_browserRight->SetBackgroundColour(*wxRED);
|
||||
if (m_browser == nullptr) {
|
||||
wxLogError("Could not init m_browser");
|
||||
return;
|
||||
}
|
||||
m_browser->Hide();
|
||||
SetSizer(topsizer);
|
||||
|
||||
topsizer->Add(m_browser, wxSizerFlags().Expand().Proportion(1));
|
||||
|
||||
// Log backend information
|
||||
/* m_browser->GetUserAgent() may lead crash
|
||||
if (wxGetApp().get_mode() == comDevelop) {
|
||||
wxLogMessage(wxWebView::GetBackendVersionInfo().ToString());
|
||||
wxLogMessage("Backend: %s Version: %s", m_browser->GetClassInfo()->GetClassName(),
|
||||
wxWebView::GetBackendVersionInfo().ToString());
|
||||
wxLogMessage("User Agent: %s", m_browser->GetUserAgent());
|
||||
m_onlinefirst = false;
|
||||
m_online_spec_id = "";
|
||||
auto host = wxGetApp().get_model_http_url(wxGetApp().app_config->get_country_code());
|
||||
std::string mwurl = (boost::format("%1%studio/webview?from=bambustudio") % host).str();
|
||||
//std::string mwurl = (boost::format("%1%?from=bambustudio") % host).str();
|
||||
m_browserMW = WebView::CreateWebView(this, mwurl);
|
||||
if (m_browserMW == nullptr) {
|
||||
wxLogError("Could not init m_browserMW");
|
||||
return;
|
||||
}
|
||||
*/
|
||||
|
||||
m_browserMW->Hide();
|
||||
|
||||
m_home_web->Add(m_browserLeft, 0, wxEXPAND | wxALL, 0);
|
||||
m_home_web->Add(m_browser, 1, wxEXPAND | wxALL, 0);
|
||||
m_home_web->Add(m_browserMW, 1, wxEXPAND | wxALL, 0);
|
||||
|
||||
topsizer->Add(m_home_web,1, wxEXPAND | wxALL, 0);
|
||||
|
||||
SetSizer(topsizer);
|
||||
|
||||
// Create the Tools menu
|
||||
m_tools_menu = new wxMenu();
|
||||
@ -221,8 +248,9 @@ WebViewPanel::WebViewPanel(wxWindow *parent)
|
||||
m_LoginUpdateTimer = nullptr;
|
||||
|
||||
Bind(wxEVT_SHOW, [this](auto &e) {
|
||||
if (e.IsShown() && m_has_pending_staff_pick)
|
||||
if (e.IsShown() && m_has_pending_staff_pick) {
|
||||
SendDesignStaffpick(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -421,9 +449,28 @@ void WebViewPanel::OnClose(wxCloseEvent& evt)
|
||||
|
||||
void WebViewPanel::OnFreshLoginStatus(wxTimerEvent &event)
|
||||
{
|
||||
static int loginstatus = -1;
|
||||
|
||||
wxString mwnow = m_browserMW->GetCurrentURL();
|
||||
|
||||
auto mainframe = Slic3r::GUI::wxGetApp().mainframe;
|
||||
if (mainframe && mainframe->m_webview == this)
|
||||
Slic3r::GUI::wxGetApp().get_login_info();
|
||||
|
||||
if (wxGetApp().is_user_login()) {
|
||||
if (loginstatus != 1)
|
||||
{
|
||||
loginstatus = 1;
|
||||
|
||||
UpdateMakerworldLoginStatus();
|
||||
}
|
||||
} else {
|
||||
if (loginstatus != 0) {
|
||||
loginstatus = 0;
|
||||
|
||||
SetMakerworldPageLoginStatus(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WebViewPanel::SendRecentList(int images)
|
||||
@ -441,46 +488,152 @@ void WebViewPanel::SendRecentList(int images)
|
||||
|
||||
void WebViewPanel::SendDesignStaffpick(bool on)
|
||||
{
|
||||
if (on) {
|
||||
if (!IsShownOnScreen()) {
|
||||
m_has_pending_staff_pick = true;
|
||||
return;
|
||||
try {
|
||||
if (on) {
|
||||
if (!IsShownOnScreen()) {
|
||||
m_has_pending_staff_pick = true;
|
||||
return;
|
||||
}
|
||||
|
||||
//For U Pick
|
||||
NetworkAgent *agent = GUI::wxGetApp().getAgent();
|
||||
if (agent && agent->is_user_login()) {
|
||||
get_user_mw_4u_config([this](std::string body) {
|
||||
if (body.empty() || body.front() != '{') {
|
||||
BOOST_LOG_TRIVIAL(warning) << "get_mw_user_preference failed " + body;
|
||||
return;
|
||||
}
|
||||
CallAfter([this, body] {
|
||||
json jPrefer = json::parse(body);
|
||||
|
||||
int nRecommendStatus = jPrefer["recommendStatus"];
|
||||
if (nRecommendStatus != 1 && nRecommendStatus != 3)
|
||||
{
|
||||
// Default : Staff Pick
|
||||
get_design_staffpick(0, 10, [this](std::string body) {
|
||||
if (body.empty() || body.front() != '{') {
|
||||
BOOST_LOG_TRIVIAL(warning) << "get_design_staffpick failed " + body;
|
||||
return;
|
||||
}
|
||||
CallAfter([this, body] {
|
||||
auto body2 = from_u8(body);
|
||||
body2.insert(1, "\"command\": \"modelmall_model_advise_get\", ");
|
||||
RunScript(wxString::Format("window.postMessage(%s)", body2));
|
||||
|
||||
//Show Online Menu
|
||||
SetLeftMenuShow("online", 1);
|
||||
});
|
||||
});
|
||||
} else {
|
||||
//For U Pick
|
||||
get_4u_staffpick(0, 10, [this](std::string body) {
|
||||
if (body.empty() || body.front() != '{') {
|
||||
BOOST_LOG_TRIVIAL(warning) << "get_mw_user_4ulist failed " + body;
|
||||
return;
|
||||
}
|
||||
CallAfter([this, body] {
|
||||
auto body2 = from_u8(body);
|
||||
body2.insert(1, "\"command\": \"modelmall_model_customized_get\", ");
|
||||
RunScript(wxString::Format("window.postMessage(%s)", body2));
|
||||
|
||||
//Show Online Menu
|
||||
SetLeftMenuShow("online", 1);
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// Default : Staff Pick
|
||||
get_design_staffpick(0, 10, [this](std::string body) {
|
||||
if (body.empty() || body.front() != '{') {
|
||||
BOOST_LOG_TRIVIAL(warning) << "get_design_staffpick failed " + body;
|
||||
return;
|
||||
}
|
||||
CallAfter([this, body] {
|
||||
auto body2 = from_u8(body);
|
||||
body2.insert(1, "\"command\": \"modelmall_model_advise_get\", ");
|
||||
RunScript(wxString::Format("window.postMessage(%s)", body2));
|
||||
|
||||
//Show Online Menu
|
||||
SetLeftMenuShow("online", 1);
|
||||
});
|
||||
});
|
||||
}
|
||||
} else {
|
||||
std::string body2 = "{\"total\":0, \"hits\":[]}";
|
||||
body2.insert(1, "\"command\": \"modelmall_model_advise_get\", ");
|
||||
RunScript(wxString::Format("window.postMessage(%s)", body2));
|
||||
}
|
||||
get_design_staffpick(0, 60, [this](std::string body) {
|
||||
} catch (nlohmann::detail::parse_error &err) {
|
||||
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": parse got a nlohmann::detail::parse_error, reason = " << err.what();
|
||||
return;
|
||||
} catch (std::exception &e) {
|
||||
// wxMessageBox(e.what(), "", MB_OK);
|
||||
// wxLogMessage("GUIDE: LoadFamily Error: %s", e.what());
|
||||
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": parse got exception: " << e.what();
|
||||
return;
|
||||
}
|
||||
|
||||
m_has_pending_staff_pick = false;
|
||||
}
|
||||
|
||||
void WebViewPanel::SendMakerlabList( )
|
||||
{
|
||||
try {
|
||||
get_makerlab_list([this](std::string body) {
|
||||
if (body.empty() || body.front() != '{') {
|
||||
BOOST_LOG_TRIVIAL(warning) << "get_design_staffpick failed " + body;
|
||||
BOOST_LOG_TRIVIAL(warning) << "get_makerlab_list failed " + body;
|
||||
return;
|
||||
}
|
||||
CallAfter([this, body] {
|
||||
auto body2 = from_u8(body);
|
||||
body2.insert(1, "\"command\": \"modelmall_model_advise_get\", ");
|
||||
body2.insert(1, "\"command\": \"homepage_makerlab_get\", ");
|
||||
RunScript(wxString::Format("window.postMessage(%s)", body2));
|
||||
|
||||
SetLeftMenuShow("makerlab", 1);
|
||||
});
|
||||
});
|
||||
} else {
|
||||
std::string body2 = "{\"total\":0, \"hits\":[]}";
|
||||
body2.insert(1, "\"command\": \"modelmall_model_advise_get\", ");
|
||||
RunScript(wxString::Format("window.postMessage(%s)", body2));
|
||||
} catch (nlohmann::detail::parse_error &err) {
|
||||
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": parse got a nlohmann::detail::parse_error, reason = " << err.what();
|
||||
return;
|
||||
} catch (std::exception &e) {
|
||||
// wxMessageBox(e.what(), "", MB_OK);
|
||||
// wxLogMessage("GUIDE: LoadFamily Error: %s", e.what());
|
||||
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": parse got exception: " << e.what();
|
||||
return;
|
||||
}
|
||||
|
||||
m_has_pending_staff_pick = false;
|
||||
}
|
||||
|
||||
void WebViewPanel::OpenModelDetail(std::string id, NetworkAgent *agent)
|
||||
{
|
||||
std::string url;
|
||||
if ((agent ? agent->get_model_mall_detail_url(&url, id) : get_model_mall_detail_url(&url, id)) == 0)
|
||||
{
|
||||
if (url.find("?") != std::string::npos)
|
||||
{
|
||||
url += "&from=bambustudio";
|
||||
} else {
|
||||
url += "?from=bambustudio";
|
||||
}
|
||||
|
||||
wxLaunchDefaultBrowser(url);
|
||||
}
|
||||
//void WebViewPanel::OpenModelDetail(std::string id, NetworkAgent *agent)
|
||||
//{
|
||||
// std::string url;
|
||||
// if ((agent ? agent->get_model_mall_detail_url(&url, id) : get_model_mall_detail_url(&url, id)) == 0)
|
||||
// {
|
||||
// if (url.find("?") != std::string::npos)
|
||||
// {
|
||||
// url += "&from=bambustudio";
|
||||
// } else {
|
||||
// url += "?from=bambustudio";
|
||||
// }
|
||||
//
|
||||
// wxLaunchDefaultBrowser(url);
|
||||
// }
|
||||
//}
|
||||
|
||||
void WebViewPanel::OpenModelDetail(std::string id, NetworkAgent *agent)
|
||||
{
|
||||
SwitchLeftMenu("online");
|
||||
|
||||
m_online_spec_id = id;
|
||||
}
|
||||
|
||||
|
||||
void WebViewPanel::SendLoginInfo()
|
||||
{
|
||||
if (wxGetApp().getAgent()) {
|
||||
@ -526,6 +679,137 @@ void WebViewPanel::get_design_staffpick(int offset, int limit, std::function<voi
|
||||
.perform();
|
||||
}
|
||||
|
||||
void WebViewPanel::get_makerlab_list(std::function<void(std::string)> callback)
|
||||
{
|
||||
std::string url = wxGetApp().get_http_url(wxGetApp().app_config->get_country_code(), "v1/operation-service/makerlabhomepage");
|
||||
|
||||
Http http = Http::get(url);
|
||||
http.header("accept", "application/json")
|
||||
.header("Content-Type", "application/json")
|
||||
.on_complete([this, callback](std::string body, unsigned status) { callback(body); })
|
||||
.on_error([this, callback](std::string body, std::string error, unsigned status) { callback(body + error); })
|
||||
.perform();
|
||||
}
|
||||
|
||||
unsigned char ToHex(unsigned char x) { return x > 9 ? x + 55 : x + 48; }
|
||||
|
||||
unsigned char FromHex(unsigned char x)
|
||||
{
|
||||
unsigned char y;
|
||||
if (x >= 'A' && x <= 'Z')
|
||||
y = x - 'A' + 10;
|
||||
else if (x >= 'a' && x <= 'z')
|
||||
y = x - 'a' + 10;
|
||||
else if (x >= '0' && x <= '9')
|
||||
y = x - '0';
|
||||
else
|
||||
assert(0);
|
||||
return y;
|
||||
}
|
||||
|
||||
std::string UrlEncode(const std::string &str)
|
||||
{
|
||||
std::string strTemp = "";
|
||||
size_t length = str.length();
|
||||
for (size_t i = 0; i < length; i++) {
|
||||
if (isalnum((unsigned char) str[i]) || (str[i] == '-') || (str[i] == '_') || (str[i] == '.') || (str[i] == '~'))
|
||||
strTemp += str[i];
|
||||
else if (str[i] == ' ')
|
||||
strTemp += "+";
|
||||
else {
|
||||
strTemp += '%';
|
||||
strTemp += ToHex((unsigned char) str[i] >> 4);
|
||||
strTemp += ToHex((unsigned char) str[i] % 16);
|
||||
}
|
||||
}
|
||||
return strTemp;
|
||||
}
|
||||
|
||||
std::string UrlDecode(const std::string &str)
|
||||
{
|
||||
std::string strTemp = "";
|
||||
size_t length = str.length();
|
||||
for (size_t i = 0; i < length; i++) {
|
||||
if (str[i] == '+')
|
||||
strTemp += ' ';
|
||||
else if (str[i] == '%') {
|
||||
assert(i + 2 < length);
|
||||
unsigned char high = FromHex((unsigned char) str[++i]);
|
||||
unsigned char low = FromHex((unsigned char) str[++i]);
|
||||
strTemp += high * 16 + low;
|
||||
} else
|
||||
strTemp += str[i];
|
||||
}
|
||||
return strTemp;
|
||||
}
|
||||
|
||||
//void WebViewPanel::UpdateMakerworldLoginStatus() {
|
||||
// NetworkAgent *agent = GUI::wxGetApp().getAgent();
|
||||
// if (agent == nullptr) return;
|
||||
//
|
||||
// int ret = agent->get_login_ticket([this](std::string body) {
|
||||
// if (body.empty() || body.front() != '{') {
|
||||
// BOOST_LOG_TRIVIAL(warning) << "get_login_ticket failed " + body;
|
||||
//
|
||||
// SetMakerworldPageLoginStatus(false);
|
||||
//
|
||||
// return;
|
||||
// }
|
||||
// CallAfter([this, body] {
|
||||
// json jticket = json::parse(body);
|
||||
//
|
||||
// std::string ticket = jticket["ticket"];
|
||||
//
|
||||
// SetMakerworldPageLoginStatus(true, ticket);
|
||||
// });
|
||||
// }
|
||||
// );
|
||||
//}
|
||||
|
||||
void WebViewPanel::UpdateMakerworldLoginStatus()
|
||||
{
|
||||
NetworkAgent *agent = GUI::wxGetApp().getAgent();
|
||||
if (agent == nullptr) return;
|
||||
|
||||
std::string newticket;
|
||||
int ret = agent->request_bind_ticket(&newticket);
|
||||
if (ret==0) SetMakerworldPageLoginStatus(true, newticket);
|
||||
}
|
||||
|
||||
|
||||
void WebViewPanel::SetMakerworldPageLoginStatus(bool login ,wxString ticket)
|
||||
{
|
||||
if (m_browserMW == nullptr) return;
|
||||
|
||||
std::string h = wxGetApp().get_model_http_url(wxGetApp().app_config->get_country_code());
|
||||
wxString mw_currenturl = m_browserMW->GetCurrentURL();
|
||||
wxString mw_jumpurl = "";
|
||||
|
||||
if ( login )
|
||||
{
|
||||
mw_jumpurl = wxString::Format("%sapi/sign-in/ticket?to=%s&ticket=%s", h, UrlEncode(std::string(mw_currenturl.mb_str())), ticket);
|
||||
}
|
||||
else {
|
||||
mw_jumpurl = wxString::Format("%sapi/sign-out?to=%s", h, UrlEncode(std::string(mw_currenturl.mb_str())));
|
||||
}
|
||||
|
||||
m_browserMW->LoadURL(mw_jumpurl);
|
||||
}
|
||||
|
||||
|
||||
void WebViewPanel::get_user_mw_4u_config(std::function<void(std::string)> callback) {
|
||||
NetworkAgent *agent = GUI::wxGetApp().getAgent();
|
||||
if (agent)
|
||||
int ret = agent->get_mw_user_preference(callback);
|
||||
}
|
||||
|
||||
void WebViewPanel::get_4u_staffpick(int seed, int limit, std::function<void(std::string)> callback)
|
||||
{
|
||||
NetworkAgent *agent = GUI::wxGetApp().getAgent();
|
||||
if (agent)
|
||||
int ret = agent->get_mw_user_4ulist(seed,limit,callback);
|
||||
}
|
||||
|
||||
int WebViewPanel::get_model_mall_detail_url(std::string *url, std::string id)
|
||||
{
|
||||
// https://makerhub-qa.bambu-lab.com/en/models/2077
|
||||
@ -552,13 +836,34 @@ void WebViewPanel::OnNavigationRequest(wxWebViewEvent& evt)
|
||||
BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << ": " << evt.GetTarget().ToUTF8().data();
|
||||
const wxString &url = evt.GetURL();
|
||||
if (url.StartsWith("File://") || url.StartsWith("file://")) {
|
||||
if (!url.Contains("/web/homepage/index.html")) {
|
||||
if (!url.Contains("/web/homepage2/")) {
|
||||
auto file = wxURL::Unescape(wxURL(url).GetPath());
|
||||
#ifdef _WIN32
|
||||
if (file.StartsWith('/'))
|
||||
file = file.Mid(1);
|
||||
#endif
|
||||
wxGetApp().plater()->load_files(wxArrayString{1, &file});
|
||||
evt.Veto();
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
wxString surl = url;
|
||||
if (surl.find("?") != std::string::npos) {
|
||||
surl = surl.substr(0, surl.find("?")).Lower();
|
||||
}
|
||||
|
||||
if (surl.EndsWith(".zip") ||
|
||||
surl.EndsWith(".pdf") ||
|
||||
surl.EndsWith(".stl") ||
|
||||
surl.EndsWith(".3mf") ||
|
||||
surl.EndsWith(".xlsx") ||
|
||||
surl.EndsWith(".xls") ||
|
||||
surl.EndsWith(".txt")
|
||||
)
|
||||
{
|
||||
wxLaunchDefaultBrowser(url);
|
||||
|
||||
evt.Veto();
|
||||
return;
|
||||
}
|
||||
@ -591,7 +896,16 @@ void WebViewPanel::OnNavigationRequest(wxWebViewEvent& evt)
|
||||
*/
|
||||
void WebViewPanel::OnNavigationComplete(wxWebViewEvent& evt)
|
||||
{
|
||||
m_browser->Show();
|
||||
if (evt.GetId() == m_browserMW->GetId()) {
|
||||
m_onlinefirst = true;
|
||||
|
||||
if (m_contentname == "online") { // conf save
|
||||
m_browser->Hide();
|
||||
m_browserMW->Show();
|
||||
}
|
||||
}
|
||||
|
||||
//m_browser->Show();
|
||||
Layout();
|
||||
BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << ": " << evt.GetTarget().ToUTF8().data();
|
||||
if (wxGetApp().get_mode() == comDevelop)
|
||||
@ -607,11 +921,14 @@ void WebViewPanel::OnDocumentLoaded(wxWebViewEvent& evt)
|
||||
{
|
||||
BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << ": " << evt.GetTarget().ToUTF8().data();
|
||||
// Only notify if the document is the main frame, not a subframe
|
||||
if (evt.GetURL() == m_browser->GetCurrentURL())
|
||||
if (evt.GetURL() == m_browser->GetCurrentURL()) {
|
||||
if (wxGetApp().get_mode() == comDevelop) wxLogMessage("%s", "Document loaded; url='" + evt.GetURL() + "'");
|
||||
}
|
||||
else if (evt.GetURL() == m_browserLeft->GetCurrentURL())
|
||||
{
|
||||
if (wxGetApp().get_mode() == comDevelop)
|
||||
wxLogMessage("%s", "Document loaded; url='" + evt.GetURL() + "'");
|
||||
|
||||
}
|
||||
|
||||
UpdateState();
|
||||
}
|
||||
|
||||
@ -745,6 +1062,18 @@ void WebViewPanel::RunScript(const wxString& javascript)
|
||||
WebView::RunScript(m_browser, javascript);
|
||||
}
|
||||
|
||||
void WebViewPanel::RunScriptLeft(const wxString &javascript)
|
||||
{
|
||||
// Remember the script we run in any case, so the next time the user opens
|
||||
// the "Run Script" dialog box, it is shown there for convenient updating.
|
||||
m_javascript = javascript;
|
||||
|
||||
if (!m_browserLeft) return;
|
||||
|
||||
WebView::RunScript(m_browserLeft, javascript);
|
||||
}
|
||||
|
||||
|
||||
void WebViewPanel::OnRunScriptString(wxCommandEvent& WXUNUSED(evt))
|
||||
{
|
||||
RunScript("setCount(345);");
|
||||
@ -902,9 +1231,166 @@ void WebViewPanel::OnError(wxWebViewEvent& evt)
|
||||
m_info->ShowMessage(_L("An error occurred loading ") + evt.GetURL() + "\n" +
|
||||
"'" + category + "'", wxICON_ERROR);
|
||||
|
||||
if (evt.GetInt() == wxWEBVIEW_NAV_ERR_CONNECTION && evt.GetId() == m_browserMW->GetId())
|
||||
{
|
||||
m_onlinefirst = false;
|
||||
|
||||
if (m_contentname == "online")
|
||||
{
|
||||
wxString errurl = evt.GetURL();
|
||||
|
||||
wxString UrlRight = wxString::Format("file://%s/web/homepage2/disconnect.html", from_u8(resources_dir()));
|
||||
|
||||
wxString strlang = wxGetApp().current_language_code_safe();
|
||||
if (strlang != "") {
|
||||
UrlRight = wxString::Format("file://%s/web/homepage2/disconnect.html?lang=%s", from_u8(resources_dir()), strlang);
|
||||
}
|
||||
|
||||
m_browser->LoadURL(UrlRight);
|
||||
m_browser->Show();
|
||||
m_browserMW->Hide();
|
||||
}
|
||||
}
|
||||
|
||||
UpdateState();
|
||||
}
|
||||
|
||||
void WebViewPanel::SwitchWebContent(std::string modelname,int refresh)
|
||||
{
|
||||
m_contentname = modelname;
|
||||
|
||||
static bool bFirst = false;
|
||||
if (bFirst == false) {
|
||||
bFirst = true;
|
||||
CheckMenuNewTag();
|
||||
}
|
||||
|
||||
wxString strlang = wxGetApp().current_language_code_safe();
|
||||
|
||||
if (modelname.compare("makerlab")==0) {
|
||||
auto host = wxGetApp().get_model_http_url(wxGetApp().app_config->get_country_code());
|
||||
std::string LabUrl = (boost::format("%1%makerlab?from=bambustudio") % host ).str();
|
||||
|
||||
wxLaunchDefaultBrowser(LabUrl);
|
||||
|
||||
//conf save
|
||||
wxGetApp().app_config->set_str("homepage", "makerlab_clicked", "1");
|
||||
wxGetApp().app_config->save();
|
||||
|
||||
return;
|
||||
}
|
||||
else if (modelname.compare("online") == 0) {
|
||||
if (m_online_spec_id != "")
|
||||
{
|
||||
auto host = wxGetApp().get_model_http_url(wxGetApp().app_config->get_country_code());
|
||||
std::string mwurl = (boost::format("%1%studio/webview?modelid=%2%&from=bambustudio") % host % m_online_spec_id).str();
|
||||
|
||||
m_onlinefirst = true;
|
||||
m_browserMW->LoadURL(mwurl);
|
||||
|
||||
m_online_spec_id = "";
|
||||
}
|
||||
else {
|
||||
if (m_onlinefirst == false) {
|
||||
m_onlinefirst = true;
|
||||
refresh = 1; // Force Refresh
|
||||
|
||||
m_browserMW->Reload();
|
||||
} else {
|
||||
if (refresh == 1)
|
||||
m_browserMW->Reload();
|
||||
else {
|
||||
m_browserMW->Show();
|
||||
m_browser->Hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
GetSizer()->Layout();
|
||||
|
||||
// conf save
|
||||
wxGetApp().app_config->set_str("homepage", "makerlab_clicked", "1");
|
||||
wxGetApp().app_config->save();
|
||||
}
|
||||
else if (modelname.compare("home") == 0 || modelname.compare("recent") == 0 || modelname.compare("manual") == 0 )
|
||||
{
|
||||
wxString UrlRight = wxString::Format("file://%s/web/homepage2/%s.html", from_u8(resources_dir()), modelname);
|
||||
if (strlang != "")
|
||||
UrlRight = wxString::Format("%s?lang=%s", UrlRight, strlang);
|
||||
|
||||
if (m_browser != NULL) m_browser->LoadURL(UrlRight);
|
||||
|
||||
m_browserMW->Hide();
|
||||
m_browser->Show();
|
||||
}
|
||||
}
|
||||
|
||||
void WebViewPanel::SwitchLeftMenu(std::string strMenu)
|
||||
{
|
||||
if (!m_browserLeft) return;
|
||||
|
||||
json m_Res = json::object();
|
||||
m_Res["command"] = "homepage_leftmenu_clicked";
|
||||
m_Res["sequence_id"] = "10001";
|
||||
m_Res["menu"] = strMenu;
|
||||
|
||||
// wxString strJS = wxString::Format("HandleStudio(%s)", m_Res.dump(-1, ' ', false, json::error_handler_t::ignore));
|
||||
wxString strJS = wxString::Format("HandleStudio(%s)", m_Res.dump(-1, ' ', true));
|
||||
|
||||
WebView::RunScript(m_browserLeft, strJS);
|
||||
}
|
||||
|
||||
void WebViewPanel::OpenOneMakerlab(std::string url) {
|
||||
auto host = wxGetApp().get_model_http_url(wxGetApp().app_config->get_country_code());
|
||||
std::string LabUrl = (boost::format("%1%%2%") % host % url).str();
|
||||
|
||||
wxLaunchDefaultBrowser(LabUrl);
|
||||
}
|
||||
|
||||
|
||||
void WebViewPanel::CheckMenuNewTag() {
|
||||
std::string sClick = wxGetApp().app_config->get("homepage", "online_clicked");
|
||||
ShowMenuNewTag("online", sClick);
|
||||
|
||||
sClick = wxGetApp().app_config->get("homepage", "makerlab_clicked");
|
||||
ShowMenuNewTag("makerlab", sClick);
|
||||
}
|
||||
|
||||
void WebViewPanel::ShowMenuNewTag(std::string menuname, std::string show)
|
||||
{
|
||||
if (!m_browserLeft) return;
|
||||
|
||||
if (menuname != "online" && menuname != "makerlab") return;
|
||||
|
||||
json m_Res = json::object();
|
||||
m_Res["command"] = "homepage_leftmenu_newtag";
|
||||
m_Res["sequence_id"] = "10001";
|
||||
m_Res["menu"] = menuname;
|
||||
|
||||
|
||||
if (show != "1")
|
||||
m_Res["show"] = 1;
|
||||
else
|
||||
m_Res["show"] = 0;
|
||||
|
||||
wxString strJS = wxString::Format("HandleStudio(%s)", m_Res.dump(-1, ' ', true));
|
||||
WebView::RunScript(m_browserLeft, strJS);
|
||||
}
|
||||
|
||||
void WebViewPanel::SetLeftMenuShow(std::string menuname, int show)
|
||||
{
|
||||
if (!m_browserLeft) return;
|
||||
|
||||
json m_Res = json::object();
|
||||
m_Res["command"] = "homepage_leftmenu_show";
|
||||
m_Res["sequence_id"] = "10001";
|
||||
m_Res["menu"] = menuname;
|
||||
m_Res["show"] = show;
|
||||
|
||||
wxString strJS = wxString::Format("HandleStudio(%s)", m_Res.dump(-1, ' ', true));
|
||||
WebView::RunScript(m_browserLeft, strJS);
|
||||
}
|
||||
|
||||
|
||||
SourceViewDialog::SourceViewDialog(wxWindow* parent, wxString source) :
|
||||
wxDialog(parent, wxID_ANY, "Source Code",
|
||||
|
@ -66,6 +66,7 @@ public:
|
||||
void OnRedo(wxCommandEvent& evt);
|
||||
void OnMode(wxCommandEvent& evt);
|
||||
void RunScript(const wxString& javascript);
|
||||
void RunScriptLeft(const wxString &javascript);
|
||||
void OnRunScriptString(wxCommandEvent& evt);
|
||||
void OnRunScriptInteger(wxCommandEvent& evt);
|
||||
void OnRunScriptDouble(wxCommandEvent& evt);
|
||||
@ -93,19 +94,43 @@ public:
|
||||
void OnFreshLoginStatus(wxTimerEvent &event);
|
||||
|
||||
public:
|
||||
void SwitchWebContent(std::string modelname, int refresh=0);
|
||||
void SwitchLeftMenu(std::string strMenu);
|
||||
void OpenOneMakerlab(std::string url);
|
||||
|
||||
void CheckMenuNewTag();
|
||||
void ShowMenuNewTag(std::string menuname, std::string show);
|
||||
void SetLeftMenuShow(std::string menuname, int show);
|
||||
|
||||
void SendRecentList(int images);
|
||||
void SendDesignStaffpick(bool on);
|
||||
void SendMakerlabList();
|
||||
void OpenModelDetail(std::string id, NetworkAgent *agent);
|
||||
void SendLoginInfo();
|
||||
void ShowNetpluginTip();
|
||||
|
||||
void get_design_staffpick(int offset, int limit, std::function<void(std::string)> callback);
|
||||
void get_user_mw_4u_config(std::function<void(std::string)> callback);
|
||||
void get_4u_staffpick(int seed, int limit, std::function<void(std::string)> callback);
|
||||
void get_makerlab_list(std::function<void(std::string)> callback);
|
||||
int get_model_mall_detail_url(std::string *url, std::string id);
|
||||
|
||||
void UpdateMakerworldLoginStatus();
|
||||
void SetMakerworldPageLoginStatus(bool login, wxString ticket = "");
|
||||
|
||||
void update_mode();
|
||||
private:
|
||||
|
||||
wxBoxSizer *topsizer;
|
||||
|
||||
wxBoxSizer* m_home_web;
|
||||
wxWebView* m_browser;
|
||||
wxWebView* m_browserLeft;
|
||||
wxWebView * m_browserMW;
|
||||
std::string m_contentname;
|
||||
bool m_onlinefirst;
|
||||
std::string m_online_spec_id;
|
||||
|
||||
wxBoxSizer *bSizer_toolbar;
|
||||
wxButton * m_button_back;
|
||||
wxButton * m_button_forward;
|
||||
|
@ -116,6 +116,8 @@ func_get_oss_config NetworkAgent::get_oss_config_ptr = nullptr;
|
||||
func_put_rating_picture_oss NetworkAgent::put_rating_picture_oss_ptr = nullptr;
|
||||
func_get_model_mall_rating_result NetworkAgent::get_model_mall_rating_result_ptr = nullptr;
|
||||
|
||||
func_get_mw_user_preference NetworkAgent::get_mw_user_preference_ptr = nullptr;
|
||||
func_get_mw_user_4ulist NetworkAgent::get_mw_user_4ulist_ptr = nullptr;
|
||||
|
||||
NetworkAgent::NetworkAgent(std::string log_dir)
|
||||
{
|
||||
@ -257,8 +259,8 @@ int NetworkAgent::initialize_network_module(bool using_backup)
|
||||
get_slice_info_ptr = reinterpret_cast<func_get_slice_info>(get_network_function("bambu_network_get_slice_info"));
|
||||
query_bind_status_ptr = reinterpret_cast<func_query_bind_status>(get_network_function("bambu_network_query_bind_status"));
|
||||
modify_printer_name_ptr = reinterpret_cast<func_modify_printer_name>(get_network_function("bambu_network_modify_printer_name"));
|
||||
get_camera_url_ptr = reinterpret_cast<func_get_camera_url>(get_network_function("bambu_network_get_camera_url"));
|
||||
get_design_staffpick_ptr = reinterpret_cast<func_get_design_staffpick>(get_network_function("bambu_network_get_design_staffpick"));
|
||||
get_camera_url_ptr = reinterpret_cast<func_get_camera_url>(get_network_function("bambu_network_get_camera_url"));
|
||||
get_design_staffpick_ptr = reinterpret_cast<func_get_design_staffpick>(get_network_function("bambu_network_get_design_staffpick"));
|
||||
start_publish_ptr = reinterpret_cast<func_start_pubilsh>(get_network_function("bambu_network_start_publish"));
|
||||
get_profile_3mf_ptr = reinterpret_cast<func_get_profile_3mf>(get_network_function("bambu_network_get_profile_3mf"));
|
||||
get_model_publish_url_ptr = reinterpret_cast<func_get_model_publish_url>(get_network_function("bambu_network_get_model_publish_url"));
|
||||
@ -277,6 +279,9 @@ int NetworkAgent::initialize_network_module(bool using_backup)
|
||||
put_rating_picture_oss_ptr = reinterpret_cast<func_put_rating_picture_oss>(get_network_function("bambu_network_put_rating_picture_oss"));
|
||||
get_model_mall_rating_result_ptr = reinterpret_cast<func_get_model_mall_rating_result>(get_network_function("bambu_network_get_model_mall_rating"));
|
||||
|
||||
get_mw_user_preference_ptr = reinterpret_cast<func_get_mw_user_preference>(get_network_function("bambu_network_get_mw_user_preference"));
|
||||
get_mw_user_4ulist_ptr = reinterpret_cast<func_get_mw_user_4ulist>(get_network_function("bambu_network_get_mw_user_4ulist"));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -390,6 +395,9 @@ int NetworkAgent::unload_network_module()
|
||||
put_rating_picture_oss_ptr = nullptr;
|
||||
put_model_mall_rating_url_ptr = nullptr;
|
||||
get_model_mall_rating_result_ptr = nullptr;
|
||||
|
||||
get_mw_user_preference_ptr = nullptr;
|
||||
get_mw_user_4ulist_ptr = nullptr;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -1197,6 +1205,27 @@ int NetworkAgent::get_design_staffpick(int offset, int limit, std::function<void
|
||||
return ret;
|
||||
}
|
||||
|
||||
int NetworkAgent::get_mw_user_preference(std::function<void(std::string)> callback)
|
||||
{
|
||||
int ret = 0;
|
||||
if (network_agent && get_mw_user_preference_ptr) {
|
||||
ret = get_mw_user_preference_ptr(network_agent,callback);
|
||||
if (ret) BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << boost::format(" error: network_agent=%1%, ret=%2%") % network_agent % ret;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
int NetworkAgent::get_mw_user_4ulist(int seed, int limit, std::function<void(std::string)> callback)
|
||||
{
|
||||
int ret = 0;
|
||||
if (network_agent && get_mw_user_4ulist_ptr) {
|
||||
ret = get_mw_user_4ulist_ptr(network_agent,seed, limit, callback);
|
||||
if (ret) BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << boost::format(" error: network_agent=%1%, ret=%2%") % network_agent % ret;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int NetworkAgent::start_publish(PublishParams params, OnUpdateStatusFn update_fn, WasCancelledFn cancel_fn, std::string *out)
|
||||
{
|
||||
int ret = 0;
|
||||
|
@ -98,6 +98,8 @@ typedef int (*func_put_rating_picture_oss)(
|
||||
void *agent, std::string &config, std::string &pic_oss_path, std::string model_id, int profile_id, unsigned int &http_code, std::string &http_error);
|
||||
typedef int (*func_get_model_mall_rating_result)(void *agent, int job_id, std::string &rating_result, unsigned int &http_code, std::string &http_error);
|
||||
|
||||
typedef int (*func_get_mw_user_preference)(void *agent, std::function<void(std::string)> callback);
|
||||
typedef int (*func_get_mw_user_4ulist)(void *agent, int seed, int limit, std::function<void(std::string)> callback);
|
||||
|
||||
//the NetworkAgent class
|
||||
class NetworkAgent
|
||||
@ -201,6 +203,10 @@ public:
|
||||
int put_rating_picture_oss(std::string &config, std::string &pic_oss_path, std::string model_id, int profile_id, unsigned int &http_code, std::string &http_error);
|
||||
int get_model_mall_rating_result(int job_id, std::string &rating_result, unsigned int &http_code, std::string &http_error);
|
||||
bool get_track_enable() { return enable_track; }
|
||||
|
||||
int get_mw_user_preference(std::function<void(std::string)> callback);
|
||||
int get_mw_user_4ulist(int seed, int limit, std::function<void(std::string)> callback);
|
||||
|
||||
private:
|
||||
bool enable_track = false;
|
||||
void* network_agent { nullptr };
|
||||
@ -293,6 +299,9 @@ private:
|
||||
static func_get_oss_config get_oss_config_ptr;
|
||||
static func_put_rating_picture_oss put_rating_picture_oss_ptr;
|
||||
static func_get_model_mall_rating_result get_model_mall_rating_result_ptr;
|
||||
|
||||
static func_get_mw_user_preference get_mw_user_preference_ptr;
|
||||
static func_get_mw_user_4ulist get_mw_user_4ulist_ptr;
|
||||
};
|
||||
|
||||
}
|
||||
|