Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add search printer model in Setup wizard #2692

Merged
merged 1 commit into from
Nov 11, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions resources/web/guide/21/21.css
Original file line number Diff line number Diff line change
Expand Up @@ -124,3 +124,31 @@
display: flex;
justify-content:space-around;
}

.search {
width: 100%;
position: relative;
display: flex;
}

.searchTerm {
width: 100%;
border: 3px solid #009688;
/*border-right: none;*/
padding: 5px;
height: 20px;
border-radius: 5px 5px 5px 5px;
outline: none;
color: #9DBFAF;
}

.searchTerm:focus{
color: #009688;
}

/*Resize the wrap to see the search bar change!*/
.wrap{
width: 30%;
padding-bottom: 5px;
padding-left: 42px;
}
209 changes: 199 additions & 10 deletions resources/web/guide/21/21.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ function HandleStudio( pVal )
}
}


function ShowPrinterThumb(pItem, strImg)
{
$(pItem).attr('src',strImg);
Expand All @@ -52,7 +51,7 @@ function HandleModelList( pVal )
if( !pVal.hasOwnProperty("model") )
return;

let pModel=pVal['model'];
pModel=pVal['model'];

let nTotal=pModel.length;
let ModelHtml={};
Expand Down Expand Up @@ -99,7 +98,7 @@ function HandleModelList( pVal )
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>';
HtmlNozzel += '<div class="pNozzel TextS2"><input type="checkbox" model="' + OneModel['model'] + '" nozzel="' + nNozzel + '" vendor="' + strVendor +'" onclick="CheckBoxOnclick(this)" /><span>'+nNozzel+'</span><span class="trans" tid="t13">mm nozzle</span></div>';
}

let CoverImage=OneModel['cover'];
Expand All @@ -120,18 +119,20 @@ function HandleModelList( pVal )
for(let m=0;m<nTotal;m++)
{
let OneModel=pModel[m];

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);
}
$("input[vendor='" + OneModel['vendor'] + "'][model='" + OneModel['model'] + "'][nozzel='" + nNozzel + "']").prop("checked", true);

SetModelSelect(OneModel['vendor'], OneModel['model'], nNozzel, true);
}
}
else
{
Expand All @@ -149,6 +150,155 @@ function HandleModelList( pVal )
TranslatePage();
}

function CheckBoxOnclick(obj) {

let strModel = obj.getAttribute("model");

let strVendor = obj.getAttribute("vendor");
let strNozzel = obj.getAttribute("nozzel");

SetModelSelect(strVendor, strModel, strNozzel, obj.checked);

}

function SetModelSelect(vendor, model, nozzel, checked) {
if (!ModelNozzleSelected.hasOwnProperty(vendor) && !checked) {
return;
}

if (!ModelNozzleSelected.hasOwnProperty(vendor) && checked) {
ModelNozzleSelected[vendor] = {};
}

let oVendor = ModelNozzleSelected[vendor];
if (!oVendor.hasOwnProperty(model)) {
oVendor[model] = {};
}

let oModel = oVendor[model];
if (oModel.hasOwnProperty(nozzel) || checked) {
oVendor[model][nozzel] = checked;
}
}

function GetModelSelect(vendor, model, nozzel) {
if (!ModelNozzleSelected.hasOwnProperty(vendor)) {
return false;
}

let oVendor = ModelNozzleSelected[vendor];
if (!oVendor.hasOwnProperty(model)) {
return false;
}

let oModel = oVendor[model];
if (!oModel.hasOwnProperty(nozzel)) {
return false;
}

return oVendor[model][nozzel];
}

