Initial release

This commit is contained in:
Louis Rossmann
2026-05-11 07:39:33 -05:00
commit c661ddc2eb
16967 changed files with 4075897 additions and 0 deletions

View File

@@ -0,0 +1,130 @@
body
{
background-color:#242428;
}
*
{
border-color: #3E3E45;
}
.TextS1
{
color:#efeff0;
}
.TextS2
{
color:#B3B3B5;
}
.ZScrol::-webkit-scrollbar-thumb {/*滚动条里面小方块*/
background-color: #939594;
}
.ZScrol::-webkit-scrollbar-track {/*滚动条里面轨道*/
background: #161817;
}
/*----Left Menu Button----*/
.BtnItem
{
color:#B3B3B5;
}
.BtnItem:hover
{
color: #efeff0;
background-color: #223C3C;
}
.BtnItem:hover .LeftIcon
{
filter: brightness(300%);
}
.BtnItemSelected
{
color: #efeff0;
background-color: #223C3C;
}
.BtnItemSelected .LeftIcon
{
filter: brightness(300%);
}
/*-----Right Top MenuBtn-----*/
.MenuItem:hover
{
border-color: #00675b;
background-color: #223C3C;
}
.FileImg
{
background-color: #36363C; /*ORCA use darker color for dark theme for thumbnails*/
}
#recnet_context_menu
{
color: #efeff0;
background-color:#242428;
border: 0px;
box-shadow: 0px 0px 3px #DCDCDC;
}
.CT_Item:hover
{
background-color:#00675b; /*ORCA color*/
}
/*----User Manual------*/
.UG_DESC
{
color:#818183;
}
/*---Staff PIck----*/
#HotModel_Swiper
{
}
.HotModel_NameText
{
height: 32px;
}
.HotModelPiece
{
border: 1px solid #4C4C55;
box-shadow: 0px 2px 12px rgba(0, 0, 0, 0.04);
background-color: #4C4C55;
}
#HotModel_RIGHT_Title
{
color: #818183;
}
.swiper
{
--swiper-navigation-color: #EFEFF0;/* 单独设置按钮颜色 */
}
.swiper-button-prev
{
background: rgba(54, 54, 60, 0.88);
border: 1px solid rgba(129, 129, 131, 0.64);
}
.swiper-button-next
{
background: rgba(54, 54, 60, 0.88);
border: 1px solid rgba(129, 129, 131, 0.64);
}

View File

