Changeset 17860
- Timestamp:
- 08/08/08 07:39:58 (2 months ago)
- Files:
-
- trunk/core/src/net/project/view/components/DashboardLayout.java (modified) (7 diffs)
- trunk/core/src/net/project/view/pages/project/PnTaskWrapper.java (added)
- trunk/core/src/net/project/view/pages/project/ProjectPhaseWrapper.java (added)
- trunk/core/src/net/project/view/pages/project/TeammateWrapper.java (added)
- trunk/core/src/net/project/view/pages/project/ViewProject.java (modified) (7 diffs)
- trunk/core/web/html/project/ViewProject.html (modified) (12 diffs)
- trunk/core/web/html/resource/management/components/DashboardLayout.html (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/core/src/net/project/view/components/DashboardLayout.java
r17843 r17860 1 1 package net.project.view.components; 2 3 import java.util.Calendar; 4 import java.util.Date; 2 5 3 6 import javax.servlet.http.HttpServletRequest; … … 5 8 import net.project.base.Module; 6 9 import net.project.base.property.PropertyProvider; 10 import net.project.calendar.PnCalendar; 11 import net.project.security.Action; 7 12 import net.project.security.SessionManager; 8 13 import net.project.space.Space; … … 18 23 19 24 public class DashboardLayout { 20 25 21 26 private static Logger log = Logger.getLogger(DashboardLayout.class); 22 27 23 28 @ApplicationState 24 29 private String jSPRootURL; 25 26 @Persist 27 private String versionNumber; 30 31 @Persist 32 private String versionNumber; 28 33 29 34 @Persist … … 32 37 @Inject 33 38 private RequestGlobals globals; 34 39 35 40 @Persist 36 41 private String spaceType; 37 42 38 43 public DashboardLayout() { 39 44 try { … … 41 46 .get("prm.global.application.title"); 42 47 } catch (Exception ex) { 43 log.error("Error occured while getting property values in Layout page : "+ex.getMessage()); 48 log 49 .error("Error occured while getting property values in Layout page : " 50 + ex.getMessage()); 44 51 } 45 52 } 46 53 47 54 @SetupRender 48 55 void setValues() { 49 56 jSPRootURL = SessionManager.getJSPRootURL(); 50 versionNumber = StringUtils.deleteWhitespace(Version.getInstance().getAppVersion()); 57 versionNumber = StringUtils.deleteWhitespace(Version.getInstance() 58 .getAppVersion()); 51 59 HttpServletRequest request = globals.getHTTPServletRequest(); 52 60 53 61 String module = request.getParameter("module"); 54 // spaceType = SessionManager.getUser().getCurrentSpace().getType();55 if (module != null && !module.equalsIgnoreCase("null")) {56 if (module.equals(""+Module.PERSONAL_SPACE)) {62 // spaceType = SessionManager.getUser().getCurrentSpace().getType(); 63 if (module != null && !module.equalsIgnoreCase("null")) { 64 if (module.equals("" + Module.PERSONAL_SPACE)) { 57 65 spaceType = Space.PERSONAL_SPACE; 58 } else if (module.equals(""+Module.PROJECT_SPACE)) {66 } else if (module.equals("" + Module.PROJECT_SPACE)) { 59 67 spaceType = Space.PROJECT_SPACE; 60 68 } 61 69 } 62 63 log.info("REQUEST: " +request);70 71 log.info("REQUEST: " + request); 64 72 } 65 73 … … 72 80 73 81 /** 74 * @param application_title 75 * The application_title to set. 82 * @param application_title The application_title to set. 76 83 */ 77 84 public void setApplication_title(String application_title) { … … 85 92 return versionNumber; 86 93 } 87 94 88 95 public String getJSPRootURL() { 89 96 return jSPRootURL; 90 97 } 91 98 92 99 public String getSpaceType() { 93 100 return spaceType; 94 101 } 95 102 103 public String getActualDate() { 104 Date actual = new Date(); 105 return SessionManager.getUser().getDateFormatter().formatDate(actual, 106 "M/d/yy"); 107 } 108 109 public String getWeekLaterDate() { 110 Calendar c = Calendar.getInstance(); 111 c.add(Calendar.DAY_OF_MONTH, 7); 112 return SessionManager.getUser().getDateFormatter().formatDate( 113 c.getTime(), "M/d/yy"); 114 } 115 116 public String getSpaceId() { 117 return SessionManager.getUser().getCurrentSpace().getID(); 118 } 119 120 public int getProcessModule() { 121 return Module.PROCESS; 122 } 123 124 public int getActionView() { 125 return Action.VIEW; 126 } 127 128 public long getStartOfMonth() { 129 PnCalendar calendar = new PnCalendar(); 130 return calendar.startOfMonth(new Date()).getTime(); 131 } 132 133 public String getViewPhaseParams() { 134 return "&module=" + Module.PROCESS + "&action=" + Action.VIEW; 135 } 136 137 public String getShowResourceAllocationParams() { 138 return "&module=140&startDate=" + this.getStartOfMonth(); 139 } 140 96 141 } trunk/core/src/net/project/view/pages/project/ViewProject.java
r17842 r17860 5 5 6 6 import java.util.ArrayList; 7 import java.util.Calendar; 8 import java.util.Date; 9 import java.util.Iterator; 7 10 import java.util.List; 8 11 9 12 import net.project.base.Module; 10 import net.project.calendar.MyMeetings; 13 import net.project.hibernate.model.project_space.ObjectChanged; 14 import net.project.hibernate.model.project_space.ProjectChanges; 15 import net.project.hibernate.model.project_space.ProjectPhase; 11 16 import net.project.hibernate.model.project_space.ProjectSchedule; 17 import net.project.hibernate.model.project_space.Teammate; 18 import net.project.hibernate.service.IPnAssignmentService; 12 19 import net.project.hibernate.service.IPnProjectSpaceService; 13 20 import net.project.hibernate.service.ServiceFactory; … … 27 34 public class ViewProject { 28 35 29 private static Logger log = Logger.getLogger(ViewProject.class);36 private static Logger log = Logger.getLogger(ViewProject.class); 30 37 31 38 private String jspRootURL; … … 67 74 68 75 private String meeting; 76 77 @Persist 78 private List<ObjectChanged> documents; 79 80 private ObjectChanged document; 81 82 @Persist 83 private List<TeammateWrapper> teammates; 84 85 private TeammateWrapper teammate; 86 87 @Persist 88 private List<ProjectPhaseWrapper> phases; 89 90 private ProjectPhaseWrapper phase; 91 92 private PnTaskWrapper milestone; 69 93 70 94 @Inject … … 129 153 void setValues() { 130 154 try { 131 projectId = requestGlobals.getHTTPServletRequest().getParameter("id"); 155 projectId = requestGlobals.getHTTPServletRequest().getParameter( 156 "id"); 132 157 projectSpace = new ProjectSpaceBean(); 133 158 projectSpace.setID(projectId); … … 190 215 } 191 216 192 MyMeetings myMeetings = new MyMeetings();193 myMeetings.setUser(SessionManager.getUser());194 myMeetings.loadEntries();195 196 // meetings = myMeetings.getMeetingList();197 217 meetings = new ArrayList<String>(); 198 meetings.add("uno"); 199 meetings.add("dos"); 218 219 /* 220 meetings.add("UNO"); 221 meetings.add("DOS"); 222 meetings.add("TRES"); 223 */ 224 225 IPnProjectSpaceService projectSpaceService = ServiceFactory 226 .getInstance().getPnProjectSpaceService(); 227 ProjectChanges changes = projectSpaceService.getProjectChanges( 228 Integer.parseInt(projectSpace.getID()), 7); 229 documents = changes.getDocuments(); 230 231 Calendar c = Calendar.getInstance(); 232 Date start = c.getTime(); 233 c.add(Calendar.MONTH, 3); 234 Date finish = c.getTime(); 235 236 IPnAssignmentService assignmentService = ServiceFactory 237 .getInstance().getPnAssignmentService(); 238 List<Teammate> auxTeammates = assignmentService 239 .getAssignmentsByPersonForProject(Integer 240 .parseInt(projectSpace.getID()), start, finish); 241 teammates = new ArrayList<TeammateWrapper>(); 242 Iterator<Teammate> iTeammates = auxTeammates.iterator(); 243 while (iTeammates.hasNext()) { 244 teammates.add(new TeammateWrapper(iTeammates.next())); 245 } 246 247 List<ProjectPhase> phasesAux = projectSpaceService 248 .getProjectPhasesAndMilestones(Integer 249 .parseInt(projectSpace.getID())); 250 phases = new ArrayList<ProjectPhaseWrapper>(); 251 Iterator<ProjectPhase> iPhases = phasesAux.iterator(); 252 while (iPhases.hasNext()) { 253 phases.add(new ProjectPhaseWrapper(iPhases.next())); 254 } 255 200 256 } catch (Exception e) { 201 257 … … 287 343 return meetings; 288 344 } 289 345 290 346 public void setMeetings(List<String> meetings) { 291 347 this.meetings = meetings; … … 299 355 this.meeting = meeting; 300 356 } 357 358 public List<ObjectChanged> getDocuments() { 359 return documents; 360 } 361 362 public void setDocuments(List<ObjectChanged> documents) { 363 this.documents = documents; 364 } 365 366 public ObjectChanged getDocument() { 367 return document; 368 } 369 370 public void setDocument(ObjectChanged document) { 371 this.document = document; 372 } 373 374 public List<TeammateWrapper> getTeammates() { 375 return teammates; 376 } 377 378 public void setTeammates(List<TeammateWrapper> teammates) { 379 this.teammates = teammates; 380 } 381 382 public TeammateWrapper getTeammate() { 383 return teammate; 384 } 385 386 public void setTeammate(TeammateWrapper teammate) { 387 this.teammate = teammate; 388 } 389 390 public List<ProjectPhaseWrapper> getPhases() { 391 return phases; 392 } 393 394 public void setPhases(List<ProjectPhaseWrapper> phases) { 395 this.phases = phases; 396 } 397 398 public ProjectPhaseWrapper getPhase() { 399 return phase; 400 } 401 402 public void setPhase(ProjectPhaseWrapper phase) { 403 this.phase = phase; 404 } 405 406 public PnTaskWrapper getMilestone() { 407 return milestone; 408 } 409 410 public void setMilestone(PnTaskWrapper milestone) { 411 this.milestone = milestone; 412 } 413 414 public boolean getImprovementCode() { 415 return projectSpace.getImprovementCode() != null; 416 } 417 418 public String getImprovementCodeUrl() { 419 return projectSpace.getImprovementCode().getImageURL(projectSpace.getColorCode()); 420 } 421 422 public boolean getFinancialStatusCode() { 423 return projectSpace.getFinancialStatusColorCode() != null; 424 } 425 public String getFinancialStatusCodeUrl() { 426 return projectSpace.getImprovementCode().getImageURL(projectSpace.getFinancialStatusColorCode()); 427 } 428 429 public boolean getScheduleStatusCode() { 430 return projectSpace.getScheduleStatusColorCode() != null; 431 } 432 433 public String getScheduleStatusCodeUrl() { 434 return projectSpace.getImprovementCode().getImageURL(projectSpace.getScheduleStatusColorCode()); 435 } 436 437 public boolean getResourceStatusCode() { 438 return projectSpace.getResourceStatusColorCode() != null; 439 } 440 441 public String getResourceStatusCodeUrl() { 442 return projectSpace.getImprovementCode().getImageURL(projectSpace.getResourceStatusColorCode()); 443 } 301 444 302 445 } trunk/core/web/html/project/ViewProject.html
r17842 r17860 58 58 <tr> 59 59 <td> 60 <t:if test="improvementCode"> 61 <img src="${jspRootURL}${improvementCodeUrl}" /> 62 </t:if> 60 63 </td> 61 64 <td> 65 <t:if test="financialStatusCode"> 66 <img src="${jspRootURL}${financialStatusCodeUrl}" /> 67 </t:if> 62 68 </td> 63 69 <td> 70 <t:if test="scheduleStatusCode"> 71 <img src="${jspRootURL}${scheduleStatusCodeUrl}" /> 72 </t:if> 64 73 </td> 65 74 <td> 75 <t:if test="resourceStatusCode"> 76 <img src="${jspRootURL}${resourceStatusCode}" /> 77 </t:if> 66 78 </td> 67 79 </tr> … … 80 92 <tr class="channelHeader"> 81 93 <td class="channelHeader" width="1%"> 82 <img src=" /images/icons/channelbar-left_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" />94 <img src="${jspRootURL}/images/icons/channelbar-left_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" /> 83 95 </td> 84 96 <td nowrap="true" class="channelHeader">Project News</td> 85 97 <td align="right" nowrap="true" class="channelHeader"> </td> 86 98 <td align="right" class="channelHeader" width="5%"> 87 <img src=" /images/icons/channelbar-right_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" />99 <img src="${jspRootURL}/images/icons/channelbar-right_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" /> 88 100 </td> 89 101 </tr> … … 110 122 <tr class="channelHeader"> 111 123 <td class="channelHeader" width="1%"> 112 <img src=" /images/icons/channelbar-left_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" />113 </td> 114 <td nowrap="true" class="channelHeader"> Upcoming Meetings</td>124 <img src="${jspRootURL}/images/icons/channelbar-left_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" /> 125 </td> 126 <td nowrap="true" class="channelHeader">Changes Within 7 Days</td> 115 127 <td align="right" nowrap="true" class="channelHeader"> </td> 116 128 <td align="right" class="channelHeader" width="5%"> 117 <img src=" /images/icons/channelbar-right_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" />129 <img src="${jspRootURL}/images/icons/channelbar-right_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" /> 118 130 </td> 119 131 </tr> … … 124 136 <tr class="tableContent" align="left"> 125 137 <td class="tableContent" colspan="5"> 126 <table t:type="loop" source="${meetings}" value="meeting"> 127 </table> 138 <div t:type="loop" t:source="documents" t:value="document"> 139 ${document.objectName} 140 </div> 128 141 </td> 129 142 </tr> … … 143 156 <tr class="channelHeader"> 144 157 <td class="channelHeader" width="1%"> 145 <img src=" /images/icons/channelbar-left_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" />146 </td> 147 <td nowrap="true" class="channelHeader"> Changes Within 7 Days</td>158 <img src="${jspRootURL}/images/icons/channelbar-left_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" /> 159 </td> 160 <td nowrap="true" class="channelHeader">Upcoming Meetings</td> 148 161 <td align="right" nowrap="true" class="channelHeader"> </td> 149 162 <td align="right" class="channelHeader" width="5%"> 150 <img src=" /images/icons/channelbar-right_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" />163 <img src="${jspRootURL}/images/icons/channelbar-right_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" /> 151 164 </td> 152 165 </tr> … … 157 170 <tr class="tableContent" align="left"> 158 171 <td class="tableContent" colspan="5"> 159 <table t:type="loop" source="${meetings}" value="meeting"> 160 </table> 172 <div t:type="loop" source="meetings" value="meeting"> 173 ${meeting}<br /> 174 </div> 161 175 </td> 162 176 </tr> … … 182 196 <span id="project_schedule_title">Schedule</span><br /> 183 197 <div id="project_schedule"> 184 <table cellspacing="5" cellpadding="0" style="font-size: small;"> 185 <tr> 186 <td></td> 187 <td><b>Start</b></td> 188 <td><b>Finish</b></td> 189 </tr> 190 <tr> 191 <td><b>Planned:</b></td> 192 <td>${startDate}</td> 193 <td>${finishDate}</td> 194 </tr> 195 <tr> 196 <td><b>Actual:</b></td> 197 <td>${startActualDate}</td> 198 <td>${finishActualDate}</td> 199 </tr> 200 </table> 198 <div style="width: 100%;"> 199 <div style="float: right;"> 200 <a href="javascript:showReport('ltr')">${numberLateTasks} late tasks</a><br /> 201 <a href="javascript:showReport('tcdr')">${numberComingDueTasks} tasks coming due this week</a><br /> 202 <a href="javascript:showReport('unassigned')">${numberUnassignedTasks} unassigned tasks</a><br /> 203 <a href="javascript:showReport('wcr')">${numberCompletedTasks} tasks completed</a><br /> 204 </div> 205 <div style="float: left;"> 206 <table cellspacing="5" cellpadding="0" style="font-size: small;"> 207 <tr> 208 <td></td> 209 <td><b>Start</b></td> 210 <td><b>Finish</b></td> 211 </tr> 212 <tr> 213 <td><b>Planned:</b></td> 214 <td>${startDate}</td> 215 <td>${finishDate}</td> 216 </tr> 217 <tr> 218 <td><b>Actual:</b></td> 219 <td>${startActualDate}</td> 220 <td>${finishActualDate}</td> 221 </tr> 222 </table> 223 </div> 224 </div> 201 225 <br /><p /> 202 <a href="javascript:showReport('ltr')">${numberLateTasks} late tasks</a><br />203 <a href="javascript:showReport('tcdr')">${numberComingDueTasks} tasks coming due this week</a><br />204 <a href="javascript:showReport('unassigned')">${numberUnassignedTasks} unassigned tasks</a><br />205 <a href="javascript:showReport('wcr')">${numberCompletedTasks} tasks completed</a><br />206 226 </div> 207 227 </div> … … 215 235 <tr class="channelHeader"> 216 236 <td class="channelHeader" width="1%"> 217 <img src=" /images/icons/channelbar-left_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" />237 <img src="${jspRootURL}/images/icons/channelbar-left_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" /> 218 238 </td> 219 239 <td nowrap="true" class="channelHeader">Phases and Milestones</td> 220 240 <td align="right" nowrap="true" class="channelHeader"> </td> 221 241 <td align="right" class="channelHeader" width="5%"> 222 <img src=" /images/icons/channelbar-right_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" />242 <img src="${jspRootURL}/images/icons/channelbar-right_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" /> 223 243 </td> 224 244 </tr> … … 229 249 <tr class="tableContent" align="left"> 230 250 <td class="tableContent" colspan="5"> 231 <table t:type="loop" source="${meetings}" value="meeting"> 251 <table cellspacing="0" cellpadding="0" width="100%"> 252 <tr class="tableHeader"> 253 <td class="tableHeader">Name</td> 254 <td class="tableHeader">End Date</td> 255 <td class="tableHeader">Status</td> 256 <td class="tableHeader">Progress</td> 257 </tr> 258 <t:loop source="phases" value="phase"> 259 <tr class="tableLine"> 260 <td colspan="4" class="tableLine"><img src="${jspRootURL}/images/spacers/trans.gif" width="1" height="2" border="0" /></td> 261 </tr> 262 <tr> 263 <td class="tableContent"><a href="${jspRootURL}${phase.url}">${phase.name}</a> </td> 264 <td class="tableContent"> ${phase.endDate}</td> 265 <td class="tableContent">${phase.status} </td> 266 <td class="tableContent"> 267 <table> 268 <tr> 269 <td> 270 <div style="width: 100px;"> 271 <table border="1" width="100" height="10" cellspacing="0" cellpadding="0"> 272 <tr> 273 <td bgcolor="#FFFFFF" title="${phase.percentComplete}%"> 274 <img src="${jspRootURL}/images/lgreen.gif" width="${phase.percentComplete}" height="10"/> 275 </td> 276 </tr> 277 </table> 278 </div> 279 </td> 280 <td style="font-size: small;"> 281 ${phase.percentComplete}% 282 </td> 283 </tr> 284 </table> 285 </td> 286 </tr> 287 </t:loop> 232 288 </table> 233 289 </td> … … 248 304 <tr class="channelHeader"> 249 305 <td class="channelHeader" width="1%"> 250 <img src=" /images/icons/channelbar-left_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" />306 <img src="${jspRootURL}/images/icons/channelbar-left_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" /> 251 307 </td> 252 308 <td nowrap="true" class="channelHeader">Subprojects</td> 253 309 <td align="right" nowrap="true" class="channelHeader"> </td> 254 310 <td align="right" class="channelHeader" width="5%"> 255 <img src=" /images/icons/channelbar-right_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" />311 <img src="${jspRootURL}/images/icons/channelbar-right_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" /> 256 312 </td> 257 313 </tr> … … 296 352 <tr class="channelHeader"> 297 353 <td class="channelHeader" width="1%"> 298 <img src=" /images/icons/channelbar-left_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" />354 <img src="${jspRootURL}/images/icons/channelbar-left_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" /> 299 355 </td> 300 356 <td nowrap="true" class="channelHeader">Teammates</td> 301 357 <td align="right" nowrap="true" class="channelHeader"> </td> 302 358 <td align="right" class="channelHeader" width="5%"> 303 <img src=" /images/icons/channelbar-right_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" />359 <img src="${jspRootURL}/images/icons/channelbar-right_end.gif" width="8" height="15" alt="" border="0" hspace="0" vspace="0" /> 304 360 </td> 305 361 </tr> … … 310 366 <tr class="tableContent" align="left"> 311 367 <td class="tableContent" colspan="5"> 312 <table t:type="loop" source="${meetings}" value="meeting"> 368 <table cellspacing="0" cellpadding="0" width="100%"> 369 <tr class="tableHeader"> 370 <td class="tableHeader"> 371 Name 372 </td> 373 <td colspan="2" class="tableHeader"> 374 <center> 375 Assignments 376 </center> 377 </td> 378 </tr> 379 <t:loop source="teammates" value="teammate"> 380 <tr class="tableLine"> 381 <td colspan="3" class="tableLine"><img src="/images/space
