Compare commits

..

3 Commits

Author SHA1 Message Date
nou 974d482d5b Update metainfo 2026-04-12 18:32:15 +02:00
nou d45bf37e50 Update translation 2026-04-12 18:23:48 +02:00
nou 56a8a0e789 Special handling of COUNT aggregate function 2026-04-12 18:23:39 +02:00
13 changed files with 162 additions and 68 deletions
+5 -2
View File
@@ -123,8 +123,11 @@ This example filters for files where: "Bias" is in the file name, the OBJECT pro
</p>
<h3>Database tree</h3>
<p>This is another view that show indexed database as tree. You can add or remove tree filter that construct a tree structure from FITS keywords. Each level of tree
will be based on this filter. You can specify one keywords multiple times.</p>
<p>This is another view that show indexed database as tree. You can add or remove tree grouping that construct a tree structure from FITS keywords. Each level of tree
will be based on this grouping. You can specify one keywords multiple times. When adding a grouping you can also specify aggregation function that is applied to last level.
SUM will add up all numbers in that group usefull for example for EXPTIME. COUNT will show how many files are in that group. AVG will show average value, MIN,MAX,MEDIAN will calculate
minimum, maximum and media value in that group. So if you select CCD-TEMP as last with AVG it will calculate average temperature. Double click on file in tree view will open
that file.</p>
<h3>Plate Solving</h3>
<p>This module can plate solve images and update FITS header with solution for FITS and XISF images.
+5 -2
View File
@@ -103,8 +103,11 @@ Cet exemple filtre les fichiers où : "Bias" figure dans le nom de fichier, la p
</p>
<h3>Database tree</h3>
<p>This is another view that show indexed database as tree. You can add or remove tree filter that construct a tree structure from FITS keywords. Each level of tree
will be based on this filter. You can specify one keywords multiple times.</p>
<p>This is another view that show indexed database as tree. You can add or remove tree grouping that construct a tree structure from FITS keywords. Each level of tree
will be based on this grouping. You can specify one keywords multiple times. When adding a grouping you can also specify aggregation function that is applied to last level.
SUM will add up all numbers in that group usefull for example for EXPTIME. COUNT will show how many files are in that group. AVG will show average value, MIN,MAX,MEDIAN will calculate
minimum, maximum and media value in that group. So if you select CCD-TEMP as last with AVG it will calculate average temperature. Double click on file in tree view will open
that file.</p>
<h3>Plate Solving</h3>
<p>This module can plate solve images and update FITS header with solution for FITS and XISF images.
+5 -2
View File
@@ -106,8 +106,11 @@ zástupný znak za hocijaký reťazec znakov aj žiadny. Znak _ je tiež zástup
Bez použitia zástupných znakov sa vyhľadá iba presný výskyt.</p>
<h3>Database tree</h3>
<p>This is another view that show indexed database as tree. You can add or remove tree filter that construct a tree structure from FITS keywords. Each level of tree
will be based on this filter. You can specify one keywords multiple times.</p>
<p>This is another view that show indexed database as tree. You can add or remove tree grouping that construct a tree structure from FITS keywords. Each level of tree
will be based on this grouping. You can specify one keywords multiple times. When adding a grouping you can also specify aggregation function that is applied to last level.
SUM will add up all numbers in that group usefull for example for EXPTIME. COUNT will show how many files are in that group. AVG will show average value, MIN,MAX,MEDIAN will calculate
minimum, maximum and media value in that group. So if you select CCD-TEMP as last with AVG it will calculate average temperature. Double click on file in tree view will open
that file.</p>
<h3>Plate Solving</h3>
<p>Tento modul umožnuje vyriešiť obrázok a určiť RA, DEC koordináty a aktualizovať FITS a XISF súbory s WCS dátami.
+11
View File
@@ -60,6 +60,17 @@
</screenshots>
<content_rating type="oars-1.1"/>
<releases>
<release version="20260412" date="2026-04-12">
<description>
<ul>
<li>Add database tree to show database entries grouped in tree structure</li>
<li>Add database summary table. This can show total exposure time for OBJECT and FILTER for example</li>
<li>Copy files to clipboard from database view</li>
<li>Copy to clipboard text from database tables so they can be pasted to Excel</li>
<li>Add CLI option to run scripts and generate thumbnails</li>
</ul>
</description>
</release>
<release version="20260217" date="2026-02-17">
<description>
<ul>
+11 -5
View File
@@ -13,7 +13,7 @@
DatabaseTreeSettings::DatabaseTreeSettings(const QStringList &data, QStringList keywords, QWidget *parent) : QDialog(parent)
{
setWindowTitle(tr("Add tree filter"));
setWindowTitle(tr("Add tree grouping"));
QVBoxLayout *vlayout = new QVBoxLayout(this);
setLayout(vlayout);
@@ -324,13 +324,16 @@ QSqlQuery DatabaseTree::getGroupQuery(const QString &aggregateFunc) const
if(i == _keys.size() - 1)
{
QString tmp = aggregateFunc + "(" + cols.last() + ")";
cols.last() = tmp;
if(aggregateFunc == "COUNT")
cols.append("COUNT(*)");
else
cols.last() = tmp;
}
}
QStringList group = cols;
group.removeLast();
QString sql = "SELECT " + cols.join(',') + " FROM fits_files AS f" + join + " GROUP BY " + group.join(',');
QString sql = "SELECT " + cols.join(',') + " FROM fits_files AS f" + join + " GROUP BY " + group.join(',') + " ORDER BY " + cols.join(" NULLS LAST,") + " NULLS LAST";
QSqlQuery query(sql, _database->db());
for(auto &val : _keys)
@@ -371,7 +374,7 @@ void DatabaseTree::prepareQueries()
else if(_keys[i] == "DATE-OBS_YEAR-MONTH-DAY")
col = QString("STRFTIME('%Y-%m-%d', h%1.value)").arg(i);
sql = QString("SELECT %1 FROM fits_files AS f").arg(col) + join + where + QString(" GROUP BY %1 ORDER BY %1").arg(col);
sql = QString("SELECT %1 FROM fits_files AS f").arg(col) + join + where + QString(" GROUP BY %1 ORDER BY %1 NULLS LAST").arg(col);
qDebug() << "Tree query for" << _keys[i] << sql;
QSqlQuery query(sql, _database->db());
@@ -576,7 +579,10 @@ void DatabaseTreeView::setQuery(const QString &func)
if(!func.isEmpty())
{
QString tmp = func + "(" + keys.last() + ")";
keys.last() = tmp;
if(func == "COUNT")
keys.append("COUNT");
else
keys.last() = tmp;
}
for(auto &key : keys)
_sqlModel->setHeaderData(i++, Qt::Horizontal, key);
Binary file not shown.
+33 -14
View File
@@ -174,17 +174,17 @@
<context>
<name>DataBaseView</name>
<message>
<location filename="../src/databaseview.cpp" line="327"/>
<location filename="../src/databaseview.cpp" line="328"/>
<source>Select columns</source>
<translation>Select columns</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="378"/>
<location filename="../src/databaseview.cpp" line="379"/>
<source>Text to search, you can % as wildcard</source>
<translation>Text to search, you can % as wildcard</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="394"/>
<location filename="../src/databaseview.cpp" line="395"/>
<source>Filter</source>
<translation>Filter</translation>
</message>
@@ -192,27 +192,27 @@
<context>
<name>DatabaseTableView</name>
<message>
<location filename="../src/databaseview.cpp" line="265"/>
<location filename="../src/databaseview.cpp" line="266"/>
<source>Mark</source>
<translation>Mark</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="266"/>
<location filename="../src/databaseview.cpp" line="267"/>
<source>Unmark</source>
<translation>Unmark</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="267"/>
<location filename="../src/databaseview.cpp" line="268"/>
<source>Open</source>
<translation>Open</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="268"/>
<location filename="../src/databaseview.cpp" line="269"/>
<source>Open file location</source>
<translation>Open file location</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="269"/>
<location filename="../src/databaseview.cpp" line="270"/>
<source>Copy files</source>
<translation>Copy files</translation>
</message>
@@ -220,23 +220,42 @@
<context>
<name>DatabaseTreeSettings</name>
<message>
<location filename="../src/databasetree.cpp" line="13"/>
<source>Add tree filter</source>
<translation>Add tree filter</translation>
<translation type="vanished">Add tree filter</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="16"/>
<source>Add tree grouping</source>
<translation>Add tree grouping</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="41"/>
<source>Aggregate function</source>
<translation>Aggregate function</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="45"/>
<source>This aggregate function will be applied to last level of grouping</source>
<translation>This aggregate function will be applied to last level of grouping</translation>
</message>
</context>
<context>
<name>DatabaseTreeView</name>
<message>
<location filename="../src/databasetree.cpp" line="358"/>
<location filename="../src/databasetree.cpp" line="480"/>
<source>Add</source>
<translation>Add</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="359"/>
<location filename="../src/databasetree.cpp" line="481"/>
<source>Remove</source>
<translation>Remove</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="482"/>
<source>Tree/Table</source>
<translation>Tree/Table</translation>
</message>
</context>
<context>
<name>Dialog</name>
@@ -249,7 +268,7 @@
<context>
<name>FITSFileModel</name>
<message>
<location filename="../src/databaseview.cpp" line="244"/>
<location filename="../src/databaseview.cpp" line="245"/>
<source>File name</source>
<translation>File name</translation>
</message>
@@ -431,7 +450,7 @@
<context>
<name>HelpDialog</name>
<message>
<location filename="../src/about.cpp" line="33"/>
<location filename="../src/about.cpp" line="35"/>
<source>Help</source>
<translation>Help</translation>
</message>
Binary file not shown.
+29 -14
View File
@@ -174,17 +174,17 @@
<context>
<name>DataBaseView</name>
<message>
<location filename="../src/databaseview.cpp" line="327"/>
<location filename="../src/databaseview.cpp" line="328"/>
<source>Select columns</source>
<translation>Choix des colonnes</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="378"/>
<location filename="../src/databaseview.cpp" line="379"/>
<source>Text to search, you can % as wildcard</source>
<translation>Texte à chercher, utilisez % comme caractère générique</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="394"/>
<location filename="../src/databaseview.cpp" line="395"/>
<source>Filter</source>
<translation>Filtre</translation>
</message>
@@ -192,27 +192,27 @@
<context>
<name>DatabaseTableView</name>
<message>
<location filename="../src/databaseview.cpp" line="265"/>
<location filename="../src/databaseview.cpp" line="266"/>
<source>Mark</source>
<translation>Marquer</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="266"/>
<location filename="../src/databaseview.cpp" line="267"/>
<source>Unmark</source>
<translation>Décocher</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="267"/>
<location filename="../src/databaseview.cpp" line="268"/>
<source>Open</source>
<translation type="unfinished">Ouvrir</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="268"/>
<location filename="../src/databaseview.cpp" line="269"/>
<source>Open file location</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="269"/>
<location filename="../src/databaseview.cpp" line="270"/>
<source>Copy files</source>
<translation type="unfinished"></translation>
</message>
@@ -220,23 +220,38 @@
<context>
<name>DatabaseTreeSettings</name>
<message>
<location filename="../src/databasetree.cpp" line="13"/>
<source>Add tree filter</source>
<location filename="../src/databasetree.cpp" line="16"/>
<source>Add tree grouping</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="41"/>
<source>Aggregate function</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="45"/>
<source>This aggregate function will be applied to last level of grouping</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DatabaseTreeView</name>
<message>
<location filename="../src/databasetree.cpp" line="358"/>
<location filename="../src/databasetree.cpp" line="480"/>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="359"/>
<location filename="../src/databasetree.cpp" line="481"/>
<source>Remove</source>
<translation type="unfinished">Supprimer</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="482"/>
<source>Tree/Table</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Dialog</name>
@@ -249,7 +264,7 @@
<context>
<name>FITSFileModel</name>
<message>
<location filename="../src/databaseview.cpp" line="244"/>
<location filename="../src/databaseview.cpp" line="245"/>
<source>File name</source>
<translation>Nom de fichier</translation>
</message>
@@ -431,7 +446,7 @@
<context>
<name>HelpDialog</name>
<message>
<location filename="../src/about.cpp" line="33"/>
<location filename="../src/about.cpp" line="35"/>
<source>Help</source>
<translation>Aide</translation>
</message>
Binary file not shown.
+30 -15
View File
@@ -175,17 +175,17 @@
<context>
<name>DataBaseView</name>
<message>
<location filename="../src/databaseview.cpp" line="327"/>
<location filename="../src/databaseview.cpp" line="328"/>
<source>Select columns</source>
<translation>Selecionar colunas</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="378"/>
<location filename="../src/databaseview.cpp" line="379"/>
<source>Text to search, you can % as wildcard</source>
<translation>Texto a ser pesquisado, você pode % como curinga</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="394"/>
<location filename="../src/databaseview.cpp" line="395"/>
<source>Filter</source>
<translation>Filtro</translation>
</message>
@@ -193,27 +193,27 @@
<context>
<name>DatabaseTableView</name>
<message>
<location filename="../src/databaseview.cpp" line="265"/>
<location filename="../src/databaseview.cpp" line="266"/>
<source>Mark</source>
<translation>Assinalar</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="266"/>
<location filename="../src/databaseview.cpp" line="267"/>
<source>Unmark</source>
<translation>Desmarcar</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="267"/>
<location filename="../src/databaseview.cpp" line="268"/>
<source>Open</source>
<translation type="unfinished">Abrir</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="268"/>
<location filename="../src/databaseview.cpp" line="269"/>
<source>Open file location</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="269"/>
<location filename="../src/databaseview.cpp" line="270"/>
<source>Copy files</source>
<translation type="unfinished"></translation>
</message>
@@ -221,23 +221,38 @@
<context>
<name>DatabaseTreeSettings</name>
<message>
<location filename="../src/databasetree.cpp" line="13"/>
<source>Add tree filter</source>
<location filename="../src/databasetree.cpp" line="16"/>
<source>Add tree grouping</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="41"/>
<source>Aggregate function</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="45"/>
<source>This aggregate function will be applied to last level of grouping</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DatabaseTreeView</name>
<message>
<location filename="../src/databasetree.cpp" line="358"/>
<location filename="../src/databasetree.cpp" line="480"/>
<source>Add</source>
<translation type="unfinished">Add</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="359"/>
<location filename="../src/databasetree.cpp" line="481"/>
<source>Remove</source>
<translation type="unfinished">Retirar</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="482"/>
<source>Tree/Table</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Dialog</name>
@@ -250,7 +265,7 @@
<context>
<name>FITSFileModel</name>
<message>
<location filename="../src/databaseview.cpp" line="244"/>
<location filename="../src/databaseview.cpp" line="245"/>
<source>File name</source>
<translation>Nome do arquivo</translation>
</message>
@@ -265,7 +280,7 @@
<message>
<location filename="../src/fitskeyword.ui" line="41"/>
<source>Add</source>
<translation type="unfinished">Add</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/fitskeyword.ui" line="48"/>
@@ -432,7 +447,7 @@
<context>
<name>HelpDialog</name>
<message>
<location filename="../src/about.cpp" line="33"/>
<location filename="../src/about.cpp" line="35"/>
<source>Help</source>
<translation>Ajuda</translation>
</message>
Binary file not shown.
+33 -14
View File
@@ -174,17 +174,17 @@
<context>
<name>DataBaseView</name>
<message>
<location filename="../src/databaseview.cpp" line="327"/>
<location filename="../src/databaseview.cpp" line="328"/>
<source>Select columns</source>
<translation>Vyber stĺpce</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="378"/>
<location filename="../src/databaseview.cpp" line="379"/>
<source>Text to search, you can % as wildcard</source>
<translation>Text na vyhľadanie, môžete použit % ako zástupný znak</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="394"/>
<location filename="../src/databaseview.cpp" line="395"/>
<source>Filter</source>
<translatorcomment>Meno súboru</translatorcomment>
<translation>Filter</translation>
@@ -193,27 +193,27 @@
<context>
<name>DatabaseTableView</name>
<message>
<location filename="../src/databaseview.cpp" line="265"/>
<location filename="../src/databaseview.cpp" line="266"/>
<source>Mark</source>
<translation>Označiť</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="266"/>
<location filename="../src/databaseview.cpp" line="267"/>
<source>Unmark</source>
<translation>Odznačiť</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="267"/>
<location filename="../src/databaseview.cpp" line="268"/>
<source>Open</source>
<translation>Otvoriť</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="268"/>
<location filename="../src/databaseview.cpp" line="269"/>
<source>Open file location</source>
<translation>Otvoriť umiestnenie súboru</translation>
</message>
<message>
<location filename="../src/databaseview.cpp" line="269"/>
<location filename="../src/databaseview.cpp" line="270"/>
<source>Copy files</source>
<translation>Skopírovať súbory</translation>
</message>
@@ -221,23 +221,42 @@
<context>
<name>DatabaseTreeSettings</name>
<message>
<location filename="../src/databasetree.cpp" line="13"/>
<source>Add tree filter</source>
<translation>Pridať stromový filter</translation>
<translation type="vanished">Pridať stromový filter</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="16"/>
<source>Add tree grouping</source>
<translation>Pridaj stromové zoskupovanie</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="41"/>
<source>Aggregate function</source>
<translation>Agregačná funkcia</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="45"/>
<source>This aggregate function will be applied to last level of grouping</source>
<translation>Táto agregáčná funkcia bude použitá na poslednú úroveň zoskupovania</translation>
</message>
</context>
<context>
<name>DatabaseTreeView</name>
<message>
<location filename="../src/databasetree.cpp" line="358"/>
<location filename="../src/databasetree.cpp" line="480"/>
<source>Add</source>
<translation>Pridať</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="359"/>
<location filename="../src/databasetree.cpp" line="481"/>
<source>Remove</source>
<translation>Odstrániť</translation>
</message>
<message>
<location filename="../src/databasetree.cpp" line="482"/>
<source>Tree/Table</source>
<translation>Strom/Tabuľka</translation>
</message>
</context>
<context>
<name>Dialog</name>
@@ -250,7 +269,7 @@
<context>
<name>FITSFileModel</name>
<message>
<location filename="../src/databaseview.cpp" line="244"/>
<location filename="../src/databaseview.cpp" line="245"/>
<source>File name</source>
<translation>Meno súboru</translation>
</message>
@@ -432,7 +451,7 @@
<context>
<name>HelpDialog</name>
<message>
<location filename="../src/about.cpp" line="33"/>
<location filename="../src/about.cpp" line="35"/>
<source>Help</source>
<translation>Pomoc</translation>
</message>