Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Léo-Paul Géneau
erp5
Commits
844ef6b1
Commit
844ef6b1
authored
Dec 18, 2019
by
Roque
Committed by
Roque
Dec 24, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
erp5_officejs: improvements in gantt chart (for project management)
parent
368c2a37
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
762 additions
and
347 deletions
+762
-347
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_project_gantt_css.css
...tem/web_page_module/gadget_officejs_project_gantt_css.css
+33
-0
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_project_gantt_css.xml
...tem/web_page_module/gadget_officejs_project_gantt_css.xml
+338
-0
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_project_gantt_html.html
...m/web_page_module/gadget_officejs_project_gantt_html.html
+8
-1
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_project_gantt_html.xml
...em/web_page_module/gadget_officejs_project_gantt_html.xml
+163
-151
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_project_gantt_js.js
...eItem/web_page_module/gadget_officejs_project_gantt_js.js
+57
-44
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_project_gantt_js.xml
...Item/web_page_module/gadget_officejs_project_gantt_js.xml
+163
-151
No files found.
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_project_gantt_css.css
0 → 100644
View file @
844ef6b1
.ui-icon-spinner
{
opacity
:
1
;
}
.ui-icon-spinner
::before
{
content
:
"\f110"
;
animation
:
spin
0.5s
infinite
linear
;
}
.first-loader
{
position
:
fixed
;
left
:
50%
;
top
:
50%
;
transform
:
translate
(
-50%
,
-50%
);
font-size
:
300%
;
animation-name
:
fadein
;
animation-duration
:
0.2s
;
animation-delay
:
0.3s
;
animation-fill-mode
:
both
;
animation-timing-function
:
ease-in
;
}
.gadget-content
.field_container
>
div
>
div
>
div
.ui-field-contain
div
.spinner
{
width
:
0%
;
}
.gadget-content
.field_container
>
div
>
div
>
div
.ui-field-contain
div
.hidden
{
visibility
:
hidden
;
}
.gadget-gantt
.ui-hidden
{
visibility
:
hidden
;
}
\ No newline at end of file
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_project_gantt_css.xml
0 → 100644
View file @
844ef6b1
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Web Style"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_Access_contents_information_Permission
</string>
</key>
<value>
<tuple>
<string>
Anonymous
</string>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Associate
</string>
<string>
Auditor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Add_portal_content_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Change_local_roles_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Modify_portal_content_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_View_Permission
</string>
</key>
<value>
<tuple>
<string>
Anonymous
</string>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Associate
</string>
<string>
Auditor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
content_md5
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
content_type
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
default_reference
</string>
</key>
<value>
<string>
gadget_officejs_project_gantt.css
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
gadget_officejs_project_gantt_css
</string>
</value>
</item>
<item>
<key>
<string>
language
</string>
</key>
<value>
<string>
en
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Web Style
</string>
</value>
</item>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
OfficeJS Project Gantt CSS
</string>
</value>
</item>
<item>
<key>
<string>
version
</string>
</key>
<value>
<string>
001
</string>
</value>
</item>
<item>
<key>
<string>
workflow_history
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
document_publication_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
edit_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAQ=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
processing_status_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAU=
</string>
</persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.Workflow"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_log
</string>
</key>
<value>
<list>
<dictionary>
<item>
<key>
<string>
action
</string>
</key>
<value>
<string>
publish_alive
</string>
</value>
</item>
<item>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
</item>
<item>
<key>
<string>
comment
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
error_message
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
time
</string>
</key>
<value>
<object>
<klass>
<global
name=
"DateTime"
module=
"DateTime.DateTime"
/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>
1577107980.38
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
validation_state
</string>
</key>
<value>
<string>
published_alive
</string>
</value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"4"
aka=
"AAAAAAAAAAQ="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.Workflow"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_log
</string>
</key>
<value>
<list>
<dictionary>
<item>
<key>
<string>
action
</string>
</key>
<value>
<string>
edit
</string>
</value>
</item>
<item>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
</item>
<item>
<key>
<string>
comment
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
error_message
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
980.44201.5610.11349
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
<value>
<string>
current
</string>
</value>
</item>
<item>
<key>
<string>
time
</string>
</key>
<value>
<object>
<klass>
<global
name=
"DateTime"
module=
"DateTime.DateTime"
/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>
1577109800.86
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"5"
aka=
"AAAAAAAAAAU="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.Workflow"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_log
</string>
</key>
<value>
<list>
<dictionary>
<item>
<key>
<string>
action
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
</item>
<item>
<key>
<string>
comment
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
error_message
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_processing_state
</string>
</key>
<value>
<string>
empty
</string>
</value>
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
0.0.0.0
</string>
</value>
</item>
<item>
<key>
<string>
time
</string>
</key>
<value>
<object>
<klass>
<global
name=
"DateTime"
module=
"DateTime.DateTime"
/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>
1577107813.98
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_project_gantt_html.html
View file @
844ef6b1
...
...
@@ -14,10 +14,17 @@
<!-- custom script -->
<script
src=
"gadget_officejs_project_gantt.js"
type=
"text/javascript"
></script>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"gadget_officejs_project_gantt.css"
>
</head>
<body>
<div
class=
"gantt-content"
>
<div
class=
"gadget-gantt"
>
<div
id=
"gantt_spinner"
class=
"ui-icon-spinner ui-btn-icon-notext first-loader spinner"
></div>
<div
class=
"empty-gantt ui-hidden"
>
<span>
There are no tasks for this project
</span>
</div>
<div
class=
"gantt-content ui-hidden"
>
</div>
</div>
</body>
</html>
\ No newline at end of file
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_project_gantt_html.xml
View file @
844ef6b1
...
...
@@ -160,11 +160,13 @@
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.
patches.WorkflowTool
"
/>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.
Workflow
"
/>
</pickle>
<pickle>
<tuple>
<none/>
<dictionary>
<item>
<key>
<string>
_log
</string>
</key>
<value>
<list>
<dictionary>
<item>
...
...
@@ -208,16 +210,20 @@
</item>
</dictionary>
</list>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"4"
aka=
"AAAAAAAAAAQ="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.
patches.WorkflowTool
"
/>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.
Workflow
"
/>
</pickle>
<pickle>
<tuple>
<none/>
<dictionary>
<item>
<key>
<string>
_log
</string>
</key>
<value>
<list>
<dictionary>
<item>
...
...
@@ -226,7 +232,7 @@
</item>
<item>
<key>
<string>
actor
</string>
</key>
<value>
<string>
superseb
</string>
</value>
<value>
<string>
zope
</string>
</value>
</item>
<item>
<key>
<string>
comment
</string>
</key>
...
...
@@ -240,7 +246,7 @@
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
963.40716.45672.25429
</string>
</value>
<value>
<string>
980.38723.24484.50073
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -258,8 +264,8 @@
</tuple>
<state>
<tuple>
<float>
1511352530.83
</float>
<string>
GMT+1
</string>
<float>
1577107598.2
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
...
...
@@ -267,16 +273,20 @@
</item>
</dictionary>
</list>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"5"
aka=
"AAAAAAAAAAU="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.
patches.WorkflowTool
"
/>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.
Workflow
"
/>
</pickle>
<pickle>
<tuple>
<none/>
<dictionary>
<item>
<key>
<string>
_log
</string>
</key>
<value>
<list>
<dictionary>
<item>
...
...
@@ -324,7 +334,9 @@
</item>
</dictionary>
</list>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_project_gantt_js.js
View file @
844ef6b1
/*global window, rJS, RSVP, console */
/*global window, rJS, RSVP,
document,
console */
/*jslint nomen: true, indent: 2 */
(
function
(
window
,
rJS
,
RSVP
)
{
(
function
(
window
,
rJS
,
RSVP
,
document
)
{
"
use strict
"
;
/////////////////////////////////////////////////////////////////
...
...
@@ -47,6 +47,7 @@
})
.
declareJob
(
"
renderGantt
"
,
function
()
{
var
gadget
=
this
,
empty_gantt_element
=
gadget
.
element
.
querySelector
(
"
.empty-gantt
"
),
option_dict
=
gadget
.
property_dict
.
option_dict
;
return
gadget
.
declareGadget
(
"
unsafe/gadget_officejs_widget_gantt_dhtmlx.html
"
,
...
...
@@ -99,22 +100,31 @@
tree_list
=
[],
data_list
=
[],
sale_order_uid
,
delivery_data
,
tree_data
;
delivery_data
,
tree_data
,
start_date
,
gantt_spinner
=
document
.
getElementById
(
"
gantt_spinner
"
),
now
=
new
Date
();
task_list
=
task_list
.
data
.
rows
;
console
.
log
(
"
task_list
"
,
task_list
);
console
.
log
(
"
task_list:
"
,
task_list
);
if
(
task_list
.
length
)
{
gadget
.
element
.
querySelector
(
"
.gantt-content
"
).
classList
.
remove
(
"
ui-hidden
"
);
for
(
i
=
0
;
i
<
task_list
.
length
;
i
=
i
+
1
)
{
task
=
task_list
[
i
].
value
;
if
(
task
.
source_project_uid
!==
undefined
)
{
if
(
source_project_uid_list
.
indexOf
(
task
.
source_project_uid
)
===
-
1
)
{
source_project_uid_list
.
push
(
task
.
source_project_uid
);
}
source_project_data
=
source_project_dict
[
task
.
source_project_uid
]
||
{
'
start_date
'
:
new
Date
(
task
.
start_date
),
if
(
!
task
.
start_date
)
{
start_date
=
new
Date
();
}
else
{
start_date
=
task
.
start_date
;
}
source_project_data
=
source_project_dict
[
task
.
source_project_uid
]
||
{
'
start_date
'
:
new
Date
(
start_date
),
'
stop_date
'
:
new
Date
(
task
.
stop_date
),
'
title
'
:
task
.
source_project_title
,
'
type
'
:
'
project
'
,
'
id
'
:
task
.
source_project_uid
};
source_project_data
.
start_date
=
new
Date
(
Math
.
min
.
apply
(
null
,
[
source_project_data
.
start_date
,
new
Date
(
task
.
start_date
)]));
null
,
[
source_project_data
.
start_date
,
new
Date
(
start_date
)]));
source_project_data
.
stop_date
=
new
Date
(
Math
.
max
.
apply
(
null
,
[
source_project_data
.
stop_date
,
new
Date
(
task
.
stop_date
)]));
source_project_dict
[
task
.
source_project_uid
]
=
source_project_data
;
...
...
@@ -123,7 +133,7 @@
// We assume that by the sort on order_reference that the first line is a level 1 line
sale_order_uid
=
task
.
parent_uid
;
}
if
(
task
.
start_date
!==
undefined
&&
task
.
stop_date
!==
undefined
)
{
if
(
task
.
start_date
&&
task
.
stop_date
)
{
delivery_data
=
{
'
title
'
:
task
.
title
,
'
id
'
:
task
.
uid
,
'
tree_id
'
:
task
.
uid
,
...
...
@@ -142,11 +152,14 @@
}
gantt_data
.
data_list
=
data_list
;
console
.
log
(
"
gantt_data
"
,
gantt_data
);
gantt_spinner
.
classList
.
add
(
"
hidden
"
);
return
gadget
.
property_dict
.
gantt_widget
.
render
(
gantt_data
);
}
else
{
gantt_spinner
.
classList
.
add
(
"
hidden
"
);
empty_gantt_element
.
classList
.
remove
(
"
ui-hidden
"
);
}
});
});
}(
window
,
rJS
,
RSVP
));
\ No newline at end of file
}(
window
,
rJS
,
RSVP
,
document
));
\ No newline at end of file
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_project_gantt_js.xml
View file @
844ef6b1
...
...
@@ -160,11 +160,13 @@
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.
patches.WorkflowTool
"
/>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.
Workflow
"
/>
</pickle>
<pickle>
<tuple>
<none/>
<dictionary>
<item>
<key>
<string>
_log
</string>
</key>
<value>
<list>
<dictionary>
<item>
...
...
@@ -208,16 +210,20 @@
</item>
</dictionary>
</list>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"4"
aka=
"AAAAAAAAAAQ="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.
patches.WorkflowTool
"
/>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.
Workflow
"
/>
</pickle>
<pickle>
<tuple>
<none/>
<dictionary>
<item>
<key>
<string>
_log
</string>
</key>
<value>
<list>
<dictionary>
<item>
...
...
@@ -226,7 +232,7 @@
</item>
<item>
<key>
<string>
actor
</string>
</key>
<value>
<string>
superseb
</string>
</value>
<value>
<string>
zope
</string>
</value>
</item>
<item>
<key>
<string>
comment
</string>
</key>
...
...
@@ -240,7 +246,7 @@
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
963.40841.16928.9318
</string>
</value>
<value>
<string>
980.38728.1170.38161
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -258,8 +264,8 @@
</tuple>
<state>
<tuple>
<float>
1511357651.94
</float>
<string>
GMT+1
</string>
<float>
1576781323.89
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
...
...
@@ -267,16 +273,20 @@
</item>
</dictionary>
</list>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"5"
aka=
"AAAAAAAAAAU="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.
patches.WorkflowTool
"
/>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.
Workflow
"
/>
</pickle>
<pickle>
<tuple>
<none/>
<dictionary>
<item>
<key>
<string>
_log
</string>
</key>
<value>
<list>
<dictionary>
<item>
...
...
@@ -324,7 +334,9 @@
</item>
</dictionary>
</list>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment