2 * HTMLResourceReportElement.h - ResourceJuggler
4 * Copyright (c) 2001, 2002, 2003, 2004 by Chris Schlaeger <cs@kde.org>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of version 2 of the GNU General Public License as
8 * published by the Free Software Foundation.
13 #include "HTMLResourceReportElement.h"
14 #include "TableLineInfo.h"
15 #include "ExpressionTree.h"
16 #include "Operation.h"
20 HTMLResourceReportElement::HTMLResourceReportElement(Report* r,
23 HTMLReportElement(r, df, dl)
25 uint sc = r->getProject()->getMaxScenarios();
26 columns.append(new TableColumnInfo(sc, "no"));
27 columns.append(new TableColumnInfo(sc, "name"));
28 columns.append(new TableColumnInfo(sc, "start"));
29 columns.append(new TableColumnInfo(sc, "end"));
32 setHideResource(new ExpressionTree(new Operation(0)));
34 setHideTask(new ExpressionTree(new Operation(1)));
36 taskSortCriteria[0] = CoreAttributesList::TreeMode;
37 taskSortCriteria[1] = CoreAttributesList::StartUp;
38 taskSortCriteria[2] = CoreAttributesList::EndUp;
39 resourceSortCriteria[0] = CoreAttributesList::TreeMode;
42 HTMLResourceReportElement::~HTMLResourceReportElement()
47 HTMLResourceReportElement::generate()
51 generateTableHeader();
53 s() << "<tbody>" << endl;
55 ResourceList filteredResourceList;
56 if (!filterResourceList(filteredResourceList, 0, hideResource,
59 sortResourceList(filteredResourceList);
60 maxDepthResourceList = filteredResourceList.maxDepth();
62 TaskList filteredTaskList;
63 if (!filterTaskList(filteredTaskList, 0, hideTask, rollUpTask))
65 maxDepthTaskList = filteredTaskList.maxDepth();
68 for (ResourceListIterator rli(filteredResourceList); *rli != 0;
72 tli1.ca1 = tli1.resource = *rli;
73 for (uint sc = 0; sc < scenarios.count(); ++sc)
76 tli1.sc = scenarios[sc];
78 tli1.bgCol = colors.getColor("default").dark(100 + sc * 10);
79 generateLine(&tli1, sc == 0 ? 4 : 5);
82 /* We only want to show the nested task list for leaf resources. Leaf
83 * in this case means "task has no visible childs". */
84 bool hasVisibleChilds = false;
85 for (ResourceListIterator cli((*rli)->getSubListIterator());
87 if (filteredResourceList.findRef(*cli) >= 0)
89 hasVisibleChilds = true;
96 if (!filterTaskList(filteredTaskList, *rli, hideTask, rollUpTask))
98 sortTaskList(filteredTaskList);
101 for (TaskListIterator tli(filteredTaskList); *tli != 0; ++tli, ++tNo)
104 tli2.ca1 = tli2.task = *tli;
105 tli2.ca2 = tli2.resource = *rli;
106 for (uint sc = 0; sc < scenarios.count(); ++sc)
109 tli2.sc = scenarios[sc];
111 tli2.bgCol = colors.getColor("default").light(120).
113 generateLine(&tli2, sc == 0 ? 2 : 3);
117 s() << "</tbody>" << endl;
118 s() << "</table>" << endl;