mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2026-03-06 10:34:51 -07:00
Some checks are pending
Build all / build_linux (push) Waiting to run
Build all / build_all (arm64, ${{ vars.SELF_HOSTED && 'orca-macos-arm64' || 'macos-14' }}) (push) Waiting to run
Build all / build_all (windows-latest) (push) Waiting to run
Build all / Unit Tests (push) Blocked by required conditions
Build all / Flatpak (push) Waiting to run
* Update 22.js * fix printer list empty * switch to vertical scrolling on custom filaments * Update 23.css * add stats * fix uncommon filament types * fix setup wizerd styling --------- Co-authored-by: SoftFever <softfeverever@gmail.com>
246 lines
8.9 KiB
HTML
246 lines
8.9 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta http-equiv="Cache-Control" content="max-age=0" />
|
|
<title>引导_P21</title>
|
|
<link rel="stylesheet" type="text/css" href="../../include/global.css" /> <!-- ORCA One for all-->
|
|
<link rel="stylesheet" type="text/css" href="../css/common.css" />
|
|
<link rel="stylesheet" type="text/css" href="23.css" />
|
|
<link rel="stylesheet" type="text/css" href="../css/dark.css" />
|
|
<script type="text/javascript" src="../js/jquery-3.6.0.min.js"></script>
|
|
<script type="text/javascript" src="../js/json2.js"></script>
|
|
<script type="text/javascript" src="../../data/text.js"></script>
|
|
<script type="text/javascript" src="../js/globalapi.js"></script>
|
|
<script type="text/javascript" src="../js/common.js"></script>
|
|
<script type="text/javascript" src="./23.js"></script>
|
|
</head>
|
|
<body onLoad="OnInit()">
|
|
<div id="Title">
|
|
<div id="SystemFilamentBtn" class="TitleSelected trans" tid="t109" onClick="OnSelectMenu(1)">System Filaments</div>
|
|
<div id="CustomFilamentBtn" class="TitleUnselected trans" tid="t110" onClick="OnSelectMenu(2)">Custom Filaments</div>
|
|
</div>
|
|
<div id="Content" class="ZScrol">
|
|
|
|
<div id="SystemFilamentsArea">
|
|
|
|
<!-- ORCA column browser -->
|
|
<div class="cbr-browser-container">
|
|
<div class="cbr-column">
|
|
<div class="cbr-column-title-container">
|
|
<div class="search-icon"></div>
|
|
<input type="text" class="cbr-search-bar" placeholder=" " tabindex="1"/>
|
|
<span class="cbr-search-placeholder trans" tid="t15">printer</span>
|
|
<div class="clear-icon"></div>
|
|
</div>
|
|
<div class="cbr-content thin-scroll" id="MachineList">
|
|
<div class="CValues">
|
|
<label><input type="checkbox" mode="all" onClick="ChooseAllMachine()" /><span class="trans" tid="t11">all</span></label>
|
|
</div>
|
|
<div class="cbr-no-items">No items</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="cbr-column">
|
|
<div class="cbr-column-title-container">
|
|
<div class="search-icon"></div>
|
|
<input type="text" class="cbr-search-bar" placeholder=" " tabindex="2"/>
|
|
<span class="cbr-search-placeholder trans" tid="t16">filament type</span>
|
|
<div class="clear-icon"></div>
|
|
</div>
|
|
<div class="cbr-content thin-scroll" id="FilatypeList">
|
|
<div class="CValues">
|
|
<label><input type="checkbox" class="trans" tid="t11" onClick="ChooseAllFilament()" /><span class="trans" tid="t11">all</span></label>
|
|
</div>
|
|
<div class="cbr-no-items">No items</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="cbr-column">
|
|
<div class="cbr-column-title-container">
|
|
<div class="search-icon"></div>
|
|
<input type="text" class="cbr-search-bar" placeholder=" " tabindex="3"/>
|
|
<span class="cbr-search-placeholder trans" tid="t17">vendor</span>
|
|
<div class="clear-icon"></div>
|
|
</div>
|
|
<div class="cbr-content thin-scroll" id="VendorList">
|
|
<div class="CValues">
|
|
<label><input type="checkbox" class="trans" tid="t11" onClick="ChooseAllVendor()" /><span class="trans" tid="t11">all</span></label>
|
|
</div>
|
|
<div class="cbr-no-items">No items</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="cbr-column">
|
|
<div class="cbr-column-title-container">
|
|
<div class="cbr-filter-box">
|
|
<div class="filter-icon"></div>
|
|
<input type="text" class="cbr-filter-bar" placeholder=" " tabindex="4"/>
|
|
<span class="cbr-filter-placeholder trans">Filter items</span>
|
|
<div class="clear-icon"></div>
|
|
</div>
|
|
<div class="ComboBox NoLabel">
|
|
<div class="arrow-icon"></div>
|
|
<select id="filter-tags">
|
|
<option value="0" disabled selected hidden></option>
|
|
<option value="1">Checked</option>
|
|
<option value="2">Unchecked</option>
|
|
</select>
|
|
</div>
|
|
<div class="list-item-count"></div>
|
|
<div class="cbr-filter-btns">
|
|
<span class="cbr-filter-mode-filter trans">Select filtered</span>
|
|
<span class="cbr-filter-mode-visible trans">Select visible</span>
|
|
<div class="ButtonStyleConfirm ButtonTypeWindow trans" tid="t11" onClick="SelectAllFilament(1)">all</div>
|
|
<div class="ButtonStyleRegular ButtonTypeWindow trans" tid="t12" onClick="SelectAllFilament(0)">Clear all</div>
|
|
</div>
|
|
</div>
|
|
<div class="cbr-content thin-scroll" id="ItemBlockArea">
|
|
<!-- <label class="MItem"><input type="checkbox" class="trans" tid="t11" onClick="SelectAllFilament()" /><span class="trans" tid="t11">all</span></label> -->
|
|
<div class="cbr-no-items">No items</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div id="CustomFilamentsArea">
|
|
<div id="CFilament_Btn_Area">
|
|
<div class="ButtonStyleConfirm ButtonTypeWindow trans" tid="t111" onClick="OnClickCustomFilamentAdd()">Create New</div>
|
|
</div>
|
|
<div id="CFilament_List" class="thin-scroll">
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="AcceptArea">
|
|
<div class="ButtonStyleConfirm ButtonTypeChoice trans" tid="t39" id="AcceptBtn" onclick="ConfirmSelect()">Confirm</div>
|
|
<div class="ButtonStyleRegular ButtonTypeChoice trans" tid="t38" id="PreBtn" onclick="CancelSelect()">Cancel</div>
|
|
</div>
|
|
<div id="NoticeMask">
|
|
</div>
|
|
<div id="NoticeBody">
|
|
<div id="NoticeBar" class="trans" tid="t18">error</div>
|
|
<div id="NoticeContent">
|
|
<div id="NoticeText" class="trans" tid="t19">At least one filament must be selected. </div>
|
|
<div id="NoticeText" class="trans" tid="t20">Do you want to use default filament ?</div>
|
|
<div id="NoticeBtns">
|
|
<div class="ButtonStyleConfirm ButtonTypeChoice trans" tid="t21" onClick="ChooseDefaultFilament()">yes</div>
|
|
<div class="ButtonStyleRegular ButtonTypeChoice trans" tid="t22" onClick="ShowNotice(0)">no</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</body>
|
|
<script>
|
|
document.onkeydown = function (event) {
|
|
var e = event || window.event || arguments.callee.caller.arguments[0];
|
|
|
|
if (e.keyCode == 27)
|
|
ClosePage();
|
|
|
|
//if (window.event) {
|
|
// try { e.keyCode = 0; } catch (e) { }
|
|
// e.returnValue = false;
|
|
//}
|
|
};
|
|
window.addEventListener('wheel', function (event) {
|
|
if (event.ctrlKey === true || event.metaKey) {
|
|
event.preventDefault();
|
|
}
|
|
}, { passive: false });
|
|
|
|
function addClearBtnEvents(el){
|
|
el.addEventListener('click', e => {
|
|
if (el.getAttribute("onclear") == "1") {
|
|
el.value = '';
|
|
el.dispatchEvent(new Event('input', {bubbles: true}));
|
|
}
|
|
});
|
|
el.addEventListener('mousemove', e => {
|
|
const rc = el.getBoundingClientRect();
|
|
const onRight = el.value && (e.clientX - rc.left > rc.width - 32);
|
|
el.setAttribute("onclear", onRight ? "1" : "0");
|
|
});
|
|
el.addEventListener('mouseleave', e => {
|
|
el.setAttribute("onclear", "0");
|
|
});
|
|
}
|
|
|
|
document.querySelectorAll('.cbr-search-bar').forEach(searchBar => {
|
|
searchBar.addEventListener('input', function() {
|
|
const search = this.value.trim().toLowerCase(),
|
|
list = this.closest('.cbr-column').querySelector('.cbr-content'),
|
|
items = list.querySelectorAll('label');
|
|
let hidden = 0;
|
|
|
|
items.forEach((item, i) => {
|
|
if(i == 0){
|
|
item.style.display ="block";
|
|
return;
|
|
};
|
|
const text = item.querySelector("span").textContent.toLowerCase();
|
|
const hide = search && !text.includes(search);
|
|
item.style.display = hide ? "none" : "block";
|
|
if(hide) hidden++;
|
|
});
|
|
|
|
if(items.length - hidden == 1){
|
|
items[0].style.display = "none";
|
|
hidden++;
|
|
}
|
|
|
|
list.querySelector('.cbr-no-items').style.display = (hidden === items.length) ? "block" : "none";
|
|
});
|
|
addClearBtnEvents(searchBar);
|
|
});
|
|
|
|
const filterBar = document.querySelector('.cbr-filter-bar');
|
|
const filterModeFilter = document.querySelector('.cbr-filter-mode-filter' );
|
|
const filterModeVisible = document.querySelector('.cbr-filter-mode-visible');
|
|
|
|
filterBar.addEventListener('input', function() {
|
|
const search = this.value.trim().toLowerCase();
|
|
const list = this.closest('.cbr-column').querySelector('.cbr-content');
|
|
const items = list.querySelectorAll('label');
|
|
let hidden = 0;
|
|
|
|
filterModeFilter.style.display = search ? "block" : "none";
|
|
filterModeVisible.style.display = search ? "none" : "block";
|
|
|
|
const showSel = search == "::checked";
|
|
const showUnsel = search == "::unchecked";
|
|
|
|
if(showSel || showUnsel){
|
|
items.forEach(item => {
|
|
const cb = item.querySelector("input");
|
|
const hide = showSel ? !cb.checked : cb.checked;
|
|
item.style.position = hide ? "absolute" : "unset";
|
|
if(hide) hidden++;
|
|
});
|
|
}
|
|
else {
|
|
items.forEach(item => {
|
|
const text = item.querySelector("span").textContent.toLowerCase();
|
|
const hide = search && !text.includes(search);
|
|
item.style.position = hide ? "absolute" : "unset";
|
|
if(hide) hidden++;
|
|
});
|
|
}
|
|
|
|
list.querySelector('.cbr-no-items').style.display = (hidden === items.length) ? "block" : "none";
|
|
|
|
UpdateStats();
|
|
});
|
|
addClearBtnEvents(filterBar);
|
|
|
|
document.querySelector('#filter-tags').addEventListener('change', e => {
|
|
let v = e.target.value;
|
|
filterBar.value = v == "1" ? "::checked" : "::unchecked";
|
|
filterBar.dispatchEvent(new Event('input', {bubbles: true}));
|
|
filterBar.focus();
|
|
e.target.value = 0; // reset back to make dropdown items always selectable
|
|
});
|
|
|
|
</script>
|
|
</html>
|