Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
slapos.core
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Thomas Leymonerie
slapos.core
Commits
78114c17
Commit
78114c17
authored
Dec 24, 2018
by
Rafael Monnerat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
slapos_jio: Update slapos gadget header with erp5 gadget header updates
Update the fork of slapos with ERP5 Code.
parent
9fec08b4
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
125 additions
and
85 deletions
+125
-85
master/bt5/slapos_jio/PathTemplateItem/web_page_module/rjs_gadget_slapos_header_html.html
...teItem/web_page_module/rjs_gadget_slapos_header_html.html
+10
-24
master/bt5/slapos_jio/PathTemplateItem/web_page_module/rjs_gadget_slapos_header_html.xml
...ateItem/web_page_module/rjs_gadget_slapos_header_html.xml
+2
-2
master/bt5/slapos_jio/PathTemplateItem/web_page_module/rjs_gadget_slapos_header_js.js
...mplateItem/web_page_module/rjs_gadget_slapos_header_js.js
+111
-57
master/bt5/slapos_jio/PathTemplateItem/web_page_module/rjs_gadget_slapos_header_js.xml
...plateItem/web_page_module/rjs_gadget_slapos_header_js.xml
+2
-2
No files found.
master/bt5/slapos_jio/PathTemplateItem/web_page_module/rjs_gadget_slapos_header_html.html
View file @
78114c17
...
...
@@ -23,56 +23,42 @@
data-i18n=Previous
data-i18n=Next
data-i18n=Loading
data-i18n=Fast Input
data-i18n=Language
-->
<meta
http-equiv=
"Content-type"
content=
"text/html; charset=utf-8"
/>
<meta
name=
"viewport"
content=
"width=device-width
, user-scalable=no
"
/>
<meta
name=
"viewport"
content=
"width=device-width"
/>
<title>
ERP5 Header
</title>
<link
rel=
"http://www.renderjs.org/rel/interface"
href=
"interface_header.html"
>
<!-- renderjs -->
<script
src=
"rsvp.js"
type=
"text/javascript"
></script>
<script
src=
"renderjs.js"
type=
"text/javascript"
></script>
<script
src=
"handlebars.js"
type=
"text/javascript"
></script>
<script
src=
"gadget_global.js"
type=
"text/javascript"
></script>
<!-- custom script -->
<script
src=
"gadget_slapos_header.js"
type=
"text/javascript"
></script>
<script
id=
"header-title-link-template"
type=
"text/x-handlebars-template"
>
<
a
data
-
i18n
=
"
{{title}}
"
class
=
"
ui-btn ui-btn-icon-left ui-icon-{{icon}}
"
href
=
"
{{url}}
"
accesskey
=
"
u
"
>
{{
title
}}
<
/a>
</script>
<script
id=
"header-title-template"
type=
"text/x-handlebars-template"
>
<
span
data
-
i18n
=
"
{{title}}
"
>
{{
title
}}
<
/span>
</script>
<script
id=
"header-link-template"
type=
"text/x-handlebars-template"
>
<
a
role
=
"
button
"
data
-
i18n
=
"
{{title}}
"
href
=
"
{{url}}
"
class
=
"
responsive ui-btn ui-icon-{{icon}} ui-btn-icon-left ui-first-child ui-last-child {{class}}
"
>
{{
title
}}
<
/a
>
</script>
<script
id=
"header-button-template"
type=
"text/x-handlebars-template"
>
<
form
><
button
name
=
'
{{name}}
'
data
-
i18n
=
"
{{title}}
"
type
=
'
submit
'
class
=
'
responsive ui-btn ui-icon-{{icon}} ui-btn-icon-left ui-first-child ui-last-child {{class}}
'
>
{{
title
}}
<
/button></
form
>
</script>
<script
id=
"sub-header-template"
type=
"text/x-handlebars-template"
>
{{
#
each
sub_header_list
}}
<
li
class
=
"
ui-block-{{block}}
"
><
a
href
=
"
{{url}}
"
data
-
i18n
=
"
{{title}}
"
class
=
"
ui-btn ui-btn-icon-top ui-icon-{{icon}} {{class}}
"
>
{{
title
}}
<
/a></
li
>
{{
/
each
}}
</script>
</head>
<body>
<div
data-role=
"header"
data-theme=
"a"
class=
"ui-header ui-bar-a"
data-position=
"fixed"
data-tap-toggle=
"false"
>
<div
class=
"ui-
controlgroup ui-controlgroup-horizontal ui-
btn-left"
>
<div
class=
"ui-btn-left"
>
<div
class=
"ui-controlgroup-controls"
>
</div>
</div>
<h1
class=
"ui-title"
></h1>
<h1></h1>
<div
class=
"ui-
controlgroup ui-controlgroup-horizontal ui-
btn-right"
>
<div
class=
"ui-btn-right"
>
<div
class=
"ui-controlgroup-controls"
>
</div>
</div>
<div
class=
"ui-
navbar ui-subheader ui-grid-container ui-body-a"
role=
"navigation
"
>
<ul
class=
"ui-grid-d"
>
<div
class=
"ui-
subheader
"
>
<ul>
</ul>
</div>
</div>
...
...
master/bt5/slapos_jio/PathTemplateItem/web_page_module/rjs_gadget_slapos_header_html.xml
View file @
78114c17
...
...
@@ -234,7 +234,7 @@
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
62.12897.5231.51353
</string>
</value>
<value>
<string>
9
72.32024.53732.34406
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -252,7 +252,7 @@
</tuple>
<state>
<tuple>
<float>
15
05834962.78
</float>
<float>
15
45648648.56
</float>
<string>
UTC
</string>
</tuple>
</state>
...
...
master/bt5/slapos_jio/PathTemplateItem/web_page_module/rjs_gadget_slapos_header_js.js
View file @
78114c17
/*jslint nomen: true, indent: 2, maxerr: 3 */
/*global window, rJS,
Handlebars,
document, RSVP */
(
function
(
window
,
rJS
,
Handlebars
,
document
,
RSVP
)
{
/*global window, rJS, document, RSVP */
(
function
(
window
,
rJS
,
document
,
RSVP
)
{
"
use strict
"
;
/////////////////////////////////////////////////////////////////
// Handlebars
/////////////////////////////////////////////////////////////////
// Precompile the templates while loading the first gadget instance
var
gadget_klass
=
rJS
(
window
),
template_element
=
gadget_klass
.
__template_element
,
header_title_template
=
Handlebars
.
compile
(
template_element
.
getElementById
(
"
header-title-template
"
)
.
innerHTML
),
header_title_link_template
=
Handlebars
.
compile
(
template_element
.
getElementById
(
"
header-title-link-template
"
)
.
innerHTML
),
sub_header_template
=
Handlebars
.
compile
(
template_element
.
getElementById
(
"
sub-header-template
"
)
.
innerHTML
),
header_button_template
=
Handlebars
.
compile
(
template_element
.
getElementById
(
"
header-button-template
"
)
.
innerHTML
),
header_link_template
=
Handlebars
.
compile
(
template_element
.
getElementById
(
"
header-link-template
"
)
.
innerHTML
),
possible_left_button_list
=
[
var
possible_left_button_list
=
[
[
'
panel_action
'
,
'
Menu
'
,
'
bars
'
,
'
panel
'
]
],
possible_main_link_list
=
[
...
...
@@ -39,7 +16,8 @@
possible_right_link_list
=
[
[
'
edit_url
'
,
'
Editable
'
,
'
pencil
'
],
[
'
view_url
'
,
'
Viewable
'
,
'
eye
'
],
[
'
right_url
'
,
'
New
'
,
'
plus
'
]
[
'
right_url
'
,
'
New
'
,
'
plus
'
],
[
'
language_url
'
,
'
Language
'
,
'
flag
'
]
],
possible_right_button_list
=
[
[
'
save_action
'
,
'
Save
'
,
'
check
'
,
'
submit
'
],
...
...
@@ -50,15 +28,16 @@
possible_sub_header_list
=
[
[
'
tab_url
'
,
'
Views
'
,
'
eye
'
],
[
'
jump_url
'
,
'
Jump
'
,
'
plane
'
],
[
'
delete_url
'
,
'
Delete
'
,
'
times
'
],
[
'
export_url
'
,
'
Export
'
,
'
share-square-o
'
],
[
'
actions_url
'
,
'
Actions
'
,
'
cogs
'
],
[
'
cut_url
'
,
'
Cut
'
,
'
scissors
'
],
[
'
add_url
'
,
'
Add
'
,
'
plus
'
],
[
'
export_url
'
,
'
Export
'
,
'
share-square-o
'
],
[
'
delete_url
'
,
'
Delete
'
,
'
times
'
],
[
'
cut_url
'
,
'
Cut
'
,
'
scissors
'
],
[
'
fast_input_url
'
,
'
Fast Input
'
,
'
magic
'
],
[
'
previous_url
'
,
'
Previous
'
,
'
carat-l
'
],
[
'
next_url
'
,
'
Next
'
,
'
carat-r
'
],
[
'
edit_content
'
,
'
Content
'
,
'
file-text
'
],
[
'
edit_properties
'
,
'
Properties
'
,
'
info
'
],
[
'
upload_url
'
,
'
Upload
'
,
'
upload
'
],
[
'
download_url
'
,
'
Download
'
,
'
download
'
],
// Include SlapOS specific items
[
'
ticket_url
'
,
'
Add Ticket
'
,
'
ticket
'
],
[
'
token_url
'
,
'
Token
'
,
'
key
'
],
...
...
@@ -73,9 +52,40 @@
[
'
transfer_url
'
,
'
Transfer
'
,
'
exchange
'
],
[
'
accept_url
'
,
'
Accept
'
,
'
check-circle
'
],
[
'
reject_url
'
,
'
Reject
'
,
'
ban
'
]
];
],
header_button_template
=
function
(
data
)
{
// <form><button name='{{name}}' data-i18n="{{title}}" type='submit' class='ui-icon-{{icon}} ui-btn-icon-left {{class}}'>{{title}}</button></form>
var
form_element
=
document
.
createElement
(
'
form
'
),
button_element
=
document
.
createElement
(
'
button
'
);
gadget_klass
button_element
.
setAttribute
(
'
name
'
,
data
.
name
);
button_element
.
setAttribute
(
'
data-i18n
'
,
data
.
title
);
button_element
.
setAttribute
(
'
type
'
,
'
submit
'
);
button_element
.
setAttribute
(
'
class
'
,
'
ui-icon-
'
+
data
.
icon
+
'
ui-btn-icon-left
'
+
data
.
class
);
form_element
.
appendChild
(
button_element
);
return
form_element
.
outerHTML
;
},
sub_header_template
=
function
(
data
)
{
// {{#each sub_header_list}}
// <li><a href="{{url}}" data-i18n="{{title}}" class="ui-btn-icon-top ui-icon-{{icon}} {{class}}">{{title}}</a></li>
// {{/each}}
var
fragment
=
document
.
createElement
(
'
div
'
),
li_element
,
a_element
,
i
;
for
(
i
=
0
;
i
<
data
.
sub_header_list
.
length
;
i
+=
1
)
{
li_element
=
document
.
createElement
(
'
li
'
);
a_element
=
document
.
createElement
(
'
a
'
);
a_element
.
setAttribute
(
'
href
'
,
data
.
sub_header_list
[
i
].
url
);
a_element
.
setAttribute
(
'
data-i18n
'
,
data
.
sub_header_list
[
i
].
title
);
a_element
.
setAttribute
(
'
class
'
,
'
ui-btn-icon-top ui-icon-
'
+
data
.
sub_header_list
[
i
].
icon
+
'
'
+
data
.
sub_header_list
[
i
].
class
);
li_element
.
appendChild
(
a_element
);
fragment
.
appendChild
(
li_element
);
}
return
fragment
.
innerHTML
;
};
rJS
(
window
)
.
setState
({
loaded
:
false
,
modified
:
false
,
...
...
@@ -89,7 +99,7 @@
// ready
/////////////////////////////////////////////////////////////////
// Init local properties
.
ready
(
function
()
{
.
ready
(
function
ready
()
{
this
.
props
=
{
element_list
:
[
this
.
element
.
querySelector
(
"
h1
"
),
...
...
@@ -106,50 +116,57 @@
.
declareAcquiredMethod
(
"
translateHtml
"
,
"
translateHtml
"
)
.
declareAcquiredMethod
(
"
triggerSubmit
"
,
"
triggerSubmit
"
)
.
declareAcquiredMethod
(
"
triggerPanel
"
,
"
triggerPanel
"
)
.
declareAcquiredMethod
(
"
triggerMaximize
"
,
"
triggerMaximize
"
)
/////////////////////////////////////////////////////////////////
// declared methods
/////////////////////////////////////////////////////////////////
.
declareMethod
(
'
notifyLoaded
'
,
function
()
{
.
declareMethod
(
'
notifyLoaded
'
,
function
notifyLoaded
()
{
return
this
.
changeState
({
loaded
:
true
});
})
.
declareMethod
(
'
notifyLoading
'
,
function
()
{
.
declareMethod
(
'
notifyLoading
'
,
function
notifyLoading
()
{
return
this
.
changeState
({
loaded
:
false
});
})
.
declareMethod
(
'
notifySubmitted
'
,
function
()
{
.
declareMethod
(
'
notifySubmitted
'
,
function
notifySubmitted
()
{
return
this
.
changeState
({
submitted
:
true
,
// Change modify here, to allow user to redo some modification and being correctly notified
modified
:
false
});
})
.
declareMethod
(
'
notifySubmitting
'
,
function
()
{
.
declareMethod
(
'
notifySubmitting
'
,
function
notifySubmitting
()
{
return
this
.
changeState
({
submitted
:
false
});
})
.
declareMethod
(
'
notifyError
'
,
function
()
{
.
declareMethod
(
'
notifyError
'
,
function
notifyError
()
{
return
this
.
changeState
({
loaded
:
true
,
submitted
:
true
,
error
:
true
});
})
.
declareMethod
(
'
notifyChange
'
,
function
()
{
.
declareMethod
(
'
notifyChange
'
,
function
notifyChange
()
{
return
this
.
changeState
({
modified
:
true
});
})
.
declareMethod
(
'
setButtonTitle
'
,
function
setButtonTitle
(
options
)
{
return
this
.
changeState
({
title_button_icon
:
options
.
icon
,
title_button_name
:
options
.
action
});
})
/*
.declareMethod('notifyUpdate', function () {
return this.render(this.stats.options);
})
*/
.
declareMethod
(
'
render
'
,
function
(
options
)
{
.
declareMethod
(
'
render
'
,
function
render
(
options
)
{
var
state
=
{
error
:
false
,
title_text
:
''
,
...
...
@@ -174,15 +191,16 @@
if
(
options
.
hasOwnProperty
(
"
page_title
"
))
{
state
.
title_text
=
options
.
page_title
;
}
if
(
options
.
hasOwnProperty
(
"
page_icon
"
))
{
state
.
title_icon
=
options
.
page_icon
;
}
for
(
i
=
0
;
i
<
possible_main_link_list
.
length
;
i
+=
1
)
{
if
(
options
.
hasOwnProperty
(
possible_main_link_list
[
i
][
0
]))
{
state
.
title_icon
=
possible_main_link_list
[
i
][
2
];
state
.
title_url
=
options
[
possible_main_link_list
[
i
][
0
]];
}
}
// Surcharge icon if the page want it
if
(
options
.
hasOwnProperty
(
"
page_icon
"
))
{
state
.
title_icon
=
options
.
page_icon
;
}
// Left button
for
(
i
=
0
;
i
<
possible_left_button_list
.
length
;
i
+=
1
)
{
...
...
@@ -196,9 +214,14 @@
// Handle right link
for
(
i
=
0
;
i
<
possible_right_link_list
.
length
;
i
+=
1
)
{
if
(
options
.
hasOwnProperty
(
possible_right_link_list
[
i
][
0
]))
{
klass
=
""
;
if
(
options
.
extra_class
&&
options
.
extra_class
.
hasOwnProperty
(
possible_right_link_list
[
i
][
0
]))
{
klass
=
options
.
extra_class
[
possible_right_link_list
[
i
][
0
]];
}
else
{
klass
=
""
;
}
if
(
!
options
[
possible_right_link_list
[
i
][
0
]])
{
klass
=
"
ui-disabled
"
;
klass
+=
"
ui-disabled
"
;
}
state
.
right_link_title
=
possible_right_link_list
[
i
][
1
];
state
.
right_link_icon
=
possible_right_link_list
[
i
][
2
];
...
...
@@ -234,21 +257,24 @@
return
this
.
changeState
(
state
);
})
.
onStateChange
(
function
(
modification_dict
)
{
.
onStateChange
(
function
onStateChange
(
modification_dict
)
{
var
gadget
=
this
,
right_link
,
right_button
,
default_title_icon
=
""
,
default_right_icon
=
""
,
title_link
,
promise_list
=
[];
title_button
,
promise_list
=
[],
tmp_element
;
// Main title
if
(
modification_dict
.
hasOwnProperty
(
'
error
'
)
||
modification_dict
.
hasOwnProperty
(
'
loaded
'
)
||
modification_dict
.
hasOwnProperty
(
'
submitted
'
)
||
modification_dict
.
hasOwnProperty
(
'
title_text
'
)
||
modification_dict
.
hasOwnProperty
(
'
title_icon
'
)
||
modification_dict
.
hasOwnProperty
(
'
title_url
'
))
{
modification_dict
.
hasOwnProperty
(
'
title_url
'
)
||
modification_dict
.
hasOwnProperty
(
'
title_button_name
'
))
{
if
(
gadget
.
state
.
error
)
{
default_title_icon
=
"
exclamation
"
;
}
else
if
(
!
gadget
.
state
.
loaded
)
{
...
...
@@ -257,16 +283,36 @@
default_title_icon
=
"
spinner
"
;
}
// Updating globally the page title. Does not follow RenderJS philosophy, but, it is enough for now
document
.
title
=
gadget
.
state
.
title_text
;
if
(
modification_dict
.
hasOwnProperty
(
'
title_text
'
))
{
// Be careful, this is CPU costly
document
.
title
=
gadget
.
state
.
title_text
;
}
title_link
=
{
title
:
gadget
.
state
.
title_text
,
icon
:
default_title_icon
||
gadget
.
state
.
title_icon
,
url
:
gadget
.
state
.
title_url
};
if
(
title_link
.
url
===
undefined
)
{
promise_list
.
push
(
gadget
.
translateHtml
(
header_title_template
(
title_link
)));
if
(
gadget
.
state
.
title_button_name
)
{
title_button
=
{
title
:
gadget
.
state
.
title_text
,
icon
:
default_title_icon
||
gadget
.
state
.
title_button_icon
,
name
:
gadget
.
state
.
title_button_name
};
promise_list
.
push
(
gadget
.
translateHtml
(
header_button_template
(
title_button
)));
}
else
if
(
title_link
.
url
===
undefined
)
{
// <span data-i18n="{{title}}" class="ui-btn-icon-left ui-icon-{{icon}}" >{{title}}</span>
tmp_element
=
document
.
createElement
(
'
span
'
);
tmp_element
.
setAttribute
(
'
data-i18n
'
,
title_link
.
title
);
tmp_element
.
setAttribute
(
'
class
'
,
'
ui-btn-icon-left ui-icon-
'
+
title_link
.
icon
);
promise_list
.
push
(
gadget
.
translateHtml
(
tmp_element
.
outerHTML
));
}
else
{
promise_list
.
push
(
gadget
.
translateHtml
(
header_title_link_template
(
title_link
)));
// <a data-i18n="{{title}}" class="ui-btn-icon-left ui-icon-{{icon}}" href="{{url}}" accesskey="u">{{title}}</a>
tmp_element
=
document
.
createElement
(
'
a
'
);
tmp_element
.
setAttribute
(
'
data-i18n
'
,
title_link
.
title
);
tmp_element
.
setAttribute
(
'
class
'
,
'
ui-btn-icon-left ui-icon-
'
+
title_link
.
icon
);
tmp_element
.
setAttribute
(
'
href
'
,
title_link
.
url
);
tmp_element
.
setAttribute
(
'
accesskey
'
,
'
u
'
);
promise_list
.
push
(
gadget
.
translateHtml
(
tmp_element
.
outerHTML
));
}
}
else
{
promise_list
.
push
(
null
);
...
...
@@ -324,7 +370,12 @@
if
(
right_button
!==
undefined
)
{
promise_list
.
push
(
gadget
.
translateHtml
(
header_button_template
(
right_button
)));
}
else
if
(
right_link
!==
undefined
)
{
promise_list
.
push
(
gadget
.
translateHtml
(
header_link_template
(
right_link
)));
// <a data-i18n="{{title}}" href="{{url}}" class="ui-icon-{{icon}} ui-btn-icon-left {{class}}">{{title}}</a>
tmp_element
=
document
.
createElement
(
'
a
'
);
tmp_element
.
setAttribute
(
'
data-i18n
'
,
right_link
.
title
);
tmp_element
.
setAttribute
(
'
class
'
,
'
ui-icon-
'
+
right_link
.
icon
+
'
ui-btn-icon-left
'
+
right_link
.
class
);
tmp_element
.
setAttribute
(
'
href
'
,
right_link
.
url
);
promise_list
.
push
(
gadget
.
translateHtml
(
tmp_element
.
outerHTML
));
}
else
{
promise_list
.
push
(
""
);
}
...
...
@@ -358,7 +409,7 @@
//////////////////////////////////////////////
// handle button submit
//////////////////////////////////////////////
.
onEvent
(
'
submit
'
,
function
(
evt
)
{
.
onEvent
(
'
submit
'
,
function
submit
(
evt
)
{
var
name
=
evt
.
target
[
0
].
getAttribute
(
"
name
"
);
if
(
name
===
"
panel
"
)
{
return
this
.
triggerPanel
();
...
...
@@ -366,7 +417,10 @@
if
(
name
===
"
submit
"
)
{
return
this
.
triggerSubmit
();
}
if
(
name
===
"
maximize
"
)
{
return
this
.
triggerMaximize
();
}
throw
new
Error
(
"
Unsupported button
"
+
name
);
});
}(
window
,
rJS
,
Handlebars
,
document
,
RSVP
));
\ No newline at end of file
}(
window
,
rJS
,
document
,
RSVP
));
\ No newline at end of file
master/bt5/slapos_jio/PathTemplateItem/web_page_module/rjs_gadget_slapos_header_js.xml
View file @
78114c17
...
...
@@ -230,7 +230,7 @@
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
69.11849.26888.59392
</string>
</value>
<value>
<string>
9
72.32024.53732.34406
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -248,7 +248,7 @@
</tuple>
<state>
<tuple>
<float>
15
33047690.5
2
</float>
<float>
15
45649159.3
2
</float>
<string>
UTC
</string>
</tuple>
</state>
...
...
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