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
Labels
Merge Requests
138
Merge Requests
138
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
Jobs
Commits
Open sidebar
nexedi
erp5
Commits
c4269e36
Commit
c4269e36
authored
Nov 07, 2022
by
Roque
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
erp5_officejs_drone_simulator: app site, pages and assets
parent
86c2869f
Changes
22
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
4408 additions
and
69 deletions
+4408
-69
bt5/erp5_officejs_drone_simulator/PathTemplateItem/image_module/drone_icon_png.png
...imulator/PathTemplateItem/image_module/drone_icon_png.png
+0
-0
bt5/erp5_officejs_drone_simulator/PathTemplateItem/image_module/drone_icon_png.xml
...imulator/PathTemplateItem/image_module/drone_icon_png.xml
+317
-0
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/drone_simulator_gadget_js.js
...TemplateItem/web_page_module/drone_simulator_gadget_js.js
+0
-52
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_log_page_html.html
...em/web_page_module/ojs_drone_simulator_log_page_html.html
+15
-3
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_log_page_html.xml
...tem/web_page_module/ojs_drone_simulator_log_page_html.xml
+338
-0
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_log_page_js.js
...teItem/web_page_module/ojs_drone_simulator_log_page_js.js
+291
-0
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_log_page_js.xml
...eItem/web_page_module/ojs_drone_simulator_log_page_js.xml
+340
-0
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_panel_html.html
...eItem/web_page_module/ojs_drone_simulator_panel_html.html
+51
-0
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_panel_html.xml
...teItem/web_page_module/ojs_drone_simulator_panel_html.xml
+334
-0
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_panel_js.js
...plateItem/web_page_module/ojs_drone_simulator_panel_js.js
+281
-0
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_panel_js.xml
...lateItem/web_page_module/ojs_drone_simulator_panel_js.xml
+330
-0
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_script_page_html.html
...web_page_module/ojs_drone_simulator_script_page_html.html
+40
-0
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_script_page_html.xml
.../web_page_module/ojs_drone_simulator_script_page_html.xml
+7
-7
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_script_page_js.js
...tem/web_page_module/ojs_drone_simulator_script_page_js.js
+472
-0
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_script_page_js.xml
...em/web_page_module/ojs_drone_simulator_script_page_js.xml
+7
-7
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_web_manifest_json.json
...eb_page_module/ojs_drone_simulator_web_manifest_json.json
+12
-0
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_web_manifest_json.xml
...web_page_module/ojs_drone_simulator_web_manifest_json.xml
+338
-0
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_site_module/officejs_drone_simulator.xml
...TemplateItem/web_site_module/officejs_drone_simulator.xml
+567
-0
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_site_module/officejs_drone_simulator/app.xml
...lateItem/web_site_module/officejs_drone_simulator/app.xml
+531
-0
bt5/erp5_officejs_drone_simulator/SkinTemplateItem/portal_skins/erp5_officejs_drone_simulator.xml
...mplateItem/portal_skins/erp5_officejs_drone_simulator.xml
+47
-0
bt5/erp5_officejs_drone_simulator/SkinTemplateItem/portal_skins/erp5_officejs_drone_simulator/WebSection_getDroneSimulatorPrecacheManifestList.py
...lator/WebSection_getDroneSimulatorPrecacheManifestList.py
+28
-0
bt5/erp5_officejs_drone_simulator/SkinTemplateItem/portal_skins/erp5_officejs_drone_simulator/WebSection_getDroneSimulatorPrecacheManifestList.xml
...ator/WebSection_getDroneSimulatorPrecacheManifestList.xml
+62
-0
No files found.
bt5/erp5_officejs_drone_simulator/PathTemplateItem/image_module/drone_icon_png.png
0 → 100644
View file @
c4269e36
11.2 KB
bt5/erp5_officejs_drone_simulator/PathTemplateItem/image_module/drone_icon_png.xml
0 → 100644
View file @
c4269e36
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Image"
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>
_count
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
_mt_index
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
_tree
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAQ=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
content_md5
</string>
</key>
<value>
<string>
2c89322c21320232368a413b72c62319
</string>
</value>
</item>
<item>
<key>
<string>
content_type
</string>
</key>
<value>
<string>
image/png
</string>
</value>
</item>
<item>
<key>
<string>
default_reference
</string>
</key>
<value>
<string>
drone.png
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
filename
</string>
</key>
<value>
<string>
drone.png
</string>
</value>
</item>
<item>
<key>
<string>
height
</string>
</key>
<value>
<int>
512
</int>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
drone_icon_png
</string>
</value>
</item>
<item>
<key>
<string>
language
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Image
</string>
</value>
</item>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
version
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
width
</string>
</key>
<value>
<int>
513
</int>
</value>
</item>
<item>
<key>
<string>
workflow_history
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAU=
</string>
</persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Length"
module=
"BTrees.Length"
/>
</pickle>
<pickle>
<int>
0
</int>
</pickle>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"OOBTree"
module=
"BTrees.OOBTree"
/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record
id=
"4"
aka=
"AAAAAAAAAAQ="
>
<pickle>
<global
name=
"OOBTree"
module=
"BTrees.OOBTree"
/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record
id=
"5"
aka=
"AAAAAAAAAAU="
>
<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"
>
AAAAAAAAAAY=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
edit_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAc=
</string>
</persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"6"
aka=
"AAAAAAAAAAY="
>
<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>
1666715587.71
</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=
"7"
aka=
"AAAAAAAAAAc="
>
<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>
1003.57663.27647.8772
</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>
1666715580.59
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/drone_simulator_gadget_js.js
deleted
100644 → 0
View file @
86c2869f
/*global window, rJS, domsugar, DroneGameManager*/
/*jslint nomen: true, indent: 2, maxlen: 80, white: true, evil: false */
(
function
(
window
,
rJS
,
domsugar
,
DroneGameManager
)
{
"
use strict
"
;
var
canvas
,
offscreen
,
WIDTH
=
680
,
HEIGHT
=
340
,
LOGIC_FILE_LIST
=
[
'
gadget_erp5_page_drone_simulator_logic.js
'
,
'
gadget_erp5_page_drone_simulator_droneaaailefixe.js
'
,
'
gadget_erp5_page_drone_simulator_dronelogfollower.js
'
];
rJS
(
window
)
/////////////////////////////////////////////////////////////////
// Acquired methods
/////////////////////////////////////////////////////////////////
.
declareAcquiredMethod
(
"
jio_allDocs
"
,
"
jio_allDocs
"
)
.
declareMethod
(
'
render
'
,
function
render
()
{
var
gadget
=
this
,
loading
=
domsugar
(
'
span
'
,
[
"
Loading...
"
]),
container
=
domsugar
(
'
div
'
);
canvas
=
domsugar
(
'
canvas
'
);
loading
.
id
=
"
loading
"
;
container
.
className
=
'
container
'
;
container
.
appendChild
(
canvas
);
domsugar
(
gadget
.
element
,
[
loading
,
container
]);
canvas
.
width
=
WIDTH
;
canvas
.
height
=
HEIGHT
;
// https://doc.babylonjs.com/divingDeeper/scene/offscreenCanvas
offscreen
=
canvas
.
transferControlToOffscreen
();
})
// To be called outside
.
declareMethod
(
'
runGame
'
,
function
runGame
(
options
)
{
options
.
canvas
=
offscreen
;
options
.
canvas_original
=
canvas
;
options
.
width
=
canvas
.
width
;
options
.
height
=
canvas
.
height
;
options
.
logic_url_list
=
LOGIC_FILE_LIST
;
var
gadget
=
this
,
game_manager
=
new
DroneGameManager
(
gadget
);
return
game_manager
.
play
(
options
)
.
push
(
function
()
{
return
game_manager
.
result
();
});
});
}(
window
,
rJS
,
domsugar
,
DroneGameManager
));
\ No newline at end of file
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/
drone_simulator_gadget
_html.html
→
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/
ojs_drone_simulator_log_page
_html.html
View file @
c4269e36
...
...
@@ -7,7 +7,7 @@
<head>
<meta
http-equiv=
"Content-type"
content=
"text/html; charset=utf-8"
/>
<meta
name=
"viewport"
content=
"width=device-width"
/>
<title>
Drone Simulator
Flight Comparison
</title>
<title>
Drone Simulator
Log Page
</title>
<link
rel=
"http://www.renderjs.org/rel/interface"
href=
"interface_page.html"
>
<!-- renderjs -->
...
...
@@ -19,10 +19,22 @@
<script
src=
"gadget_global.js"
type=
"text/javascript"
></script>
<script
src=
"domsugar.js"
type=
"text/javascript"
></script>
<script
src=
"gadget_erp5_page_babylonjs_main.js"
type=
"text/javascript"
></script>
<script
src=
"gadget_erp5_page_drone_simulator_gadget.js"
type=
"text/javascript"
></script>
<script
src=
"gadget_erp5_page_drone_simulator_log_page.js"
type=
"text/javascript"
></script>
</head>
<body>
<form>
<div
data-gadget-url=
"gadget_erp5_form.html"
data-gadget-scope=
"form_view"
data-gadget-sandbox=
"public"
>
</div>
<input
name=
"action_run"
class=
"dialogconfirm"
type=
"submit"
value=
"Run"
style=
"margin-bottom: 20pt;margin-top: 20pt;"
>
<span
id=
"distance"
></span>
<div
class=
"simulator_div"
></div>
<div
data-gadget-url=
"gadget_erp5_form.html"
data-gadget-scope=
"form_view_babylonjs"
data-gadget-sandbox=
"public"
>
</div>
</form>
</body>
</html>
\ No newline at end of file
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_log_page_html.xml
0 → 100644
View file @
c4269e36
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Web Page"
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>
<string>
text/html
</string>
</value>
</item>
<item>
<key>
<string>
default_reference
</string>
</key>
<value>
<string>
gadget_erp5_page_drone_simulator_log_page.html
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
ojs_drone_simulator_log_page_html
</string>
</value>
</item>
<item>
<key>
<string>
language
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Web Page
</string>
</value>
</item>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Drone Simulator Log Page
</string>
</value>
</item>
<item>
<key>
<string>
version
</string>
</key>
<value>
<none/>
</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>
1664996478.18
</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>
1004.22391.16038.6980
</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>
1671109341.4
</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>
<string>
detect_converted_file
</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>
external_processing_state
</string>
</key>
<value>
<string>
converted
</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>
1664996138.79
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_log_page_js.js
0 → 100644
View file @
c4269e36
(
function
(
window
,
RSVP
,
rJS
,
domsugar
,
document
,
Blob
)
{
"
use strict
"
;
var
SIMULATION_SPEED
=
200
,
SIMULATION_TIME
=
2000
,
DRAW
=
true
,
LOG
=
false
,
DRONE_LIST
=
[
{
"
id
"
:
0
,
"
type
"
:
"
DroneLogAPI
"
,
"
log_content
"
:
""
},
{
"
id
"
:
1
,
"
type
"
:
"
DroneLogAPI
"
,
"
log_content
"
:
""
}
],
WIDTH
=
680
,
HEIGHT
=
340
,
LOGIC_FILE_LIST
=
[
'
gadget_erp5_page_drone_simulator_logic.js
'
,
'
gadget_erp5_page_drone_simulator_droneaaailefixe.js
'
,
'
gadget_erp5_page_drone_simulator_dronelogfollower.js
'
];
rJS
(
window
)
/////////////////////////////////////////////////////////////////
// Acquired methods
/////////////////////////////////////////////////////////////////
.
declareAcquiredMethod
(
"
updateHeader
"
,
"
updateHeader
"
)
.
declareAcquiredMethod
(
"
notifySubmitted
"
,
"
notifySubmitted
"
)
.
onEvent
(
'
submit
'
,
function
()
{
var
gadget
=
this
;
return
gadget
.
getDeclaredGadget
(
'
form_view
'
)
.
push
(
function
(
form_gadget
)
{
return
form_gadget
.
getContent
();
})
.
push
(
function
(
input
)
{
gadget
.
runGame
(
input
);
});
})
.
declareMethod
(
"
triggerSubmit
"
,
function
()
{
return
this
.
element
.
querySelector
(
'
input[type="submit"]
'
).
click
();
})
.
declareMethod
(
'
render
'
,
function
render
()
{
var
gadget
=
this
,
query
;
return
gadget
.
getDeclaredGadget
(
'
form_view
'
)
.
push
(
function
(
form_gadget
)
{
return
form_gadget
.
render
({
erp5_document
:
{
"
_embedded
"
:
{
"
_view
"
:
{
"
my_simulation_speed
"
:
{
"
description
"
:
""
,
"
title
"
:
"
Simulation Speed
"
,
"
default
"
:
SIMULATION_SPEED
,
"
css_class
"
:
""
,
"
required
"
:
0
,
"
editable
"
:
1
,
"
key
"
:
"
simulation_speed
"
,
"
hidden
"
:
0
,
"
type
"
:
"
StringField
"
},
"
my_log_1
"
:
{
"
description
"
:
"
Log 1 content
"
,
"
title
"
:
""
,
"
default
"
:
DRONE_LIST
[
0
].
log_content
,
"
css_class
"
:
""
,
"
required
"
:
1
,
"
editable
"
:
1
,
"
key
"
:
"
log_1
"
,
"
hidden
"
:
0
,
"
type
"
:
"
TextAreaField
"
},
"
my_log_2
"
:
{
"
description
"
:
"
Log 2 content
"
,
"
title
"
:
""
,
"
default
"
:
DRONE_LIST
[
1
].
log_content
,
"
css_class
"
:
""
,
"
required
"
:
1
,
"
editable
"
:
1
,
"
key
"
:
"
log_2
"
,
"
hidden
"
:
0
,
"
type
"
:
"
TextAreaField
"
}
}},
"
_links
"
:
{
"
type
"
:
{
name
:
""
}
}
},
form_definition
:
{
group_list
:
[[
"
left
"
,
[[
"
my_log_1
"
],
[
"
my_simulation_speed
"
]]
],[
"
right
"
,
[[
"
my_log_2
"
]]
]]
}
});
})
.
push
(
function
()
{
return
gadget
.
updateHeader
({
page_title
:
'
Drone Simulator - Run flight logs
'
,
page_icon
:
'
puzzle-piece
'
});
});
})
.
declareJob
(
'
runGame
'
,
function
runGame
(
options
)
{
var
gadget
=
this
,
simulator
,
log_1_entry_list
,
log_2_entry_list
;
function
latLonDistance
(
c1
,
c2
)
{
var
R
=
6371
e3
,
q1
=
c1
[
0
]
*
Math
.
PI
/
180
,
q2
=
c2
[
0
]
*
Math
.
PI
/
180
,
dq
=
(
c2
[
0
]
-
c1
[
0
])
*
Math
.
PI
/
180
,
dl
=
(
c2
[
1
]
-
c1
[
1
])
*
Math
.
PI
/
180
,
a
=
Math
.
sin
(
dq
/
2
)
*
Math
.
sin
(
dq
/
2
)
+
Math
.
cos
(
q1
)
*
Math
.
cos
(
q2
)
*
Math
.
sin
(
dl
/
2
)
*
Math
.
sin
(
dl
/
2
),
c
=
2
*
Math
.
atan2
(
Math
.
sqrt
(
a
),
Math
.
sqrt
(
1
-
a
));
return
R
*
c
;
}
function
getLogEntries
(
log
)
{
var
i
,
line_list
=
log
.
split
(
'
\n
'
),
log_entry_list
=
[],
log_entry
,
log_header_found
;
for
(
i
=
0
;
i
<
line_list
.
length
;
i
+=
1
)
{
if
(
!
log_header_found
&&
!
line_list
[
i
].
includes
(
"
timestamp;
"
))
{
continue
;
}
else
{
log_header_found
=
true
;
}
if
(
line_list
[
i
].
indexOf
(
"
AMSL
"
)
>=
0
||
!
line_list
[
i
].
includes
(
"
;
"
))
{
continue
;
}
log_entry
=
line_list
[
i
].
trim
();
if
(
log_entry
)
{
log_entry
=
log_entry
.
split
(
'
;
'
);
log_entry_list
.
push
(
log_entry
);
}
}
return
log_entry_list
;
}
function
averageLogDistance
(
a
,
b
,
z
)
{
function
distance3D
(
p1
,
p2
)
{
return
Math
.
sqrt
(
Math
.
pow
(
p1
[
0
]
-
p2
[
0
],
2
)
+
Math
.
pow
(
p1
[
1
]
-
p2
[
1
],
2
)
+
Math
.
pow
(
p1
[
2
]
-
p2
[
2
],
2
));
}
var
i
,
sum
=
0
,
point_a
,
point_b
,
penalization
=
0
,
length
;
for
(
i
=
0
;
i
<
a
.
length
;
i
++
)
{
if
(
b
[
i
])
{
point_a
=
[
a
[
i
][
1
],
a
[
i
][
1
]];
point_b
=
[
b
[
i
][
1
],
b
[
i
][
1
]];
if
(
z
)
{
sum
+=
distance3D
(
point_a
,
point_b
);
}
else
{
var
d
=
latLonDistance
(
point_a
,
point_b
);
sum
+=
d
;
}
}
}
length
=
Math
.
min
(
a
.
length
,
b
.
length
);
if
(
Math
.
abs
(
a
.
length
-
b
.
length
)
>
50
)
{
//penalize very different logs
penalization
=
Math
.
abs
(
a
.
length
-
b
.
length
);
}
return
sum
/
length
+
penalization
;
}
log_1_entry_list
=
getLogEntries
(
options
.
log_1
);
log_2_entry_list
=
getLogEntries
(
options
.
log_2
);
var
span
=
document
.
querySelector
(
'
#distance
'
),
dist
=
averageLogDistance
(
log_1_entry_list
,
log_2_entry_list
,
false
);
if
(
isNaN
(
dist
))
{
return
gadget
.
notifySubmitted
({
message
:
'
Invalid log content
'
,
status
:
'
error
'
});
}
span
.
textContent
=
'
Average flights distance:
'
+
Math
.
round
(
dist
*
100
)
/
100
;
var
fragment
=
gadget
.
element
.
querySelector
(
'
.simulator_div
'
);
fragment
=
domsugar
(
gadget
.
element
.
querySelector
(
'
.simulator_div
'
),
[
domsugar
(
'
div
'
)]).
firstElementChild
;
DRONE_LIST
[
0
].
log_content
=
options
.
log_1
;
DRONE_LIST
[
1
].
log_content
=
options
.
log_2
;
function
generateMapInfo
(
list_1
,
list_2
)
{
var
all
=
list_1
.
concat
(
list_2
),
i
,
min_lat
=
999
,
min_lon
=
999
,
max_lat
=
0
,
max_lon
=
0
;
for
(
i
=
0
;
i
<
all
.
length
;
i
+=
1
)
{
if
(
all
[
i
][
1
]
<
min_lat
)
min_lat
=
all
[
i
][
1
];
if
(
all
[
i
][
1
]
>
max_lat
)
max_lat
=
all
[
i
][
1
];
if
(
all
[
i
][
2
]
<
min_lon
)
min_lon
=
all
[
i
][
2
];
if
(
all
[
i
][
2
]
>
max_lon
)
max_lon
=
all
[
i
][
2
];
}
return
{
"
min_lat
"
:
min_lat
,
"
max_lat
"
:
max_lat
,
"
min_lon
"
:
min_lon
,
"
max_lon
"
:
max_lon
,
"
start_AMSL
"
:
all
[
0
][
3
]
-
all
[
0
][
4
],
"
init_pos_lat
"
:
all
[
0
][
1
],
"
init_pos_lon
"
:
all
[
0
][
2
],
"
init_pos_z
"
:
all
[
0
][
4
]
};
}
var
map_info
=
generateMapInfo
(
log_1_entry_list
,
log_2_entry_list
);
options
.
min_lat
=
map_info
.
min_lat
;
options
.
max_lat
=
map_info
.
max_lat
;
options
.
min_lon
=
map_info
.
min_lon
;
options
.
max_lon
=
map_info
.
max_lon
;
options
.
map_height
=
100
;
options
.
start_AMSL
=
map_info
.
start_AMSL
;
options
.
init_pos_lon
=
map_info
.
init_pos_lon
;
options
.
init_pos_lat
=
map_info
.
init_pos_lat
;
options
.
init_pos_z
=
map_info
.
init_pos_z
;
var
game_parameters_json
=
{
"
drone
"
:
{
"
maxAcceleration
"
:
1
,
"
maxSpeed
"
:
1
},
"
gameTime
"
:
SIMULATION_TIME
,
"
simulation_speed
"
:
parseFloat
(
options
.
simulation_speed
),
"
latency
"
:
{
"
information
"
:
0
,
"
communication
"
:
0
},
"
map
"
:
{
"
min_lat
"
:
parseFloat
(
options
.
min_lat
),
"
max_lat
"
:
parseFloat
(
options
.
max_lat
),
"
min_lon
"
:
parseFloat
(
options
.
min_lon
),
"
max_lon
"
:
parseFloat
(
options
.
max_lon
),
"
height
"
:
parseFloat
(
options
.
map_height
),
"
start_AMSL
"
:
parseFloat
(
options
.
start_AMSL
)
},
"
initialPosition
"
:
{
"
longitude
"
:
parseFloat
(
options
.
init_pos_lon
),
"
latitude
"
:
parseFloat
(
options
.
init_pos_lat
),
"
z
"
:
parseFloat
(
options
.
init_pos_z
)
},
"
draw_flight_path
"
:
DRAW
,
"
log_drone_flight
"
:
LOG
,
"
temp_flight_path
"
:
false
,
"
droneList
"
:
DRONE_LIST
};
return
gadget
.
declareGadget
(
"
babylonjs.gadget.html
"
,
{
element
:
fragment
,
scope
:
'
simulator
'
})
.
push
(
function
()
{
return
gadget
.
getDeclaredGadget
(
'
form_view_babylonjs
'
);
})
.
push
(
function
(
form_gadget
)
{
return
form_gadget
.
render
({
erp5_document
:
{
"
_embedded
"
:
{
"
_view
"
:
{
"
my_babylonjs
"
:
{
"
default
"
:
""
,
"
css_class
"
:
""
,
"
required
"
:
0
,
"
editable
"
:
1
,
"
key
"
:
"
babylonjs
"
,
"
hidden
"
:
0
,
"
type
"
:
"
GadgetField
"
,
"
url
"
:
"
babylonjs.gadget.html
"
,
"
sandbox
"
:
"
public
"
,
"
renderjs_extra
"
:
'
{"autorun": false, "width":
'
+
WIDTH
+
'
,
'
+
'
"height":
'
+
HEIGHT
+
'
,
'
+
'
"logic_file_list":
'
+
JSON
.
stringify
(
LOGIC_FILE_LIST
)
+
'
,
'
+
'
"game_parameters":
'
+
JSON
.
stringify
(
game_parameters_json
)
+
'
}
'
}
}},
"
_links
"
:
{
"
type
"
:
{
name
:
""
}
}
},
form_definition
:
{
group_list
:
[[
"
bottom
"
,
[[
"
my_babylonjs
"
]]
]]
}
});
})
.
push
(
function
()
{
return
gadget
.
getDeclaredGadget
(
'
form_view_babylonjs
'
);
})
.
push
(
function
(
form_gadget
)
{
return
form_gadget
.
getContent
();
});
});
}(
window
,
RSVP
,
rJS
,
domsugar
,
document
,
Blob
));
\ No newline at end of file
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_log_page_js.xml
0 → 100644
View file @
c4269e36
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Web Script"
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_erp5_page_drone_simulator_log_page.js
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
ojs_drone_simulator_log_page_js
</string>
</value>
</item>
<item>
<key>
<string>
language
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Web Script
</string>
</value>
</item>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Drone Simulator Log Page JS
</string>
</value>
</item>
<item>
<key>
<string>
version
</string>
</key>
<value>
<none/>
</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>
1664996481.12
</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>
1005.1310.34623.11861
</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>
1671112620.77
</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>
<string>
detect_converted_file
</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>
external_processing_state
</string>
</key>
<value>
<string>
converted
</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>
1664996144.35
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_panel_html.html
0 → 100644
View file @
c4269e36
<!DOCTYPE html>
<html>
<head>
<meta
http-equiv=
"Content-type"
content=
"text/html; charset=utf-8"
/>
<meta
name=
"viewport"
content=
"width=device-width"
/>
<title>
Drone Simulator Panel
</title>
<link
rel=
"http://www.renderjs.org/rel/interface"
href=
"interface_panel.html"
>
<!--
data-i18n=Editable
data-i18n=Home
data-i18n=Modules
data-i18n=Worklists
data-i18n=History
data-i18n=Search
data-i18n=Logout
data-i18n=Views
data-i18n=Workflows
data-i18n=Actions
data-i18n=Jumps
data-i18n=Global
data-i18n=My Account
-->
<!-- renderjs -->
<script
src=
"rsvp.js"
type=
"text/javascript"
></script>
<script
src=
"renderjs.js"
type=
"text/javascript"
></script>
<script
src=
"domsugar.js"
type=
"text/javascript"
></script>
<script
src=
"jiodev.js"
type=
"text/javascript"
></script>
<script
src=
"gadget_global.js"
type=
"text/javascript"
></script>
<script
src=
"gadget_erp5_global.js"
type=
"text/javascript"
></script>
<!-- custom script -->
<script
src=
"gadget_erp5_panel_drone_simulator.js"
type=
"text/javascript"
></script>
</head>
<body>
<div>
<div
data-role=
"header"
>
<div
class=
"ui-btn-left"
>
<div
class=
"ui-controlgroup-controls"
>
<button
data-i18n=
"Close"
class=
"ui-btn-icon-notext ui-icon-delete"
>
Close
</button>
</div>
</div>
</div>
<div>
<ul></ul>
<dl></dl>
</div>
</div>
</body>
</html>
\ No newline at end of file
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_panel_html.xml
0 → 100644
View file @
c4269e36
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Web Page"
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>
<string>
text/html
</string>
</value>
</item>
<item>
<key>
<string>
default_reference
</string>
</key>
<value>
<string>
gadget_erp5_panel_drone_simulator.html
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
ojs_drone_simulator_panel_html
</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 Page
</string>
</value>
</item>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Drone Simulator Panel
</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>
1665152561.44
</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>
1003.31623.36971.4198
</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>
1667236194.07
</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>
<string>
detect_converted_file
</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>
external_processing_state
</string>
</key>
<value>
<string>
converted
</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>
1665152251.44
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_panel_js.js
0 → 100644
View file @
c4269e36
/*jslint nomen: true, indent: 2, maxerr: 3, unparam: true */
/*global window, document, rJS, RSVP, Node, asBoolean , ensureArray,
mergeGlobalActionWithRawActionList, domsugar*/
(
function
(
window
,
document
,
rJS
,
RSVP
,
Node
,
asBoolean
,
ensureArray
,
mergeGlobalActionWithRawActionList
,
domsugar
)
{
"
use strict
"
;
function
appendDt
(
fragment
,
dt_title
,
dt_icon
,
action_list
,
href_list
,
index
)
{
var
element_list
=
[
domsugar
(
'
dt
'
,
{
text
:
dt_title
,
'
class
'
:
'
ui-btn-icon-left ui-icon-
'
+
dt_icon
})
],
i
;
for
(
i
=
0
;
i
<
action_list
.
length
;
i
+=
1
)
{
element_list
.
push
(
domsugar
(
'
dd
'
,
{
'
class
'
:
'
document-listview
'
},
[
domsugar
(
'
a
'
,
{
href
:
href_list
[
index
+
i
],
text
:
action_list
[
i
].
title
,
'
class
'
:
action_list
[
i
].
class_name
||
null
})
]));
}
fragment
.
appendChild
(
domsugar
(
null
,
element_list
));
}
rJS
(
window
)
.
setState
({
visible
:
false
})
//////////////////////////////////////////////
// acquired method
//////////////////////////////////////////////
.
declareAcquiredMethod
(
"
getUrlForList
"
,
"
getUrlForList
"
)
.
declareAcquiredMethod
(
"
getTranslationList
"
,
"
getTranslationList
"
)
.
declareAcquiredMethod
(
"
getTranslationDict
"
,
"
getTranslationDict
"
)
.
declareAcquiredMethod
(
"
redirect
"
,
"
redirect
"
)
.
declareAcquiredMethod
(
"
getUrlParameter
"
,
"
getUrlParameter
"
)
/////////////////////////////////////////////////////////////////
// declared methods
/////////////////////////////////////////////////////////////////
.
declareMethod
(
'
toggle
'
,
function
toggle
()
{
return
this
.
changeState
({
visible
:
!
this
.
state
.
visible
});
})
.
declareMethod
(
'
close
'
,
function
close
()
{
return
this
.
changeState
({
visible
:
false
});
})
.
declareMethod
(
'
render
'
,
function
render
(
options
)
{
var
erp5_document
=
options
.
erp5_document
,
jio_key
=
options
.
jio_key
,
view
=
options
.
view
,
jump_view
=
options
.
jump_view
,
visible
=
options
.
visible
,
extra_menu_list
=
options
.
extra_menu_list
,
display_workflow_list
,
context
=
this
,
workflow_list
,
group_mapping
,
view_list
,
action_list
,
clone_list
,
jump_list
;
if
(
visible
===
undefined
)
{
visible
=
context
.
state
.
visible
;
}
if
(
options
.
display_workflow_list
===
undefined
)
{
display_workflow_list
=
true
;
}
else
{
display_workflow_list
=
asBoolean
(
options
.
display_workflow_list
);
}
if
((
erp5_document
!==
undefined
)
&&
(
jio_key
!==
undefined
))
{
group_mapping
=
mergeGlobalActionWithRawActionList
(
jio_key
,
view
,
jump_view
,
erp5_document
.
_links
,
[
"
action_workflow
"
,
"
action_object_view
"
,
[
"
action_object_jio_action
"
,
"
action_object_jio_button
"
,
"
action_object_jio_fast_input
"
],
"
action_object_clone_action
"
,
"
action_object_jio_jump
"
],
{
"
action_object_jio_action
"
:
"
display_dialog_with_history
"
,
"
action_object_clone_action
"
:
"
display_dialog_with_history
"
},
{
"
action_object_clone_action
"
:
true
});
workflow_list
=
JSON
.
stringify
(
group_mapping
.
action_workflow
);
view_list
=
JSON
.
stringify
(
group_mapping
.
action_object_view
);
action_list
=
JSON
.
stringify
(
group_mapping
.
action_object_jio_action
);
clone_list
=
JSON
.
stringify
(
group_mapping
.
action_object_clone_action
);
jump_list
=
JSON
.
stringify
(
group_mapping
.
action_object_jio_jump
);
}
if
(
extra_menu_list
!==
undefined
)
{
extra_menu_list
=
JSON
.
stringify
(
extra_menu_list
);
}
return
context
.
getUrlParameter
(
'
editable
'
)
.
push
(
function
(
editable
)
{
return
context
.
changeState
({
visible
:
visible
,
display_workflow_list
:
display_workflow_list
,
workflow_list
:
workflow_list
,
view_list
:
view_list
,
action_list
:
action_list
,
clone_list
:
clone_list
,
jump_list
:
jump_list
,
global
:
true
,
jio_key
:
jio_key
,
view
:
view
,
jump_view
:
jump_view
,
editable
:
asBoolean
(
options
.
editable
)
||
asBoolean
(
editable
)
||
false
,
extra_menu_list
:
extra_menu_list
});
});
})
.
onStateChange
(
function
onStateChange
(
modification_dict
)
{
var
i
,
gadget
=
this
,
workflow_list
,
view_list
,
action_list
,
clone_list
,
jump_list
,
dl_fragment
,
queue
=
new
RSVP
.
Queue
();
if
(
modification_dict
.
hasOwnProperty
(
"
visible
"
))
{
if
(
this
.
state
.
visible
)
{
if
(
!
this
.
element
.
classList
.
contains
(
'
visible
'
))
{
this
.
element
.
classList
.
toggle
(
'
visible
'
);
}
}
else
{
if
(
this
.
element
.
classList
.
contains
(
'
visible
'
))
{
this
.
element
.
classList
.
remove
(
'
visible
'
);
}
}
}
if
(
modification_dict
.
hasOwnProperty
(
"
editable
"
))
{
queue
// Update the global links
.
push
(
function
()
{
return
RSVP
.
hash
({
url_list
:
gadget
.
getUrlForList
([
{
command
:
'
display
'
,
options
:
{
page
:
"
drone_simulator_script_page
"
}},
{
command
:
'
display
'
,
options
:
{
page
:
"
drone_simulator_log_page
"
}}
]),
translation_list
:
gadget
.
getTranslationList
([
'
Editable
'
,
'
Edit & Run Script
'
,
'
Run Logs
'
])
});
})
.
push
(
function
(
result_dict
)
{
var
editable_value
=
[],
element_list
=
[],
icon_and_key_list
=
[
'
edit
'
,
null
,
'
puzzle-piece
'
,
null
];
for
(
i
=
0
;
i
<
result_dict
.
url_list
.
length
;
i
+=
1
)
{
element_list
.
push
(
domsugar
(
'
li
'
,
[
domsugar
(
'
a
'
,
{
href
:
result_dict
.
url_list
[
i
],
'
class
'
:
'
ui-btn-icon-left ui-icon-
'
+
icon_and_key_list
[
2
*
i
],
accesskey
:
icon_and_key_list
[
2
*
i
+
1
],
text
:
result_dict
.
translation_list
[
i
+
1
]
})
]));
}
domsugar
(
gadget
.
element
.
querySelector
(
"
ul
"
),
[
domsugar
(
null
,
element_list
)]);
});
}
if
((
this
.
state
.
global
===
true
)
&&
(
modification_dict
.
hasOwnProperty
(
"
editable
"
)
||
modification_dict
.
hasOwnProperty
(
"
view
"
)
||
modification_dict
.
hasOwnProperty
(
"
jump_view
"
)
||
modification_dict
.
hasOwnProperty
(
"
workflow_list
"
)
||
modification_dict
.
hasOwnProperty
(
"
action_list
"
)
||
modification_dict
.
hasOwnProperty
(
"
clone_list
"
)
||
modification_dict
.
hasOwnProperty
(
"
jump_list
"
)
||
modification_dict
.
hasOwnProperty
(
"
jio_key
"
)
||
modification_dict
.
hasOwnProperty
(
"
view_list
"
)
||
modification_dict
.
hasOwnProperty
(
"
extra_menu_list
"
)))
{
dl_fragment
=
document
.
createDocumentFragment
();
gadget
.
element
.
querySelector
(
"
dl
"
).
textContent
=
''
;
if
(
this
.
state
.
view_list
!==
undefined
)
{
queue
.
push
(
function
()
{
var
parameter_list
=
[];
view_list
=
JSON
.
parse
(
gadget
.
state
.
view_list
);
action_list
=
JSON
.
parse
(
gadget
.
state
.
action_list
);
clone_list
=
JSON
.
parse
(
gadget
.
state
.
clone_list
);
jump_list
=
JSON
.
parse
(
gadget
.
state
.
jump_list
);
workflow_list
=
JSON
.
parse
(
gadget
.
state
.
workflow_list
);
parameter_list
=
view_list
.
concat
(
workflow_list
).
concat
(
action_list
).
concat
(
clone_list
).
concat
(
jump_list
).
map
(
function
(
options
)
{
return
options
.
url_kw
;
});
return
RSVP
.
hash
({
url_list
:
gadget
.
getUrlForList
(
parameter_list
),
translation_dict
:
gadget
.
getTranslationDict
([
'
Views
'
,
'
Workflows
'
,
'
Actions
'
,
'
Jumps
'
])
});
})
.
push
(
function
(
result_dict
)
{
appendDt
(
dl_fragment
,
result_dict
.
translation_dict
.
Views
,
'
eye
'
,
view_list
,
result_dict
.
url_list
,
0
);
if
(
gadget
.
state
.
display_workflow_list
)
{
// show Workflows only on document
appendDt
(
dl_fragment
,
result_dict
.
translation_dict
.
Workflows
,
'
random
'
,
workflow_list
,
result_dict
.
url_list
,
view_list
.
length
);
}
appendDt
(
dl_fragment
,
result_dict
.
translation_dict
.
Actions
,
'
cogs
'
,
action_list
.
concat
(
clone_list
),
result_dict
.
url_list
,
view_list
.
length
+
workflow_list
.
length
);
appendDt
(
dl_fragment
,
result_dict
.
translation_dict
.
Jumps
,
'
plane
'
,
jump_list
,
result_dict
.
url_list
,
view_list
.
length
+
workflow_list
.
length
+
action_list
.
length
+
clone_list
.
length
);
});
}
if
(
gadget
.
state
.
hasOwnProperty
(
"
extra_menu_list
"
)
&&
gadget
.
state
.
extra_menu_list
)
{
queue
.
push
(
function
()
{
return
gadget
.
getTranslationList
([
'
Global
'
]);
})
.
push
(
function
(
translation_list
)
{
var
extra_menu_list
=
JSON
.
parse
(
gadget
.
state
.
extra_menu_list
);
extra_menu_list
.
forEach
(
function
(
menu
)
{
appendDt
(
dl_fragment
,
menu
.
title
,
menu
.
icon
,
menu
.
entry_list
,
menu
.
href_list
,
0
);
});
});
}
}
queue
.
push
(
function
()
{
if
(
dl_fragment
)
{
domsugar
(
gadget
.
element
.
querySelector
(
"
dl
"
),
[
dl_fragment
]);
}
});
return
queue
;
})
/////////////////////////////////////////////////////////////////
// declared services
/////////////////////////////////////////////////////////////////
.
onEvent
(
'
click
'
,
function
click
(
evt
)
{
if
((
evt
.
target
.
nodeType
===
Node
.
ELEMENT_NODE
)
&&
(
evt
.
target
.
tagName
===
'
BUTTON
'
))
{
return
this
.
toggle
();
}
},
false
,
false
);
}(
window
,
document
,
rJS
,
RSVP
,
Node
,
asBoolean
,
ensureArray
,
mergeGlobalActionWithRawActionList
,
domsugar
));
\ No newline at end of file
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_panel_js.xml
0 → 100644
View file @
c4269e36
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Web Script"
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>
default_reference
</string>
</key>
<value>
<string>
gadget_erp5_panel_drone_simulator.js
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
ojs_drone_simulator_panel_js
</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 Script
</string>
</value>
</item>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Drone Simulator Panel JS
</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>
1665152550.75
</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>
1004.798.45893.58026
</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>
1667236196.6
</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>
<string>
detect_converted_file
</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>
external_processing_state
</string>
</key>
<value>
<string>
converted
</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>
1665152255.72
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_script_page_html.html
0 → 100644
View file @
c4269e36
<!DOCTYPE html>
<html>
<!--
data-i18n=Others
data-i18n=Tools
-->
<head>
<meta
http-equiv=
"Content-type"
content=
"text/html; charset=utf-8"
/>
<meta
name=
"viewport"
content=
"width=device-width"
/>
<title>
Drone Simulator Script Page
</title>
<link
rel=
"http://www.renderjs.org/rel/interface"
href=
"interface_page.html"
>
<!-- renderjs -->
<script
src=
"rsvp.js"
type=
"text/javascript"
></script>
<script
src=
"renderjs.js"
type=
"text/javascript"
></script>
<!-- custom script -->
<script
src=
"jiodev.js"
type=
"text/javascript"
></script>
<script
src=
"gadget_global.js"
type=
"text/javascript"
></script>
<script
src=
"domsugar.js"
type=
"text/javascript"
></script>
<script
src=
"gadget_erp5_page_drone_simulator_script_page.js"
type=
"text/javascript"
></script>
</head>
<body>
<form>
<div
data-gadget-url=
"gadget_erp5_form.html"
data-gadget-scope=
"form_view"
data-gadget-sandbox=
"public"
>
</div>
<input
name=
"action_run"
class=
"dialogconfirm"
type=
"submit"
value=
"Run"
style=
"margin-bottom: 20pt;margin-top: 20pt;"
>
<a
data-i18n=
"Storages"
></a>
<!-- for zelenium test common macro -->
<div
class=
"simulator_div"
></div>
<div
data-gadget-url=
"gadget_erp5_form.html"
data-gadget-scope=
"form_view_babylonjs"
data-gadget-sandbox=
"public"
>
</div>
</form>
</body>
</html>
\ No newline at end of file
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/
drone_simulator_gadget
_html.xml
→
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/
ojs_drone_simulator_script_page
_html.xml
View file @
c4269e36
...
...
@@ -73,7 +73,7 @@
</item>
<item>
<key>
<string>
default_reference
</string>
</key>
<value>
<string>
gadget_erp5_page_drone_simulator_
gadget
.html
</string>
</value>
<value>
<string>
gadget_erp5_page_drone_simulator_
script_page
.html
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
...
...
@@ -83,7 +83,7 @@
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
drone_simulator_gadget
_html
</string>
</value>
<value>
<string>
ojs_drone_simulator_script_page
_html
</string>
</value>
</item>
<item>
<key>
<string>
language
</string>
</key>
...
...
@@ -103,7 +103,7 @@
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Drone Simulator
Gadget
</string>
</value>
<value>
<string>
Drone Simulator
Script Page
</string>
</value>
</item>
<item>
<key>
<string>
version
</string>
</key>
...
...
@@ -193,7 +193,7 @@
</tuple>
<state>
<tuple>
<float>
1664
478783.04
</float>
<float>
1664
980878.92
</float>
<string>
UTC
</string>
</tuple>
</state>
...
...
@@ -242,7 +242,7 @@
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
1004.6
96.58996.11161
</string>
</value>
<value>
<string>
1004.6
5523.1234.17
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -260,7 +260,7 @@
</tuple>
<state>
<tuple>
<float>
16
67230263.06
</float>
<float>
16
71032907.71
</float>
<string>
UTC
</string>
</tuple>
</state>
...
...
@@ -321,7 +321,7 @@
</tuple>
<state>
<tuple>
<float>
1664
478763.22
</float>
<float>
1664
980786.17
</float>
<string>
UTC
</string>
</tuple>
</state>
...
...
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_script_page_js.js
0 → 100644
View file @
c4269e36
/*jslint indent: 2, maxlen: 100*/
/*global window, rJS, domsugar, document, Blob*/
(
function
(
window
,
rJS
,
domsugar
,
document
,
Blob
)
{
"
use strict
"
;
//Default values
var
SIMULATION_SPEED
=
200
,
SIMULATION_TIME
=
1500
,
MAX_SPEED
=
7.5
,
//16.666667,
MAX_ACCELERATION
=
1
,
min_lat
=
45.6364
,
max_lat
=
45.65
,
min_lon
=
14.2521
,
max_lon
=
14.2766
,
map_height
=
100
,
start_AMSL
=
595
,
INITIAL_POSITION
=
{
"
latitude
"
:
45.6412
,
"
longitude
"
:
14.2658
,
"
z
"
:
15
},
NUMBER_OF_DRONES
=
2
,
// Non-inputs parameters
DEFAULT_SCRIPT_CONTENT
=
'
var ALTITUDE = 100,
\n
'
+
'
EPSILON = 9,
\n
'
+
'
CHECKPOINT_LIST = [
\n
'
+
'
{
\n
'
+
'
altitude: 585.1806861589965,
\n
'
+
'
latitude: 45.64492790560583,
\n
'
+
'
longitude: 14.25334942966329
\n
'
+
'
},
\n
'
+
'
{
\n
'
+
'
altitude: 589.8802607573035,
\n
'
+
'
latitude: 45.64316335436476,
\n
'
+
'
longitude: 14.26332880184475
\n
'
+
'
},
\n
'
+
'
{
\n
'
+
'
altitude: 608.6648153348965,
\n
'
+
'
latitude: 45.64911917196595,
\n
'
+
'
longitude: 14.26214792790128
\n
'
+
'
},
\n
'
+
'
{
\n
'
+
'
altitude: 606.1448368129072,
\n
'
+
'
latitude: 45.64122685351364,
\n
'
+
'
longitude: 14.26590493128597
\n
'
+
'
},
\n
'
+
'
{
\n
'
+
'
altitude: 630.0829598206344,
\n
'
+
'
latitude: 45.64543355564817,
\n
'
+
'
longitude: 14.27242391207985
\n
'
+
'
},
\n
'
+
'
{
\n
'
+
'
altitude: 616.1839898415284,
\n
'
+
'
latitude: 45.6372792927328,
\n
'
+
'
longitude: 14.27533492411138
\n
'
+
'
},
\n
'
+
'
{
\n
'
+
'
altitude: 598.0603137354178,
\n
'
+
'
latitude: 45.64061299543953,
\n
'
+
'
longitude: 14.26161958465814
\n
'
+
'
},
\n
'
+
'
{
\n
'
+
'
altitude: 607.1243119862851,
\n
'
+
'
latitude: 45.64032340702919,
\n
'
+
'
longitude: 14.2682896662383
\n
'
+
'
}
\n
'
+
'
];
\n
'
+
'
\n
'
+
'
function distance(lat1, lon1, lat2, lon2) {
\n
'
+
'
var R = 6371e3, // meters
\n
'
+
'
la1 = lat1 * Math.PI / 180, // lat, lon in radians
\n
'
+
'
la2 = lat2 * Math.PI / 180,
\n
'
+
'
lo1 = lon1 * Math.PI / 180,
\n
'
+
'
lo2 = lon2 * Math.PI / 180,
\n
'
+
'
haversine_phi = Math.pow(Math.sin((la2 - la1) / 2), 2),
\n
'
+
'
sin_lon = Math.sin((lo2 - lo1) / 2),
\n
'
+
'
h = haversine_phi + Math.cos(la1) * Math.cos(la2) * sin_lon * sin_lon;
\n
'
+
'
return 2 * R * Math.asin(Math.sqrt(h));
\n
'
+
'
}
\n
'
+
'
\n
'
+
'
me.onStart = function () {
\n
'
+
'
me.direction_set = false;
\n
'
+
'
me.next_checkpoint = 0;
\n
'
+
'
};
\n
'
+
'
\n
'
+
'
me.onUpdate = function (timestamp) {
'
+
'
if (!me.direction_set) {
\n
'
+
'
if (me.next_checkpoint < CHECKPOINT_LIST.length) {
\n
'
+
'
me.setTargetCoordinates(
\n
'
+
'
CHECKPOINT_LIST[me.next_checkpoint].latitude,
\n
'
+
'
CHECKPOINT_LIST[me.next_checkpoint].longitude,
\n
'
+
'
CHECKPOINT_LIST[me.next_checkpoint].altitude + ALTITUDE + ALTITUDE * me.id
\n
'
+
'
);
\n
'
+
'
console.log("[DEMO] Going to Checkpoint %d", me.next_checkpoint);
\n
'
+
'
}
\n
'
+
'
me.direction_set = true;
\n
'
+
'
return;
\n
'
+
'
}
\n
'
+
'
if (me.next_checkpoint < CHECKPOINT_LIST.length) {
\n
'
+
'
me.current_position = me.getCurrentPosition();
\n
'
+
'
me.distance = distance(
\n
'
+
'
me.current_position.x,
\n
'
+
'
me.current_position.y,
\n
'
+
'
CHECKPOINT_LIST[me.next_checkpoint].latitude,
\n
'
+
'
CHECKPOINT_LIST[me.next_checkpoint].longitude
\n
'
+
'
);
\n
'
+
'
if (me.distance <= EPSILON) {
\n
'
+
'
console.log("[DEMO] Reached Checkpoint %d", me.next_checkpoint);
\n
'
+
'
me.next_checkpoint += 1;
\n
'
+
'
me.direction_set = false;
\n
'
+
'
}
\n
'
+
'
return;
\n
'
+
'
}
\n
'
+
'
me.exit(0);
\n
'
+
'
};
'
,
DRAW
=
true
,
LOG
=
true
,
LOG_TIME
=
1662.7915426540285
,
DRONE_LIST
=
[],
WIDTH
=
680
,
HEIGHT
=
340
,
LOGIC_FILE_LIST
=
[
'
gadget_erp5_page_drone_simulator_logic.js
'
,
'
gadget_erp5_page_drone_simulator_droneaaailefixe.js
'
,
'
gadget_erp5_page_drone_simulator_dronelogfollower.js
'
];
rJS
(
window
)
/////////////////////////////////////////////////////////////////
// Acquired methods
/////////////////////////////////////////////////////////////////
.
declareAcquiredMethod
(
"
updateHeader
"
,
"
updateHeader
"
)
.
allowPublicAcquisition
(
'
notifySubmit
'
,
function
()
{
return
this
.
triggerSubmit
();
})
.
declareMethod
(
"
triggerSubmit
"
,
function
()
{
return
this
.
element
.
querySelector
(
'
input[type="submit"]
'
).
click
();
})
.
onEvent
(
'
submit
'
,
function
()
{
var
gadget
=
this
;
return
gadget
.
getDeclaredGadget
(
'
form_view
'
)
.
push
(
function
(
form_gadget
)
{
return
form_gadget
.
getContent
();
})
.
push
(
function
(
input
)
{
gadget
.
runGame
(
input
);
});
})
.
declareMethod
(
'
render
'
,
function
render
()
{
var
gadget
=
this
;
return
gadget
.
getDeclaredGadget
(
'
form_view
'
)
.
push
(
function
(
form_gadget
)
{
return
form_gadget
.
render
({
erp5_document
:
{
"
_embedded
"
:
{
"
_view
"
:
{
"
my_simulation_speed
"
:
{
"
description
"
:
""
,
"
title
"
:
"
Simulation Speed
"
,
"
default
"
:
SIMULATION_SPEED
,
"
css_class
"
:
""
,
"
required
"
:
1
,
"
editable
"
:
1
,
"
key
"
:
"
simulation_speed
"
,
"
hidden
"
:
0
,
"
type
"
:
"
StringField
"
},
"
my_simulation_time
"
:
{
"
description
"
:
"
Duration of the simulation (in seconds)
"
,
"
title
"
:
"
Simulation Time
"
,
"
default
"
:
SIMULATION_TIME
,
"
css_class
"
:
""
,
"
required
"
:
1
,
"
editable
"
:
1
,
"
key
"
:
"
simulation_time
"
,
"
hidden
"
:
0
,
"
type
"
:
"
StringField
"
},
"
my_drone_speed
"
:
{
"
description
"
:
""
,
"
title
"
:
"
Drone speed
"
,
"
default
"
:
MAX_SPEED
,
"
css_class
"
:
""
,
"
required
"
:
1
,
"
editable
"
:
1
,
"
key
"
:
"
drone_speed
"
,
"
hidden
"
:
0
,
"
type
"
:
"
StringField
"
},
"
my_drone_acceleration
"
:
{
"
description
"
:
""
,
"
title
"
:
"
Drone Acceleration
"
,
"
default
"
:
MAX_ACCELERATION
,
"
css_class
"
:
""
,
"
required
"
:
1
,
"
editable
"
:
1
,
"
key
"
:
"
drone_acceleration
"
,
"
hidden
"
:
0
,
"
type
"
:
"
StringField
"
},
"
my_minimum_latitud
"
:
{
"
description
"
:
""
,
"
title
"
:
"
Minimum latitude
"
,
"
default
"
:
min_lat
,
"
css_class
"
:
""
,
"
required
"
:
1
,
"
editable
"
:
1
,
"
key
"
:
"
min_lat
"
,
"
hidden
"
:
0
,
"
type
"
:
"
StringField
"
},
"
my_maximum_latitud
"
:
{
"
description
"
:
""
,
"
title
"
:
"
Maximum latitude
"
,
"
default
"
:
max_lat
,
"
css_class
"
:
""
,
"
required
"
:
1
,
"
editable
"
:
1
,
"
key
"
:
"
max_lat
"
,
"
hidden
"
:
0
,
"
type
"
:
"
StringField
"
},
"
my_minimum_longitud
"
:
{
"
description
"
:
""
,
"
title
"
:
"
Minimum longitude
"
,
"
default
"
:
min_lon
,
"
css_class
"
:
""
,
"
required
"
:
1
,
"
editable
"
:
1
,
"
key
"
:
"
min_lon
"
,
"
hidden
"
:
0
,
"
type
"
:
"
StringField
"
},
"
my_maximum_longitud
"
:
{
"
description
"
:
""
,
"
title
"
:
"
Maximum longitude
"
,
"
default
"
:
max_lon
,
"
css_class
"
:
""
,
"
required
"
:
1
,
"
editable
"
:
1
,
"
key
"
:
"
max_lon
"
,
"
hidden
"
:
0
,
"
type
"
:
"
StringField
"
},
"
my_start_AMSL
"
:
{
"
description
"
:
""
,
"
title
"
:
"
Start AMSL
"
,
"
default
"
:
start_AMSL
,
"
css_class
"
:
""
,
"
required
"
:
1
,
"
editable
"
:
1
,
"
key
"
:
"
start_AMSL
"
,
"
hidden
"
:
0
,
"
type
"
:
"
StringField
"
},
"
my_map_height
"
:
{
"
description
"
:
""
,
"
title
"
:
"
Map Height
"
,
"
default
"
:
map_height
,
"
css_class
"
:
""
,
"
required
"
:
1
,
"
editable
"
:
1
,
"
key
"
:
"
map_height
"
,
"
hidden
"
:
0
,
"
type
"
:
"
StringField
"
},
"
my_init_pos_lon
"
:
{
"
description
"
:
""
,
"
title
"
:
"
Initial drone longitude
"
,
"
default
"
:
INITIAL_POSITION
.
longitude
,
"
css_class
"
:
""
,
"
required
"
:
1
,
"
editable
"
:
1
,
"
key
"
:
"
init_pos_lon
"
,
"
hidden
"
:
0
,
"
type
"
:
"
StringField
"
},
"
my_init_pos_lat
"
:
{
"
description
"
:
""
,
"
title
"
:
"
Initial drone latitude
"
,
"
default
"
:
INITIAL_POSITION
.
latitude
,
"
css_class
"
:
""
,
"
required
"
:
1
,
"
editable
"
:
1
,
"
key
"
:
"
init_pos_lat
"
,
"
hidden
"
:
0
,
"
type
"
:
"
StringField
"
},
"
my_init_pos_z
"
:
{
"
description
"
:
""
,
"
title
"
:
"
Initial drone position Z
"
,
"
default
"
:
INITIAL_POSITION
.
z
,
"
css_class
"
:
""
,
"
required
"
:
1
,
"
editable
"
:
1
,
"
key
"
:
"
init_pos_z
"
,
"
hidden
"
:
0
,
"
type
"
:
"
StringField
"
},
"
my_number_of_drones
"
:
{
"
description
"
:
""
,
"
title
"
:
"
Number of drones
"
,
"
default
"
:
NUMBER_OF_DRONES
,
"
css_class
"
:
""
,
"
required
"
:
1
,
"
editable
"
:
1
,
"
key
"
:
"
number_of_drones
"
,
"
hidden
"
:
0
,
"
type
"
:
"
StringField
"
},
"
my_script
"
:
{
"
default
"
:
DEFAULT_SCRIPT_CONTENT
,
"
css_class
"
:
""
,
"
required
"
:
1
,
"
editable
"
:
1
,
"
key
"
:
"
script
"
,
"
hidden
"
:
0
,
"
type
"
:
"
GadgetField
"
,
"
renderjs_extra
"
:
'
{"editor": "codemirror", "maximize": true}
'
,
"
url
"
:
"
gadget_editor.html
"
,
"
sandbox
"
:
"
public
"
}
}},
"
_links
"
:
{
"
type
"
:
{
name
:
""
}
}
},
form_definition
:
{
group_list
:
[[
"
left
"
,
[[
"
my_simulation_speed
"
],
[
"
my_simulation_time
"
],
[
"
my_drone_speed
"
],
[
"
my_drone_acceleration
"
],
[
"
my_number_of_drones
"
],
[
"
my_map_height
"
],
[
"
my_start_AMSL
"
]]
],
[
"
right
"
,
[[
"
my_minimum_latitud
"
],
[
"
my_maximum_latitud
"
],
[
"
my_minimum_longitud
"
],
[
"
my_maximum_longitud
"
],
[
"
my_init_pos_lat
"
],
[
"
my_init_pos_lon
"
],
[
"
my_init_pos_z
"
]]
],
[
"
bottom
"
,
[[
"
my_script
"
]]
]]
}
});
})
.
push
(
function
()
{
return
gadget
.
updateHeader
({
page_title
:
'
Drone Simulator - Edit and run script
'
,
page_icon
:
'
puzzle-piece
'
});
});
})
.
declareJob
(
'
runGame
'
,
function
runGame
(
options
)
{
var
gadget
=
this
,
simulator
,
i
,
fragment
=
gadget
.
element
.
querySelector
(
'
.simulator_div
'
),
game_parameters_json
;
fragment
=
domsugar
(
gadget
.
element
.
querySelector
(
'
.simulator_div
'
),
[
domsugar
(
'
div
'
)]).
firstElementChild
;
DRONE_LIST
=
[];
for
(
i
=
0
;
i
<
options
.
number_of_drones
;
i
+=
1
)
{
DRONE_LIST
[
i
]
=
{
"
id
"
:
i
,
"
type
"
:
"
DroneAaileFixeAPI
"
,
"
script_content
"
:
options
.
script
};
}
game_parameters_json
=
{
"
drone
"
:
{
"
maxAcceleration
"
:
parseFloat
(
options
.
drone_acceleration
),
"
maxSpeed
"
:
parseFloat
(
options
.
drone_speed
)
},
"
gameTime
"
:
parseFloat
(
options
.
simulation_time
),
"
simulation_speed
"
:
parseFloat
(
options
.
simulation_speed
),
"
latency
"
:
{
"
information
"
:
0
,
"
communication
"
:
0
},
"
map
"
:
{
"
min_lat
"
:
parseFloat
(
options
.
min_lat
),
"
max_lat
"
:
parseFloat
(
options
.
max_lat
),
"
min_lon
"
:
parseFloat
(
options
.
min_lon
),
"
max_lon
"
:
parseFloat
(
options
.
max_lon
),
"
height
"
:
parseFloat
(
options
.
map_height
),
"
start_AMSL
"
:
parseFloat
(
options
.
start_AMSL
)
},
"
initialPosition
"
:
{
"
longitude
"
:
parseFloat
(
options
.
init_pos_lon
),
"
latitude
"
:
parseFloat
(
options
.
init_pos_lat
),
"
z
"
:
parseFloat
(
options
.
init_pos_z
)
},
"
draw_flight_path
"
:
DRAW
,
"
temp_flight_path
"
:
true
,
"
log_drone_flight
"
:
LOG
,
"
log_interval_time
"
:
LOG_TIME
,
"
droneList
"
:
DRONE_LIST
};
return
gadget
.
declareGadget
(
"
babylonjs.gadget.html
"
,
{
element
:
fragment
,
scope
:
'
simulator
'
})
.
push
(
function
()
{
return
gadget
.
getDeclaredGadget
(
'
form_view_babylonjs
'
);
})
.
push
(
function
(
form_gadget
)
{
return
form_gadget
.
render
({
erp5_document
:
{
"
_embedded
"
:
{
"
_view
"
:
{
"
my_babylonjs
"
:
{
"
default
"
:
""
,
"
css_class
"
:
""
,
"
required
"
:
0
,
"
editable
"
:
1
,
"
key
"
:
"
babylonjs
"
,
"
hidden
"
:
0
,
"
type
"
:
"
GadgetField
"
,
"
url
"
:
"
babylonjs.gadget.html
"
,
"
sandbox
"
:
"
public
"
,
"
renderjs_extra
"
:
'
{"autorun": false, "width":
'
+
WIDTH
+
'
,
'
+
'
"height":
'
+
HEIGHT
+
'
,
'
+
'
"logic_file_list":
'
+
JSON
.
stringify
(
LOGIC_FILE_LIST
)
+
'
,
'
+
'
"game_parameters":
'
+
JSON
.
stringify
(
game_parameters_json
)
+
'
}
'
}
}},
"
_links
"
:
{
"
type
"
:
{
name
:
""
}
}
},
form_definition
:
{
group_list
:
[[
"
bottom
"
,
[[
"
my_babylonjs
"
]]
]]
}
});
})
.
push
(
function
()
{
return
gadget
.
getDeclaredGadget
(
'
form_view_babylonjs
'
);
})
.
push
(
function
(
form_gadget
)
{
return
form_gadget
.
getContent
();
})
.
push
(
function
(
result
)
{
var
i
,
log_content
,
blob
,
a
,
log
,
div
;
for
(
var
key
in
result
)
{
log_content
=
result
[
key
].
join
(
'
\n
'
).
replaceAll
(
"
,
"
,
"
;
"
);
blob
=
new
Blob
([
log_content
],
{
type
:
'
text/plain
'
});
a
=
domsugar
(
'
a
'
,
{
text
:
'
Download Simulation LOG
'
+
i
,
download
:
'
simulation_log.txt
'
,
href
:
window
.
URL
.
createObjectURL
(
blob
)
});
log
=
domsugar
(
'
textarea
'
,
{
value
:
log_content
});
div
=
domsugar
(
'
div
'
,
[
a
]);
a
.
dataset
.
downloadurl
=
[
'
text/plain
'
,
a
.
download
,
a
.
href
].
join
(
'
:
'
);
document
.
querySelector
(
'
.container
'
).
appendChild
(
div
);
document
.
querySelector
(
'
.container
'
).
appendChild
(
log
);
}
});
});
}(
window
,
rJS
,
domsugar
,
document
,
Blob
));
\ No newline at end of file
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/
drone_simulator_gadget
_js.xml
→
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/
ojs_drone_simulator_script_page
_js.xml
View file @
c4269e36
...
...
@@ -75,7 +75,7 @@
</item>
<item>
<key>
<string>
default_reference
</string>
</key>
<value>
<string>
gadget_erp5_page_drone_simulator_
gadget
.js
</string>
</value>
<value>
<string>
gadget_erp5_page_drone_simulator_
script_page
.js
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
...
...
@@ -85,7 +85,7 @@
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
drone_simulator_gadget
_js
</string>
</value>
<value>
<string>
ojs_drone_simulator_script_page
_js
</string>
</value>
</item>
<item>
<key>
<string>
language
</string>
</key>
...
...
@@ -105,7 +105,7 @@
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Drone Simulator
Gadget
JS
</string>
</value>
<value>
<string>
Drone Simulator
Script Page
JS
</string>
</value>
</item>
<item>
<key>
<string>
version
</string>
</key>
...
...
@@ -195,7 +195,7 @@
</tuple>
<state>
<tuple>
<float>
1664
478735.96
</float>
<float>
1664
980875.32
</float>
<string>
UTC
</string>
</tuple>
</state>
...
...
@@ -244,7 +244,7 @@
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
100
4.22554.1789.1262
</string>
</value>
<value>
<string>
100
5.193.31229.15496
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -262,7 +262,7 @@
</tuple>
<state>
<tuple>
<float>
16
68541098.4
</float>
<float>
16
71108872.26
</float>
<string>
UTC
</string>
</tuple>
</state>
...
...
@@ -323,7 +323,7 @@
</tuple>
<state>
<tuple>
<float>
1664
478663.3
</float>
<float>
1664
980860.44
</float>
<string>
UTC
</string>
</tuple>
</state>
...
...
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_web_manifest_json.json
0 → 100644
View file @
c4269e36
{
"short_name"
:
"Drone Simulator"
,
"name"
:
"OfficeJS Drone Simulator"
,
"description"
:
"Drone simulator to run AI scripts and flight logs"
,
"icons"
:
[{
"src"
:
"drone.png"
,
"sizes"
:
"any"
,
"type"
:
"image/png"
}],
"start_url"
:
"../../"
,
"display"
:
"standalone"
}
\ No newline at end of file
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_page_module/ojs_drone_simulator_web_manifest_json.xml
0 → 100644
View file @
c4269e36
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Web Script"
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>
categories
</string>
</key>
<value>
<tuple>
<string>
classification/collaborative/team
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
content_md5
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
default_reference
</string>
</key>
<value>
<string>
gadget_officejs_drone_simulator.json
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
ojs_drone_simulator_web_manifest_json
</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 Script
</string>
</value>
</item>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Officejs Drone Simulator Web Manifest
</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>
1665150616.46
</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>
1003.57671.25721.5666
</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>
1667236199.25
</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>
<string>
detect_converted_file
</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>
external_processing_state
</string>
</key>
<value>
<string>
converted
</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>
1665150504.11
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_site_module/officejs_drone_simulator.xml
0 → 100644
View file @
c4269e36
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Web Site"
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>
Authenticated
</string>
<string>
Author
</string>
<string>
Manager
</string>
<string>
Member
</string>
<string>
Owner
</string>
<string>
Reviewer
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Add_portal_content_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Add_portal_folders_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Copy_or_Move_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Delete_objects_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>
Authenticated
</string>
<string>
Author
</string>
<string>
Manager
</string>
<string>
Member
</string>
<string>
Owner
</string>
<string>
Reviewer
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
__before_publishing_traverse__
</string>
</key>
<value>
<object>
<klass>
<global
name=
"MultiHook"
module=
"ZPublisher.BeforeTraverse"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_defined_in_class
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
_hookname
</string>
</key>
<value>
<string>
__before_publishing_traverse__
</string>
</value>
</item>
<item>
<key>
<string>
_list
</string>
</key>
<value>
<list>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</list>
</value>
</item>
<item>
<key>
<string>
_prior
</string>
</key>
<value>
<none/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
__before_traverse__
</string>
</key>
<value>
<dictionary>
<item>
<key>
<tuple>
<int>
99
</int>
<string>
ERP5 Web Site/officejs_drone_simulator
</string>
</tuple>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
_count
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
_identity_criterion
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAQ=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
_local_properties
</string>
</key>
<value>
<tuple>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
configuration_latest_document_version
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
string
</string>
</value>
</item>
</dictionary>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
configuration_content_security_policy
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
string
</string>
</value>
</item>
</dictionary>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
configuration_webapp_manifest_url
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
string
</string>
</value>
</item>
</dictionary>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
configuration_latest_version
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
string
</string>
</value>
</item>
</dictionary>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
configuration_cache_file
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
string
</string>
</value>
</item>
</dictionary>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
configuration_redirect_url
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
string
</string>
</value>
</item>
</dictionary>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
configuration_x_frame_options
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
string
</string>
</value>
</item>
</dictionary>
</tuple>
</value>
</item>
<item>
<key>
<string>
_mt_index
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAU=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
_range_criterion
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAY=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
_tree
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAc=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
available_language
</string>
</key>
<value>
<tuple>
<string>
en
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
categories
</string>
</key>
<value>
<tuple>
<string>
aggregate/web_page_module/gadget_officejs_bootloader.html
</string>
<string>
caching_policy/must-revalidate
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
configuration_cache_file
</string>
</key>
<value>
<string>
WebSection_getPrecacheManifest
</string>
</value>
</item>
<item>
<key>
<string>
configuration_content_security_policy
</string>
</key>
<value>
<string>
default-src \'self\'; img-src \'self\' data:; media-src \'self\' blob:; connect-src \'self\' https://content.dropboxapi.com https://api.dropboxapi.com mail.tiolive.com data: *.host.vifib.net *.node.vifib.com *.erp5.net *.nexedi.net https://netdna.bootstrapcdn.com; script-src \'self\' \'unsafe-eval\' \'unsafe-inline\'; font-src \'self\' netdna.bootstrapcdn.com; style-src \'self\' netdna.bootstrapcdn.com \'unsafe-inline\' data:; frame-src \'self\' data:
</string>
</value>
</item>
<item>
<key>
<string>
configuration_latest_document_version
</string>
</key>
<value>
<string>
001
</string>
</value>
</item>
<item>
<key>
<string>
configuration_latest_version
</string>
</key>
<value>
<string>
app
</string>
</value>
</item>
<item>
<key>
<string>
configuration_redirect_url
</string>
</key>
<value>
<string>
app
</string>
</value>
</item>
<item>
<key>
<string>
configuration_webapp_manifest_url
</string>
</key>
<value>
<string>
gadget_officejs_drone_simulator.json
</string>
</value>
</item>
<item>
<key>
<string>
configuration_x_frame_options
</string>
</key>
<value>
<string>
SAMEORIGIN
</string>
</value>
</item>
<item>
<key>
<string>
container_layout
</string>
</key>
<value>
<string>
WebSection_renderOfficeJSApplicationPage
</string>
</value>
</item>
<item>
<key>
<string>
content_layout
</string>
</key>
<value>
<string>
WebSection_renderOfficeJSApplicationPage
</string>
</value>
</item>
<item>
<key>
<string>
custom_render_method_id
</string>
</key>
<value>
<string>
WebSection_renderOfficeJSApplicationPage
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
officejs_drone_simulator
</string>
</value>
</item>
<item>
<key>
<string>
layout_configuration_form_id
</string>
</key>
<value>
<string>
WebSection_viewOfficeJSApplicationPreference
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Web Site
</string>
</value>
</item>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
skin_selection_name
</string>
</key>
<value>
<string>
RJS
</string>
</value>
</item>
<item>
<key>
<string>
static_language_selection
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Office JS Drone Simulator
</string>
</value>
</item>
<item>
<key>
<string>
visible
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
workflow_history
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAg=
</string>
</persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"WebSiteTraversalHook"
module=
"Products.ERP5.Document.WebSite"
/>
</pickle>
<pickle>
<dictionary/>
</pickle>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"Length"
module=
"BTrees.Length"
/>
</pickle>
<pickle>
<int>
0
</int>
</pickle>
</record>
<record
id=
"4"
aka=
"AAAAAAAAAAQ="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"5"
aka=
"AAAAAAAAAAU="
>
<pickle>
<global
name=
"OOBTree"
module=
"BTrees.OOBTree"
/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record
id=
"6"
aka=
"AAAAAAAAAAY="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"7"
aka=
"AAAAAAAAAAc="
>
<pickle>
<global
name=
"OOBTree"
module=
"BTrees.OOBTree"
/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record
id=
"8"
aka=
"AAAAAAAAAAg="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
category_publication_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAk=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
edit_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAo=
</string>
</persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"9"
aka=
"AAAAAAAAAAk="
>
<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
</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>
1666634283.84
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
validation_state
</string>
</key>
<value>
<string>
published
</string>
</value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"10"
aka=
"AAAAAAAAAAo="
>
<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>
1003.56310.48998.8311
</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>
1666634612.83
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_officejs_drone_simulator/PathTemplateItem/web_site_module/officejs_drone_simulator/app.xml
0 → 100644
View file @
c4269e36
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Web Section"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_Add_portal_content_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Add_portal_folders_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Copy_or_Move_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Delete_objects_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>
<string>
Owner
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
__before_publishing_traverse__
</string>
</key>
<value>
<object>
<klass>
<global
name=
"MultiHook"
module=
"ZPublisher.BeforeTraverse"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_defined_in_class
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
_hookname
</string>
</key>
<value>
<string>
__before_publishing_traverse__
</string>
</value>
</item>
<item>
<key>
<string>
_list
</string>
</key>
<value>
<list>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</list>
</value>
</item>
<item>
<key>
<string>
_prior
</string>
</key>
<value>
<none/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
__before_traverse__
</string>
</key>
<value>
<dictionary>
<item>
<key>
<tuple>
<int>
99
</int>
<string>
ERP5 Web Section/app
</string>
</tuple>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
_identity_criterion
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
_local_properties
</string>
</key>
<value>
<tuple>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
configuration_content_security_policy
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
string
</string>
</value>
</item>
</dictionary>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
configuration_panel_gadget_url
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
string
</string>
</value>
</item>
</dictionary>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
configuration_jio_gadget_url
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
string
</string>
</value>
</item>
</dictionary>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
configuration_application_title
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
string
</string>
</value>
</item>
</dictionary>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
configuration_precache_manifest_script_list
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
text
</string>
</value>
</item>
</dictionary>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
configuration_webapp_manifest_url
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
string
</string>
</value>
</item>
</dictionary>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
configuration_x_frame_options
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
string
</string>
</value>
</item>
</dictionary>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
configuration_header_gadget_url
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
string
</string>
</value>
</item>
</dictionary>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
configuration_frontpage_gadget_url
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
string
</string>
</value>
</item>
</dictionary>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
configuration_default_view_action_reference
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
string
</string>
</value>
</item>
</dictionary>
</tuple>
</value>
</item>
<item>
<key>
<string>
_range_criterion
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAQ=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
categories
</string>
</key>
<value>
<tuple>
<string>
caching_policy/must-revalidate
</string>
<string>
aggregate/web_page_module/rjs_gadget_erp5_launcher_html
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
configuration_application_title
</string>
</key>
<value>
<string>
Drone Simulator
</string>
</value>
</item>
<item>
<key>
<string>
configuration_content_security_policy
</string>
</key>
<value>
<string>
default-src \'self\'; img-src \'self\' data:; media-src \'self\' blob:; connect-src \'self\' https://content.dropboxapi.com https://api.dropboxapi.com mail.tiolive.com data: *.host.vifib.net *.node.vifib.com *.erp5.net *.nexedi.net https://netdna.bootstrapcdn.com; script-src \'self\' \'unsafe-eval\' \'unsafe-inline\'; font-src \'self\' netdna.bootstrapcdn.com; style-src \'self\' netdna.bootstrapcdn.com \'unsafe-inline\' data:; frame-src \'self\' data:
</string>
</value>
</item>
<item>
<key>
<string>
configuration_default_view_action_reference
</string>
</key>
<value>
<string>
jio_view
</string>
</value>
</item>
<item>
<key>
<string>
configuration_frontpage_gadget_url
</string>
</key>
<value>
<string>
drone_simulator_script_page
</string>
</value>
</item>
<item>
<key>
<string>
configuration_header_gadget_url
</string>
</key>
<value>
<string>
gadget_erp5_header.html
</string>
</value>
</item>
<item>
<key>
<string>
configuration_jio_gadget_url
</string>
</key>
<value>
<string>
gadget_ojs_local_jio.html
</string>
</value>
</item>
<item>
<key>
<string>
configuration_panel_gadget_url
</string>
</key>
<value>
<string>
gadget_erp5_panel_drone_simulator.html
</string>
</value>
</item>
<item>
<key>
<string>
configuration_precache_manifest_script_list
</string>
</key>
<value>
<string>
WebSection_getOfficeJsPrecacheManifestList\n
WebSection_getCodeMirrorPrecacheManifestList\n
WebSection_getBabylonjsPrecacheManifestList\n
WebSection_getDroneSimulatorPrecacheManifestList
</string>
</value>
</item>
<item>
<key>
<string>
configuration_webapp_manifest_url
</string>
</key>
<value>
<string>
gadget_officejs_drone_simulator.json
</string>
</value>
</item>
<item>
<key>
<string>
configuration_x_frame_options
</string>
</key>
<value>
<string>
SAMEORIGIN
</string>
</value>
</item>
<item>
<key>
<string>
container_layout
</string>
</key>
<value>
<string>
WebSection_renderDefaultPageAsGadget
</string>
</value>
</item>
<item>
<key>
<string>
content_layout
</string>
</key>
<value>
<string>
WebSection_renderDefaultPageAsGadget
</string>
</value>
</item>
<item>
<key>
<string>
custom_render_method_id
</string>
</key>
<value>
<string>
WebSection_renderDefaultPageAsGadget
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
empty_criterion_valid
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
app
</string>
</value>
</item>
<item>
<key>
<string>
layout_configuration_form_id
</string>
</key>
<value>
<string>
WebSection_viewRenderJSPreference
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Web Section
</string>
</value>
</item>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
skin_selection_name
</string>
</key>
<value>
<string>
RJS
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Drone Simulator App
</string>
</value>
</item>
<item>
<key>
<string>
visible
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
workflow_history
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAU=
</string>
</persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"WebSectionTraversalHook"
module=
"Products.ERP5.Document.WebSection"
/>
</pickle>
<pickle>
<dictionary/>
</pickle>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"4"
aka=
"AAAAAAAAAAQ="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"5"
aka=
"AAAAAAAAAAU="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
category_publication_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAY=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
edit_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAc=
</string>
</persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"6"
aka=
"AAAAAAAAAAY="
>
<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>
time
</string>
</key>
<value>
<object>
<klass>
<global
name=
"DateTime"
module=
"DateTime.DateTime"
/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>
1666634324.85
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
validation_state
</string>
</key>
<value>
<string>
embedded
</string>
</value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"7"
aka=
"AAAAAAAAAAc="
>
<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>
1005.2930.45130.17817
</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>
1671209780.63
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_officejs_drone_simulator/SkinTemplateItem/portal_skins/erp5_officejs_drone_simulator.xml
0 → 100644
View file @
c4269e36
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Folder"
module=
"OFS.Folder"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_local_properties
</string>
</key>
<value>
<tuple>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
business_template_skin_layer_priority
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
float
</string>
</value>
</item>
</dictionary>
</tuple>
</value>
</item>
<item>
<key>
<string>
_objects
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
business_template_skin_layer_priority
</string>
</key>
<value>
<float>
42.0
</float>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
erp5_officejs_drone_simulator
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_officejs_drone_simulator/SkinTemplateItem/portal_skins/erp5_officejs_drone_simulator/WebSection_getDroneSimulatorPrecacheManifestList.py
0 → 100644
View file @
c4269e36
url_list
=
[
"gadget_erp5_page_drone_simulator_logic.js"
,
"gadget_erp5_page_drone_simulator_script_page.html"
,
"gadget_erp5_page_drone_simulator_script_page.js"
,
"gadget_erp5_page_drone_simulator_log_page.html"
,
"gadget_erp5_page_drone_simulator_log_page.js"
,
"gadget_erp5_panel_drone_simulator.html"
,
"gadget_erp5_panel_drone_simulator.js"
,
"gadget_erp5_page_drone_simulator_droneaaailefixe.js"
,
"gadget_erp5_page_drone_simulator_dronelogfollower.js"
,
"drone.png"
,
"gadget_officejs_drone_simulator.json"
,
"assets/map/terrain.jpg"
,
"assets/map/map.babylon"
,
"assets/drone/drone.babylon"
,
"assets/drone/drone_bleu.jpg"
,
"assets/drone/drone_bleu_old.jpg"
,
"assets/drone/drone_rouge.jpg"
,
"assets/drone/drone_rouge_old.jpg"
,
"assets/skybox/sky_nx.jpg"
,
"assets/skybox/sky_ny.jpg"
,
"assets/skybox/sky_nz.jpg"
,
"assets/skybox/sky_px.jpg"
,
"assets/skybox/sky_py.jpg"
,
"assets/skybox/sky_pz.jpg"
]
return
url_list
bt5/erp5_officejs_drone_simulator/SkinTemplateItem/portal_skins/erp5_officejs_drone_simulator/WebSection_getDroneSimulatorPrecacheManifestList.xml
0 → 100644
View file @
c4269e36
<?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>
REQUEST=None
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
WebSection_getDroneSimulatorPrecacheManifestList
</string>
</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