@@ -0,0 +1,738 @@
*
{
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: #00ffea;
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:262px;
height: 100%;
}
#LoginArea
{
height: 180px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
flex-wrap: nowrap;
position: relative;
width:262px;
}
#Login1
{
height:36px;
line-height: 36px;
display: flex;
flex-direction: column; /*ORCA*/
align-items: center; /*Allow icon centered vertically*/
justify-content: center; /*and use login button in new line*/
user-select: none;
}
#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:#00ffd9;
}
#Icon1
{
margin-right: 10px;
}
#BBLIcon
{
height:96px; /*ORCA use bigger icon to fit logo size*/
}
#Login2
{
display: none;
flex-direction: column;
align-items: center;
text-align: center;
width: 262px;
}
#UserAvatarIcon
{
height: 85px;
}
#UserName
{
white-space: nowrap;
text-overflow: ellipsis;
text-align: center;
overflow: hidden;
width: 80%;
}
#LogoutBtn
{
margin-top: 5px;
}
/*------------------*/
#BtnArea
{
}
.BtnItem
{
padding-left:40px;
height:50px;
line-height: 50px;
display: flex;
justify-content:flex-start;
cursor: pointer;
}
.BtnItem:hover
{
background-color: #BFE1DE; /*ORCA color with %25 opacity*/
}
.BtnItemSelected
{
background-color: #BFE1DE; /*ORCA color with %25 opacity*/
}
.BtnIcon
{
margin-right:6px;
display: flex;
flex-direction: column;
justify-content: center;
}
.LeftIcon
{
width:20px;
height: 20px;
}
/*--------------------*/
#RightBoard
{
width: 100%;
height: 100%;
min-width: 835px;
overflow-y:auto;
}
#ContentBoard
{
overflow-y:auto;
padding: 0px 40px;
display: flex;
flex-direction: column;
position: relative;
height: 100%;
}
.TitleSmallIcon
{
width:30px;
height: 30px;
margin-right: 10px;
}
#MenuArea
{
height: 140px;
display: flex;
align-items: center;
flex: 0 0 140px;
}
.MenuItem
{
border-width: 1px;
border-style: solid;
border-radius: 12px;
height: 101px;
width: 253px;
padding-left: 20px;
display: flex;
justify-content: flex-start;
align-items: center;
margin-right: 16px;
cursor: pointer;
}
.MenuItem:hover
{
border-color: #009688; /*ORCA color*/
background-color: #E5F0EE; /*ORCA color with %25 opacity*/
}
.MenuIcon
{
margin-right: 1em;
}
.MenuIcon img
{
width:56px;
height: 56px;
}
.MenuDesc
{
color: #A8A8A8;
}
.Content-Title
{
line-height: 30px;
font-weight: 700;
}
#HotspotWEB
{
width:100%;
height: 420px;
}
#HotModelBlock
{
display:flex;
align-items: center;
justify-content: space-between;
padding: 0px;
}
#HotModel_LEFT_Title
{
display:flex;
align-items: center;
padding: 6px 0px;
}
#HotModel_RIGHT_Title
{
font-size:16px;
}
.HotModel_PrevImg
{
width: 200px;
height: 148px;
object-fit: cover;
}
#RecentFileArea
{
margin-top: 10px;
flex: 1;
display: flex;
flex-direction: column;
}
#RecentTitleBlock
{
display:flex;
align-items: center;
padding: 6px 0px;
}
#RecentClearAllBtn
{
margin-left: 20px;
display: none;
}
#RecentTitle
{
}
#FileList
{
flex: 1;
display: flex;
flex-wrap: wrap;
align-content: flex-start;
overflow-y: auto;
}
.FileItem
{
width: 184px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
word-break: break-all;
position: relative;
cursor: pointer;
margin: 8px;
}
.FileTip
{
position: absolute;
top: 0px;
left: 0px;
right: 0px;
bottom: 0px;
}
.FileImg
{
text-align: center;
background-color: #E4E4E4;
border-radius: 8px;
width: 184px;
height: 184px;
}
.FileItem img
{
width: 184px;
height: 184px;
border-radius: 8px;
display: inline-block;
object-fit: cover;
}
.FileName
{
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
word-break: break-all;
}
.FileDate
{
color: #A8A8A8;
}
#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:#009688; /*ORCA color*/
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;
}
/*--------Mall------*/
#MallBoard
{
height: 100%;
max-width: 1600px;
overflow-y: hidden;
padding: 0px 40px;
display: none;
}
#MallWeb
{
width: 100%;
height: 95%;
border: 1px solid #D9D9D9;
}
/*------Manual------*/
#ManualBoard
{
height: 100%;
max-width: 1600px;
overflow-y: hidden;
padding: 0px 40px;
display: none;
}
#ManualWeb
{
width: 100%;
height: 95%;
border: 1px solid #D9D9D9;
}
/*---------Wiki----------*/
#WikiGuideBigBoard
{
display:none;
}
#WikiGuideBoard
{
display: flex;
flex-wrap: wrap;
align-content: flex-start;
overflow-y: auto;
margin: 30px 40px;
position: relative;
top: 0px;
bottom: 0px;
right: 0px;
left: 0px;
}
@media screen and (max-width: 1100px) {
.GuideBlock
{
width: calc(50% - 20px);
margin: 0px 10px 40px 10px;
cursor: pointer;
}
}
@media screen and ( min-width:1101px) and ( max-width:1680px )
{
.GuideBlock
{
width: calc(33% - 20px);
margin: 0px 10px 40px 10px;
cursor: pointer;
}
}
@media screen and ( min-width:1681px) and (max-width:2120px ) {
.GuideBlock
{
width: calc(25% - 20px);
margin: 0px 10px 40px 10px;
cursor: pointer;
}
}
@media screen and ( min-width:2121px) and (max-width:2620px ) {
.GuideBlock
{
width: calc(20% - 20px);
margin: 0px 10px 40px 10px;
cursor: pointer;
}
}
@media screen and (min-width:2621px ) and (max-width:3120px ) {
.GuideBlock
{
width: calc(16.6% - 20px);
margin: 0px 10px 40px 10px;
cursor: pointer;
}
}
@media screen and (min-width:3121px ) {
.GuideBlock
{
width: calc(14.2% - 20px);
margin: 0px 10px 40px 10px;
cursor: pointer;
}
}
.UG_IMG
{
width: 100%;
}
.UG_IMG img
{
width: 100%;
border-radius: 5px 5px 0px 0px;
}
.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;
}
/*--Staff Pick--*/
#HotModelArea
{
display: none;
}
#HotModel_Swiper
{
padding: 0px;
}
.HotModel_Designer_Info
{
display:flex;
align-items: center;
height: 28px;
padding: 0px 8px;
}
.HotModel_Designer_Info img
{
width: 16px;
height: 16px;
border-radius: 8px;
}
.HotModel_Designer_Info span
{
margin-left: 6px;
font-size: 12px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
#HotModel_RIGHT_Title:hover
{
cursor: pointer;
color:#009688;
}
.HotModelPiece
{
width: 200px!important;
display:flex;
flex-direction: column;
cursor: pointer;
border: 1px solid #EEEEEE;
box-shadow: 0px 2px 12px rgba(0, 0, 0, 0.04);
border-radius: 8px;
}
.HotModel_PrevBlock
{
height: 150px;
}
.HotModel_PrevImg
{
width: 200px;
height: 150px;
}
.HotModel_NameText
{
height: 32px;
line-height: 32px;
padding: 0px 8px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 14px;
}
.swiper-scrollbar
{
height: 10px!important;
}
.swiper-button-prev
{
width: 40px!important;
height: 40px!important;
border-radius: 20px!important;
background: rgba(244, 244, 244, 0.88);
}
.swiper-button-next
{
width: 40px!important;
height: 40px!important;
border-radius: 20px!important;
background: rgba(244, 244, 244, 0.88);
}
.swiper
{
--swiper-theme-color: #ff6600;/* 设置Swiper风格 */
--swiper-navigation-color: #676767;/* 单独设置按钮颜色 */
--swiper-navigation-size: 12px;/* 设置按钮大小 */
}
.swiper-button-disabled
{
opacity: 1!important;
cursor: pointer!important;
pointer-events: auto!important;
}

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 KiB

View 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

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

View 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

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View 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="#009688" stop-opacity="0.24"/>
<stop offset="1" stop-color="#009688" 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="#009688"/>
<stop offset="1" stop-color="#009688" stop-opacity="0.64"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View 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="#009688" 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="#009688"/>
<stop offset="1" stop-color="#009688" stop-opacity="0.64"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 KiB

View File

@@ -0,0 +1,224 @@
<!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="../include/global.css" /> <!-- ORCA One for all-->
<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>
<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/home.js"></script>
</head>
<body class="ZScrol" onLoad="OnInit()">
<div id="LeftBoard" style="display: none;">
<div id="LoginArea">
<div id="Login1">
<div id="Icon1"><img id="BBLIcon" src="../image/logo.png" /></div> <!-- ORCA use square icon for better consistency on UI -->
<div id="LoginBtn" class="ButtonStyleRegular ButtonTypeWindow" 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="ButtonStyleAlert ButtonTypeWindow 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="recent" class="BtnItem BtnItemSelected" onClick="GotoMenu('recent')">
<div class="BtnIcon "><img class="LeftIcon" src="img/i2.png" /></div>
<div class="trans" tid="t28">recent</div>
</div>
</div>
</div>
<div id="RightBoard">
<div id="ContentBoard" class="ZScrol" board="recent">
<div style="height: 14px;"></div>
<div id="MenuArea">
<!-- <div class="MenuItem" onClick="OnClickModelDepot()">
<div class="MenuIcon"><img src="img/i6.png"></div>
<div>
<div class="trans TextS1" tid="t90">3D Model</div>
<div class="MenuDesc trans" tid="t91">Download 3D Models</div>
</div>
</div> -->
<div class="MenuItem" onClick="OnClickNewProject()">
<div class="MenuIcon"><img src="img/i4.png"></div>
<div>
<div class="trans TextS1" tid="t31">new project</div>
<div class="MenuDesc trans" tid="t32">create new project</div>
</div>
</div>
<div class="MenuItem" onClick="OnClickOpenProject()">
<div class="MenuIcon"><img src="img/i5.png"></div>
<div>
<div class="trans TextS1" tid="t33">open project</div>
<div class="MenuDesc">3mf</div>
</div>
</div>
</div>
<div id="DebugText"></div>
<div id="RecentFileArea">
<div id="RecentTitleBlock">
<div id="RecentTitle" class="Content-Title trans TextS1" tid="t35">recent open</div>
<div id="RecentClearAllBtn" class="ButtonStyleRegular ButtonTypeWindow trans" tid="t12" onClick="OnDeleteAllRecentFiles()">Clear all</div>
</div>
<div id="FileList">
<!-- <div class="FileItem" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
<a class="FileTip" title="d:\model\11.3mf"></a>
<div class="FileImg"><img src="img/d.png"/></div>
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
<div class="FileDate">2021/12/27 09:22</div>
</div>
<div class="FileItem" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
<a class="FileTip" title="d:\model\11.3mf"></a>
<div class="FileImg"><img src="img/d.png"/></div>
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
<div class="FileDate">2021/12/27 09:22</div>
</div>
<div class="FileItem" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
<a class="FileTip" title="d:\model\11.3mf"></a>
<div class="FileImg"><img src="img/d.png"/></div>
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
<div class="FileDate">2021/12/27 09:22</div>
</div>
<div class="FileItem" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
<a class="FileTip" title="d:\model\11.3mf"></a>
<div class="FileImg"><img src="img/d.png"/></div>
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
<div class="FileDate">2021/12/27 09:22</div>
</div>
<div class="FileItem" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
<a class="FileTip" title="d:\model\11.3mf"></a>
<div class="FileImg"><img src="img/d.png"/></div>
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
<div class="FileDate">2021/12/27 09:22</div>
</div>
<div class="FileItem" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
<a class="FileTip" title="d:\model\11.3mf"></a>
<div class="FileImg"><img src="img/d.png"/></div>
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
<div class="FileDate">2021/12/27 09:22</div>
</div>
<div class="FileItem" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
<a class="FileTip" title="d:\model\11.3mf"></a>
<div class="FileImg"><img src="img/d.png"/></div>
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
<div class="FileDate">2021/12/27 09:22</div>
</div>
<div class="FileItem" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
<a class="FileTip" title="d:\model\11.3mf"></a>
<div class="FileImg"><img src="img/d.png"/></div>
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
<div class="FileDate">2021/12/27 09:22</div>
</div>
<div class="FileItem" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
<a class="FileTip" title="d:\model\11.3mf"></a>
<div class="FileImg"><img src="img/d.png"/></div>
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
<div class="FileDate">2021/12/27 09:22</div>
</div>
<div class="FileItem" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
<a class="FileTip" title="d:\model\11.3mf"></a>
<div class="FileImg"><img src="img/d.png"/></div>
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
<div class="FileDate">2021/12/27 09:22</div>
</div>
<div class="FileItem" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
<a class="FileTip" title="d:\model\11.3mf"></a>
<div class="FileImg"><img src="img/d.png"/></div>
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
<div class="FileDate">2021/12/27 09:22</div>
</div>
<div class="FileItem" onClick="OnOpenRecentFile('aaaa')" fpath='d:\model\11.3mf'>
<a class="FileTip" title="d:\model\11.3mf"></a>
<div class="FileImg"><img src="img/d.png"/></div>
<div class="FileName TextS1">abcd12334abcd12334abcd12334.3mf</div>
<div class="FileDate">2021/12/27 09:22</div>
</div> -->
</div>
</div>
<div style="height: 14px;"></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>
</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>

View File

@@ -0,0 +1,340 @@
/*------------------ Date Function ------------------------*/
function GetFullToday( )
{
var d=new Date();
var nday=d.getDate();
var nmonth=d.getMonth()+1;
var nyear=d.getFullYear();
var strM=nmonth+'';
if( nmonth<10 )
strM='0'+nmonth;
var strD=nday+'';
if( nday<10 )
strD='0'+nday;
return nyear+'-'+strM+'-'+strD;
}
function GetFullDate()
{
var d=new Date();
var tDate={};
tDate.nyear=d.getFullYear();
tDate.nmonth=d.getMonth()+1;
tDate.nday=d.getDate();
tDate.nhour=d.getHours();
tDate.nminute=d.getMinutes();
tDate.nsecond=d.getSeconds();
tDate.nweek=d.getDay();
tDate.ndate=d.getDate();
var strM=tDate.nmonth+'';
if( tDate.nmonth<10 )
strM='0'+tDate.nmonth;
var strD=tDate.nday+'';
if( tDate.nday<10 )
strD='0'+tDate.nday;
var strH=tDate.nhour+'';
if( tDate.nhour<10 )
strH='0'+tDate.nhour;
var strMin=tDate.nminute+'';
if( tDate.nminute<10 )
strMin='0'+tDate.nminute;
var strS=tDate.nsecond+'';
if( tDate.nsecond<10 )
strS='0'+tDate.nsecond;
tDate.strdate=tDate.nyear+'-'+strM+'-'+strD;
tDate.strFulldate=tDate.strdate+' '+strH+':'+strMin+':'+strS;
return tDate;
}
function Unixtimestamp2Date( nSecond )
{
var d=new Date(nSecond*1000);
var tDate={};
tDate.nyear=d.getFullYear();
tDate.nmonth=d.getMonth()+1;
tDate.nday=d.getDate();
tDate.nhour=d.getHours();
tDate.nminute=d.getMinutes();
tDate.nsecond=d.getSeconds();
tDate.nweek=d.getDay();
tDate.ndate=d.getDate();
var strM=tDate.nmonth+'';
if( tDate.nmonth<10 )
strM='0'+tDate.nmonth;
var strD=tDate.nday+'';
if( tDate.nday<10 )
strD='0'+tDate.nday;
tDate.strdate=tDate.nyear+'-'+strM+'-'+strD;
return tDate.strdate;
}
//------------Array Function-------------
Array.prototype.in_array = function (e) {
let sArray= ',' + this.join(this.S) + ',';
let skey=','+e+',';
if(sArray.indexOf(skey)>=0)
return true;
else
return false;
}
//------------String Function------------------
/**
* Delete Left/Right Side Blank
*/
String.prototype.trim=function()
{
return this.replace(/(^\s*)|(\s*$)/g, '');
}
/**
* Delete Left Side Blank
*/
String.prototype.ltrim=function()
{
return this.replace(/(^\s*)/g,'');
}
/**
* Delete Right Side Blank
*/
String.prototype.rtrim=function()
{
return this.replace(/(\s*$)/g,'');
}
//----------------Get Param-------------
function GetQueryString(name)
{
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r!=null)
{
return unescape(r[2]);
}
else
{
return null;
}
}
function GetGetStr()
{
let strGet="";
//获取当前URL
let url = document.location.href;
//获取?的位置
let index = url.indexOf("?")
if(index != -1) {
//截取出?后面的字符串
strGet = url.substr(index + 1);
}
return strGet;
}
/*--------------------JSON Function------------*/
/*
功能检查一个字符串是不是标准的JSON格式
参数: strJson 被检查的字符串
返回值: 如果字符串是一个标准的JSON格式则返回JSON对象
如果字符串不是标准JSON格式则返回null
*/
function IsJson( strJson )
{
var tJson=null;
try
{
tJson=JSON.parse(strJson);
}
catch(exception)
{
return null;
}
return tJson;
}
/*-----------------------Ajax Function--------------------*/
/*对JQuery的Ajax函数的封装只支持异步
参数说明:
url 目标地址
action post/get
data 字符串格式的发送内容
asyn true---异步模式;false-----同步模式;
*/
function HttpReq( url,action, data,callbackfunc)
{
var strAction=action.toLowerCase();
if( strAction=="post")
{
$.post(url,data,callbackfunc);
}
else if( strAction=="get")
{
$.get(url,callbackfunc);
}
}
/*---------------Cookie Function-------------------*/
function setCookie(name, value, time='',path='') {
if(time && path){
var strsec = time * 1000;
var exp = new Date();
exp.setTime(exp.getTime() + strsec * 1);
document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + ";path="+path;
}else if(time){
var strsec = time * 1000;
var exp = new Date();
exp.setTime(exp.getTime() + strsec * 1);
document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString();
}else if(path){
document.cookie = name + "=" + escape(value) + ";path="+path;
}else{
document.cookie = name + "=" + escape(value);
}
}
function getCookie(c_name)
{
if(document.cookie.length > 0) {
c_start = document.cookie.indexOf(c_name + "=");//获取字符串的起点
if(c_start != -1) {
c_start = c_start + c_name.length + 1;//获取值的起点
c_end = document.cookie.indexOf(";", c_start);//获取结尾处
if(c_end == -1) c_end = document.cookie.length;//如果是最后一个结尾就是cookie字符串的结尾
return decodeURI(document.cookie.substring(c_start, c_end));//截取字符串返回
}
}
return "";
}
function checkCookie(c_name) {
username = getCookie(c_name);
console.log(username);
if (username != null && username != "")
{ return true; }
else
{ return false; }
}
function clearCookie(name) {
setCookie(name, "", -1);
}
/*--------Studio WX Message-------*/
function IsInSlicer()
{
let bMatch=navigator.userAgent.match( RegExp('BBL-Slicer','i') );
return bMatch;
}
function SendWXMessage( strMsg )
{
let bCheck=IsInSlicer();
if(bCheck!=null)
{
window.wx.postMessage(strMsg);
}
}
/*------CSS Link Control----*/
function RemoveCssLink( LinkPath )
{
let pNow=$("head link[href='"+LinkPath+"']");
let nTotal=pNow.length;
for( let n=0;n<nTotal;n++ )
{
pNow[n].remove();
}
}
function AddCssLink( LinkPath )
{
var head = document.getElementsByTagName('head')[0];
var link = document.createElement('link');
link.href = LinkPath;
link.rel = 'stylesheet';
link.type = 'text/css';
head.appendChild(link);
}
function CheckCssLinkExist( LinkPath )
{
let pNow=$("head link[href='"+LinkPath+"']");
let nTotal=pNow.length;
return nTotal;
}
/*------Dark Mode------*/
function SwitchDarkMode( DarkCssPath )
{
ExecuteDarkMode( DarkCssPath );
setInterval("ExecuteDarkMode('"+DarkCssPath+"')",1000);
}
function ExecuteDarkMode( DarkCssPath )
{
let nMode=0;
let bDarkMode=navigator.userAgent.match( RegExp('dark','i') );
if( bDarkMode!=null )
nMode=1;
let nNow=CheckCssLinkExist(DarkCssPath);
if( nMode==0 )
{
if(nNow>0)
RemoveCssLink(DarkCssPath);
}
else
{
if(nNow==0)
AddCssLink(DarkCssPath);
}
}
SwitchDarkMode("css/dark.css");

View File

@@ -0,0 +1,511 @@
//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();
SendMsg_GetRecentFile();
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 SetLoginPanelVisibility(visible) {
var leftBoard = document.getElementById("LeftBoard");
if (visible) {
leftBoard.style.display = "block";
} else {
leftBoard.style.display = "none";
}
}
function HandleStudio( pVal )
{
let strCmd = pVal['command'];
if (strCmd == "get_recent_projects") {
ShowRecentFileList(pVal["response"]);
} else if (strCmd == "studio_userlogin") {
SetLoginInfo(pVal["data"]["avatar"], pVal["data"]["name"]);
} else if (strCmd == "studio_useroffline") {
SetUserOffline();
} 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;
}
m_HotModelList = pVal["hits"];
ShowStaffPick(m_HotModelList);
} else if (data.cmd === "SetLoginPanelVisibility") {
SetLoginPanelVisibility(data.visible);
}
}
function GotoMenu( strMenu )
{
let MenuList=$(".BtnItem");
let nAll=MenuList.length;
for(let n=0;n<nAll;n++)
{
let OneBtn=MenuList[n];
if( $(OneBtn).attr("menu")==strMenu )
{
$(".BtnItem").removeClass("BtnItemSelected");
$(OneBtn).addClass("BtnItemSelected");
$("div[board]").hide();
$("div[board=\'"+strMenu+"\']").show();
}
}
}
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);
}
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" 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">'+sTime+'</div>'+
'</div>';
strHtml+=TmpHtml;
}
$("#FileList").html(strHtml);
Set_RecentFile_MouseRightBtn_Event();
UpdateRecentClearBtnDisplay();
}
function ShowRecnetFileContextMenu()
{
$("#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 OnLoginOrRegister()
{
var tSend={};
tSend['sequence_id']=Math.round(new Date() / 1000);
tSend['command']="homepage_login_or_register";
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 )
{
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 )
$("#RecentClearAllBtn").show();
else
$("#RecentClearAllBtn").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 OnLogOut()
{
var tSend={};
tSend['sequence_id']=Math.round(new Date() / 1000);
tSend['command']="homepage_logout";
SendWXMessage( JSON.stringify(tSend) );
}
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));
}
//-------------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()
{
if( StaffPickSwiper!=null )
{
StaffPickSwiper.destroy(true,true);
StaffPickSwiper=null;
}
StaffPickSwiper = new Swiper('#HotModel_Swiper.swiper', {
slidesPerView : 'auto',
spaceBetween: 16,
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
slidesPerView : 'auto',
slidesPerGroup : 3
// autoplay: {
// delay: 3000,
// stopOnLastSlide: false,
// disableOnInteraction: true,
// disableOnInteraction: false
// },
// pagination: {
// el: '.swiper-pagination',
// },
// scrollbar: {
// el: '.swiper-scrollbar',
// draggable: true
// }
});
}
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*1);
}
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_200/format,webp';
let DesignerName=OnePickModel['design']['designCreator']['name'];
let DesignerAvatar=OnePickModel['design']['designCreator']['avatar']+'?image_process=resize,w_32/format,webp';
strPickHtml+='<div class="HotModelPiece swiper-slide" onClick="OpenOneStaffPickModel('+ModelID+')" >'+
'<div class="HotModel_Designer_Info"><img src="'+DesignerAvatar+'" /><span class="TextS2">'+DesignerName+'</span></div>'+
' <div class="HotModel_PrevBlock"><img class="HotModel_PrevImg" src="'+ModelCover+'" /></div>'+
' <div class="HotModel_NameText TextS1" title="'+ModelName+'">'+ModelName+'</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) );
}
//---------------Global-----------------
window.postMessage = HandleStudio;

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,185 @@
var JSON;
if (!JSON) {
JSON = {};
}
(function () {
'use strict';
function f(n) {
// Format integers to have at least two digits.
return n < 10 ? '0' + n : n;
}
if (typeof Date.prototype.toJSON !== 'function') {
Date.prototype.toJSON = function (key) {
return isFinite(this.valueOf())
? this.getUTCFullYear() + '-' +
f(this.getUTCMonth() + 1) + '-' +
f(this.getUTCDate()) + 'T' +
f(this.getUTCHours()) + ':' +
f(this.getUTCMinutes()) + ':' +
f(this.getUTCSeconds()) + 'Z'
: null;
};
String.prototype.toJSON =
Number.prototype.toJSON =
Boolean.prototype.toJSON = function (key) {
return this.valueOf();
};
}
var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
gap,
indent,
meta = { // table of character substitutions
'\b': '\\b',
'\t': '\\t',
'\n': '\\n',
'\f': '\\f',
'\r': '\\r',
'"' : '\\"',
'\\': '\\\\'
},
rep;
function quote(string) {
escapable.lastIndex = 0;
return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
var c = meta[a];
return typeof c === 'string'
? c
: '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
}) + '"' : '"' + string + '"';
}
function str(key, holder) {
var i, // The loop counter.
k, // The member key.
v, // The member value.
length,
mind = gap,
partial,
value = holder[key];
if (value && typeof value === 'object' &&
typeof value.toJSON === 'function') {
value = value.toJSON(key);
}
if (typeof rep === 'function') {
value = rep.call(holder, key, value);
}
switch (typeof value) {
case 'string':
return quote(value);
case 'number':
return isFinite(value) ? String(value) : 'null';
case 'boolean':
case 'null':
return String(value);
case 'object':
if (!value) {
return 'null';
}
gap += indent;
partial = [];
if (Object.prototype.toString.apply(value) === '[object Array]') {
length = value.length;
for (i = 0; i < length; i += 1) {
partial[i] = str(i, value) || 'null';
}
v = partial.length === 0
? '[]'
: gap
? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']'
: '[' + partial.join(',') + ']';
gap = mind;
return v;
}
if (rep && typeof rep === 'object') {
length = rep.length;
for (i = 0; i < length; i += 1) {
if (typeof rep[i] === 'string') {
k = rep[i];
v = str(k, value);
if (v) {
partial.push(quote(k) + (gap ? ': ' : ':') + v);
}
}
}
} else {
for (k in value) {
if (Object.prototype.hasOwnProperty.call(value, k)) {
v = str(k, value);
if (v) {
partial.push(quote(k) + (gap ? ': ' : ':') + v);
}
}
}
}
v = partial.length === 0
? '{}'
: gap
? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}'
: '{' + partial.join(',') + '}';
gap = mind;
return v;
}
}
if (typeof JSON.stringify !== 'function') {
JSON.stringify = function (value, replacer, space) {
var i;
gap = '';
indent = '';
if (typeof space === 'number') {
for (i = 0; i < space; i += 1) {
indent += ' ';
}
} else if (typeof space === 'string') {
indent = space;
}
rep = replacer;
if (replacer && typeof replacer !== 'function' &&
(typeof replacer !== 'object' ||
typeof replacer.length !== 'number')) {
throw new Error('JSON.stringify');
}
return str('', {'': value});
};
}
if (typeof JSON.parse !== 'function') {
JSON.parse = function (text, reviver) {
var j;
function walk(holder, key) {
var k, v, value = holder[key];
if (value && typeof value === 'object') {
for (k in value) {
if (Object.prototype.hasOwnProperty.call(value, k)) {
v = walk(value, k);
if (v !== undefined) {
value[k] = v;
} else {
delete value[k];
}
}
}
}
return reviver.call(holder, key, value);
}
text = String(text);
cx.lastIndex = 0;
if (cx.test(text)) {
text = text.replace(cx, function (a) {
return '\\u' +
('0000' + a.charCodeAt(0).toString(16)).slice(-4);
});
}
if (/^[\],:{}\s]*$/
.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
.replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
j = eval('(' + text + ')');
return typeof reviver === 'function'
? walk({'': j}, '')
: j;
}
throw new SyntaxError('JSON.parse');
};
}
}());

View 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>