Search with CRVAL#
This commit is contained in:
+22
-2
@@ -97,17 +97,19 @@ void FITSFileModel::setColumns(const QStringList &columns)
|
||||
prepareQuery();
|
||||
}
|
||||
|
||||
void FITSFileModel::setFilter(const QStringList &key, const QStringList &value)
|
||||
void FITSFileModel::setFilter(const QStringList &key, const QStringList &value, const QStringList &limit)
|
||||
{
|
||||
if(value.isEmpty())
|
||||
{
|
||||
m_key.clear();
|
||||
m_value.clear();
|
||||
m_limit.clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_key = key;
|
||||
m_value = value;
|
||||
m_limit = limit;
|
||||
}
|
||||
prepareQuery();
|
||||
}
|
||||
@@ -164,6 +166,10 @@ void FITSFileModel::prepareQuery()
|
||||
where.append(QString(" %1 BETWEEN f.minRa AND f.maxRa ").arg(RA(m_value[i])));
|
||||
else if(m_key[i] == "DEC pos")
|
||||
where.append(QString(" %1 BETWEEN f.minDec AND f.maxDec ").arg(DEC(m_value[i])));
|
||||
else if(m_key[i] == "RA range")
|
||||
where.append(QString(" crVal1 BETWEEN %1 AND %2 ").arg(RA(m_value[i])).arg(RA(m_limit[i])));
|
||||
else if(m_key[i] == "DEC range")
|
||||
where.append(QString(" crVal2 BETWEEN %1 AND %2 ").arg(DEC(m_value[i])).arg(DEC(m_limit[i])));
|
||||
else
|
||||
join += QString(" JOIN fits_headers AS s%1 ON f.id=s%1.id_file AND s%1.key='%2' AND s%1.value LIKE '%3'").arg(i).arg(m_key[i]).arg(m_value[i]);
|
||||
}
|
||||
@@ -267,13 +273,25 @@ DataBaseView::DataBaseView(Database *database, QWidget *parent) : QWidget(parent
|
||||
m_filterKeyword[i]->addItem("file");
|
||||
m_filterKeyword[i]->addItem("RA pos");
|
||||
m_filterKeyword[i]->addItem("DEC pos");
|
||||
m_filterKeyword[i]->addItem("RA range");
|
||||
m_filterKeyword[i]->addItem("DEC range");
|
||||
m_filterKeyword[i]->addItems(fitsKeywords);
|
||||
|
||||
m_search[i] = new QLineEdit(this);
|
||||
m_search[i]->setPlaceholderText(tr("Text to search, you can % as wildcard"));
|
||||
|
||||
m_limit[i] = new QLineEdit(this);
|
||||
m_limit[i]->hide();
|
||||
connect(m_filterKeyword[i], static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [this, i](int index){
|
||||
if(index == 3 || index == 4)m_limit[i]->show();
|
||||
else m_limit[i]->hide();
|
||||
});
|
||||
|
||||
connect(m_search[i], &QLineEdit::returnPressed, this, &DataBaseView::applyFilter);
|
||||
connect(m_limit[i], &QLineEdit::returnPressed, this, &DataBaseView::applyFilter);
|
||||
hlayout->addWidget(m_filterKeyword[i]);
|
||||
hlayout->addWidget(m_search[i]);
|
||||
hlayout->addWidget(m_limit[i]);
|
||||
}
|
||||
|
||||
QPushButton *filterButton = new QPushButton(tr("Filter"), this);
|
||||
@@ -316,6 +334,7 @@ void DataBaseView::applyFilter()
|
||||
{
|
||||
QStringList keys;
|
||||
QStringList values;
|
||||
QStringList limits;
|
||||
for(int i=0; i<3; i++)
|
||||
{
|
||||
QString key = m_filterKeyword[i]->currentText();
|
||||
@@ -323,7 +342,8 @@ void DataBaseView::applyFilter()
|
||||
{
|
||||
keys.append(key);
|
||||
values.append(m_search[i]->text());
|
||||
limits.append(m_limit[i]->text());
|
||||
}
|
||||
}
|
||||
m_model->setFilter(keys, values);
|
||||
m_model->setFilter(keys, values, limits);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user