mirror of
https://github.com/QIDITECH/QIDIStudio.git
synced 2026-01-31 00:48:41 +03:00
update resources
This commit is contained in:
File diff suppressed because it is too large
Load Diff
672
resources/web/flush/WipingDialog.html
Normal file
672
resources/web/flush/WipingDialog.html
Normal file
@@ -0,0 +1,672 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<style>
|
||||
html, body {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
height: 100%;
|
||||
background: #f5f5f5;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
.container {
|
||||
background: #fff;
|
||||
padding: 20px;
|
||||
padding-bottom: 10px;
|
||||
border: 1px solid #ccc;
|
||||
max-width:fit-content(1000px);
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.tip-panel {
|
||||
background: #eeeeee;
|
||||
padding: 10px;
|
||||
margin-bottom: 10px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.scroll-container {
|
||||
max-width: 100%;
|
||||
max-height: 500px;
|
||||
overflow: auto;
|
||||
border: 1px solid #ccc;
|
||||
position: relative;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
th, td {
|
||||
border: 1px solid #ccc;
|
||||
text-align: center;
|
||||
padding: 2px;
|
||||
position: relative;
|
||||
width: 40px;
|
||||
height: 25px;
|
||||
}
|
||||
|
||||
thead th {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: #eee;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
tbody th {
|
||||
position: sticky;
|
||||
left: 0;
|
||||
background: #eee;
|
||||
z-index: 9;
|
||||
}
|
||||
|
||||
tbody tr:nth-child(even) {
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
tbody tr:nth-child(odd) {
|
||||
background: #eeeeee;
|
||||
}
|
||||
|
||||
tbody td:first-child,
|
||||
thead th:first-child {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background: #eee;
|
||||
z-index: 11;
|
||||
}
|
||||
|
||||
.icon-button {
|
||||
display: inline-block;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border: 1px solid #999;
|
||||
text-align: center;
|
||||
line-height: 15px;
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
font-size: 12px;
|
||||
border-radius: 4px;
|
||||
cursor: default;
|
||||
user-select: none;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
input[type="number"].table-input {
|
||||
width: 30px;
|
||||
height: 20px;
|
||||
text-align: center;
|
||||
-moz-appearance: textfield;
|
||||
appearance: textfield;
|
||||
border: none;
|
||||
background-color: inherit;
|
||||
}
|
||||
|
||||
input[type="number"].table-input::-webkit-inner-spin-button,
|
||||
input[type="number"].table-input::-webkit-outer-spin-button {
|
||||
-webkit-appearance: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
input[type="number"].multiplier-input {
|
||||
width: 60px;
|
||||
}
|
||||
body.dark-mode input[type="number"].multiplier-input {
|
||||
width: 60px;
|
||||
background-color: #4c4c55;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.warning-text {
|
||||
color: red;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.normal-text {
|
||||
color: black;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.icon-gap {
|
||||
width: 10px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.btn {
|
||||
display: inline-block;
|
||||
padding: 6px 9px;
|
||||
border: 2px solid transparent;
|
||||
border-radius: 12px;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
transition: all 0.3s;
|
||||
}
|
||||
|
||||
.btn-ok {
|
||||
color: #fff;
|
||||
background-color: #4479fb;
|
||||
}
|
||||
.btn-ok:hover {
|
||||
background-color: #3d97cb;
|
||||
}
|
||||
|
||||
.btn-cancel {
|
||||
color: black;
|
||||
background-color: white;
|
||||
border: 1px solid black;
|
||||
}
|
||||
.btn-cancel:hover {
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
|
||||
body.dark-mode button.btn-cancel {
|
||||
background-color: #2d2d31;
|
||||
color: #e0e0e0;
|
||||
border: 1px solid #e0e0e0;
|
||||
}
|
||||
|
||||
select {
|
||||
padding: 6px 9px;
|
||||
border: 1px solid #dbdbdb;
|
||||
border-radius: 3px;
|
||||
font-size: 12px;
|
||||
cursor: pointer;
|
||||
appearance: auto;
|
||||
background-color: white;
|
||||
color: black;
|
||||
}
|
||||
|
||||
select option {
|
||||
background-color: white;
|
||||
color: black;
|
||||
}
|
||||
|
||||
select:hover,
|
||||
select:focus {
|
||||
outline: none;
|
||||
border-color: #4479fb;
|
||||
background-color: #D0E0FF;
|
||||
}
|
||||
|
||||
.button-container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
gap: 10px;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
/* 暗色模式样式 */
|
||||
body.dark-mode {
|
||||
background-color: #2d2d31;
|
||||
color: #e0e0e0;
|
||||
}
|
||||
|
||||
body.dark-mode .container {
|
||||
background: inherit;
|
||||
border-color: #2d2d31;
|
||||
}
|
||||
|
||||
body.dark-mode .tip-panel {
|
||||
background: #4c4c55;
|
||||
color: #ccc;
|
||||
}
|
||||
|
||||
body.dark-mode .scroll-container {
|
||||
border-color: #4c4c55;
|
||||
}
|
||||
|
||||
body.dark-mode table {
|
||||
background: inherit;
|
||||
border-color: #4c4c55;
|
||||
}
|
||||
|
||||
body.dark-mode input[type="number"].table-input {
|
||||
width: 30px;
|
||||
height: 20px;
|
||||
text-align: center;
|
||||
-moz-appearance: textfield;
|
||||
appearance: textfield;
|
||||
border: none;
|
||||
color: #e0e0e0;
|
||||
background-color: inherit;
|
||||
}
|
||||
|
||||
body.dark-mode th, body.dark-mode td {
|
||||
background: inherit;
|
||||
border-color: #555;
|
||||
color: #e0e0e0;
|
||||
}
|
||||
|
||||
body.dark-mode thead th{
|
||||
position: sticky;
|
||||
z-index: 10
|
||||
}
|
||||
|
||||
body.dark-mode tbody th{
|
||||
position: sticky;
|
||||
z-index: 9
|
||||
}
|
||||
|
||||
body.dark-mode tbody tr:nth-child(even) {
|
||||
background: #2d2d31;
|
||||
}
|
||||
|
||||
body.dark-mode tbody tr:nth-child(odd) {
|
||||
background: #4c4c55;
|
||||
}
|
||||
|
||||
body.dark-mode tbody td:first-child,
|
||||
body.dark-mode thead th:first-child {
|
||||
position: sticky;
|
||||
z-index: 11;
|
||||
}
|
||||
|
||||
body.dark-mode .btn-ok {
|
||||
background-color: #3a8f44;
|
||||
}
|
||||
|
||||
body.dark-mode .btn-dark {
|
||||
background-color: #34495e;
|
||||
}
|
||||
|
||||
body.dark-mode select {
|
||||
background-color: #2d2d31;
|
||||
color: white;
|
||||
border-color: #4c4c55;
|
||||
}
|
||||
|
||||
body.dark-mode .warning-text {
|
||||
color: #f44336;
|
||||
}
|
||||
|
||||
body.dark-mode .normal-text {
|
||||
color: #e0e0e0;
|
||||
}
|
||||
|
||||
body.dark-mode .icon-button {
|
||||
background-color: #4c4c55;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="tip-panel" id="auto_flush_tip">
|
||||
Studio would re-calculate your flushing volumes every time the filament
|
||||
color changed or filaments changed. You could disable the auto-calculate
|
||||
in QIDI Studio > Preferences.
|
||||
</div>
|
||||
|
||||
<div style="margin-bottom: 10px; ">
|
||||
<button
|
||||
class="btn btn-ok"
|
||||
onclick="calcFlushingVolumes()"
|
||||
id="calc_btn"
|
||||
>
|
||||
Re-Calculate
|
||||
</button>
|
||||
<select
|
||||
id="extruders"
|
||||
onchange="handleExtruderSelect(document.getElementById('extruders').value)"
|
||||
>
|
||||
<option value="left" id="extruder_label_0">Left Nozzle</option>
|
||||
<option value="right" id="extruder_label_1">Right Nozzle</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="scroll-container">
|
||||
<table id="flushTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div style="margin-top: 10px;">
|
||||
<div id="volume_desp_panel" class="normal-text">
|
||||
Flushing volume (mm³) for each filament pair.
|
||||
</div>
|
||||
<div
|
||||
id="volume_range_panel"
|
||||
class="normal-text"
|
||||
style="margin-top: 5px;"
|
||||
>
|
||||
Suggestion: Flushing Volume in range [50, 999]
|
||||
</div>
|
||||
<div style="margin-top: 8px;">
|
||||
<label
|
||||
for="multiplierInput"
|
||||
id="multiplier_label"
|
||||
style="font-size: 12px;"
|
||||
>Multiplier</label
|
||||
>
|
||||
<input
|
||||
type="number"
|
||||
step="0.1"
|
||||
id="multiplierInput"
|
||||
class="multiplier-input"
|
||||
value="1.00"
|
||||
oninput="onMultiplierChange()"
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
style="margin-top: 5px; margin-bottom: 5px; color: #666; font-size: 12px;"
|
||||
id="multiplier_range_panel"
|
||||
>
|
||||
The multiplier should be in range [0.50, 3.00].
|
||||
</div>
|
||||
</div>
|
||||
<div class="button-container" style="padding: 0px; margin: 0px;">
|
||||
<button class="btn btn-ok" id="ok_btn" style="width: 60px; height: 30px; font-size: 12px; text-align: center;" onclick="storeData()">
|
||||
Save
|
||||
</button>
|
||||
<button class="btn btn-cancel" id="cancel_btn" style="width: 60px; height: 30px; font-size: 12px; text-align: center;" onclick="quit()">
|
||||
Cancel
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
let m_number_of_filaments // 材料数量
|
||||
let m_number_of_extruders // 喷嘴数量
|
||||
let m_colours // 颜色
|
||||
let m_display_matrix // 显示的矩阵
|
||||
let m_raw_matrix // 原始数据
|
||||
let m_flush_multipiers // 冲刷系数
|
||||
let m_cell_inputs = []; //显示的内容
|
||||
let m_curr_extruder_id = 0
|
||||
let m_min_flush_volumes = []
|
||||
let m_max_flush_volumes = []
|
||||
let m_min_flush_multiplier = 0.50
|
||||
let m_max_flush_multiplier = 3
|
||||
|
||||
function storeData() {
|
||||
var data = JSON.stringify({
|
||||
msg: 'storeData',
|
||||
number_of_extruders: m_number_of_extruders,
|
||||
raw_matrix: m_raw_matrix,
|
||||
flush_multiplier: m_flush_multipiers
|
||||
})
|
||||
window.wipingDialog.postMessage(data);
|
||||
}
|
||||
|
||||
function quit() {
|
||||
var data = JSON.stringify({
|
||||
msg: 'quit'
|
||||
})
|
||||
window.wipingDialog.postMessage(data);
|
||||
}
|
||||
|
||||
function calcFlushingVolumes() {
|
||||
var data = JSON.stringify({
|
||||
msg: 'updateMatrix',
|
||||
extruder_id: m_curr_extruder_id
|
||||
})
|
||||
window.wipingDialog.postMessage(data);
|
||||
}
|
||||
|
||||
function updateTable(dataMatrix, extruder_id) {
|
||||
for (let i = 0; i < m_number_of_filaments; i++) {
|
||||
for (let j = 0; j < m_number_of_filaments; j++) {
|
||||
var newValue
|
||||
var index = m_number_of_filaments * i + j
|
||||
newValue = (i == j ? 0 : rawToDislay(dataMatrix[index] ,m_flush_multipiers[extruder_id]))
|
||||
newValue = limitDisplayVal(newValue,extruder_id)
|
||||
m_cell_inputs[i][j].value = newValue;
|
||||
m_display_matrix[index] = newValue;
|
||||
m_raw_matrix[extruder_id][index] = dataMatrix[index]
|
||||
}
|
||||
}
|
||||
updateWarningTexts();
|
||||
}
|
||||
|
||||
// const virtual_data = {
|
||||
// filament_colors: [
|
||||
// '#123456', '#7890AB', '#CDEF01', '#F1A2B3', '#4D8B72', '#D9E1F2', '#B76C8C', '#A9C3D3',
|
||||
// '#FF5733', '#33FF57', '#5733FF', '#FF33FF', '#FFFF33', '#33FFFF', '#FF5733', '#3333FF'
|
||||
// ],
|
||||
// extruder_num: 2,
|
||||
// flush_volume_matrixs: [
|
||||
// Array.from({ length: 256 }, () => Math.floor(Math.random() * 1000)),
|
||||
// Array.from({ length: 256 }, () => Math.floor(Math.random() * 1000))
|
||||
// ],
|
||||
// flush_multiplier:[1,1]
|
||||
// }
|
||||
window.addEventListener("DOMContentLoaded",function(){
|
||||
var data = JSON.stringify({
|
||||
msg: 'init',
|
||||
})
|
||||
window.wipingDialog.postMessage(data);
|
||||
});
|
||||
|
||||
function buildText(data) {
|
||||
document.getElementById('volume_desp_panel').innerText = data.volume_desp_panel
|
||||
document.getElementById('volume_range_panel').innerText = data.volume_range_panel
|
||||
document.getElementById('multiplier_range_panel').innerText = data.multiplier_range_panel
|
||||
document.getElementById('auto_flush_tip').innerText = data.auto_flush_tip
|
||||
document.getElementById('calc_btn').innerText = data.calc_btn_panel
|
||||
document.getElementById('extruder_label_0').innerText = data.extruder_label_0
|
||||
document.getElementById('extruder_label_1').innerText = data.extruder_label_1
|
||||
document.getElementById('multiplier_label').innerText = data.multiplier_label
|
||||
document.getElementById('ok_btn').innerText = data.ok_btn_label
|
||||
document.getElementById('cancel_btn').innerText = data.cancel_btn_label
|
||||
updateVolumeRange(m_min_flush_volumes[m_curr_extruder_id],m_max_flush_volumes[m_curr_extruder_id])
|
||||
updateMultiplierRange(m_min_flush_multiplier,m_max_flush_multiplier)
|
||||
}
|
||||
|
||||
// 计算亮度
|
||||
function getLuminance(color) {
|
||||
const hex = color.replace(/^#/, '');
|
||||
const r = parseInt(hex.slice(0, 2), 16);
|
||||
const g = parseInt(hex.slice(2, 4), 16);
|
||||
const b = parseInt(hex.slice(4, 6), 16);
|
||||
return (0.299 * r + 0.587 * g + 0.114 * b) / 255;
|
||||
}
|
||||
|
||||
|
||||
function updateVolumeRange(min_volume,max_volume){
|
||||
const panel = document.getElementById('volume_range_panel');
|
||||
panel.innerText = panel.innerText.replace(/\[.*\]/, `[${min_volume}, ${max_volume}]`);
|
||||
}
|
||||
|
||||
function updateMultiplierRange(min_multiplier,max_multiplier){
|
||||
const panel = document.getElementById('multiplier_range_panel');
|
||||
panel.innerText = panel.innerText.replace(/\[.*\]/, `[${min_multiplier}, ${max_multiplier}]`);
|
||||
}
|
||||
|
||||
function updateFlushMultiplier(extruder_id){
|
||||
document.getElementById("multiplierInput").value = m_flush_multipiers[extruder_id]
|
||||
}
|
||||
|
||||
function rawToDislay(val, ratio){
|
||||
return Math.round(val * ratio)
|
||||
}
|
||||
|
||||
function displayToRaw(val, ratio){
|
||||
if(ratio==0)
|
||||
return 0
|
||||
else
|
||||
return Math.round(val / ratio)
|
||||
}
|
||||
|
||||
function limitDisplayVal(val,extruder_id){
|
||||
if (isNaN(val))
|
||||
return 0
|
||||
if (val < 0)
|
||||
return 0
|
||||
if (val > m_max_flush_volumes[extruder_id])
|
||||
return m_max_flush_volumes[extruder_id];
|
||||
return val
|
||||
}
|
||||
|
||||
function buildTable(data) {
|
||||
m_colours = data.filament_colors
|
||||
m_number_of_extruders = data.extruder_num
|
||||
m_number_of_filaments = data.filament_colors.length
|
||||
m_display_matrix = data.flush_volume_matrixs[0].slice();
|
||||
m_raw_matrix = data.flush_volume_matrixs.map(function(arr) {
|
||||
return arr.slice();
|
||||
});
|
||||
m_flush_multipiers = data.flush_multiplier.slice()
|
||||
m_max_flush_volumes = data.max_flush_volumes
|
||||
m_min_flush_volumes = data.min_flush_volumes
|
||||
m_min_flush_multiplier = data.min_flush_multiplier
|
||||
m_max_flush_multiplier = data.max_flush_multiplier
|
||||
|
||||
if(data.is_dark_mode == true)
|
||||
document.body.classList.add('dark-mode');
|
||||
|
||||
updateFlushMultiplier(m_curr_extruder_id)
|
||||
|
||||
const selectElement = document.getElementById('extruders');
|
||||
if (m_number_of_extruders > 1) {
|
||||
selectElement.style.display = 'inline-block';
|
||||
} else {
|
||||
selectElement.style.display = 'none';
|
||||
}
|
||||
|
||||
var thead = document.querySelector("#flushTable thead tr");
|
||||
var tbody = document.querySelector("#flushTable tbody");
|
||||
thead.innerHTML = "";
|
||||
tbody.innerHTML = "";
|
||||
|
||||
for (let j = 0; j < m_number_of_filaments; j++) {
|
||||
if (j == 0) {
|
||||
var tag = document.createElement("th")
|
||||
tag.innerHTML = "<div style='font-size:12px'>from/to</div>"
|
||||
thead.appendChild(tag)
|
||||
}
|
||||
let th = document.createElement("th");
|
||||
const luminance = getLuminance(m_colours[j]);
|
||||
const textColor = luminance > 0.5 ? "black" : "white";
|
||||
th.innerHTML = `<div class="icon-button" style="font-size:10px;background:${m_colours[j]}; color:${textColor};">${j + 1}</div>`;
|
||||
thead.appendChild(th);
|
||||
}
|
||||
|
||||
for (let i = 0; i < m_number_of_filaments; i++) {
|
||||
let tr = document.createElement("tr");
|
||||
|
||||
let rowHeader = document.createElement("th");
|
||||
const luminance = getLuminance(m_colours[i]);
|
||||
const textColor = luminance > 0.5 ? "black" : "white";
|
||||
rowHeader.innerHTML = `<div class="icon-button" style="font-size:10px; background:${m_colours[i]};color:${textColor};">${i + 1}</div>`;
|
||||
tr.appendChild(rowHeader);
|
||||
|
||||
m_cell_inputs[i] = [];
|
||||
|
||||
for (let j = 0; j < m_number_of_filaments; j++) {
|
||||
let td = document.createElement("td");
|
||||
td.style.overflow = "hidden";
|
||||
td.style.textOverflow = "ellipsis";
|
||||
let displayVal = rawToDislay(m_raw_matrix[m_curr_extruder_id][m_number_of_filaments * i + j], m_flush_multipiers[m_curr_extruder_id])
|
||||
displayVal = limitDisplayVal(displayVal, m_curr_extruder_id)
|
||||
m_display_matrix[m_number_of_filaments*i + j] = displayVal
|
||||
let readonly = (i === j);
|
||||
let input = document.createElement("input");
|
||||
input.className = "table-input"
|
||||
input.type = "number";
|
||||
input.value = readonly ? 0 : displayVal;
|
||||
if (readonly) {
|
||||
input.readOnly = true;
|
||||
}
|
||||
input.addEventListener("input", (e) => onCellInput(i, j, e));
|
||||
|
||||
m_cell_inputs[i][j] = input;
|
||||
|
||||
td.appendChild(input);
|
||||
tr.appendChild(td);
|
||||
}
|
||||
|
||||
tbody.appendChild(tr);
|
||||
}
|
||||
updateWarningTexts();
|
||||
}
|
||||
|
||||
function onCellInput(i, j, event) {
|
||||
const input = event.target;
|
||||
let val = parseInt(input.value, 10);
|
||||
val = limitDisplayVal(val, m_curr_extruder_id);
|
||||
input.value = val;
|
||||
|
||||
if (i !== j) {
|
||||
var index = m_number_of_filaments*i+j
|
||||
m_raw_matrix[m_curr_extruder_id][index] = displayToRaw(val, m_flush_multipiers[m_curr_extruder_id])
|
||||
m_display_matrix[index] = val;
|
||||
}
|
||||
updateWarningTexts();
|
||||
}
|
||||
|
||||
function handleExtruderSelect(extruder) {
|
||||
m_curr_extruder_id = extruder == 'left' ? 0 : 1
|
||||
updateTable(m_raw_matrix[m_curr_extruder_id], m_curr_extruder_id)
|
||||
updateVolumeRange(m_min_flush_volumes[m_curr_extruder_id],m_max_flush_volumes[m_curr_extruder_id])
|
||||
updateFlushMultiplier(m_min_flush_multiplier[m_curr_extruder_id],m_max_flush_multiplier[m_curr_extruder_id])
|
||||
updateFlushMultiplier(m_curr_extruder_id)
|
||||
}
|
||||
|
||||
function onMultiplierChange() {
|
||||
let val = parseFloat(document.getElementById("multiplierInput").value);
|
||||
if (isNaN(val)) val = 1.0;
|
||||
if(val<m_min_flush_multiplier){
|
||||
val = m_min_flush_multiplier
|
||||
document.getElementById("multiplierInput").value = m_min_flush_multiplier;
|
||||
}
|
||||
else if(val>m_max_flush_multiplier){
|
||||
val = m_max_flush_multiplier
|
||||
document.getElementById("multiplierInput").value = m_max_flush_multiplier;
|
||||
}
|
||||
m_flush_multipiers[m_curr_extruder_id] = val;
|
||||
for (let i = 0; i < m_number_of_filaments; i++) {
|
||||
for (let j = 0; j < m_number_of_filaments; j++) {
|
||||
if (i === j) continue;
|
||||
var index = i * m_number_of_filaments + j;
|
||||
let displayVal = rawToDislay(m_raw_matrix[m_curr_extruder_id][index] ,m_flush_multipiers[m_curr_extruder_id])
|
||||
displayVal = limitDisplayVal(displayVal, m_curr_extruder_id)
|
||||
m_cell_inputs[i][j].value = displayVal;
|
||||
m_display_matrix[index] = displayVal;
|
||||
}
|
||||
}
|
||||
updateWarningTexts();
|
||||
}
|
||||
|
||||
|
||||
|
||||
function updateWarningTexts() {
|
||||
let hasException = false;
|
||||
for (let i = 0; i < m_number_of_filaments; i++) {
|
||||
for (let j = 0; j < m_number_of_filaments; j++) {
|
||||
if (i === j) continue;
|
||||
const input = m_cell_inputs[i][j];
|
||||
let val = parseInt(input.value, 10);
|
||||
if (isNaN(val)) val = 0;
|
||||
|
||||
if (val < m_min_flush_volumes[m_curr_extruder_id] || val > m_max_flush_volumes[m_curr_extruder_id]) {
|
||||
input.style.color = "red";
|
||||
hasException = true;
|
||||
} else {
|
||||
input.style.removeProperty("color");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const rangeLabel = document.getElementById("volume_range_panel");
|
||||
if (hasException) {
|
||||
rangeLabel.classList.remove("normal-text");
|
||||
rangeLabel.classList.add("warning-text");
|
||||
} else {
|
||||
rangeLabel.classList.remove("warning-text");
|
||||
rangeLabel.classList.add("normal-text");
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -17,7 +17,7 @@
|
||||
<body onLoad="OnInit()">
|
||||
<div id="LoadBlock">
|
||||
<img id="LoadingSvg" src="loading.svg" />
|
||||
<div id="LoadTip" class="trans" tid="t126">Loading……</div>
|
||||
<div id="LoadTip" class="trans TextS1" tid="t126">Loading……</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -32,5 +32,4 @@ body
|
||||
{
|
||||
font-size: 15px;
|
||||
font-weight: 700;
|
||||
color: #262E30;
|
||||
}
|
||||
@@ -2,8 +2,8 @@
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M11 19.2742C11 19.675 11.3555 20 11.7941 20C16.3261 20 20 16.6421 20 12.5C20 8.35786 16.3261 5 11.7941 5C11.3555 5 11 5.32496 11 5.72581C11 6.12666 11.3555 6.45161 11.7941 6.45161C15.4489 6.45161 18.4118 9.15957 18.4118 12.5C18.4118 15.8404 15.4489 18.5484 11.7941 18.5484C11.3555 18.5484 11 18.8733 11 19.2742Z" fill="url(#paint0_linear_2417_1599)"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_2417_1599" x1="11.9338" y1="19.2801" x2="11" y2="5.79458" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#00AE42"/>
|
||||
<stop offset="1" stop-color="#00AE42" stop-opacity="0"/>
|
||||
<stop stop-color="#4479FB"/>
|
||||
<stop offset="1" stop-color="#4479FB" stop-opacity="0"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 747 B After Width: | Height: | Size: 747 B |
@@ -9,13 +9,13 @@
|
||||
padding: 0px;
|
||||
border-bottom:#4479FB 1px solid;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content:space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
|
||||
.BannerBtns
|
||||
{
|
||||
float: right;
|
||||
height: 40px;
|
||||
text-align: center;
|
||||
margin-right: 10px;
|
||||
}
|
||||
@@ -49,10 +49,35 @@
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.PrinterBlock img
|
||||
.PImg
|
||||
{
|
||||
position:relative;
|
||||
background-color: #EEEEEE;
|
||||
width:160px;
|
||||
height: 160px;
|
||||
height: 160px;
|
||||
}
|
||||
|
||||
.ModelCheckBox
|
||||
{
|
||||
position: absolute;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
right: 10px;
|
||||
top: 10px;
|
||||
cursor: pointer;
|
||||
background-image: url("../img/emptycheck.svg");
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
.ModelCheckBox.ModelCheckBoxSelected
|
||||
{
|
||||
background-image: url("../img/bluecheck.svg");
|
||||
}
|
||||
|
||||
img.ModelThumbnail
|
||||
{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.PName
|
||||
@@ -63,7 +88,7 @@
|
||||
|
||||
.pNozzel
|
||||
{
|
||||
display: flex;
|
||||
display: none;
|
||||
align-items: center;
|
||||
justify-content:flex-start;
|
||||
color: #5A5A5A;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
function OnInit()
|
||||
{
|
||||
//let strInput=JSON.stringify(cData);
|
||||
//HandleStudio(strInput);
|
||||
//HandleModelList(cData);
|
||||
|
||||
TranslatePage();
|
||||
|
||||
@@ -47,6 +47,19 @@ function ShowPrinterThumb(pItem, strImg)
|
||||
$(pItem).attr('onerror',null);
|
||||
}
|
||||
|
||||
function ChooseModel( ModelName )
|
||||
{
|
||||
let ChooseItem=$(".ModelCheckBox[model='"+ModelName+"']");
|
||||
|
||||
if(ChooseItem!=null)
|
||||
{
|
||||
if( $(ChooseItem).hasClass('ModelCheckBoxSelected') )
|
||||
$(ChooseItem).removeClass('ModelCheckBoxSelected');
|
||||
else
|
||||
$(ChooseItem).addClass('ModelCheckBoxSelected');
|
||||
}
|
||||
}
|
||||
|
||||
function HandleModelList( pVal )
|
||||
{
|
||||
if( !pVal.hasOwnProperty("model") )
|
||||
@@ -78,11 +91,11 @@ function HandleModelList( pVal )
|
||||
|
||||
let HtmlNewVendor='<div class="OneVendorBlock" Vendor="'+strVendor+'">'+
|
||||
'<div class="BlockBanner">'+
|
||||
' <a>'+sVV+'</a>'+
|
||||
' <div class="BannerBtns">'+
|
||||
' <div class="SmallBtn_Green trans" tid="t11" onClick="SelectPrinterAll('+"\'"+strVendor+"\'"+')">all</div>'+
|
||||
' <div class="SmallBtn trans" tid="t12" onClick="SelectPrinterNone('+"\'"+strVendor+"\'"+')">none</div>'+
|
||||
' </div>'+
|
||||
' <a>'+sVV+'</a>'+
|
||||
'</div>'+
|
||||
'<div class="PrinterArea"> '+
|
||||
'</div>'+
|
||||
@@ -100,22 +113,18 @@ function HandleModelList( pVal )
|
||||
if( !ModelHtml.hasOwnProperty(strVendor))
|
||||
ModelHtml[strVendor]='';
|
||||
|
||||
let NozzleArray=OneModel['nozzle_diameter'].split(';');
|
||||
let HtmlNozzel='';
|
||||
for(let m=0;m<NozzleArray.length;m++)
|
||||
{
|
||||
let nNozzel=NozzleArray[m];
|
||||
HtmlNozzel+='<div class="pNozzel TextS2"><input type="checkbox" model="'+OneModel['model']+'" nozzel="'+nNozzel+'" vendor="'+strVendor+'" /><span>'+nNozzel+'</span><span class="trans" tid="t13">mm nozzle</span></div>';
|
||||
}
|
||||
|
||||
let CoverImage="../../image/printer/"+OneModel['model']+"_cover.png";
|
||||
let CoverImage2="../../../profiles/"+strVendor+"/"+OneModel['model']+"_cover.png";
|
||||
let CoverImage3=pVal['configpath']+"/system/"+strVendor+"/"+OneModel['model']+"_cover.png";
|
||||
|
||||
//alert( 'FinalCover: '+FinalCover );
|
||||
ModelHtml[strVendor]+='<div class="PrinterBlock">'+
|
||||
' <div class="PImg"><img src="'+CoverImage3+'" onerror="ShowPrinterThumb(this,\''+CoverImage2+'\')" /></div>'+
|
||||
' <div class="PName">'+OneModel['model']+'</div>'+ HtmlNozzel +'</div>';
|
||||
'<div class="PImg">'+
|
||||
'<img class="ModelThumbnail" src="'+CoverImage3+'" onerror="ShowPrinterThumb(this,\''+CoverImage2+'\')" />'+
|
||||
'<div class="ModelCheckBox" model="'+OneModel['model']+'" onClick="ChooseModel(\''+OneModel['model']+'\')"></div>'+
|
||||
'</div>'+
|
||||
' <div class="PName">'+OneModel['model']+'</div>'+
|
||||
'</div>';
|
||||
|
||||
}
|
||||
|
||||
@@ -127,7 +136,6 @@ function HandleModelList( pVal )
|
||||
|
||||
|
||||
//Update Checkbox
|
||||
$('input').prop("checked", false);
|
||||
for(let m=0;m<nTotal;m++)
|
||||
{
|
||||
let OneModel=pModel[m];
|
||||
@@ -135,27 +143,15 @@ function HandleModelList( pVal )
|
||||
let SelectList=OneModel['nozzle_selected'];
|
||||
if(SelectList!='')
|
||||
{
|
||||
SelectList=OneModel['nozzle_selected'].split(';');
|
||||
let nLen=SelectList.length;
|
||||
|
||||
for(let a=0;a<nLen;a++)
|
||||
{
|
||||
let nNozzel=SelectList[a];
|
||||
$("input[vendor='"+OneModel['vendor']+"'][model='"+OneModel['model']+"'][nozzel='"+nNozzel+"']").prop("checked", true);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$("input[vendor='"+OneModel['vendor']+"'][model='"+OneModel['model']+"']").prop("checked", false);
|
||||
ChooseModel(OneModel['model']);
|
||||
}
|
||||
}
|
||||
|
||||
let AlreadySelect=$("input:checked");
|
||||
let AlreadySelect=$(".ModelCheckBoxSelected");
|
||||
let nSelect=AlreadySelect.length;
|
||||
if(nSelect==0)
|
||||
{
|
||||
//w22
|
||||
$("input[nozzel='0.4']").prop("checked", true);
|
||||
{
|
||||
$("div.OneVendorBlock[vendor='X 4 Series'] .ModelCheckBox").addClass('ModelCheckBoxSelected');
|
||||
}
|
||||
|
||||
TranslatePage();
|
||||
@@ -164,13 +160,13 @@ function HandleModelList( pVal )
|
||||
|
||||
function SelectPrinterAll( sVendor )
|
||||
{
|
||||
$("input[vendor='"+sVendor+"']").prop("checked", true);
|
||||
$("div.OneVendorBlock[vendor='"+sVendor+"'] .ModelCheckBox").addClass('ModelCheckBoxSelected');
|
||||
}
|
||||
|
||||
|
||||
function SelectPrinterNone( sVendor )
|
||||
{
|
||||
$("input[vendor='"+sVendor+"']").prop("checked", false);
|
||||
$("div.OneVendorBlock[vendor='"+sVendor+"'] .ModelCheckBox").removeClass('ModelCheckBoxSelected');
|
||||
}
|
||||
|
||||
|
||||
@@ -187,7 +183,7 @@ function OnExit()
|
||||
{
|
||||
let ModelAll={};
|
||||
|
||||
let ModelSelect=$("input:checked");
|
||||
let ModelSelect=$(".ModelCheckBoxSelected");
|
||||
let nTotal=ModelSelect.length;
|
||||
|
||||
if( nTotal==0 )
|
||||
@@ -202,8 +198,6 @@ function OnExit()
|
||||
let OneItem=ModelSelect[n];
|
||||
|
||||
let strModel=OneItem.getAttribute("model");
|
||||
let strVendor=OneItem.getAttribute("vendor");
|
||||
let strNozzel=OneItem.getAttribute("nozzel");
|
||||
|
||||
//alert(strModel+strVendor+strNozzel);
|
||||
|
||||
@@ -214,11 +208,7 @@ function OnExit()
|
||||
ModelAll[strModel]={};
|
||||
|
||||
ModelAll[strModel]["model"]=strModel;
|
||||
ModelAll[strModel]["nozzle_diameter"]='';
|
||||
ModelAll[strModel]["vendor"]=strVendor;
|
||||
}
|
||||
|
||||
ModelAll[strModel]["nozzle_diameter"]+=ModelAll[strModel]["nozzle_diameter"]==''?strNozzel:';'+strNozzel;
|
||||
}
|
||||
|
||||
var tSend={};
|
||||
|
||||
@@ -23,37 +23,49 @@
|
||||
|
||||
<!--<div class="OneVendorBlock" Vendor="QDT">
|
||||
<div class="BlockBanner">
|
||||
<a>QDT-3DP</a>
|
||||
<div class="BannerBtns">
|
||||
<div class="SmallBtn_Green trans" onClick="SelectPrinterAll('QDT')">所有</div>
|
||||
<div class="SmallBtn trans" onClick="SelectPrinterNone('QDT')">无</div>
|
||||
</div>
|
||||
|
||||
<a>QDT-3DP</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="PrinterArea">
|
||||
|
||||
<div class="PrinterBlock">
|
||||
<div class="PImg"><img src="p2.jpg" /></div>
|
||||
<div class="PImg">
|
||||
<img class="ModelThumbnail" src="p2.jpg" />
|
||||
<div class="ModelCheckBox ModelCheckBoxSelected" model="QDT-3DP-V5NORMAL" onClick="ChooseModel('QDT-3DP-V5NORMAL')"></div>
|
||||
</div>
|
||||
<div class="PName">QDT-3DP-V4NORMAL</div>
|
||||
<div class="pNozzel TextS2"><input id="ZZ" type="checkbox" model="QDT-3DP-V4NORMAL" nozzel="0.4" vendor="QDT" />0.4mm nozzle</div>
|
||||
<div class="pNozzel TextS2"><input type="checkbox" model="QDT-3DP-V4NORMAL" nozzel="0.1" vendor="QDT" />0.1mm nozzle</div>
|
||||
<div class="pNozzel TextS2"><input type="checkbox" model="QDT-3DP-V4NORMAL" nozzel="0.1" vendor="QDT" />0.1mm nozzle</div>
|
||||
</div>
|
||||
<div class="PrinterBlock">
|
||||
<div class="PImg"><img src="p1.jpg" /></div>
|
||||
<div class="PImg">
|
||||
<img class="ModelThumbnail" src="p2.jpg" />
|
||||
<div class="ModelCheckBox"></div>
|
||||
</div>
|
||||
<div class="PName">QDT-3DP-V4NORMAL</div>
|
||||
<div class="pNozzel TextS2"><input type="checkbox" model="QDT-3DP-V5NORMAL" nozzel="0.4" vendor="QDT" />0.4mm nozzle</div>
|
||||
<div class="pNozzel TextS2"><input type="checkbox" model="QDT-3DP-V5NORMAL" nozzel="0.2" vendor="QDT" />0.22mm nozzle</div>
|
||||
<div class="pNozzel TextS2"><input type="checkbox" model="QDT-3DP-V5NORMAL" nozzel="0.1" vendor="QDT" />0.1mm nozzle</div>
|
||||
</div>
|
||||
<div class="PrinterBlock">
|
||||
<div class="PImg"><img src="p2.jpg" /></div>
|
||||
<div class="PImg">
|
||||
<img class="ModelThumbnail" src="p2.jpg" />
|
||||
<div class="ModelCheckBox"></div>
|
||||
</div>
|
||||
<div class="PName">QDT-3DP-V4NORMAL</div>
|
||||
<div class="pNozzel TextS2"><input id="ZZ" type="checkbox" model="QDT-3DP-V4NORMAL" nozzel="0.4" vendor="QDT" />0.4mm nozzle</div>
|
||||
<div class="pNozzel TextS2"><input type="checkbox" model="QDT-3DP-V4NORMAL" nozzel="0.1" vendor="QDT" />0.11mm nozzle</div>
|
||||
</div>
|
||||
<div class="PrinterBlock">
|
||||
<div class="PImg"><img src="p1.jpg" /></div>
|
||||
<div class="PImg">
|
||||
<img class="ModelThumbnail" src="p2.jpg" />
|
||||
<div class="ModelCheckBox ModelCheckBoxSelected"></div>
|
||||
</div>
|
||||
<div class="PName">QDT-3DP-V4NORMAL</div>
|
||||
<div class="pNozzel TextS2"><input type="checkbox" model="QDT-3DP-V5NORMAL" nozzel="0.4" vendor="QDT" />0.4mm nozzle</div>
|
||||
<div class="pNozzel TextS2"><input type="checkbox" model="QDT-3DP-V5NORMAL" nozzel="0.2" vendor="QDT" />0.22mm nozzle</div>
|
||||
@@ -66,24 +78,30 @@
|
||||
|
||||
<div class="OneVendorBlock" Vendor="QIDI">
|
||||
<div class="BlockBanner">
|
||||
<a>QIDI-3DP</a>
|
||||
<div class="BannerBtns">
|
||||
<div class="Banner-Btn" onClick="SelectPrinterAll('QIDI')">所有</div>
|
||||
<div class="Banner-Btn" onClick="SelectPrinterNone('QIDI')">无</div>
|
||||
<div class="SmallBtn_Green trans" onClick="SelectPrinterAll('QIDI')">所有</div>
|
||||
<div class="SmallBtn trans" onClick="SelectPrinterNone('QIDI')">无</div>
|
||||
</div>
|
||||
|
||||
<a>QDT-3DP</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="PrinterArea">
|
||||
|
||||
<div class="PrinterBlock">
|
||||
<div class="PImg"><img src="p2.jpg" /></div>
|
||||
<div class="PImg">
|
||||
<img class="ModelThumbnail" src="p2.jpg" />
|
||||
<div class="ModelCheckBox ModelCheckBoxSelected"></div>
|
||||
</div>
|
||||
<div class="PName TextS1">QDT-3DP-V4NORMAL</div>
|
||||
<div class="pNozzel TextS2"><input type="checkbox" model="QDT-3DP-V4NORMAL" nozzel="0.4" vendor="QIDI" />0.4mm nozzle</div>
|
||||
<div class="pNozzel TextS2"><input type="checkbox" model="QDT-3DP-V4NORMAL" nozzel="0.1" vendor="QIDI" />0.1mm nozzle</div>
|
||||
</div>
|
||||
<div class="PrinterBlock">
|
||||
<div class="PImg"><img src="p1.jpg" /></div>
|
||||
<div class="PImg">
|
||||
<img class="ModelThumbnail" src="p2.jpg" />
|
||||
<div class="ModelCheckBox ModelCheckBoxSelected"></div>
|
||||
</div>
|
||||
<div class="PName TextS1">QDT-3DP-V4NORMAL</div>
|
||||
<div class="pNozzel TextS2"><input type="checkbox" model="QDT-3DP-V5NORMAL" nozzel="0.4" vendor="QIDI" />0.4mm nozzle</div>
|
||||
<div class="pNozzel TextS2"><input type="checkbox" model="QDT-3DP-V5NORMAL" nozzel="0.2" vendor="QIDI" />0.2mm nozzle</div>
|
||||
|
||||
@@ -1,472 +0,0 @@
|
||||
var cData={
|
||||
"filament": {
|
||||
"QDT PA-CF @QDT": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "QDT PA-CF @QDT",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/QDT PA-CF @QDT.json",
|
||||
"type": "PA6+CF",
|
||||
"vendor": "QDT"
|
||||
},
|
||||
"Generic ABS": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "Generic ABS",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/Generic ABS.json",
|
||||
"type": "ABS",
|
||||
"vendor": "Unknow"
|
||||
},
|
||||
"Generic PETG": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "Generic PETG",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/Generic PETG.json",
|
||||
"type": "PET",
|
||||
"vendor": "Unknow"
|
||||
},
|
||||
"Generic PLA": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "Generic PLA",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/Generic PLA.json",
|
||||
"type": "PLA",
|
||||
"vendor": "Unknow"
|
||||
},
|
||||
"Generic TPU": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "Generic TPU",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/Generic TPU.json",
|
||||
"type": "TPU",
|
||||
"vendor": "Unknow"
|
||||
},
|
||||
"Generic TPU83": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "Generic TPU83",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/Generic TPU83.json",
|
||||
"type": "TPU",
|
||||
"vendor": "Unknow"
|
||||
},
|
||||
"Generic TPU87": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "Generic TPU87",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/Generic TPU87.json",
|
||||
"type": "TPU",
|
||||
"vendor": "Unknow"
|
||||
},
|
||||
"Generic TPU90": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "Generic TPU90",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/Generic TPU90.json",
|
||||
"type": "TPU",
|
||||
"vendor": "Unknow"
|
||||
},
|
||||
"Generic TPU95": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "Generic TPU95",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/Generic TPU95.json",
|
||||
"type": "TPU",
|
||||
"vendor": "Unknow"
|
||||
},
|
||||
"K5 ABS @Kexcelled": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "K5 ABS @Kexcelled",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/K5 ABS @Kexcelled.json",
|
||||
"type": "ABS",
|
||||
"vendor": "Kexcelled"
|
||||
},
|
||||
"K5 ASA @Kexcelled": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "K5 ASA @Kexcelled",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/K5 ASA @Kexcelled.json",
|
||||
"type": "ABS",
|
||||
"vendor": "Kexcelled"
|
||||
},
|
||||
"K5 PETG @Kexcelled": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "K5 PETG @Kexcelled",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/K5 PETG @Kexcelled.json",
|
||||
"type": "PET",
|
||||
"vendor": "Kexcelled"
|
||||
},
|
||||
"K5 PLA~ @Kexcelled": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "K5 PLA~ @Kexcelled",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/K5 PLA~ @Kexcelled.json",
|
||||
"type": "PLA",
|
||||
"vendor": "Kexcelled"
|
||||
},
|
||||
"K5 Silk PLA~ @Kexcelled": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "K5 Silk PLA~ @Kexcelled",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/K5 Silk PLA~ @Kexcelled.json",
|
||||
"type": "PLA",
|
||||
"vendor": "Kexcelled"
|
||||
},
|
||||
"K5 Sparkle PLA @Kexcelled": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "K5 Sparkle PLA @Kexcelled",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/K5 Sparkle PLA @Kexcelled.json",
|
||||
"type": "PLA",
|
||||
"vendor": "Kexcelled"
|
||||
},
|
||||
"K5M PLA~ @Kexcelled": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "K5M PLA~ @Kexcelled",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/K5M PLA~ @Kexcelled.json",
|
||||
"type": "PLA",
|
||||
"vendor": "Kexcelled"
|
||||
},
|
||||
"K5P PLA~ @Kexcelled": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "K5P PLA~ @Kexcelled",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/K5P PLA~ @Kexcelled.json",
|
||||
"type": "PLA",
|
||||
"vendor": "Kexcelled"
|
||||
},
|
||||
"K5T ABS @Kexcelled": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "K5T ABS @Kexcelled",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/K5T ABS @Kexcelled.json",
|
||||
"type": "ABS",
|
||||
"vendor": "Kexcelled"
|
||||
},
|
||||
"K6 PETG @Kexcelled": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "K6 PETG @Kexcelled",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/K6 PETG @Kexcelled.json",
|
||||
"type": "PET",
|
||||
"vendor": "Kexcelled"
|
||||
},
|
||||
"K6 PLA~ @Kexcelled": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "K6 PLA~ @Kexcelled",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/K6 PLA~ @Kexcelled.json",
|
||||
"type": "PLA",
|
||||
"vendor": "Kexcelled"
|
||||
},
|
||||
"K6CF PLA~ @Kexcelled ": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "K6CF PLA~ @Kexcelled ",
|
||||
"selected": 0,
|
||||
"sub_path": "filament/K6CF PLA~ @Kexcelled.json",
|
||||
"type": "PLA",
|
||||
"vendor": "Kexcelled"
|
||||
},
|
||||
"K7 PC @Kexcelled ": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "K7 PC @Kexcelled ",
|
||||
"selected": 0,
|
||||
"sub_path": "filament/K7 PC @Kexcelled.json",
|
||||
"type": "PA6+CF",
|
||||
"vendor": "Kexcelled"
|
||||
},
|
||||
"K7CF PETG @Kexcelled": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "K7CF PETG @Kexcelled",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/K7CF PETG @Kexcelled.json",
|
||||
"type": "PET",
|
||||
"vendor": "Kexcelled"
|
||||
},
|
||||
"K7CFLM PAHT @Kexcelled": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "K7CFLM PAHT @Kexcelled",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/K7CFLM PAHT @Kexcelled.json",
|
||||
"type": "PA6+CF",
|
||||
"vendor": "Kexcelled"
|
||||
},
|
||||
"PLA Silk with Glue @ALL": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "PLA Silk with Glue @ALL",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/PLA Silk with Glue @ALL.json",
|
||||
"type": "PLA",
|
||||
"vendor": "ALL"
|
||||
},
|
||||
"PLA with Glue except Silk @ALL": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "PLA with Glue except Silk @ALL",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/PLA with Glue except Silk @ALL.json",
|
||||
"type": "PLA",
|
||||
"vendor": "ALL"
|
||||
},
|
||||
"PolyDissolve @Polymaker": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "PolyDissolve @Polymaker",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/PolyDissolve @Polymaker.json",
|
||||
"type": "PLA",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"PolyFlex TPU95HF @Polymaker": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "PolyFlex TPU95HF @Polymaker",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/PolyFlex TPU95HF @Polymaker.json",
|
||||
"type": "TPU",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"PolyLite ABS @Polymaker": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "PolyLite ABS @Polymaker",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/PolyLite ABS @Polymaker.json",
|
||||
"type": "ABS",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"PolyLite ASA @Polymaker": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "PolyLite ASA @Polymaker",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/PolyLite ASA @Polymaker.json",
|
||||
"type": "ABS",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"PolyLite PC @Polymaker": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "PolyLite PC @Polymaker",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/PolyLite PC @Polymaker.json",
|
||||
"type": "PA6+CF",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"PolyLite PETG @Polymaker": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "PolyLite PETG @Polymaker",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/PolyLite PETG @Polymaker.json",
|
||||
"type": "PET",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"PolyLite PLA Pro~ @Polymaker": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "PolyLite PLA Pro~ @Polymaker",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/PolyLite PLA Pro~ @Polymaker.json",
|
||||
"type": "PLA",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"PolyLite PLA Silk~ @Polymaker": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "PolyLite PLA Silk~ @Polymaker",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/PolyLite PLA Silk~ @Polymaker.json",
|
||||
"type": "PLA",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"PolyLite PLA~ @Polymaker": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "PolyLite PLA~ @Polymaker",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/PolyLite PLA~ @Polymaker.json",
|
||||
"type": "PLA",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"PolyMax PC @Polymaker": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "PolyMax PC @Polymaker",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/PolyMax PC @Polymaker.json",
|
||||
"type": "PA6+CF",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"PolyMax PETG @Polymaker": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "PolyMax PETG @Polymaker",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/PolyMax PETG @Polymaker.json",
|
||||
"type": "PET",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"PolyMax PLA~ @Polymaker": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "PolyMax PLA~ @Polymaker",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/PolyMax PLA~ @Polymaker.json",
|
||||
"type": "PLA",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"PolyMide CoPA @Polymaker": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "PolyMide CoPA @Polymaker",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/PolyMide CoPA @Polymaker.json",
|
||||
"type": "PA6+CF",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"PolyMide PA12-CF @Polymaker": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "PolyMide PA12-CF @Polymaker",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/PolyMide PA12-CF @Polymaker.json",
|
||||
"type": "PA6+CF",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"PolyMide PA6-CF @Polymaker": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "PolyMide PA6-CF @Polymaker",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/PolyMide PA6-CF @Polymaker.json",
|
||||
"type": "PA6+CF",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"PolyMide PA6-GF @Polymaker": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "PolyMide PA6-GF @Polymaker",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/PolyMide PA6-GF @Polymaker.json",
|
||||
"type": "PA6+CF",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"PolySupport @Polymaker": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "PolySupport @Polymaker",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/PolySupport @Polymaker.json",
|
||||
"type": "PLA",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"PolyTerra PLA~ @Polymaker": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "PolyTerra PLA~ @Polymaker",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/PolyTerra PLA~ @Polymaker.json",
|
||||
"type": "PLA",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"PolyWood PLA~ @Polymaker": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "PolyWood PLA~ @Polymaker",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/PolyWood PLA~ @Polymaker.json",
|
||||
"type": "PLA",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"eSUN ABS @eSUN": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "eSUN ABS @eSUN",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/eSUN ABS @eSUN.json",
|
||||
"type": "ABS",
|
||||
"vendor": "eSUN"
|
||||
},
|
||||
"eSUN ABS+ @eSUN": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "eSUN ABS+ @eSUN",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/eSUN ABS+ @eSUN.json",
|
||||
"type": "ABS",
|
||||
"vendor": "eSUN"
|
||||
},
|
||||
"eSUN PETG @eSUN": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "eSUN PETG @eSUN",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/eSUN PETG @eSUN.json",
|
||||
"type": "PET",
|
||||
"vendor": "eSUN"
|
||||
},
|
||||
"eSUN PLA @eSUN": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "eSUN PLA @eSUN",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/eSUN PLA @eSUN.json",
|
||||
"type": "PLA",
|
||||
"vendor": "eSUN"
|
||||
},
|
||||
"eSUN PLA Matte~ @eSUN": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "eSUN PLA Matte~ @eSUN",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/eSUN PLA Matte~ @eSUN.json",
|
||||
"type": "PLA",
|
||||
"vendor": "eSUN"
|
||||
},
|
||||
"eSUN PLA ST @eSUN": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "eSUN PLA ST @eSUN",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/eSUN PLA ST @eSUN.json",
|
||||
"type": "PLA",
|
||||
"vendor": "eSUN"
|
||||
},
|
||||
"eSUN PLA Silk~ @eSUN": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "eSUN PLA Silk~ @eSUN",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/eSUN PLA Silk~ @eSUN.json",
|
||||
"type": "PLA",
|
||||
"vendor": "eSUN"
|
||||
},
|
||||
"eSUN PLA+~ @eSUN": {
|
||||
"models": "[QDT-3DP-V4NORMAL][QDT-3DP-V5NORMAL]",
|
||||
"name": "eSUN PLA+~ @eSUN",
|
||||
"selected": 1,
|
||||
"sub_path": "filament/eSUN PLA+~ @eSUN.json",
|
||||
"type": "PLA",
|
||||
"vendor": "eSUN"
|
||||
}
|
||||
},
|
||||
"machine": [{
|
||||
"model": "QDT-3DP-V4NORMAL",
|
||||
"name": "QIDITech QDT-3DP-001-V4-normal",
|
||||
"sub_path": "machine/QIDITech QDT-3DP-001-V4-normal.json"
|
||||
},
|
||||
{
|
||||
"model": "QDT-3DP-V5NORMAL",
|
||||
"name": "QIDITech QDT-3DP-001-V5-normal",
|
||||
"sub_path": "machine/QIDITech QDT-3DP-001-V5-normal.json"
|
||||
}
|
||||
],
|
||||
"model": [{
|
||||
"cover": "D:\\Document\\QIDI\\DevCode\\Slicer\\qidi_slicer\\build\\src\\Debug\\resources\\profiles\\QDT\\QDT-3DP-V4NORMAL_cover.png",
|
||||
"materials": "Generic PLA;PolyDissolve @Polymaker;PolyFlex TPU95HF @Polymaker;K5 Sparkle PLA @Kexcelled;Rock PLA @Polymaker;Generic TPU95;Generic TPU90;Generic TPU87;Generic TPU83;PolyMide CoPA @Polymaker;PolyMide PA6-GF @Polymaker;PolyMide PA12-CF @Polymaker;PolyMide PA6-CF @Polymaker;PolyLite ASA @Polymaker;K5 ASA @Kexcelled;K5T ABS @Kexcelled;PLA with Glue except Silk @ALL;PLA Silk with Glue @ALL;PolyTerra PLA~ @Polymaker; PolyLite PLA~ @Polymaker; PolyLite PLA Pro~ @Polymaker; PolyLite PLA Silk~ @Polymaker; PolyMax PLA~ @Polymaker; PolyWood PLA~ @Polymaker;K5 Silk PLA~ @Kexcelled;K5 PLA~ @Kexcelled;K6 PLA~ @Kexcelled;K6CF PLA~ @Kexcelled;K5M PLA~ @Kexcelled;K5P PLA~ @Kexcelled;eSUN PLA @eSUN; eSUN PLA+~ @eSUN; eSUN PLA Matte~ @eSUN; eSUN PLA Silk~ @eSUN; eSUN PLA ST @eSUN; PolyLite ABS @Polymaker; K5 ABS @Kexcelled; eSUN ABS @eSUN; eSUN ABS+ @eSUN; K5 PETG @Kexcelled; K6 PETG @Kexcelled; PolyMax PETG @Polymaker; PolyLite PETG @Polymaker; eSUN PETG @eSUN; PolySupport @Polymaker;K7CF PETG @Kexcelled;K7CFLM PAHT @Kexcelled; K7LM PAHT @Kexcelled; QDT PA-CF @QDT;K7 PC @Kexcelled; PolyLite PC @Polymaker; PolyMax PC @Polymaker;",
|
||||
"model": "QDT-3DP-V4NORMAL",
|
||||
"nozzle_diameter": "0.4;0.2",
|
||||
"nozzle_selected": "0.4",
|
||||
"sub_path": "machine/QDT-3DP-V4NORMAL.json",
|
||||
"vendor": "QDT"
|
||||
},
|
||||
{
|
||||
"cover": "D:\\Document\\QIDI\\DevCode\\Slicer\\qidi_slicer\\build\\src\\Debug\\resources\\profiles\\QDT\\QDT-3DP-V5NORMAL_cover.png",
|
||||
"materials": "Generic PLA;PolyDissolve @Polymaker;PolyFlex TPU95HF @Polymaker;K5 Sparkle PLA @Kexcelled;Rock PLA @Polymaker;Generic TPU95;Generic TPU90;Generic TPU87;Generic TPU83;PolyMide CoPA @Polymaker;PolyMide PA6-GF @Polymaker;PolyMide PA12-CF @Polymaker;PolyMide PA6-CF @Polymaker;PolyLite ASA @Polymaker;K5 ASA @Kexcelled;K5T ABS @Kexcelled;PLA with Glue except Silk @ALL;PLA Silk with Glue @ALL;PolyTerra PLA~ @Polymaker; PolyLite PLA~ @Polymaker; PolyLite PLA Pro~ @Polymaker; PolyLite PLA Silk~ @Polymaker; PolyMax PLA~ @Polymaker; PolyWood PLA~ @Polymaker;K5 Silk PLA~ @Kexcelled;K5 PLA~ @Kexcelled;K6 PLA~ @Kexcelled;K6CF PLA~ @Kexcelled;K5M PLA~ @Kexcelled;K5P PLA~ @Kexcelled;eSUN PLA @eSUN; eSUN PLA+~ @eSUN; eSUN PLA Matte~ @eSUN; eSUN PLA Silk~ @eSUN; eSUN PLA ST @eSUN; PolyLite ABS @Polymaker; K5 ABS @Kexcelled; eSUN ABS @eSUN; eSUN ABS+ @eSUN; K5 PETG @Kexcelled; K6 PETG @Kexcelled; PolyMax PETG @Polymaker; PolyLite PETG @Polymaker; eSUN PETG @eSUN; PolySupport @Polymaker;K7CF PETG @Kexcelled;K7CFLM PAHT @Kexcelled; K7LM PAHT @Kexcelled; QDT PA-CF @QDT;K7 PC @Kexcelled; PolyLite PC @Polymaker; PolyMax PC @Polymaker;",
|
||||
"model": "QDT-3DP-V5NORMAL",
|
||||
"nozzle_diameter": "0.4;0.2;0.1",
|
||||
"nozzle_selected": "0.4",
|
||||
"sub_path": "machine/QDT-3DP-V5NORMAL.json",
|
||||
"vendor": "QDT"
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
|
||||
var MData={
|
||||
"QDT-3DP-V4NORMAL": {
|
||||
"model": "QDT-3DP-V4NORMAL",
|
||||
"nozzle_diameter": "0.4",
|
||||
"vendor": "QDT"
|
||||
},
|
||||
"QDT-3DP-V5NORMAL": {
|
||||
"model": "QDT-3DP-V5NORMAL",
|
||||
"nozzle_diameter": "0.4;0.2",
|
||||
"vendor": "QDT"
|
||||
}
|
||||
};
|
||||
@@ -8,13 +8,13 @@
|
||||
padding: 0px;
|
||||
border-bottom:#4479FB 1px solid; /* y96 */
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content:space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
|
||||
.BannerBtns
|
||||
{
|
||||
float: right;
|
||||
height: 40px;
|
||||
text-align: center;
|
||||
margin-right: 10px;
|
||||
}
|
||||
@@ -48,21 +48,46 @@
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.PrinterBlock img
|
||||
.PImg
|
||||
{
|
||||
position:relative;
|
||||
background-color: #EEEEEE;
|
||||
width:160px;
|
||||
height: 160px;
|
||||
height: 160px;
|
||||
}
|
||||
|
||||
.ModelCheckBox
|
||||
{
|
||||
position: absolute;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
right: 10px;
|
||||
top: 10px;
|
||||
cursor: pointer;
|
||||
background-image: url("../img/emptycheck.svg");
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
.ModelCheckBox.ModelCheckBoxSelected
|
||||
{
|
||||
background-image: url("../img/bluecheck.svg");
|
||||
}
|
||||
|
||||
img.ModelThumbnail
|
||||
{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.PName
|
||||
{
|
||||
font-weight: 700;
|
||||
text-align:left;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.pNozzel
|
||||
{
|
||||
display: flex;
|
||||
display: none;
|
||||
align-items: center;
|
||||
justify-content:flex-start;
|
||||
color: #5A5A5A;
|
||||
|
||||
@@ -46,6 +46,19 @@ function ShowPrinterThumb(pItem, strImg)
|
||||
$(pItem).attr('onerror',null);
|
||||
}
|
||||
|
||||
function ChooseModel( ModelName )
|
||||
{
|
||||
let ChooseItem=$(".ModelCheckBox[model='"+ModelName+"']");
|
||||
|
||||
if(ChooseItem!=null)
|
||||
{
|
||||
if( $(ChooseItem).hasClass('ModelCheckBoxSelected') )
|
||||
$(ChooseItem).removeClass('ModelCheckBoxSelected');
|
||||
else
|
||||
$(ChooseItem).addClass('ModelCheckBoxSelected');
|
||||
}
|
||||
}
|
||||
|
||||
function HandleModelList( pVal )
|
||||
{
|
||||
if( !pVal.hasOwnProperty("model") )
|
||||
@@ -77,11 +90,11 @@ function HandleModelList( pVal )
|
||||
|
||||
let HtmlNewVendor='<div class="OneVendorBlock" Vendor="'+strVendor+'">'+
|
||||
'<div class="BlockBanner">'+
|
||||
' <a>'+sVV+'</a>'+
|
||||
' <div class="BannerBtns">'+
|
||||
' <div class="SmallBtn_Green trans" tid="t11" onClick="SelectPrinterAll('+"\'"+strVendor+"\'"+')">all</div>'+
|
||||
' <div class="SmallBtn trans" tid="t12" onClick="SelectPrinterNone('+"\'"+strVendor+"\'"+')">none</div>'+
|
||||
' </div>'+
|
||||
' <a>'+sVV+'</a>'+
|
||||
'</div>'+
|
||||
'<div class="PrinterArea"> '+
|
||||
'</div>'+
|
||||
@@ -98,14 +111,6 @@ function HandleModelList( pVal )
|
||||
//Collect Html Node Nozzel Html
|
||||
if( !ModelHtml.hasOwnProperty(strVendor))
|
||||
ModelHtml[strVendor]='';
|
||||
|
||||
let NozzleArray=OneModel['nozzle_diameter'].split(';');
|
||||
let HtmlNozzel='';
|
||||
for(let m=0;m<NozzleArray.length;m++)
|
||||
{
|
||||
let nNozzel=NozzleArray[m];
|
||||
HtmlNozzel+='<div class="pNozzel TextS2"><input type="checkbox" model="'+OneModel['model']+'" nozzel="'+nNozzel+'" vendor="'+strVendor+'" /><span>'+nNozzel+'</span><span class="trans" tid="t13">mm nozzle</span></div>';
|
||||
}
|
||||
|
||||
let CoverImage="../../image/printer/"+OneModel['model']+"_cover.png";
|
||||
let CoverImage2="../../../profiles/"+strVendor+"/"+OneModel['model']+"_cover.png";
|
||||
@@ -113,8 +118,13 @@ function HandleModelList( pVal )
|
||||
|
||||
//alert( 'FinalCover: '+FinalCover );
|
||||
ModelHtml[strVendor]+='<div class="PrinterBlock">'+
|
||||
' <div class="PImg"><img src="'+CoverImage3+'" onerror="ShowPrinterThumb(this,\''+CoverImage2+'\')" /></div>'+
|
||||
' <div class="PName">'+OneModel['model']+'</div>'+ HtmlNozzel +'</div>';
|
||||
'<div class="PImg">'+
|
||||
'<img class="ModelThumbnail" src="'+CoverImage3+'" onerror="ShowPrinterThumb(this,\''+CoverImage2+'\')" />'+
|
||||
'<div class="ModelCheckBox" model="'+OneModel['model']+'" onClick="ChooseModel(\''+OneModel['model']+'\')"></div>'+
|
||||
'</div>'+
|
||||
' <div class="PName">'+OneModel['model']+'</div>'+
|
||||
'</div>';
|
||||
|
||||
}
|
||||
|
||||
//Update Nozzel Html Append
|
||||
@@ -125,7 +135,6 @@ function HandleModelList( pVal )
|
||||
|
||||
|
||||
//Update Checkbox
|
||||
$('input').prop("checked", false);
|
||||
for(let m=0;m<nTotal;m++)
|
||||
{
|
||||
let OneModel=pModel[m];
|
||||
@@ -133,26 +142,15 @@ function HandleModelList( pVal )
|
||||
let SelectList=OneModel['nozzle_selected'];
|
||||
if(SelectList!='')
|
||||
{
|
||||
SelectList=OneModel['nozzle_selected'].split(';');
|
||||
let nLen=SelectList.length;
|
||||
|
||||
for(let a=0;a<nLen;a++)
|
||||
{
|
||||
let nNozzel=SelectList[a];
|
||||
$("input[vendor='"+OneModel['vendor']+"'][model='"+OneModel['model']+"'][nozzel='"+nNozzel+"']").prop("checked", true);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$("input[vendor='"+OneModel['vendor']+"'][model='"+OneModel['model']+"']").prop("checked", false);
|
||||
ChooseModel(OneModel['model']);
|
||||
}
|
||||
}
|
||||
|
||||
let AlreadySelect=$("input:checked");
|
||||
let AlreadySelect=$(".ModelCheckBoxSelected");
|
||||
let nSelect=AlreadySelect.length;
|
||||
if(nSelect==0)
|
||||
{
|
||||
$("input[nozzel='0.4'][vendor='QDT']").prop("checked", true);
|
||||
$("div.OneVendorBlock[vendor='QDT'] .ModelCheckBox").addClass('ModelCheckBoxSelected');
|
||||
}
|
||||
|
||||
TranslatePage();
|
||||
@@ -161,13 +159,13 @@ function HandleModelList( pVal )
|
||||
|
||||
function SelectPrinterAll( sVendor )
|
||||
{
|
||||
$("input[vendor='"+sVendor+"']").prop("checked", true);
|
||||
$("div.OneVendorBlock[vendor='"+sVendor+"'] .ModelCheckBox").addClass('ModelCheckBoxSelected');
|
||||
}
|
||||
|
||||
|
||||
function SelectPrinterNone( sVendor )
|
||||
{
|
||||
$("input[vendor='"+sVendor+"']").prop("checked", false);
|
||||
$("div.OneVendorBlock[vendor='"+sVendor+"'] .ModelCheckBox").removeClass('ModelCheckBoxSelected');
|
||||
}
|
||||
|
||||
|
||||
@@ -176,7 +174,7 @@ function OnExit()
|
||||
{
|
||||
let ModelAll={};
|
||||
|
||||
let ModelSelect=$("input:checked");
|
||||
let ModelSelect=$(".ModelCheckBoxSelected");
|
||||
let nTotal=ModelSelect.length;
|
||||
|
||||
if( nTotal==0 )
|
||||
@@ -191,8 +189,6 @@ function OnExit()
|
||||
let OneItem=ModelSelect[n];
|
||||
|
||||
let strModel=OneItem.getAttribute("model");
|
||||
let strVendor=OneItem.getAttribute("vendor");
|
||||
let strNozzel=OneItem.getAttribute("nozzel");
|
||||
|
||||
//alert(strModel+strVendor+strNozzel);
|
||||
|
||||
@@ -203,11 +199,7 @@ function OnExit()
|
||||
ModelAll[strModel]={};
|
||||
|
||||
ModelAll[strModel]["model"]=strModel;
|
||||
ModelAll[strModel]["nozzle_diameter"]='';
|
||||
ModelAll[strModel]["vendor"]=strVendor;
|
||||
}
|
||||
|
||||
ModelAll[strModel]["nozzle_diameter"]+=ModelAll[strModel]["nozzle_diameter"]==''?strNozzel:';'+strNozzel;
|
||||
}
|
||||
|
||||
var tSend={};
|
||||
|
||||
@@ -40,7 +40,7 @@ body
|
||||
|
||||
.TextS1
|
||||
{
|
||||
|
||||
color:#efeff0;
|
||||
}
|
||||
|
||||
.TextS2
|
||||
|
||||
7
resources/web/guide/img/bluecheck.svg
Normal file
7
resources/web/guide/img/bluecheck.svg
Normal file
@@ -0,0 +1,7 @@
|
||||
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M2 2H26V26H2V2Z" fill="#4479FB"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M1 1H27V27H1V1ZM2 2V26H26V2H2Z" fill="#ACACAC"/>
|
||||
<path d="M2 2H26V26H2V2Z" fill="#4479FB"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M25 3H3V25H25V3ZM2 2V26H26V2H2Z" fill="white"/>
|
||||
<path d="M22.7168 8.2832C23.0944 8.66079 23.0944 9.27137 22.7168 9.64495L12.112 20.2537C11.7344 20.6313 11.1239 20.6313 10.7503 20.2537L5.2832 14.7907C4.9056 14.4131 4.9056 13.8025 5.2832 13.4289C5.66079 13.0553 6.27137 13.0513 6.64495 13.4289L11.4251 18.2091L21.351 8.2832C21.7286 7.9056 22.3392 7.9056 22.7128 8.2832H22.7168Z" fill="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 728 B |
5
resources/web/guide/img/emptycheck.svg
Normal file
5
resources/web/guide/img/emptycheck.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M1 1H27V27H1V1ZM2 2V26H26V2H2Z" fill="#ACACAC"/>
|
||||
<path d="M2 2H26V26H2V2Z" fill="white" fill-opacity="0.3"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M25 3H3V25H25V3ZM2 2V26H26V2H2Z" fill="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 358 B |
@@ -222,7 +222,7 @@ body
|
||||
|
||||
.PH_Status_Success
|
||||
{
|
||||
color: #00AE42;
|
||||
color: #4479fb;
|
||||
}
|
||||
|
||||
.PH_Gcode_Icon
|
||||
|
||||
@@ -269,7 +269,7 @@ body
|
||||
position: absolute;
|
||||
height: 60px;
|
||||
width: 12px;
|
||||
right: 1px;
|
||||
right: 0px;
|
||||
top: calc(50% - 30px);
|
||||
cursor: pointer;
|
||||
background-repeat: no-repeat;
|
||||
@@ -279,6 +279,7 @@ body
|
||||
border-top: 1px solid rgba(238, 238, 238, 1);
|
||||
border-bottom: 1px solid rgba(238, 238, 238, 1);
|
||||
border-radius: 4px 0px 0px 4px;
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
#HideBtn:hover
|
||||
|
||||
@@ -63,5 +63,7 @@
|
||||
#HideBtn
|
||||
{
|
||||
transform: scaleX(-1);
|
||||
border-radius: 0px 4px 4px 0px;
|
||||
border-radius: 0px 4px 4px 0px;
|
||||
border-left: 0px solid rgba(238, 238, 238, 1);
|
||||
border-right: 1px solid rgba(238, 238, 238, 1);
|
||||
}
|
||||
@@ -431,18 +431,26 @@ function OnClickOpenProject()
|
||||
SendWXMessage( JSON.stringify(tSend) );
|
||||
}
|
||||
|
||||
let RecentClick=true;
|
||||
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) );
|
||||
|
||||
if(RecentClick)
|
||||
{
|
||||
RecentClick = false;
|
||||
setTimeout(() => {
|
||||
RecentClick = true;
|
||||
}, 1000);
|
||||
|
||||
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( )
|
||||
|
||||
@@ -253,6 +253,7 @@ function ShowLeftMenuTip( bShow )
|
||||
$("div[menu='recent'] div.BtnIcon").prop('title',GetCurrentTextByKey('t35'));
|
||||
$("div[menu='online'] div.BtnIcon").prop('title',GetCurrentTextByKey('t107'));
|
||||
$("div[menu='makerlab'] div.BtnIcon").prop('title','MakerLab');
|
||||
$("div[menu='makersupply'] div.BtnIcon").prop('title',GetCurrentTextByKey('t125'));
|
||||
$("div[menu='printhistory'] div.BtnIcon").prop('title',GetCurrentTextByKey('t117'));
|
||||
$("div[menu='manual'] div.BtnIcon").prop('title',GetCurrentTextByKey('t87'));
|
||||
}
|
||||
@@ -262,8 +263,9 @@ function ShowLeftMenuTip( bShow )
|
||||
$("div[menu='recent'] div.BtnIcon").removeAttr('title');
|
||||
$("div[menu='online'] div.BtnIcon").removeAttr('title');
|
||||
$("div[menu='makerlab'] div.BtnIcon").removeAttr('title');
|
||||
$("div[menu='makersupply'] div.BtnIcon").removeAttr('title');
|
||||
$("div[menu='printhistory'] div.BtnIcon").removeAttr('title');
|
||||
$("div[menu='manual'] div.BtnIcon").removeAttr('title');
|
||||
$("div[menu='manual'] div.BtnIcon").removeAttr('title');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -77,17 +77,4 @@
|
||||
<div id="HideBtn" onClick="ChangeLeftWidth()"></div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user