| Name | GanttProject plugin |
|---|---|
| Version | 1.0.0 |
| Product Versions | Confluence 2.1.2+ |
| Author(s) | Dmitry Barashev |
| Homepage | ganttproject.org |
| Price | Free |
| License | BSD |
| JavaDocs | |
| IssueTracking | |
| Download JAR | plugins-ganttconfluence.jar ganttproject.jar mpxj.jar |
| Download Source | ganttconfluence.zip |
Description/Features
GanttProject plugin enables generating and rendering Gantt chart from MSProject file attached to a wiki page.
It is possible to define chart size and start/end dates of a rendered time frame using web interface and configure Gantt chart details using wiki macro parameters
Usage
Installation instructions
- Plugin needs libraries MPXJ (plus all libraries required for MPXJ) and GanttProject in the classpath. Download them from attachment page and drop to $CONFLUENCE_HOME/confluence/WEB-INF/lib
- Download and install plugin jar using Plugin Manager web interface.
Usage instructions
- Attach MS Project file to a wiki page (.mpp, .mpx and .mspdi formats produced by MS Project 8+ are supported).
- Write the following macro code in the page with attached MS Project file:
{msproject2ganttchart:ms-project-file=your_attached_file.mpp} - Define start and end dates of the displayed timeframe in the input fields "chart begin date" and "chart end date" using ISO date format (YYYY-MM-DD).
- Select width of the displayed image using combo box "image size"
Zoom factor of the displayed image depends on the start/end dates and image width. Plugin tries to make chart details as large as possible and fit the selected time frame into the selected image size
Configuration options
It is possible to define text labels which are rendered near task bars using macro parameters. There are four parameters: taskLabelRight, taskLabelLeft, taskLabelUp and taskLabelDown. If some parameter is specified then a text label is rendered in the corresponding position. The following values are accepted:
| value | meaning |
|---|---|
| name | Task name |
| taskDates | Task start and end dates |
| length | Task duration |
| advancement | Task completion percentage |
| predecessors | Predecessor tasks |
| id | Task identifier |
| resources | Assigned human resources |
| coordinator | Task coordinator |
Examples
The following snippet renders file HouseBuildingSample.xml (in MSPDI format) with task name above task bar and task progress on the right side. You may see the result in screenshots section
{msproject2ganttchart:ms-project-file=HouseBuildingSample.xml|taskLabelRight=advancement|taskLabelUp=name}
Source code and compilation
Sources are packaged as Eclipse plugins, without MPXJ libraries. Download them, extract, import to Eclipse workspace, put MPXJ libraries in org.ganttproject.impex.msproject/lib/mpxj directory and add necessary libraries from Confluence installation
Plugin for Confluence may be built using Confluence plugin development tools (build.xml in the Confluence installation)
Licensing
MPXJ library is licensed under LGPL. Official release of GanttProject code is under GPL, but sources used here are going to be released under some other license (LGPL or Apache).

