Greasy Fork

来自缓存

Greasy Fork is available in English.

2.5-自备引物

自备引物

当前为 2023-07-14 提交的版本,查看 最新版本

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/470833/1220007/25-%E8%87%AA%E5%A4%87%E5%BC%95%E7%89%A9.js

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

function 自备引物(){
	console.log('新的自备引物界面')
	var local_修改测序样品对应的引物名称=localStorage.getItem('修改测序样品对应的引物名称');
	var local_在测序样品显示选择的引物=localStorage.getItem('在测序样品显示选择的引物');
	var html=$('iframe[src="/viporder/SeqCustPrimerList.aspx"]')//自备引物页面
	html=html.contents().find('body').eq(0)
	var toolbar=html.find('.toolbar').eq(0)  // 找到了toolbar工具栏
	//添加toolbar工具栏按钮
	添加toolbar按钮()
	//添加toolbar工具栏按钮
	function 添加toolbar按钮(){
		var toolbar=html.find('.toolbar').eq(0)  // 找到了toolbar工具栏
		if (toolbar.find('.weiyiyici').length==0){
			//添加标记
			toolbar.addClass('weiyiyici')
			//修改测序样品对应的引物名称  按钮
			if (local_修改测序样品对应的引物名称=='true'){
				toolbar.append('<button id="edit_primer" onclick="return false">修改测序样品对应的引物名称</button>')
			}
			//在测序样品显示选择的引物  按钮
			if (local_在测序样品显示选择的引物=='true'){
				toolbar.append('<button id="show_primer_cexu" onclick="return false">在测序样品显示选择的引物</button>')
			}
			
			//点击 修改测序样品对应的引物名称  按钮
			toolbar.find('#edit_primer').click(function(){
				一键修改测序样品的引物名称()
			})
			//点击 在测序样品显示选择的引物  按钮
			toolbar.find('#show_primer_cexu').click(function(){
				在测序样品显示选择的引物()
			})
			
		}
	}
	
	
	
	//在 自备引物页面  添加 一键修改 测序样品 的引物名称
	function 一键修改测序样品的引物名称(){
		if(html.find('tbody').find("[aria-selected='true']").size()==0){return false}  //如果没有选择的行,那么退出
		selecteds_edit=html.find("[aria-selected='true']")
		for (var i=0;i<selecteds_edit.size();i++){
			id=selecteds_edit.eq(i).find('[aria-describedby=list_SeqCustPrimer_id]').text()  //获取id
			id=id+"-z"//最后的引物位置
			primer_name=selecteds_edit.eq(i).find('[aria-describedby=list_SeqCustPrimer_name]').text()  //获取自备引物的引物名称
			//get 请求  在 测序样品 根据 引物位置 获得所有需要更改的生产编号
			$.ajaxSettings.async = false; //get请求默认是异步的,在这里改为同步
			$.get("/seq/ashx/SeqSampleHandler.ashx?_search=true&nd=1624035568813&rows=2000000&page=1&sidx=seqs_prod_id&sord=desc&filters=%7B%22groupOp%22%3A%22AND%22%2C%22rules%22%3A%5B%7B%22field%22%3A%22seqs_primer_id_2_kind%22%2C%22op%22%3A%22eq%22%2C%22data%22%3A%22"+id+"%22%7D%5D%7D",
				function (data,status) {
					yps=data.match(/\d{1,}(?=,"seqo_order_id)/g)//匹配获得的生产编号集合,如果没有则为null
					if(!yps){return; }//如果没有找到生产编号 则进入下个循环
					yps_new=[] //新建一个空数组,用于存放所有需要修改的生产编号
					primers=data.match(/(seqs_primer":")(.*?)(?=","seqs_observe")/g)
					if(yps.length!=0){//如果yps有数据,yps为数组
						if(yps.length!= primers.length){alert(primer_name+'   在测序样品找到的生产编号和引物名称的个数不一致,需要手动更改');return; }
						//循环找到的引物,如果和自备引物的引物名称不一致,那么存放在yps_new数组里面
						$.each(primers,function(j,item){
							primer_dui=item.substr(14)  //正确的引物
							if(primer_name!=primer_dui) { //如果自备引物的名称和测序样品的每一个引物名称不一致,那么存放在yps_new数组里面
								yps_new.push(yps[j])	
							}
						})
						if (yps_new.length>0){
							yps_str=yps_new.join(',')  //数组转换成字符串
							//post请求 根据找到的生产编号,在 测序样品 批量修改相对应的引物名称
							$.post("/seq/ashx/SeqSampleHandler.ashx",
								{action:"piliang_edit",ids:yps_str,newValue:"seqs_primer="+primer_name,rules_txt:"测序引物"},
								function (data,status) {if(i==selecteds_edit.size()-1){alert('修改成功')}});  //最后一次提交成功
						}else{return; }
					}else{return; }
				});
		}
	}
	
	//把选择的行的引物在 测序样品查询出来
	function 在测序样品显示选择的引物(){
		if(html.find('tbody').find("[aria-selected='true']").size()==0){return false}  //如果没有选择的行,那么退出
		selecteds=html.find('tbody').find("[aria-selected='true']")//.find('[aria-describedby=list_SeqCustPrimer_id]').text()
		var ids_shuzu = new Array();
		for (var i=0;i<selecteds.size();i++){
			id=selecteds.eq(i).find('[aria-describedby=list_SeqCustPrimer_id]').text()  //获取id
			id=id+"-z"//最后的引物位置
			ids_shuzu[i]=id
		}
		//如果 测序样品 页面是已经打开的
		if($('#tabs').find('li:contains(测序样品)').size()===1){
			//测序样品的html必须加个后缀或者前缀 不能和之前的重复
			var cexuyangpin_html=$('iframe[src="/seq/SeqSampleList.aspx"]').contents().find('body').eq(0)//如果找到 则说明找到了测序样品的页面
			toolbar_cexuyangpin=cexuyangpin_html.find('.toolbar').eq(0)  // 找到了测序样品的toolbar工具栏
			toolbar_cexuyangpin.find('#a_search').eq(0).find('.l-btn-left').eq(0).click();
			$('#searchForm').eq(0).find("option[value='seqs_primer_id_2_kind']").attr('selected','selected')  //把找到的查询条件改成 引物位置
			$('#radd').next().attr('checked','true')  //选择 OR 选项
			for (var i=0;i<selecteds.size();i++){
				$('#searchForm').eq(0).find("[class='txt02 searchString']").eq(i).val(ids_shuzu[i])
			}
			$("#AB").click()
			$('#tabs').find('li:contains(测序样品)').click()
		}
	}
}