Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
E
ecommerce-ui
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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
ecommerce-ui
Commits
bb1bd1cc
Commit
bb1bd1cc
authored
Apr 24, 2014
by
Sven Franck
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
app: inherit dynamic state down the element tree
parent
846eec2b
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
39 additions
and
8 deletions
+39
-8
js/erp5_loader.js
js/erp5_loader.js
+39
-8
No files found.
js/erp5_loader.js
View file @
bb1bd1cc
...
...
@@ -3662,7 +3662,7 @@
delete
flux
.
_temp
[
set_flux
];
}
else
{
// translation!?
setter
.
direct
.
value
=
setter
.
logic
.
noFlux
;
setter
.
direct
.
value
=
logic
.
noFlux
;
}
}
}
...
...
@@ -3674,15 +3674,24 @@
if
(
!!
item
.
direct
)
{
setValue
(
item
);
}
else
if
(
!!
item
.
generate
)
{
// we must declare wrap for non-form elements here, because they
//
NOTE:
we must declare wrap for non-form elements here, because they
// don't belong into any widget
// NOTE: persist if set!
container
=
getHelp
({
"
wrap
"
:
"
section
"
,
"
persist
"
:
item
.
property_dict
.
persist
,
"
class_list
"
:
"
span_
"
+
(
item
.
property_dict
.
wrap
||
1
)
});
container
.
children
.
push
(
item
);
}
else
{
helper
=
getHelp
({
"
wrap
"
:
"
fragment
"
});
// NOTE: since we are creating 2 levels in the DOM tree (fragment &
// sections), the normal inheritance will break, because a wrapper
// will be missing state. Therefore we add the state manually here,
// TODO: don't do 2 level stuff.... and complain later when debugging
helper
=
getHelp
({
"
wrap
"
:
"
fragment
"
,
"
state
"
:
spec
.
wrapper
.
property_dict
.
state
});
}
// nothing to do, pass back directly
...
...
@@ -3998,6 +4007,8 @@
.
fail
(
app
.
util
.
error
);
}
// NOTE: must set property_dict on the controlbar in order to inherit
// dynamic data to the contained field elements
section_list
[
j
]
=
RSVP
.
all
(
field_list
)
.
then
(
function
(
field_response_list
)
{
section
=
getHelp
({
...
...
@@ -6250,12 +6261,14 @@
* @return {object} response object/promise
**/
// TODO: refactor... appocalyptic
// TODO: determine what should be inherit and make inherit object, that
// will be passed down the rendering tree
app
.
content
.
make
=
function
(
reply
)
{
var
pass
,
method
,
type
,
kids
,
promise_list
,
route
,
search
,
search_id
,
kid
,
is_html
,
is_dynamic
,
is_id
,
i
,
j
,
k
,
last
,
encoded
,
wrapper
,
active
,
selector
,
update_target
,
target
,
widget
,
quirk_dict
,
generator
,
pointer_results
,
data_total_rows
,
is_parameter
,
param_len
,
parameter
,
no_item
,
dyno
,
container
;
param_len
,
parameter
,
no_item
,
dyno
,
container
,
has_props
,
widget_dyno
;
pass
=
reply
.
pass
;
pass
.
config_dict
=
pass
.
config_dict
||
{};
...
...
@@ -6347,7 +6360,6 @@
// make properties available to children in need
wrapper
.
property_dict
=
quirk_dict
;
// no records returned, no_show set below on dyno
// TODO: find better way to set dynamic flag
if
(
quirk_dict
.
no_show
)
{
...
...
@@ -6366,13 +6378,18 @@
// TODO: 10 if-else...
if
(
!
pass
.
skip
)
{
// =====================================================================
// NOTE: store state on wrapper property_dict to inherit!
wrapper
.
property_dict
.
state
=
pass
.
state
// =====================================================================
// inherit item id, so it's available in form as indentifier
if
(
pointer_results
.
data
.
total_rows
===
1
)
{
quirk_dict
.
data
=
{
"
_id
"
:
pointer_results
.
data
.
rows
[
0
].
doc
.
_id
};
}
// no items, need no show! (default to empty {} if none provided
if
(
pointer_results
.
data
.
total_rows
===
0
)
{
if
(
quirk_dict
.
allow_new
)
{
if
(
quirk_dict
.
allow_new
||
quirk_dict
.
force_new
)
{
pointer_results
=
{
"
data
"
:
{
"
total_rows
"
:
1
,
"
rows
"
:
[{
"
doc
"
:
{}}]}};
}
else
{
quirk_dict
.
no_show
=
quirk_dict
.
no_items
||
{};
...
...
@@ -6401,6 +6418,7 @@
});
container
.
appendChild
(
dyno
);
}
wrapper
.
fragment
.
appendChild
(
container
||
dyno
);
wrapper
.
child_selector
=
wrapper
.
fragment
.
querySelector
(
"
#
"
+
quirk_dict
.
reference
...
...
@@ -6504,7 +6522,7 @@
if
(
quirk_dict
.
direct_map
)
{
kid
.
property_dict
.
data
=
pointer_results
.
data
.
rows
[
0
];
//
set "grant-children", which will be mapped into ?
//
NOTE: we may be setting on a wrapper!
}
else
{
kid
.
property_dict
=
util
.
mergeObject
(
kid
.
property_dict
,
quirk_dict
);
kid
.
children
=
util
.
inherit
(
...
...
@@ -6514,10 +6532,22 @@
}
}
// setParam(s)
// ===================================================================
is_parameter
=
(
kid
.
logic
||
{}).
setParam
;
has_props
=
kid
.
property_dict
;
// inherit dynamic state to all children with property_dict
if
(
has_props
&&
wrapper
.
property_dict
.
state
)
{
kid
.
property_dict
.
state
=
wrapper
.
property_dict
.
state
;
}
// set dynamic Param(s)
if
(
is_parameter
)
{
kid
=
app
.
util
.
setParam
(
kid
,
wrapper
);
}
// ===================================================================
if
(
quirk_dict
.
update
!==
true
||
is_dynamic
||
quirk_dict
.
dynamic
)
{
// for content loaded via href, generate URL dict and undefine kid
...
...
@@ -6525,6 +6555,7 @@
if
(
wrapper
.
is_page
&&
kid
.
href
)
{
wrapper
.
inherit
=
{
"
href
"
:
kid
.
href
,
"
url_query
"
:
pass
.
url_dict
.
url_query
,
"
fragment_list
"
:
pass
.
url_dict
.
fragment_list
,
"
layout_level
"
:
pass
.
url_dict
.
layout_level
,
"
inherit
"
:
true
,
...
...
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