bool CSVResourceReportElement::generate() { generateHeader(); generateTableHeader(); ResourceList filteredResourceList; if (!filterResourceList(filteredResourceList, 0, hideResource, rollUpResource)) return false; sortResourceList(filteredResourceList); maxDepthResourceList = filteredResourceList.maxDepth(); maxDepthTaskList = 0; int rNo = 1; for (ResourceListIterator rli(filteredResourceList); *rli != 0; ++rli, ++rNo) { TableLineInfo tli1; tli1.ca1 = tli1.resource = *rli; for (uint sc = 0; sc < scenarios.count(); ++sc) { tli1.row = sc; tli1.sc = scenarios[sc]; tli1.idxNo = rNo; generateLine(&tli1, sc == 0 ? 4 : 5); } } generateFooter(); return true; }
Resource* ResourceList::getResource(const QString& id) const { for (ResourceListIterator rli(*this); *rli != 0; ++rli) if ((*rli)->getId() == id) return *rli; return 0; }
bool TjPrintTaskReport::generate() { /* Get complete task list, filter and sort it. Then determine the maximum * tree level. */ TaskList filteredTaskList; if (!reportElement->filterTaskList(filteredTaskList, 0, reportElement->getHideTask(), reportElement->getRollUpTask())) return false; maxDepthTaskList = filteredTaskList.maxDepth(); (static_cast<const QtTaskReportElement*>(reportElement))-> sortTaskList(filteredTaskList); if (filteredTaskList.isEmpty()) return true; /* Same for resource list. Just that we don't have to sort it. It needs to * be regenerated per task later on. */ ResourceList filteredResourceList; if (!reportElement->filterResourceList(filteredResourceList, 0, reportElement->getHideResource(), reportElement->getRollUpResource())) return false; maxDepthResourceList = filteredResourceList.maxDepth(); generateTableHeader(); int index = 1; for (TaskListIterator tli(filteredTaskList); *tli; ++tli) { TjReportRow* row = new TjReportRow(getNumberOfColumns(), index++); row->setCoreAttributes(*tli, 0); rows.push_back(row); generateTaskListRow(row, *tli); if (!reportElement->filterResourceList (filteredResourceList, *tli, reportElement->getHideResource(), reportElement->getRollUpResource())) return false; reportElement->sortResourceList(filteredResourceList); for (ResourceListIterator rli(filteredResourceList); *rli; ++rli) { row = new TjReportRow(getNumberOfColumns(), index++); row->setCoreAttributes(*tli, *rli); rows.push_back(row); generateResourceListRow(row, *rli, *tli); } } layoutPages(); return true; }
void PageDef::writeTagFile(FTextStream &tagFile) { bool found = name()=="citelist"; QDictIterator<RefList> rli(*Doxygen::xrefLists); RefList *rl; for (rli.toFirst();(rl=rli.current()) && !found;++rli) { if (rl->listName()==name()) { found=TRUE; break; } } if (!found) // not one of the generated related pages { tagFile << " <compound kind=\"page\">" << endl; tagFile << " <name>" << name() << "</name>" << endl; tagFile << " <title>" << convertToXML(title()) << "</title>" << endl; tagFile << " <filename>" << convertToXML(getOutputFileBase()) << "</filename>" << endl; writeDocAnchorsToTagFile(tagFile); tagFile << " </compound>" << endl; } }
void PageDef::writeDocumentation(OutputList &ol) { static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW"); //outputList->disable(OutputGenerator::Man); QCString pageName,manPageName; pageName = escapeCharsInString(name(),FALSE,TRUE); manPageName = escapeCharsInString(name(),TRUE,TRUE); //printf("PageDef::writeDocumentation: %s\n",getOutputFileBase().data()); ol.pushGeneratorState(); //1.{ if (m_nestingLevel>0 //&& // a sub page //(Doxygen::mainPage==0 || getOuterScope()!=Doxygen::mainPage) // and not a subpage of the mainpage ) { // do not generate sub page output for RTF and LaTeX, as these are // part of their parent page ol.disableAll(); ol.enable(OutputGenerator::Man); ol.enable(OutputGenerator::Html); } ol.pushGeneratorState(); //2.{ ol.disableAllBut(OutputGenerator::Man); startFile(ol,getOutputFileBase(),manPageName,title(),HLI_Pages,!generateTreeView); ol.enableAll(); ol.disable(OutputGenerator::Man); startFile(ol,getOutputFileBase(),pageName,title(),HLI_Pages,!generateTreeView); ol.popGeneratorState(); //2.} if (!generateTreeView) { if (getOuterScope()!=Doxygen::globalScope && !Config_getBool("DISABLE_INDEX")) { getOuterScope()->writeNavigationPath(ol); } ol.endQuickIndices(); } SectionInfo *si=Doxygen::sectionDict->find(name()); // save old generator state and write title only to Man generator ol.pushGeneratorState(); //2.{ ol.disableAllBut(OutputGenerator::Man); ol.startTitleHead(manPageName); ol.endTitleHead(manPageName, manPageName); if (si) { ol.generateDoc(docFile(),docLine(),this,0,si->title,TRUE,FALSE,0,TRUE,FALSE); ol.endSection(si->label,si->type); } ol.popGeneratorState(); //2.} // for Latex the section is already generated as a chapter in the index! ol.pushGeneratorState(); //2.{ ol.disable(OutputGenerator::Latex); ol.disable(OutputGenerator::RTF); ol.disable(OutputGenerator::Man); if (!title().isEmpty() && !name().isEmpty() && si!=0) { //ol.startSection(si->label,si->title,si->type); startTitle(ol,getOutputFileBase(),this); ol.generateDoc(docFile(),docLine(),this,0,si->title,TRUE,FALSE,0,TRUE,FALSE); //stringToSearchIndex(getOutputFileBase(), // theTranslator->trPage(TRUE,TRUE)+" "+si->title, // si->title); //ol.endSection(si->label,si->type); endTitle(ol,getOutputFileBase(),name()); } ol.startContents(); ol.popGeneratorState(); //2.} if (m_showToc && hasSections()) { writeToc(ol); } writePageDocumentation(ol); if (generateTreeView && getOuterScope()!=Doxygen::globalScope && !Config_getBool("DISABLE_INDEX")) { ol.endContents(); endFileWithNavPath(getOuterScope(),ol); } else { endFile(ol); } ol.popGeneratorState(); //1.} if (!Config_getString("GENERATE_TAGFILE").isEmpty()) { bool found = name()=="citelist"; QDictIterator<RefList> rli(*Doxygen::xrefLists); RefList *rl; for (rli.toFirst();(rl=rli.current()) && !found;++rli) { if (rl->listName()==name()) { found=TRUE; break; } } if (!found) // not one of the generated related pages { Doxygen::tagFile << " <compound kind=\"page\">" << endl; Doxygen::tagFile << " <name>" << name() << "</name>" << endl; Doxygen::tagFile << " <title>" << convertToXML(title()) << "</title>" << endl; Doxygen::tagFile << " <filename>" << getOutputFileBase() << "</filename>" << endl; writeDocAnchorsToTagFile(); Doxygen::tagFile << " </compound>" << endl; } } Doxygen::indexList->addIndexItem(this,0,0,filterTitle(title())); }
bool HTMLResourceReportElement::generate() { generateHeader(); generateTableHeader(); s() << "<tbody>" << endl; ResourceList filteredResourceList; if (!filterResourceList(filteredResourceList, 0, hideResource, rollUpResource)) return false; sortResourceList(filteredResourceList); maxDepthResourceList = filteredResourceList.maxDepth(); TaskList filteredTaskList; if (!filterTaskList(filteredTaskList, 0, hideTask, rollUpTask)) return false; maxDepthTaskList = filteredTaskList.maxDepth(); int rNo = 1; for (ResourceListIterator rli(filteredResourceList); *rli != 0; ++rli, ++rNo) { TableLineInfo tli1; tli1.ca1 = tli1.resource = *rli; for (uint sc = 0; sc < scenarios.count(); ++sc) { tli1.row = sc; tli1.sc = scenarios[sc]; tli1.idxNo = rNo; tli1.bgCol = colors.getColor("default").dark(100 + sc * 10); generateLine(&tli1, sc == 0 ? 4 : 5); } /* We only want to show the nested task list for leaf resources. Leaf * in this case means "task has no visible childs". */ bool hasVisibleChilds = false; for (ResourceListIterator cli((*rli)->getSubListIterator()); *cli; ++cli) if (filteredResourceList.findRef(*cli) >= 0) { hasVisibleChilds = true; break; } if (hasVisibleChilds) continue; if (!filterTaskList(filteredTaskList, *rli, hideTask, rollUpTask)) return false; sortTaskList(filteredTaskList); int tNo = 1; for (TaskListIterator tli(filteredTaskList); *tli != 0; ++tli, ++tNo) { TableLineInfo tli2; tli2.ca1 = tli2.task = *tli; tli2.ca2 = tli2.resource = *rli; for (uint sc = 0; sc < scenarios.count(); ++sc) { tli2.row = sc; tli2.sc = scenarios[sc]; tli2.idxNo = tNo; tli2.bgCol = colors.getColor("default").light(120). dark(100 + sc * 10); generateLine(&tli2, sc == 0 ? 2 : 3); } } } s() << "</tbody>" << endl; s() << "</table>" << endl; generateFooter(); return true; }
bool TjSummaryReport::generateReport() { QString text; text = i18n("<p><h1>Summary for Project %1 (Version %2)</h1></p><hr/>") .arg(project->getName()) .arg(project->getVersion()); int disabledScenarios = 0; for (ScenarioListIterator sli(project->getScenarioIterator()); *sli; ++sli) if (!(*sli)->getEnabled()) disabledScenarios++; text += "<table>"; text += i18n("<tr><td><b>Scenarios:</b></td><td>%1 (%2 disabled)</td></tr>") .arg(project->getMaxScenarios()) .arg(disabledScenarios); int groups= 0; int workers = 0; int other = 0; for (ResourceListIterator rli(project->getResourceListIterator()); *rli; ++rli) if ((*rli)->hasSubs()) groups++; else if ((*rli)->getEfficiency() > 0.0) workers++; else other++; text += i18n("<tr><td><b>Resources:</b></td>" "<td>%1 (%2 Groups, %3 Workers, %4 Other)</td></tr>") .arg(project->resourceCount()) .arg(groups).arg(workers).arg(other); int summaryAccounts = 0; int cost = 0; int revenue = 0; for (AccountListIterator ali(project->getAccountListIterator()); *ali; ++ali) if ((*ali)->hasSubs()) summaryAccounts++; else if ((*ali)->getAcctType() == Cost) cost++; else revenue++; text += i18n("<tr><td><b>Accounts:</b></td>" "<td>%1 (%2 Summary Accounts, %3 Cost Accounts, " "%4 Revenue Accounts)</td></tr>") .arg(project->accountCount()) .arg(summaryAccounts).arg(cost).arg(revenue); int containers = 0; int leafs = 0; int milestones = 0; for (TaskListIterator tli(project->getTaskListIterator()); *tli; ++tli) if ((*tli)->hasSubs()) containers++; else if ((*tli)->isMilestone()) milestones++; else leafs++; text += i18n("<tr><td><b>Tasks:</b></td><td>%1 " "(%2 Containers, %3 Milestones, %4 Leaves)</td></tr>" "</table><hr/>") .arg(project->taskCount()) .arg(containers).arg(milestones).arg(leafs); textBrowser->setText(text); return true; }