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
alecs_myu
erp5
Commits
0f1699fd
Commit
0f1699fd
authored
Apr 06, 2017
by
Sebastien Robin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
erp5_test_result: add a javascript graph on performance tests
parent
b17b78cd
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
806 additions
and
19 deletions
+806
-19
bt5/erp5_test_result/ActionTemplateItem/portal_types/Test%20Result/view_performance_graph.xml
...tem/portal_types/Test%20Result/view_performance_graph.xml
+100
-0
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResultModule_getTestPerfResultList.py
...rp5_test_result/TestResultModule_getTestPerfResultList.py
+28
-18
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResultModule_getTestPerfResultList.xml
...p5_test_result/TestResultModule_getTestPerfResultList.xml
+1
-1
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_getPerformanceGraphGadgetConfigurationDict.py
.../TestResult_getPerformanceGraphGadgetConfigurationDict.py
+27
-0
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_getPerformanceGraphGadgetConfigurationDict.xml
...TestResult_getPerformanceGraphGadgetConfigurationDict.xml
+62
-0
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_viewPerformanceGraph.xml
...kins/erp5_test_result/TestResult_viewPerformanceGraph.xml
+152
-0
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_viewPerformanceGraph/performance_graph_gadget.xml
...tResult_viewPerformanceGraph/performance_graph_gadget.xml
+145
-0
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/test_result_js.xml
...lateItem/portal_skins/erp5_test_result/test_result_js.xml
+26
-0
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/test_result_js/gadget_erp5_test_result_performance_graph.html.html
...lt_js/gadget_erp5_test_result_performance_graph.html.html
+36
-0
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/test_result_js/gadget_erp5_test_result_performance_graph.html.xml
...ult_js/gadget_erp5_test_result_performance_graph.html.xml
+28
-0
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/test_result_js/gadget_erp5_test_result_performance_graph.js.js
...result_js/gadget_erp5_test_result_performance_graph.js.js
+168
-0
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/test_result_js/gadget_erp5_test_result_performance_graph.js.xml
...esult_js/gadget_erp5_test_result_performance_graph.js.xml
+32
-0
bt5/erp5_test_result/bt/template_action_path_list
bt5/erp5_test_result/bt/template_action_path_list
+1
-0
No files found.
bt5/erp5_test_result/ActionTemplateItem/portal_types/Test%20Result/view_performance_graph.xml
0 → 100644
View file @
0f1699fd
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ActionInformation"
module=
"Products.CMFCore.ActionInformation"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
action
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
categories
</string>
</key>
<value>
<tuple>
<string>
action_type/object_view
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
category
</string>
</key>
<value>
<string>
object_view
</string>
</value>
</item>
<item>
<key>
<string>
condition
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
view_performance_graph
</string>
</value>
</item>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
View
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Action Information
</string>
</value>
</item>
<item>
<key>
<string>
priority
</string>
</key>
<value>
<float>
3.0
</float>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Performance Graph
</string>
</value>
</item>
<item>
<key>
<string>
visible
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Expression"
module=
"Products.CMFCore.Expression"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
text
</string>
</key>
<value>
<string>
string:${object_url}/TestResult_viewPerformanceGraph
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"Expression"
module=
"Products.CMFCore.Expression"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
text
</string>
</key>
<value>
<string>
python: \'PERF\' in (here.getTitle() or \'\')
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResultModule_getTestPerfResultList.py
View file @
0f1699fd
from
Products.ERP5Type.Document
import
newTempBase
from
Products.ZSQLCatalog.SQLCatalog
import
ComplexQuery
,
SimpleQuery
#
from Products.ERP5Type.Document import newTempBase
#
from Products.ZSQLCatalog.SQLCatalog import ComplexQuery, SimpleQuery
from
DateTime
import
DateTime
"""
rev_query_list = []
if isinstance(kw.get('from_date'), DateTime):
rev_query_list.append(SimpleQuery(creation_date=kw['from_date'],
...
...
@@ -9,23 +11,25 @@ if isinstance(kw.get('from_date'), DateTime):
if isinstance(kw.get('at_date'), DateTime):
rev_query_list.append(SimpleQuery(creation_date=kw['at_date'],
comparison_operator='<='))
"""
test_result_list
=
[]
revision
=
None
new_test_result_list
=
[]
context
.
log
(
"rev_query_list"
,
rev_query_list
)
if
rev_query_list
:
result
=
context
.
searchFolder
(
title
=
'PERF-ERP5-MASTER'
,
simulation_state
=
'stopped'
,
revision
=
ComplexQuery
(
logical_operator
=
'AND'
,
*
rev_query_list
),
sort_on
=
((
'delivery.start_date'
,
'ASC'
),),
src__
=
1
)
context
.
log
(
"result"
,
result
)
for
test
in
context
.
searchFolder
(
title
=
'PERF-ERP5-MASTER'
,
simulation_state
=
'stopped'
,
revision
=
ComplexQuery
(
logical_operator
=
'AND'
,
*
rev_query_list
),
portal
=
context
.
getPortalObject
()
if
query
:
for
test
in
portal
.
test_result_module
.
searchFolder
(
title
=
'PERF-ERP5-MASTER'
,
simulation_state
=
'stopped'
,
full_text
=
query
,
sort_on
=
((
'delivery.start_date'
,
'ASC'
),)):
test
=
test
.
getObject
()
if
revision
!=
test
.
getReference
():
revision
=
test
.
getReference
()
test_result
=
{
'rev'
:
str
(
revision
)}
revision_list
=
[]
for
revision_part
in
revision
.
split
(
','
):
repository
,
commit_hash
=
revision_part
.
split
(
'-'
)
revision_list
.
append
(
'%s-%s'
%
(
repository
,
commit_hash
[
0
:
8
]))
revision
=
","
.
join
(
revision_list
)
test_result
=
{
'revision'
:
str
(
revision
)}
test_result_list
.
append
(
test_result
)
for
prop
in
'all_tests'
,
'failures'
,
'errors'
:
test_result
[
prop
]
=
test_result
.
get
(
prop
,
0
)
+
test
.
getProperty
(
prop
,
0
)
...
...
@@ -35,17 +39,23 @@ if rev_query_list:
for
k
,
v
in
line
.
items
():
timing_dict
.
setdefault
(
k
,
[]).
append
(
v
)
normalize
=
kw
.
get
(
'normalize'
)
normalize
=
kw
.
get
(
'normalize'
,
1
)
base_result
=
{}
for
test_result
in
test_result_list
:
if
test_result
[
'errors'
]
<
test_result
[
'all_tests'
]:
new_test_result
=
newTempBase
(
context
,
''
)
new_test_result
=
{}
for
k
,
v
in
test_result
.
pop
(
'timing_dict'
).
items
():
if
v
:
v
=
sum
(
v
)
/
len
(
v
)
test_result
[
k
]
=
v
/
base_result
.
setdefault
(
k
,
normalize
and
v
or
1
)
new_test_result
.
edit
(
**
test_result
)
# too much value is not productive
if
k
in
(
'all_tests'
,
'errors'
,
'failures'
)
or
k
.
find
(
'_'
)
>
0
and
k
.
split
(
'_'
)[
1
]
in
(
'200'
,
'300'
,
'400'
,
'500'
,
'600'
,
'700'
,
'800'
,
'900'
):
continue
new_test_result
[
k
]
=
v
/
base_result
.
setdefault
(
k
,
normalize
and
v
or
1
)
new_test_result
[
'revision'
]
=
test_result
[
'revision'
]
new_test_result
.
update
(
**
new_test_result
)
new_test_result
[
'_links'
]
=
{
'self'
:
{}}
# required by jio.allDocs API
new_test_result_list
.
append
(
new_test_result
)
return
new_test_result_list
import
json
context
.
log
(
"new_test_result_list"
,
new_test_result_list
)
return
json
.
dumps
({
'_embedded'
:
{
'contents'
:
new_test_result_list
}})
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResultModule_getTestPerfResultList.xml
View file @
0f1699fd
...
...
@@ -50,7 +50,7 @@
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
*args
, **kw
</string>
</value>
<value>
<string>
test_title=None, from_date=None, to_date=None, query=None, title=None
, **kw
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
...
...
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_getPerformanceGraphGadgetConfigurationDict.py
0 → 100644
View file @
0f1699fd
from
base64
import
urlsafe_b64encode
import
json
list_method_template
=
""
# list_method_template is a hack until better API is found.
# it allows to make jio.all_docs calling a python script
# http://10.0.80.187:2200/erp5/web_site_module/renderjs_runner/hateoas/ERP5Document_getHateoas
portal
=
context
.
getPortalObject
()
custom_search_template_no_editable
=
"%(root_url)s/%(script_id)s?mode=search"
+
\
"&relative_url=%(relative_url)s"
\
"&list_method=%(list_method)s"
\
"&default_param_json=%(default_param_json)s"
\
"&test_title=%(test_title)s"
\
"{&query,select_list*,limit*,sort_on*,local_roles*}"
list_method_template
=
custom_search_template_no_editable
%
{
"root_url"
:
portal
.
absolute_url
(),
"script_id"
:
"TestResultModule_getTestPerfResultList"
,
"relative_url"
:
context
.
getRelativeUrl
().
replace
(
"/"
,
"%2F"
),
"list_method"
:
"TestResultModule_getTestPerfResultList"
,
"default_param_json"
:
urlsafe_b64encode
(
json
.
dumps
({
'test_title'
:
context
.
getTitle
()})),
"test_title"
:
context
.
getTitle
()
}
return
{
'list_method_template'
:
list_method_template
}
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_getPerformanceGraphGadgetConfigurationDict.xml
0 → 100644
View file @
0f1699fd
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"PythonScript"
module=
"Products.PythonScripts.PythonScript"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
Script_magic
</string>
</key>
<value>
<int>
3
</int>
</value>
</item>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_container
</string>
</key>
<value>
<string>
container
</string>
</value>
</item>
<item>
<key>
<string>
name_context
</string>
</key>
<value>
<string>
context
</string>
</value>
</item>
<item>
<key>
<string>
name_m_self
</string>
</key>
<value>
<string>
script
</string>
</value>
</item>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
TestResult_getPerformanceGraphGadgetConfigurationDict
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_viewPerformanceGraph.xml
0 → 100644
View file @
0f1699fd
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ERP5 Form"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
_objects
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
action
</string>
</key>
<value>
<string>
Base_edit
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
edit_order
</string>
</key>
<value>
<list/>
</value>
</item>
<item>
<key>
<string>
encoding
</string>
</key>
<value>
<string>
UTF-8
</string>
</value>
</item>
<item>
<key>
<string>
enctype
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
group_list
</string>
</key>
<value>
<list>
<string>
left
</string>
<string>
right
</string>
<string>
center
</string>
<string>
bottom
</string>
<string>
hidden
</string>
</list>
</value>
</item>
<item>
<key>
<string>
groups
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
bottom
</string>
</key>
<value>
<list>
<string>
performance_graph_gadget
</string>
</list>
</value>
</item>
<item>
<key>
<string>
center
</string>
</key>
<value>
<list/>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<list/>
</value>
</item>
<item>
<key>
<string>
left
</string>
</key>
<value>
<list/>
</value>
</item>
<item>
<key>
<string>
right
</string>
</key>
<value>
<list/>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
TestResult_viewPerformanceGraph
</string>
</value>
</item>
<item>
<key>
<string>
method
</string>
</key>
<value>
<string>
POST
</string>
</value>
</item>
<item>
<key>
<string>
name
</string>
</key>
<value>
<string>
TestResult_view
</string>
</value>
</item>
<item>
<key>
<string>
pt
</string>
</key>
<value>
<string>
form_view
</string>
</value>
</item>
<item>
<key>
<string>
row_length
</string>
</key>
<value>
<int>
4
</int>
</value>
</item>
<item>
<key>
<string>
stored_encoding
</string>
</key>
<value>
<string>
UTF-8
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Performance Graph
</string>
</value>
</item>
<item>
<key>
<string>
unicode_mode
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
update_action
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
update_action_title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_viewPerformanceGraph/performance_graph_gadget.xml
0 → 100644
View file @
0f1699fd
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list>
<string>
default
</string>
<string>
editable
</string>
<string>
gadget_url
</string>
<string>
title
</string>
</list>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
performance_graph_gadget
</string>
</value>
</item>
<item>
<key>
<string>
message_values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
external_validator_failed
</string>
</key>
<value>
<string>
The input failed the external validator.
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
default
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
gadget_url
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
my_gadget_field
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
gadget_url
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Performance Graph
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
python: here.TestResult_getPerformanceGraphGadgetConfigurationDict()
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
python:field.restrictedTraverse(\'test_result_js/gadget_erp5_test_result_performance_graph.html\').absolute_url()
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/test_result_js.xml
0 → 100644
View file @
0f1699fd
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Folder"
module=
"OFS.Folder"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_objects
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
test_result_js
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/test_result_js/gadget_erp5_test_result_performance_graph.html.html
0 → 100644
View file @
0f1699fd
<!DOCTYPE html>
<html>
<head>
<!--
data-i18n=No records
data-i18n=Records
-->
<meta
http-equiv=
"Content-type"
content=
"text/html; charset=utf-8"
/>
<meta
name=
"viewport"
content=
"width=device-width, user-scalable=no"
/>
<title>
ERP5 Test Result Performance
</title>
<!-- renderjs -->
<script
src=
"../rsvp.js"
></script>
<script
src=
"../renderjs.js"
></script>
<!-- custom script -->
<script
src=
"gadget_erp5_test_result_performance_graph.js"
type=
"text/javascript"
></script>
<body>
<div
class=
"ui-field-contain"
>
<label
data-i18n=
"From Date:"
>
From Date:
</label>
<input
type=
"date"
name=
"from_date"
title=
"From Date"
>
</div>
<div
class=
"ui-field-contain"
>
<label
data-i18n=
"At Date:"
>
At Date:
</label>
<input
type=
"date"
name=
"at_date"
title=
"At Date"
>
</div>
<div
class=
"document-content"
>
</div>
</body>
</html>
\ No newline at end of file
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/test_result_js/gadget_erp5_test_result_performance_graph.html.xml
0 → 100644
View file @
0f1699fd
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"File"
module=
"OFS.Image"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
__name__
</string>
</key>
<value>
<string>
gadget_erp5_test_result_performance_graph.html
</string>
</value>
</item>
<item>
<key>
<string>
content_type
</string>
</key>
<value>
<string>
text/html
</string>
</value>
</item>
<item>
<key>
<string>
precondition
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/test_result_js/gadget_erp5_test_result_performance_graph.js.js
0 → 100644
View file @
0f1699fd
/*jslint indent: 2, nomen: true */
/*global window, rJS, RSVP, console, loopEventListener */
(
function
(
window
,
rJS
,
RSVP
,
loopEventListener
)
{
"
use strict
"
;
var
WIDGET_GRAPH_URL
=
"
../gadget_officejs_widget_graph_chart.html
"
;
function
getDateAsString
(
date
)
{
var
date_string
=
""
+
date
.
getFullYear
()
+
"
-
"
,
month
=
date
.
getMonth
()
+
1
,
day
=
date
.
getDate
();
if
(
month
<
10
)
{
date_string
=
date_string
+
"
0
"
;
}
date_string
=
date_string
+
month
+
"
-
"
;
if
(
day
<
10
)
{
date_string
=
date_string
+
"
0
"
;
}
date_string
=
date_string
+
day
;
return
date_string
;
}
function
getCheckDateAndRefreshGraphFunction
(
gadget
)
{
return
function
checkDateAndRefreshGraph
()
{
var
from_date
,
at_date
,
i
;
from_date
=
gadget
.
property_dict
.
element
.
querySelector
(
'
[name="from_date"]
'
).
value
;
at_date
=
gadget
.
property_dict
.
element
.
querySelector
(
'
[name="at_date"]
'
).
value
;
if
(
at_date
!==
""
&&
from_date
!==
""
)
{
console
.
log
(
"
will need to get data
"
);
return
gadget
.
jio_allDocs
({
"
list_method_template
"
:
gadget
.
property_dict
.
option_dict
.
list_method_template
,
"
query
"
:
'
( delivery.start_date: >= "
'
+
from_date
+
'
" AND delivery.start_date: < "
'
+
at_date
+
'
" )
'
,
"
limit
"
:
[],
"
select_list
"
:
[],
"
sort_on
"
:
[]
})
.
push
(
function
(
data_list
)
{
console
.
log
(
'
data_list
'
,
data_list
);
var
graph_data_list
=
[],
revision
,
line_list
=
data_list
.
data
.
rows
,
value
,
i
,
j
,
property_list
=
[];
if
(
line_list
.
length
!==
0
)
{
Object
.
keys
(
line_list
[
0
].
value
).
forEach
(
function
(
property
)
{
if
(
property
!==
"
revision
"
)
{
property_list
.
push
(
property
);
}
});
if
(
property_list
.
length
!==
0
)
{
property_list
.
forEach
(
function
(
property
)
{
var
i
,
data
=
{};
console
.
log
(
"
property
"
,
property
);
data
.
type
=
"
line
"
;
data
.
title
=
property
;
data
.
value_dict
=
{
0
:
[],
1
:
[]};
for
(
i
=
0
;
i
<
line_list
.
length
;
i
=
i
+
1
)
{
data
.
value_dict
[
0
].
push
(
line_list
[
i
].
value
.
revision
);
data
.
value_dict
[
1
].
push
(
line_list
[
i
].
value
[
property
]);
}
graph_data_list
.
push
(
data
);
});
}
}
gadget
.
property_dict
.
graph_data_dict
.
data
=
graph_data_list
;
return
gadget
.
property_dict
.
graph_widget
.
updateConfiguration
(
gadget
.
property_dict
.
graph_data_dict
);
});
}
};
}
rJS
(
window
)
.
ready
(
function
(
gadget
)
{
gadget
.
property_dict
=
{};
return
gadget
.
getElement
()
.
push
(
function
(
element
)
{
gadget
.
property_dict
.
element
=
element
;
gadget
.
property_dict
.
deferred
=
RSVP
.
defer
();
});
})
//////////////////////////////////////////////
// acquired method
//////////////////////////////////////////////
.
declareAcquiredMethod
(
"
jio_allDocs
"
,
"
jio_allDocs
"
)
//////////////////////////////////////////////
// initialize the gadget content
//////////////////////////////////////////////
.
declareMethod
(
"
render
"
,
function
(
option_dict
)
{
console
.
log
(
"
gadget_erp5_test_result_performance_graph, render, options
"
,
option_dict
);
var
gadget
=
this
;
gadget
.
property_dict
.
option_dict
=
option_dict
.
value
;
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
gadget
.
property_dict
.
deferred
.
resolve
();
});
})
/////////////////////////////////////////
// Render text content gadget
/////////////////////////////////////////
.
declareService
(
function
()
{
var
gadget
=
this
,
graph_gadget
=
null
;
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
gadget
.
property_dict
.
deferred
.
promise
;
})
.
push
(
function
()
{
return
RSVP
.
all
([
gadget
.
declareGadget
(
WIDGET_GRAPH_URL
,
{
scope
:
"
graph
"
,
element
:
gadget
.
property_dict
.
element
.
querySelector
(
"
.document-content
"
)
})
]);
})
.
push
(
function
(
result
)
{
graph_gadget
=
result
[
0
];
gadget
.
property_dict
.
graph_widget
=
graph_gadget
;
gadget
.
property_dict
.
graph_data_dict
=
{
data
:
[{
value_dict
:
{
0
:
[],
1
:
[]},
type
:
"
line
"
}],
layout
:
{
axis_dict
:
{
0
:
{
"
title
"
:
"
commit
"
},
1
:
{
"
title
"
:
"
performance
"
}
},
title
:
"
Test Result Performance
"
}
};
return
graph_gadget
.
render
(
gadget
.
property_dict
.
graph_data_dict
);
})
.
push
(
function
()
{
var
now
=
new
Date
(),
last_month
,
tomorrow
;
last_month
=
new
Date
(
now
.
valueOf
()
-
86400
*
1000
*
30
);
// - 30 days
tomorrow
=
new
Date
(
now
.
valueOf
()
+
86400
*
1000
*
1
);
// + 1 day
gadget
.
property_dict
.
element
.
querySelector
(
'
[name="from_date"]
'
).
value
=
getDateAsString
(
last_month
);
gadget
.
property_dict
.
element
.
querySelector
(
'
[name="at_date"]
'
).
value
=
getDateAsString
(
tomorrow
);
})
.
push
(
function
()
{
getCheckDateAndRefreshGraphFunction
(
gadget
)();
});
})
.
declareService
(
function
()
{
var
gadget
=
this
;
return
loopEventListener
(
gadget
.
property_dict
.
element
.
querySelector
(
'
[name="from_date"]
'
),
'
change
'
,
false
,
function
()
{
getCheckDateAndRefreshGraphFunction
(
gadget
)();
});
})
.
declareService
(
function
()
{
var
gadget
=
this
;
return
loopEventListener
(
gadget
.
property_dict
.
element
.
querySelector
(
'
[name="at_date"]
'
),
'
change
'
,
false
,
function
()
{
getCheckDateAndRefreshGraphFunction
(
gadget
)();
});
});
}(
window
,
rJS
,
RSVP
,
loopEventListener
));
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/test_result_js/gadget_erp5_test_result_performance_graph.js.xml
0 → 100644
View file @
0f1699fd
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"File"
module=
"OFS.Image"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_Cacheable__manager_id
</string>
</key>
<value>
<string>
http_cache
</string>
</value>
</item>
<item>
<key>
<string>
__name__
</string>
</key>
<value>
<string>
gadget_erp5_test_result_performance_graph.js
</string>
</value>
</item>
<item>
<key>
<string>
content_type
</string>
</key>
<value>
<string>
application/javascript
</string>
</value>
</item>
<item>
<key>
<string>
precondition
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_test_result/bt/template_action_path_list
View file @
0f1699fd
...
...
@@ -28,6 +28,7 @@ Test Result | jump_viewvc_revision
Test Result | view
Test Result | view_graph
Test Result | view_node_list
Test Result | view_performance_graph
Test Suite Module | view
Test Suite Repository | view
Test Suite | view
\ No newline at end of file
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