Greasy Fork is available in English.
自备引物
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/470833/1220007/25-%E8%87%AA%E5%A4%87%E5%BC%95%E7%89%A9.js
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()
}
}
}