Comments (20)
Aug 04, 2006
Ruben Miranda says:
Very useful plugin...thanks for providing this to the community. There does app...Very useful plugin...thanks for providing this to the community.
There does appear to be some discrepancies in chart formatting between GanttProject and this plugin, at least when exporting to .mpx format. Dependencies seem to overlap each other on my project. I'll have to mess with it some and see if it's anything on my end.
Some minor requests, actually more of a few default preferences I'd like to change:
Sep 19, 2006
Rajendra says:
Hi Dmitry, We are trying to use this macro. Following is call {msproject2ga...Hi Dmitry,
We are trying to use this macro. Following is call
{msproject2ganttchart:ms-project-file=project_plan.mpp}But it throws exception:
2006-09-19 12:15:37,937 ERROR [renderer.v2.components.MacroRendererComponent] processMacro Unexpected error formatting macro: msproject2ganttchart
java.lang.NoSuchMethodError: org.apache.poi.hpsf.Property.getID()I
at com.tapsterrock.mpp.SummaryInformation.getPropertyMap(SummaryInformation.java:102)
at com.tapsterrock.mpp.SummaryInformation.<init>(SummaryInformation.java:58)
at com.tapsterrock.mpp.MPP9File.processPropertyData(MPP9File.java:164)
at com.tapsterrock.mpp.MPP9File.process(MPP9File.java:115)
at com.tapsterrock.mpp.MPPFile.read(MPPFile.java:139)
Any idea why ?
We have following jars in lib directory :
poi-3.0-alpha1-20050704.jar
poi-scratchpad-3.0-alpha1-20050704.jar
Is there something we are missing ?
thanks,
Rajendra
Jan 31, 2007
Fabio Paiano says:
I do have the same problem. Has anyone been able to solve this already? Here is...I do have the same problem. Has anyone been able to solve this already?
Here is the page generated:
Here are my logs:
2007-01-31 20:33:24,718 ERROR [renderer.v2.components.MacroRendererComponent] processMacro Unexpected error formatting macro: msproject2ganttchart
java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
at org.ganttproject.impex.msproject.GanttMSPDIOpen.load(GanttMSPDIOpen.java:52)
at org.ganttproject.impex.msproject.ImporterCore.importDocument(ImporterCore.java:25)
at org.bardsoftware.ganttconfluence.MSProjectToThumbnailConverter.generateImage(MSProjectToThumbnailConverter.java:39)
at org.bardsoftware.ganttconfluence.GanttMacro.execute(GanttMacro.java:132)
at com.atlassian.renderer.v2.macro.ResourceAwareMacroDecorator.execute(ResourceAwareMacroDecorator.java:45)
at com.atlassian.renderer.v2.components.MacroRendererComponent.processMacro(MacroRendererComponent.java:336)
at com.atlassian.renderer.v2.components.MacroRendererComponent.makeMacro(MacroRendererComponent.java:237)
at com.atlassian.renderer.v2.components.MacroRendererComponent.makeMacro(MacroRendererComponent.java:130)
at com.atlassian.renderer.v2.components.MacroRendererComponent.handlePotentialMacro(MacroRendererComponent.java:115)
at com.atlassian.renderer.v2.components.MacroRendererComponent.render(MacroRendererComponent.java:77)
at com.atlassian.renderer.v2.V2Renderer.render(V2Renderer.java:54)
at com.atlassian.renderer.v2.V2RendererFacade.convertWikiToXHtml(V2RendererFacade.java:57)
at sun.reflect.GeneratedMethodAccessor195.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.springframework.aop.framework.AopProxyUtils.invokeJoinpointUsingReflection(AopProxyUtils.java:61)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:149)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:116)
at com.atlassian.confluence.util.profiling.SpringProfilingInterceptor.invoke(SpringProfilingInterceptor.java:18)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:138)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:56)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:138)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:152)
at $Proxy24.convertWikiToXHtml(Unknown Source)
at com.atlassian.confluence.renderer.DefaultWikiStyleRenderer.convertWikiToXHtml(DefaultWikiStyleRenderer.java:23)
at com.atlassian.confluence.pages.actions.ViewPageAction.execute(ViewPageAction.java:118)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:168)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor.intercept(DefaultWorkflowInterceptor.java:55)
at com.atlassian.confluence.core.ConfluenceWorkflowInterceptor.intercept(ConfluenceWorkflowInterceptor.java:39)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
at com.atlassian.confluence.core.ConfluenceValidationInterceptor.intercept(ConfluenceValidationInterceptor.java:16)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.atlassian.confluence.security.actions.PermissionCheckInterceptor.intercept(PermissionCheckInterceptor.java:39)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.atlassian.confluence.pages.actions.PageAwareInterceptor.intercept(PageAwareInterceptor.java:114)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.atlassian.confluence.spaces.actions.SpaceAwareInterceptor.intercept(SpaceAwareInterceptor.java:82)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.atlassian.confluence.core.actions.LastModifiedInterceptor.intercept(LastModifiedInterceptor.java:39)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.atlassian.confluence.core.ConfluenceAutowireInterceptor.intercept(ConfluenceAutowireInterceptor.java:25)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.atlassian.confluence.util.XWorkTransactionInterceptor.intercept(XWorkTransactionInterceptor.java:133)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:115)
at com.opensymphony.webwork.dispatcher.ServletDispatcher.serviceAction(ServletDispatcher.java:229)
at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:199)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:474)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:409)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
at com.atlassian.confluence.servlet.simpledisplay.SimpleDisplayServlet.doGet(SimpleDisplayServlet.java:51)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:117)
at com.atlassian.confluence.util.profiling.ProfilingPageFilter.parsePage(ProfilingPageFilter.java:143)
at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at com.atlassian.confluence.util.ServletContextThreadLocalFilter.doFilter(ServletContextThreadLocalFilter.java:30)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at com.atlassian.confluence.util.UserThreadLocalFilter.doFilter(UserThreadLocalFilter.java:45)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:182)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at com.atlassian.seraph.filter.LoginFilter.doFilter(LoginFilter.java:181)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at com.atlassian.johnson.filters.JohnsonFilter.doFilter(JohnsonFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.springframework.orm.hibernate.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:170)
at bucket.custom.FlushingSpringSessionInViewFilter.doFilterInternal(FlushingSpringSessionInViewFilter.java:31)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:73)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at com.atlassian.util.profiling.filters.ProfilingFilter.doFilter(ProfilingFilter.java:122)
at com.atlassian.confluence.util.error.ProfilingAndErrorFilter.doFilter(ProfilingAndErrorFilter.java:27)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at com.atlassian.core.filters.gzip.GzipFilter.doFilter(GzipFilter.java:61)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at com.atlassian.core.filters.AbstractEncodingFilter.doFilter(AbstractEncodingFilter.java:37)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:300)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:374)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:743)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:675)
at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:866)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)
Sep 25, 2007
Chris McIntyre says:
I had the same problem with the .mpp and .xml formatted exports. When I exported...I had the same problem with the .mpp and .xml formatted exports. When I exported as .mpx it worked like a charm. Hope this helps someone!
Oct 05, 2006
Thomas Burkhart says:
Hi Dmitry, I installed the plugin and it displays the chart, but everytime I pr...Hi Dmitry,
I installed the plugin and it displays the chart, but everytime I press Refresh I get the following error message:
HTTP Status 404 - /display/WDC/MS+Project+Demo
type Status report
message /display/WDC/MS+Project+Demo
description The requested resource (/display/WDC/MS+Project+Demo) is not available.
Apache Tomcat/5.5.17
Any idea?
Cheers
Thomas
Oct 06, 2006
Michael Redinger says:
Same problem here: The plugin does not seem to use the base server URL co...Same problem here:
The plugin does not seem to use the base server URL correctly but uses a hardcoded URL. So if your URL base directory is not "/" but eg. "/confluence/", you get an error ...
Jan 22, 2007
Ziad Afra says:
any update to this plugin yet? If i try and edit the time frames it crashes H...any update to this plugin yet? If i try and edit the time frames it crashes
HTTP Status 404 - /display/PROJ/ELT+Data+Requirements
type Status report
message /display/PROJ/ELT+Data+Requirements
description The requested resource (/display/PROJ/ELT+Data+Requirements) is not available.
Apache Tomcat/5.5.9
Mar 16, 2007
tahiry andriamananjara says:
I think that it would be useful if the plugins pages had a dedicated section tha...I think that it would be useful if the plugins pages had a dedicated section that showed the requirements and other such useful information.
In this case, it looks like this is installed on the server but required additional libraries. I can't figure out what I need to have this on my site. I really would like to set this up as it would trmendously help our project so can anyone describe further what I need *before* I install this?
Thanks,
Apr 01, 2007
konglukl says:
Hi Dmitry, We are trying to use this macro. Following is call &nbs...Hi Dmitry,
We are trying to use this macro. Following is call
{msproject2ganttchart:ms-project-file=project_plan.mpp}But it throws error:
input=/opt/confluence-2.2.9-std/confluence/temp/ganttconfluence4654testplan.mpp output=/opt/confluence-2.2.9-std/confluence/temp/ganttconfluence4653.pngException: null
thanks!
carter
May 25, 2007
David Laks says:
Hi Cater, I'm not Dmitry but I know what's happen. If your ms project isn't in...Hi Cater,
I'm not Dmitry but I know what's happen.
If your ms project isn't in English language, or better, if your default calendar name isn't "Standard", the nullPointerException will occurs in the line 235 of the abstract class org.ganttproject.impex.msproject.GanttMPXJOpen. You can see in the line 192 the method getBaseCalendar("Standard") return null, this is the access point to the error.
Att,
David Laks
Jul 26, 2007
SB says:
Thanks Dmitry: very nice plugin! However the "name" attribute is not showing up ...Thanks Dmitry: very nice plugin!
However the "name" attribute is not showing up for milestone type tasks. Any Suggestions?
Aug 15, 2007
Felix Seyfarth says:
Hi - after installing all libraries in Web-Inf/lib folder and manually installin...Hi - after installing all libraries in Web-Inf/lib folder and manually installing Plugin, I see the following error in my Administration/Plugin list:
msproject2ganttchart
Creates a gantt chart from MS Project file.
Error: There was a problem loading the descriptor for module 'macro' in plugin 'Gantt chart macro'. Error retrieving dependency of class: org.bardsoftware.ganttconfluence.GanttMacro. Missing class: org/w3c/util/InvalidDateException
using confluence 2.5.4 and german language pack...
Aug 21, 2007
Richard Clark says:
I had the same problem, the cause was I'd missed out the ganttproject.jar from t...I had the same problem, the cause was I'd missed out the ganttproject.jar from the WEB-INF/lib folder. After uploading this the problem was fixed.
Sep 01, 2007
Felix Seyfarth says:
thanks for the tip, Richard, but the .jar is there... and no change.thanks for the tip, Richard, but the .jar is there... and no change.
Aug 21, 2007
Richard Clark says:
Trying to use MS Project files saved from MS Project 2007 I get the following er...Trying to use MS Project files saved from MS Project 2007 I get the following error:
If I re-save the Project file in Project 2000-2003 format I get the following error instead:
Anyone else had this or have a workaround?
Oct 12, 2007
Chainsaw says:
I've added mxpj.tar and ganttproject.tar into the WEB-INF/lib directories as per...I've added mxpj.tar and ganttproject.tar into the WEB-INF/lib directories as per the instructions and then uploaded the plugins-ganttconfluence.jar using the plugins manager. I too get the message:
Any one have a solution?
Oct 23, 2007
Joe Van Quakebeke says:
I got past this error by doing a jar -xvf ganttproject.jar and copying the o...I got past this error by doing a jar -xvf ganttproject.jar and copying the org/w3c directory and the ganntproject directory to my WEB-INF/classes/org directory. I don't know if this all you have to do but it allowed the plugin to load. I have since found out that I had to do a jar -xvf for all the jars required and copy the files to WEB-INF?classes. Once I did that, the plugin works great.
Apr 04, 2008
Tom Potter says:
Maybe compatibility issue with mpxj.jar I have had no success getting this to wo...Maybe compatibility issue with mpxj.jar I have had no success getting this to work.
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q270139
The following table summarizes the versions of Microsoft Project that can create or read the MPX 4.0 file format: Create Read
----------------
Microsoft Project 4.0 Yes Yes
Microsoft Project 4.1 Yes Yes
Microsoft Project 98 Yes Yes
Microsoft Project 2000 No Yes
Jun 30
Buelent Caliskan says:
I get this error message: input=/tmp/confluence/temp/ganttconfluence25862...I get this error message:
input=/tmp/confluence/temp/ganttconfluence25862project-test-file.mpp output=/tmp/confluence/temp/ganttconfluence25861.pngException: Unknown sub project type 16
Aug 25
Steven Herod says:
So, is this thing dead? Seems to suffer from some major issues with rendering o...So, is this thing dead? Seems to suffer from some major issues with rendering our mpp files (Cropping etc) - and there have been no updates.