#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use DBI;
my $cgi = CGI->new;
print $cgi->header(-type => 'text/html', -charset => 'UTF-8');
# 获取参数
my $pid = $cgi->param('pid') || '';
my $type = $cgi->param('type') || '';
# 数据库连接
my $dbh = DBI->connect("dbi:mysql:ArtocarpusGD", "AGD", "AGDsecret", { RaiseError => 1, AutoCommit => 1 })
or die "Can't connect to database: $DBI::errstr";
# 查询 RNAsra 表,扩展查询以获取多个描述和实验
my $sth = $dbh->prepare("SELECT
Description, RNAtype, Experiment,
Description1, Description2, Description3, Description4, Description5,
Experiment1, Experiment2, Experiment3, Experiment4, Experiment5
FROM RNAsra WHERE pid = ? AND type = ?")
or die "Can't prepare statement: $DBI::errstr";
$sth->execute($pid, $type)
or die "Can't execute statement: $DBI::errstr";
# 获取查询结果
my (
$description, $latinname, $experiment,
$description1, $description2, $description3, $description4, $description5,
$experiment1, $experiment2, $experiment3, $experiment4, $experiment5
) = $sth->fetchrow_array();
unless ($description && $latinname) {
die "No records found for pid=$pid and type=$type in RNAsra table.";
}
# 关闭数据库连接
$sth->finish;
$dbh->disconnect;
# HTML output
print <<HTML;
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="Keywords" content="shrimp">
<meta name="Description" content="genomic database">
<script type="text/javascript" src="../../Artocarpus/javascript/expGene.js"></script>
<link href="../../Artocarpus/css/dropdown.css" rel="stylesheet" type="text/css">
<link href="../../Artocarpus/css/buttonstyle.css" rel="stylesheet" type="text/css">
<link href="../../Artocarpus/css/style.css" rel="stylesheet" type="text/css">
<link href="../../Artocarpus/css/theme.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="../../Artocarpus/javascript/logoLink.js"></script>
<script type="text/javascript" src="../../Artocarpus/javascript/menu-loader.js"></script>
<title>ArtocarpusGD - a portal of Artocarpus multi-omics data</title>
<script language="JavaScript">
function displaySubMenu(li) {
var subMenu = li.getElementsByTagName("ul")[0];
subMenu.style.display = "block";
}
function hideSubMenu(li) {
var subMenu = li.getElementsByTagName("ul")[0];
subMenu.style.display = "none";
}
// 注入调试功能扩展函数 - 不会影响原始函数的使用
document.addEventListener('DOMContentLoaded', function() {
// 保存原始函数引用
var originalInputText = window.inputText;
var originalCheckboxOnclick = window.checkboxOnclick;
// 重写inputText函数以添加日志
window.inputText = function() {
// 调用原始函数
originalInputText.apply(this, arguments);
// 添加日志
console.log("Species选择改变为: " + SelectValue);
};
// 重写checkboxOnclick函数以添加日志
window.checkboxOnclick = function(checkbox) {
console.log("Checkbox点击,当前状态:", checkbox.checked);
console.log("当前SelectValue:", SelectValue);
// 调用原始函数
originalCheckboxOnclick.apply(this, arguments);
};
});
// 根据选择的SRA更新表单提交动作
function updateFormAction() {
var rnaSelect = document.getElementById('rna');
var form = document.getElementById('RNAForm');
if (!rnaSelect || !form) return;
var selectedOption = rnaSelect.options[rnaSelect.selectedIndex];
console.log("选择的选项:", selectedOption.text);
// 从data属性中读取值
var projectid = selectedOption.getAttribute('data-projectid');
var experiment = selectedOption.getAttribute('data-experiment');
var description = selectedOption.getAttribute('data-description');
// 更新隐藏字段
if (projectid && experiment && description) {
document.getElementById('hidden_projectid').value = projectid;
document.getElementById('hidden_experiment').value = experiment;
document.getElementById('hidden_description').value = description;
console.log("已更新 projectid 为:", projectid);
console.log("已更新 experiment 为:", experiment);
console.log("已更新 description 为:", description);
}
}
// 表单提交前验证
function validateForm() {
// 确保隐藏字段已更新
updateFormAction();
var rnaSelect = document.getElementById('rna');
if (!rnaSelect || rnaSelect.value === 'selectspecies') {
alert("请选择一个SRA数据集");
return false; // 阻止表单提交
}
// 检查是否有基因ID输入
var geneIDField = document.RNAForm.GeneID;
if (!geneIDField.value.trim()) {
alert("请输入基因ID或使用Show example IDs选择示例ID");
return false;
}
console.log("表单验证通过,准备提交");
console.log("最终提交的projectid:", document.getElementById('hidden_projectid').value);
console.log("最终提交的experiment:", document.getElementById('hidden_experiment').value);
console.log("最终提交的description:", document.getElementById('hidden_description').value);
return true; // 允许表单提交
}
// 页面加载完成后设置事件
document.addEventListener('DOMContentLoaded', function() {
// ★★★★★★ 新增:文章发表马年后修改使得直接加载生成含有选定物种的页面,并且可以click生成示例基因ID,初始化 SelectValue 为当前默认选中的物种值 ★★★★★★
inputText();
// 设置下拉菜单的change事件
var rnaSelect = document.getElementById('rna');
if (rnaSelect) {
// 初始化下拉菜单的值
updateFormAction();
}
// 设置表单提交事件
var form = document.getElementById('RNAForm');
if (form) {
form.addEventListener('submit', function(event) {
if (!validateForm()) {
event.preventDefault(); // 如果验证失败,阻止提交
}
});
}
});
</script>
</head>