mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 20:21:12 -06:00 
			
		
		
		
	Search printer model in add/remove printer dialog 选择打印机增加关键字搜索#3 (#2464)
* 选择打印机增加关键字搜索#3 * allow dismiss window by pressing ESC key --------- Co-authored-by: ZdDroid <601865048@qq.com> Co-authored-by: SoftFever <softfeverever@gmail.com>
This commit is contained in:
		
							parent
							
								
									acbf27036c
								
							
						
					
					
						commit
						0037a5cc2d
					
				
					 3 changed files with 238 additions and 11 deletions
				
			
		|  | @ -51,7 +51,7 @@ function HandleModelList( pVal ) | |||
| 	if( !pVal.hasOwnProperty("model") ) | ||||
| 		return; | ||||
| 
 | ||||
|     let pModel=pVal['model']; | ||||
|     pModel=pVal['model']; | ||||
| 	 | ||||
| 	let nTotal=pModel.length; | ||||
| 	let ModelHtml={}; | ||||
|  | @ -98,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']; | ||||
|  | @ -119,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 | ||||
| 		{ | ||||
|  | @ -148,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 ) | ||||
| { | ||||
|  | @ -160,6 +311,44 @@ function SelectPrinterNone( sVendor ) | |||
| 	$("input[vendor='"+sVendor+"']").prop("checked", false); | ||||
| } | ||||
| 
 | ||||
| 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() | ||||
|  | @ -238,7 +427,7 @@ function CancelSelect() | |||
| 
 | ||||
| function ConfirmSelect() | ||||
| { | ||||
| 	let nChoose=OnExit(); | ||||
| 	let nChoose=OnExitFilter(); | ||||
| 	 | ||||
| 	if(nChoose>0) | ||||
|     { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 ZdDroid
						ZdDroid