{"id":93,"date":"2010-09-14T18:35:03","date_gmt":"2010-09-14T16:35:03","guid":{"rendered":"http:\/\/blogs.igalia.com\/jaragunde\/?p=93"},"modified":"2019-03-28T16:58:03","modified_gmt":"2019-03-28T15:58:03","slug":"phpreport-meets-navalplan","status":"publish","type":"post","link":"https:\/\/blogs.igalia.com\/jaragunde\/2010\/09\/phpreport-meets-navalplan\/","title":{"rendered":"PhpReport meets NavalPlan"},"content":{"rendered":"<p>I haven&#8217;t posted about that, but I&#8217;m also involved in the development of <a href=\"https:\/\/web.archive.org\/web\/20100906101028\/http:\/\/www.navalplan.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">NavalPlan<\/a>, a production management application with features to schedule projects and follow their advance graphically, controlling the costs and deviations. I have to say its dynamic Gantt diagrams are quite impressive for a web application \ud83d\ude09 .<\/p>\n<p>NavalPlan has a work report system to store the information about the hours devoted by the employees to every task scheduled, and also provides web services to import and export those data, so it felt natural to connect <a href=\"https:\/\/web.archive.org\/web\/20160314030441\/http:\/\/phpreport.igalia.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">PhpReport<\/a>, our time tracking tool, with NavalPlan, to share the dedication data.<\/p>\n<p>I&#8217;ve started writing a plugin for PhpReport to be executed right after creating a task, with the purpose of sending that task to NavalPlan using its web services. Right now it&#8217;s functional, but lacks extensive error checking. I still have to write similar plugins for the update and delete operations.<\/p>\n<p>Check out the code from the remote branch <code>navalplan-plugins<\/code> in PhpReport repository:<\/p>\n<pre>git clone https:\/\/github.com\/Igalia\/phpreport.git\ngit checkout origin\/navalplan-plugins\n<\/pre>\n<p>This is how it looks, so far \ud83d\ude09 :<\/p>\n<div id=\"attachment_99\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blogs.igalia.com\/jaragunde\/files\/2010\/09\/PhpReport-tasks.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-99\" class=\"size-medium wp-image-99\" src=\"http:\/\/blogs.igalia.com\/jaragunde\/files\/2010\/09\/PhpReport-tasks-300x226.png\" alt=\"\" width=\"300\" height=\"226\" srcset=\"https:\/\/blogs.igalia.com\/jaragunde\/files\/2010\/09\/PhpReport-tasks-300x226.png 300w, https:\/\/blogs.igalia.com\/jaragunde\/files\/2010\/09\/PhpReport-tasks-397x300.png 397w, https:\/\/blogs.igalia.com\/jaragunde\/files\/2010\/09\/PhpReport-tasks.png 697w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-99\" class=\"wp-caption-text\">Tasks in PhpReport<\/p><\/div>\n<div id=\"attachment_100\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blogs.igalia.com\/jaragunde\/files\/2010\/09\/NavalPlan-work-report.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-100\" class=\"size-medium wp-image-100\" src=\"http:\/\/blogs.igalia.com\/jaragunde\/files\/2010\/09\/NavalPlan-work-report-300x158.png\" alt=\"\" width=\"300\" height=\"158\" srcset=\"https:\/\/blogs.igalia.com\/jaragunde\/files\/2010\/09\/NavalPlan-work-report-300x158.png 300w, https:\/\/blogs.igalia.com\/jaragunde\/files\/2010\/09\/NavalPlan-work-report-500x264.png 500w, https:\/\/blogs.igalia.com\/jaragunde\/files\/2010\/09\/NavalPlan-work-report.png 902w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-100\" class=\"wp-caption-text\">The same tasks, imported into NavalPlan as a work report<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>I haven&#8217;t posted about that, but I&#8217;m also involved in the development of NavalPlan, a production management application with features to schedule projects and follow their advance graphically, controlling the costs and deviations. I have to say its dynamic Gantt &hellip; <a href=\"https:\/\/blogs.igalia.com\/jaragunde\/2010\/09\/phpreport-meets-navalplan\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":17,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,8,10],"tags":[],"class_list":["post-93","post","type-post","status-publish","format-standard","hentry","category-navalplan","category-phpreport","category-web"],"_links":{"self":[{"href":"https:\/\/blogs.igalia.com\/jaragunde\/wp-json\/wp\/v2\/posts\/93","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.igalia.com\/jaragunde\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.igalia.com\/jaragunde\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.igalia.com\/jaragunde\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.igalia.com\/jaragunde\/wp-json\/wp\/v2\/comments?post=93"}],"version-history":[{"count":1,"href":"https:\/\/blogs.igalia.com\/jaragunde\/wp-json\/wp\/v2\/posts\/93\/revisions"}],"predecessor-version":[{"id":875,"href":"https:\/\/blogs.igalia.com\/jaragunde\/wp-json\/wp\/v2\/posts\/93\/revisions\/875"}],"wp:attachment":[{"href":"https:\/\/blogs.igalia.com\/jaragunde\/wp-json\/wp\/v2\/media?parent=93"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.igalia.com\/jaragunde\/wp-json\/wp\/v2\/categories?post=93"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.igalia.com\/jaragunde\/wp-json\/wp\/v2\/tags?post=93"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}