Report date format

Added report.X.dateformat which gives each report the possibility
to have a custom format for the due dates.
This commit is contained in:
Federico Hernandez 2010-01-18 03:45:49 +01:00
parent 4f70969306
commit fccd0d6c96
5 changed files with 51 additions and 10 deletions

View file

@ -67,11 +67,11 @@ std::string Config::defaults =
"# Dates\n"
"dateformat=m/d/Y # Preferred input and display date format\n"
"#reportdateformat=m/d/Y # Preferred display date format for repors\n"
"weekstart=Sunday # Sunday or Monday only\n" // TODO
"displayweeknumber=yes # Show week numbers on calendar\n" // TODO
"weekstart=Sunday # Sunday or Monday only\n"
"displayweeknumber=yes # Show week numbers on calendar\n"
"due=7 # Task is considered due in 7 days\n"
"#calendar.details=yes # Calendar shows information for tasks w/due dates\n"
"#calendar.details.report=list # Report to use when showing task information in cal\n" // TODO
"#calendar.details.report=list # Report to use when showing task information in cal\n"
"#monthsperline=3 # Number of calendar months on a line\n" // TODO
"\n"
"# Color controls.\n"
@ -108,7 +108,7 @@ std::string Config::defaults =
"\n"
"#default.project=foo # Default project for 'add' command\n"
"#default.priority=M # Default priority for 'add' command\n"
"default.command=list # When no arguments are specified\n" // TODO
"default.command=list # When no arguments are specified\n"
"\n"
"_forcecolor=no # Forces color to be on, even for non TTY output\n"
"blanklines=true # Use more whitespace in output\n"
@ -144,6 +144,7 @@ std::string Config::defaults =
"# Description: This report is ...\n"
"# Sort: due+,priority-,project+\n"
"# Filter: pro:x pri:H +bug limit:10\n"
"# Dateformat: due date format in reports\n"
"\n"
"# task long\n"
"report.long.description=Lists all task, all data, matching the specified criteria\n"
@ -151,6 +152,7 @@ std::string Config::defaults =
"report.long.labels=ID,Project,Pri,Added,Started,Due,Recur,Age,Tags,Description\n"
"report.long.sort=due+,priority-,project+\n"
"report.long.filter=status:pending\n"
"#report.long.dateformat=m/d/Y\n"
"\n"
"# task list\n"
"report.list.description=Lists all tasks matching the specified criteria\n"
@ -158,6 +160,7 @@ std::string Config::defaults =
"report.list.labels=ID,Project,Pri,Due,Active,Age,Description\n"
"report.list.sort=due+,priority-,project+\n"
"report.list.filter=status:pending\n"
"#report.list.dateformat=m/d/Y\n"
"\n"
"# task ls\n"
"report.ls.description=Minimal listing of all tasks matching the specified criteria\n"
@ -165,6 +168,7 @@ std::string Config::defaults =
"report.ls.labels=ID,Project,Pri,Description\n"
"report.ls.sort=priority-,project+\n"
"report.ls.filter=status:pending\n"
"#report.ls.dateformat=m/d/Y\n"
"\n"
"# task minimal\n"
"report.minimal.description=A really minimal listing\n"
@ -172,6 +176,7 @@ std::string Config::defaults =
"report.minimal.labels=ID,Project,Description\n"
"report.minimal.sort=project+,description+\n"
"report.minimal.filter=status:pending\n"
"#report.minimal.dateformat=m/d/Y\n"
"\n"
"# task newest\n"
"report.newest.description=Shows the newest tasks\n"
@ -179,6 +184,7 @@ std::string Config::defaults =
"report.newest.labels=ID,Project,Pri,Due,Active,Age,Description\n"
"report.newest.sort=id-\n"
"report.newest.filter=status:pending limit:10\n"
"#report.newest.dateformat=m/d/Y\n"
"\n"
"# task oldest\n"
"report.oldest.description=Shows the oldest tasks\n"
@ -186,6 +192,7 @@ std::string Config::defaults =
"report.oldest.labels=ID,Project,Pri,Due,Active,Age,Description\n"
"report.oldest.sort=id+\n"
"report.oldest.filter=status:pending limit:10\n"
"#report.oldest.dateformat=m/d/Y\n"
"\n"
"# task overdue\n"
"report.overdue.description=Lists overdue tasks matching the specified criteria\n"
@ -193,6 +200,7 @@ std::string Config::defaults =
"report.overdue.labels=ID,Project,Pri,Due,Active,Age,Description\n"
"report.overdue.sort=due+,priority-,project+\n"
"report.overdue.filter=status:pending due.before:today\n"
"#report.overdue.dateformat=m/d/Y\n"
"\n"
"# task active\n"
"report.active.description=Lists active tasks matching the specified criteria\n"
@ -200,6 +208,7 @@ std::string Config::defaults =
"report.active.labels=ID,Project,Pri,Due,Active,Age,Description\n"
"report.active.sort=due+,priority-,project+\n"
"report.active.filter=status:pending start.any:\n"
"#report.active.dateformat=m/d/Y\n"
"\n"
"# task completed\n"
"report.completed.description=Lists completed tasks matching the specified criteria\n"
@ -207,6 +216,7 @@ std::string Config::defaults =
"report.completed.labels=Complete,Project,Pri,Age,Description\n"
"report.completed.sort=end+,priority-,project+\n"
"report.completed.filter=status:completed\n"
"#report.completed.dateformat=m/d/Y\n"
"\n"
"# task recurring\n"
"report.recurring.description=Lists recurring tasks matching the specified criteria\n"
@ -214,6 +224,7 @@ std::string Config::defaults =
"report.recurring.labels=ID,Project,Pri,Due,Recur,Active,Age,Description\n"
"report.recurring.sort=due+,priority-,project+\n"
"report.recurring.filter=status:pending parent.any:\n"
"#report.recurring.dateformat=m/d/Y\n"
"\n"
"# task waiting\n"
"report.waiting.description=Lists all waiting tasks matching the specified criteria\n"
@ -221,12 +232,14 @@ std::string Config::defaults =
"report.waiting.labels=ID,Project,Pri,Wait,Age,Description\n"
"report.waiting.sort=wait+,priority-,project+\n"
"report.waiting.filter=status:waiting\n"
"#report.waiting.dateformat=m/d/Y\n"
"\n"
"# task all\n"
"report.all.description=Lists all tasks matching the specified criteria\n"
"report.all.columns=id,project,priority,due,active,age,description\n"
"report.all.labels=ID,Project,Pri,Due,Active,Age,Description\n"
"report.all.sort=due+,priority-,project+\n"
"#report.all.dateformat=m/d/Y\n"
"\n"
"# task next\n"
"report.next.description=Lists the most urgent tasks\n"
@ -234,6 +247,7 @@ std::string Config::defaults =
"report.next.labels=ID,Project,Pri,Due,Active,Age,Description\n"
"report.next.sort=due+,priority-,project+\n"
"report.next.filter=status:pending\n"
"#report.next.dateformat=m/d/Y\n"
"\n";
////////////////////////////////////////////////////////////////////////////////