function FilterModelList(keyword) {

//Save checkbox state
let ModelSelect = $('input[type=checkbox]');
for (let n = 0; n < ModelSelect.length; n++) {
let OneItem = ModelSelect[n];

let strModel = OneItem.getAttribute("model");

let strVendor = OneItem.getAttribute("vendor");
let strNozzel = OneItem.getAttribute("nozzel");

SetModelSelect(strVendor, strModel, strNozzel, OneItem.checked);
}

let nTotal = pModel.length;
let ModelHtml = {};

$('#Content').empty();
for (let n = 0; n < nTotal; n++) {
let OneModel = pModel[n];

let strVendor = OneModel['vendor'];
let ModelName = OneModel['model'];
if (ModelName.toLowerCase().indexOf(keyword.toLowerCase()) == -1)
continue;

//Add Vendor Html Node
if ($(".OneVendorBlock[vendor='" + strVendor + "']").length == 0) {
let sVV = strVendor;
if (sVV == "BBL")
sVV = "Bambu Lab";
if (sVV == "Custom")
sVV = "Custom Printer";
if (sVV == "Other")
sVV = "Orca colosseum";

let HtmlNewVendor = '<div class="OneVendorBlock" Vendor="' + strVendor + '">' +
'<div class="BlockBanner">' +
' <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>' +
'</div>';

$('#Content').append(HtmlNewVendor);
}

//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 + '" onclick="CheckBoxOnclick(this)" /><span>' + nNozzel + '</span><span class="trans" tid="t13">mm nozzle</span></div>';
}

let CoverImage = OneModel['cover'];
ModelHtml[strVendor] += '<div class="PrinterBlock">' +
' <div class="PImg"><img src="' + CoverImage + '" /></div>' +
' <div class="PName">' + OneModel['model'] + '</div>' + HtmlNozzel + '</div>';
}

//Update Nozzel Html Append
for (let key in ModelHtml) {
let obj = $(".OneVendorBlock[vendor='" + key + "'] .PrinterArea");
obj.empty();
obj.append(ModelHtml[key]);
}


//Update Checkbox
ModelSelect = $('input[type=checkbox]');
for (let n = 0; n < ModelSelect.length; n++) {
let OneItem = ModelSelect[n];

let strModel = OneItem.getAttribute("model");
let strVendor = OneItem.getAttribute("vendor");
let strNozzel = OneItem.getAttribute("nozzel");

let checked = GetModelSelect(strVendor, strModel, strNozzel);

OneItem.checked = checked;
}

// let AlreadySelect=$("input:checked");
// let nSelect=AlreadySelect.length;
// if(nSelect==0)
// {
// $("input[nozzel='0.4'][vendor='Custom']").prop("checked", true);
// }

TranslatePage();
}

function SelectPrinterAll( sVendor )
{
Expand All @@ -162,15 +312,54 @@ function SelectPrinterNone( sVendor )
}


//
function GotoFilamentPage()
{
let nChoose=OnExit();
let nChoose=OnExitFilter();

if(nChoose>0)
window.open('../22/index.html','_self');
}

function OnExitFilter() {

let nTotal = 0;
let ModelAll = {};
for (vendor in ModelNozzleSelected) {
for (model in ModelNozzleSelected[vendor]) {
for (nozzel in ModelNozzleSelected[vendor][model]) {
if (!ModelNozzleSelected[vendor][model][nozzel])
continue;

if (!ModelAll.hasOwnProperty(model)) {
//alert("ADD: "+strModel);

ModelAll[model] = {};

ModelAll[model]["model"] = model;
ModelAll[model]["nozzle_diameter"] = '';
ModelAll[model]["vendor"] = vendor;
}

ModelAll[model]["nozzle_diameter"] += ModelAll[model]["nozzle_diameter"] == '' ? nozzel : ';' + nozzel;

nTotal++;
}

}
}

var tSend = {};
tSend['sequence_id'] = Math.round(new Date() / 1000);
tSend['command'] = "save_userguide_models";
tSend['data'] = ModelAll;

SendWXMessage(JSON.stringify(tSend));

return nTotal;

}

//
function OnExit()
{
let ModelAll={};
Expand Down
20 changes: 20 additions & 0 deletions resources/web/guide/21/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@
<div id="Title">
<div class="trans" tid="t10">Printer Selection</div>
</div>
<div class="wrap">
<div class="search">
<input type="text" class="searchTerm" placeholder="Device keyword" oninput="textInput(this)">
</div>
</div>
<div id="Content" class="ZScrol">

<!--<div class="OneVendorBlock" Vendor="BBL">
Expand Down Expand Up @@ -112,4 +117,19 @@


</body>
<script>
document.onkeydown = function (event) {
var e = event || window.event || arguments.callee.caller.arguments[0];

if (window.event) {
try { e.keyCode = 0; } catch (e) { }
e.returnValue = true;
}
};
let pModel = {};
let ModelNozzleSelected = {};
function textInput(obj) {
FilterModelList(obj.value);
}
</script>
</html>