Skip to content

Commit 15f08e5

Browse files
Improve readability of query output.
Do not print command end-date/time if equal to start. Use »=« for $?, separate command string by »$«.
1 parent e340113 commit 15f08e5

File tree

2 files changed

+40
-6
lines changed

2 files changed

+40
-6
lines changed

src/common/util/util.h

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
#include <assert.h>
1111

12+
#include <QDateTime>
1213
#include <QtGlobal>
1314
#include <QObject>
1415
#include <QVariant>
@@ -205,6 +206,28 @@ bool contains(const Container& container, const typename Container::value_type&
205206
return std::find(container.begin(), container.end(), element) != container.end();
206207
}
207208

209+
/// Drop certain fields of the time, e.g. milliseconds. Also
210+
/// sets lower fields, e.g. dropping minutes sets seconds
211+
/// and ms to 0 as well
212+
/// @param c one of M(inutes), s(econds), m(illiseconds)
213+
static inline void dropFromTime(QTime& t, char c){
214+
int m=t.minute(), s=t.second(), ms=t.msec();
215+
switch (c) {
216+
case 'M': m = 0;
217+
case 's': s = 0;
218+
case 'm': ms = 0;
219+
break;
220+
default: throw QExcIllegalArgument(QString("Bad format c %1").arg(c));
221+
}
222+
t.setHMS(t.hour(), m, s, ms);
223+
}
224+
225+
/// @overload
226+
static inline void dropFromTime(QDateTime& d, char c){
227+
auto t = d.time();
228+
dropFromTime(t, c);
229+
d.setTime(t);
230+
}
208231

209232
QString absPath(const QString& path);
210233

src/shournal/command_printer_human.cpp

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,21 @@ void CommandPrinterHuman::printCommandInfosEvtlRestore(std::unique_ptr<CommandQu
5454
s.setMaxLineWidth(std::numeric_limits<int>::max());
5555

5656
auto & cmd = cmdIter->value();
57-
s << qtr("cmd-id %1:").arg(cmd.idInDb);
57+
s << qtr("cmd-id %1").arg(cmd.idInDb);
5858
if(cmd.returnVal != CommandInfo::INVALID_RETURN_VAL){
59-
s << qtr("$?:") << QString::number(cmd.returnVal);
59+
s << qtr("$?=%1").arg(QString::number(cmd.returnVal));
6060
}
61-
s << cmd.startTime.toString( Qt::DefaultLocaleShortDate) << "-"
62-
<< cmd.endTime.toString( Qt::DefaultLocaleShortDate) << ": "
61+
62+
// Only print end-date/time, if different from start-date/time, ignoring seconds.
63+
dropFromTime(cmd.startTime, 's');
64+
dropFromTime(cmd.endTime, 's');
65+
const QString tformat = "hh:mm";
66+
const QString dtformat = QString("yyyy-MM-dd") + " " + tformat;
67+
QString cmdEndTime = (cmd.startTime.date() != cmd.endTime.date()) ?
68+
" - " + cmd.endTime.toString(dtformat) :
69+
(cmd.startTime.time() != cmd.endTime.time()) ?
70+
"-" + cmd.endTime.time().toString(tformat) : "";
71+
s << cmd.startTime.toString(dtformat) + cmdEndTime << "$"
6372
<< cmd.text << "\n";
6473
s << qtr("Working directory: %1\n").arg(cmd.workingDirectory);
6574
if(! cmd.sessionInfo.uuid.isNull()){
@@ -196,7 +205,8 @@ void CommandPrinterHuman::printWriteInfos(QFormattedStream &s, const FileWriteIn
196205
}
197206
s.setLineStart(m_indentlvl1);
198207
const char dotOrColon = (m_maxCountWfiles == 0) ? '.' : ':';
199-
s << qtr("%1 written file(s)%2\n").arg(fileWriteInfos.size()).arg(dotOrColon);
208+
const QString fileStr = (fileWriteInfos.size() == 1) ? "file" : "files";
209+
s << qtr("%1 written %2%3\n").arg(fileWriteInfos.size()).arg(fileStr).arg(dotOrColon);
200210
s.setLineStart(m_indentlvl2);
201211
int counter = 0;
202212
for(const auto& f : fileWriteInfos){
@@ -224,7 +234,8 @@ void CommandPrinterHuman::printReadInfos(QFormattedStream &s, const CommandInfo
224234
s.setLineStart(m_indentlvl1);
225235

226236
const char dotOrColon = (m_maxCountRfiles == 0) ? '.' : ':';
227-
s << qtr("%1 read file(s)%2\n").arg(cmd.fileReadInfos.size()).arg(dotOrColon);
237+
const QString fileStr = (cmd.fileReadInfos.size() == 1) ? "file" : "files";
238+
s << qtr("%1 read %2%3\n").arg(cmd.fileReadInfos.size()).arg(fileStr).arg(dotOrColon);
228239
const QString cmdIdStr = QString::number(cmd.idInDb);
229240
int counter = 0;
230241
for(const auto & f : cmd.fileReadInfos){

0 commit comments

Comments
 (0)