View file

@ -644,6 +644,12 @@ void Table::setDateFormat (const std::string& dateFormat)
mDateFormat = dateFormat;
}
////////////////////////////////////////////////////////////////////////////////
void Table::setReportName (const std::string& reportName)
{
mReportName = reportName;
}
////////////////////////////////////////////////////////////////////////////////
int Table::rowCount ()
{
@ -881,7 +887,9 @@ void Table::sort (std::vector <int>& order)
else
{
std::string format = context.config.get ("reportdateformat");
std::string format = context.config.get ("report." + mReportName + ".dateformat");
if (format == "")
format = context.config.get ("reportdateformat");
if (format == "")
format = context.config.get ("dateformat");
@ -903,7 +911,9 @@ void Table::sort (std::vector <int>& order)
else
{
std::string format = context.config.get ("reportdateformat");
std::string format = context.config.get ("report." + mReportName + ".dateformat");
if (format == "")
format = context.config.get ("reportdateformat");
if (format == "")
format = context.config.get ("dateformat");

View file

@ -86,6 +86,7 @@ public:
void suppressWS ();
void setDateFormat (const std::string&);
void setReportName (const std::string&);
int rowCount ();
int columnCount ();
@ -135,6 +136,7 @@ private:
// Misc...
bool mSuppressWS;
std::string mDateFormat;
std::string mReportName;
};
#endif

View file

@ -162,6 +162,7 @@ int runCustomReport (
Table table;
table.setTableWidth (context.getWidth ());
table.setDateFormat (context.config.get ("dateformat"));
table.setReportName (report);
foreach (task, tasks)
table.addRow ();
@ -360,7 +361,9 @@ int runCustomReport (
table.setColumnWidth (columnCount, Table::minimum);
table.setColumnJustification (columnCount, Table::left);
std::string format = context.config.get ("reportdateformat");
std::string format = context.config.get ("report." + report + ".dateformat");
if (format == "")
format = context.config.get ("reportdateformat");
if (format == "")
format = context.config.get ("dateformat");