JobLog::JobLog(QString &jobId, QTreeWidgetItem *parentTreeWidgetItem)
{
setupUi(this);
- m_name = "JobLog";
+ m_name = tr("JobLog");
m_closeable = true;
pgInitialize(parentTreeWidgetItem);
QTreeWidgetItem* thisitem = mainWin->getFromHash(this);
*/
void JobLog::populateText()
{
- QString heading("<A href=\"#top\">Log records for job ");
- heading += m_jobId + "</A><br>\n";
- textEdit->insertHtml(heading);
-
if (!m_console->preventInUseConnect())
- return;
-
- QString query("");
- query = "SELECT Time,LogText FROM Log WHERE JobId='" + m_jobId + "' ORDER by Time";
-
+ return;
+
+ QString query;
+ query = "SELECT Time, LogText FROM Log WHERE JobId='" + m_jobId + "' order by Time";
+
+ /* This could be a log item */
+ if (mainWin->m_sqlDebug) {
+ Pmsg1(000, "Log query cmd : %s\n", query.toUtf8().data());
+ }
+
QStringList results;
if (m_console->sql_cmd(query, results)) {
- QString field;
- QStringList fieldlist;
- int resultcount = 0;
+ if (!results.size()) {
+ QMessageBox::warning(this, tr("Bat"),
+ tr("There were no results!\n"
+ "It is possible you may need to add \"catalog = all\" "
+ "to the Messages resource for this job.\n"), QMessageBox::Ok);
+ return;
+ }
+
+ QString jobstr("JobId "); /* FIXME: should this be translated ? */
+ jobstr += m_jobId;
+
+ QString htmlbuf("<html><body><b>" + tr("Log records for job %1").arg(m_jobId) );
+ htmlbuf += "</b><table>";
+
/* Iterate through the lines of results. */
+ QString field;
+ QStringList fieldlist;
+ QString lastTime;
+ QString lastSvc;
foreach (QString resultline, results) {
- int column = 0;
fieldlist = resultline.split("\t");
- /* Iterate through fields in the record */
- foreach (field, fieldlist) {
- display_text(field);
- if (column == 0) display_text(" ");
- column++;
- } /* foreach field */
- resultcount++;
+
+ if (fieldlist.size() < 2)
+ continue;
+
+ htmlbuf +="<tr>";
+
+ QString curTime = fieldlist[0].trimmed();
+
+ field = fieldlist[1].trimmed();
+ int colon = field.indexOf(":");
+ if (colon > 0) {
+ /* string is like <service> <jobId xxxx>: ..."
+ * we split at ':' then remove the jobId xxxx string (always the same) */
+ QString curSvc(field.left(colon).replace(jobstr,"").trimmed());
+ if (curSvc == lastSvc && curTime == lastTime) {
+ curTime.clear();
+ curSvc.clear();
+ } else {
+ lastTime = curTime;
+ lastSvc = curSvc;
+ }
+ htmlbuf += "<td>" + curTime + "</td>";
+ htmlbuf += "<td><p>" + curSvc + "</p></td>";
+
+ /* rest of string is marked as pre-formatted (here trimming should
+ * be avoided, to preserve original formatting) */
+ QString msg(field.mid(colon+2));
+ if (msg.startsWith( tr("Error:")) ) { /* FIXME: should really be translated ? */
+ /* error msg, use a specific class */
+ htmlbuf += "<td><pre class=err>" + msg + "</pre></td>";
+ } else {
+ htmlbuf += "<td><pre>" + msg + "</pre></td>";
+ }
+ } else {
+ /* non standard string, place as-is */
+ if (curTime == lastTime) {
+ curTime.clear();
+ } else {
+ lastTime = curTime;
+ }
+ htmlbuf += "<td>" + curTime + "</td>";
+ htmlbuf += "<td><pre>" + field + "</pre></td>";
+ }
+
+ htmlbuf += "</tr>";
+
} /* foreach resultline */
- if (resultcount == 0) {
- /* show a message about configuration item */
- QMessageBox::warning(this, "Bat",
- tr("There were no results!\n"
-"It is possible you may need to add \"catalog = all\" to the Messages resource"
-" for this job.\n"), QMessageBox::Ok);
- }
- } /* if results from query */
- textEdit->scrollToAnchor("top");
-}
-/*
- * Put text into the joblog window with an overload
- */
-void JobLog::display_text(const QString buf)
-{
- m_cursor->movePosition(QTextCursor::End);
- m_cursor->insertText(buf);
-}
+ htmlbuf += "</table></body></html>";
-void JobLog::display_text(const char *buf)
-{
- m_cursor->movePosition(QTextCursor::End);
- m_cursor->insertText(buf);
+ /* full text ready. Here a custom sheet is used to align columns */
+ QString logSheet("p,pre,.err {margin-left: 10px} .err {color:#FF0000;}");
+ textEdit->document()->setDefaultStyleSheet(logSheet);
+ textEdit->document()->setHtml(htmlbuf);
+ textEdit->moveCursor(QTextCursor::Start);
+
+ } /* if results from query */
+
}
+