mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 12:41:20 -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
				
			
		|  | @ -147,3 +147,31 @@ | ||||||
| 	display: flex; | 	display: flex; | ||||||
| 	justify-content:space-around; | 	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; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  | @ -51,7 +51,7 @@ function HandleModelList( pVal ) | ||||||
| 	if( !pVal.hasOwnProperty("model") ) | 	if( !pVal.hasOwnProperty("model") ) | ||||||
| 		return; | 		return; | ||||||
| 
 | 
 | ||||||
|     let pModel=pVal['model']; |     pModel=pVal['model']; | ||||||
| 	 | 	 | ||||||
| 	let nTotal=pModel.length; | 	let nTotal=pModel.length; | ||||||
| 	let ModelHtml={}; | 	let ModelHtml={}; | ||||||
|  | @ -98,7 +98,7 @@ function HandleModelList( pVal ) | ||||||
| 		for(let m=0;m<NozzleArray.length;m++) | 		for(let m=0;m<NozzleArray.length;m++) | ||||||
| 		{ | 		{ | ||||||
| 			let nNozzel=NozzleArray[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']; | 		let CoverImage=OneModel['cover']; | ||||||
|  | @ -119,18 +119,20 @@ function HandleModelList( pVal ) | ||||||
| 	for(let m=0;m<nTotal;m++) | 	for(let m=0;m<nTotal;m++) | ||||||
| 	{ | 	{ | ||||||
| 		let OneModel=pModel[m]; | 		let OneModel=pModel[m]; | ||||||
| 	 | 
 | ||||||
| 		let SelectList=OneModel['nozzle_selected']; | 		let SelectList=OneModel['nozzle_selected']; | ||||||
| 		if(SelectList!='') | 		if(SelectList!='') | ||||||
| 		{ | 		{ | ||||||
| 			SelectList=OneModel['nozzle_selected'].split(';'); | 			SelectList=OneModel['nozzle_selected'].split(';'); | ||||||
|     		let nLen=SelectList.length; |     		let nLen=SelectList.length; | ||||||
| 		 | 
 | ||||||
| 		    for(let a=0;a<nLen;a++) | 		    for(let a=0;a<nLen;a++) | ||||||
| 		    { | 			{ | ||||||
| 			    let nNozzel=SelectList[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 | 		else | ||||||
| 		{ | 		{ | ||||||
|  | @ -148,6 +150,155 @@ function HandleModelList( pVal ) | ||||||
| 	TranslatePage(); | 	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 ) | function SelectPrinterAll( sVendor ) | ||||||
| { | { | ||||||
|  | @ -160,6 +311,44 @@ function SelectPrinterNone( sVendor ) | ||||||
| 	$("input[vendor='"+sVendor+"']").prop("checked", false); | 	$("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() | function OnExit() | ||||||
|  | @ -238,7 +427,7 @@ function CancelSelect() | ||||||
| 
 | 
 | ||||||
| function ConfirmSelect() | function ConfirmSelect() | ||||||
| { | { | ||||||
| 	let nChoose=OnExit(); | 	let nChoose=OnExitFilter(); | ||||||
| 	 | 	 | ||||||
| 	if(nChoose>0) | 	if(nChoose>0) | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -7,18 +7,23 @@ | ||||||
| <link rel="stylesheet" type="text/css" href="../css/common.css" />	 | <link rel="stylesheet" type="text/css" href="../css/common.css" />	 | ||||||
| <link rel="stylesheet" type="text/css" href="24.css" /> | <link rel="stylesheet" type="text/css" href="24.css" /> | ||||||
| <link rel="stylesheet" type="text/css" href="../css/dark.css" />	 | <link rel="stylesheet" type="text/css" href="../css/dark.css" />	 | ||||||
| <script type="text/javascript" src="test.js"></script>	 | <!-- <script type="text/javascript" src="test.js"></script> --> | ||||||
| <script type="text/javascript" src="../js/jquery-3.6.0.min.js"></script> | <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="../js/json2.js"></script>	 | ||||||
| <script type="text/javascript" src="../../data/text.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/globalapi.js"></script>	 | ||||||
| <script type="text/javascript" src="../js/common.js"></script> | <!-- <script type="text/javascript" src="../js/common.js"></script> --> | ||||||
| <script type="text/javascript" src="24.js"></script>		 | <script type="text/javascript" src="24.js"></script>		 | ||||||
| </head> | </head> | ||||||
| <body onLoad="OnInit()"> | <body onLoad="OnInit()"> | ||||||
| <div id="Title"> | <div id="Title"> | ||||||
| 	<div class="trans" tid="t10">Printer Selection</div> | 	<div class="trans" tid="t10">Printer Selection</div> | ||||||
| </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"s> | <div id="Content"  class="ZScrol"s> | ||||||
| 
 | 
 | ||||||
| <!--<div class="OneVendorBlock" Vendor="BBL">	 | <!--<div class="OneVendorBlock" Vendor="BBL">	 | ||||||
|  | @ -109,8 +114,13 @@ | ||||||
| 
 | 
 | ||||||
| 		if (window.event) { | 		if (window.event) { | ||||||
| 			try { e.keyCode = 0; } catch (e) { } | 			try { e.keyCode = 0; } catch (e) { } | ||||||
| 			e.returnValue = false; | 			e.returnValue = true; | ||||||
| 		} | 		} | ||||||
| 	}; | 	}; | ||||||
|  | 	let pModel = {}; | ||||||
|  | 	let ModelNozzleSelected = {}; | ||||||
|  | 	function textInput(obj) { | ||||||
|  | 		FilterModelList(obj.value); | ||||||
|  | 	} | ||||||
| </script> | </script> | ||||||
| </html> | </html> | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 ZdDroid
						ZdDroid