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
ba9d8e80
Commit
ba9d8e80
authored
Apr 18, 2014
by
Sven Franck
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
app: added generic subordinate and random dynamic value injection
parent
1c9486b4
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
117 additions
and
30 deletions
+117
-30
js/erp5_loader.js
js/erp5_loader.js
+117
-30
No files found.
js/erp5_loader.js
View file @
ba9d8e80
...
@@ -3340,7 +3340,13 @@
...
@@ -3340,7 +3340,13 @@
"
count
"
:
i
"
count
"
:
i
}));
}));
}
}
// NOTE: when loading content via href, element is set to undefined
// NOTE: when loading content via href, element is set to undefined
// TODO: Why? ^^^^^^
// NOTE: fetch subordinate fields
if
(
element
&&
element
.
needs_subordination
)
{
return
app
.
util
.
setSubordinate
(
element
,
wrapper
);
}
return
RSVP
.
resolve
(
element
||
wrapper
.
inherit
);
return
RSVP
.
resolve
(
element
||
wrapper
.
inherit
);
};
};
...
@@ -3356,6 +3362,7 @@
...
@@ -3356,6 +3362,7 @@
// TODO: multiple header rows!
// TODO: multiple header rows!
// TODO: action_menu input + form?
// TODO: action_menu input + form?
// TODO: how to handle translations of record texts?
// TODO: how to handle translations of record texts?
// TODO: subordinate handling
map
.
tableItem
=
function
(
spec
)
{
map
.
tableItem
=
function
(
spec
)
{
var
j
,
k
,
segment
,
row
,
cell
,
id
,
quirk_dict
,
record
,
new_item
,
item
;
var
j
,
k
,
segment
,
row
,
cell
,
id
,
quirk_dict
,
record
,
new_item
,
item
;
...
@@ -3504,9 +3511,6 @@
...
@@ -3504,9 +3511,6 @@
obj
[
setter
]
=
response
.
value
;
obj
[
setter
]
=
response
.
value
;
new_item
[
pos
].
push
(
util
.
mergeObject
(
response
.
field
,
obj
));
new_item
[
pos
].
push
(
util
.
mergeObject
(
response
.
field
,
obj
));
}
}
// clean up on success and error!
delete
flux
.
active_record
[
response
.
relation
];
return
new_item
;
return
new_item
;
})
})
.
fail
(
app
.
util
.
error
);
.
fail
(
app
.
util
.
error
);
...
@@ -3523,6 +3527,7 @@
...
@@ -3523,6 +3527,7 @@
**/
**/
// TODO: should a span still have full structure (label/container)?
// TODO: should a span still have full structure (label/container)?
// TODO: should we wrap in span_12 here. why do we wrap at all, do with CSS
// TODO: should we wrap in span_12 here. why do we wrap at all, do with CSS
// TODO: subordinate value
map
.
formItem
=
function
(
spec
)
{
map
.
formItem
=
function
(
spec
)
{
var
helper
,
getHelp
,
j
,
k
,
segment
,
section
,
field
,
setValue
,
root
,
veto
,
var
helper
,
getHelp
,
j
,
k
,
segment
,
section
,
field
,
setValue
,
root
,
veto
,
textarea_value
,
override_value
,
value
,
field_value
,
validation_list
,
textarea_value
,
override_value
,
value
,
field_value
,
validation_list
,
...
@@ -3958,11 +3963,9 @@
...
@@ -3958,11 +3963,9 @@
storage
.
subordinate
=
function
(
spec
)
{
storage
.
subordinate
=
function
(
spec
)
{
var
output
;
var
output
;
//
cached promise
//
fetch from cache or query
if
(
flux
.
active_record
[
spec
.
relation
])
{
if
(
flux
.
active_record
[
spec
.
relation
])
{
output
=
flux
.
active_record
[
spec
.
relation
];
output
=
flux
.
active_record
[
spec
.
relation
];
// query and cache
}
else
{
}
else
{
output
=
flux
.
active_record
[
spec
.
relation
]
=
storage
.
fetch
({
output
=
flux
.
active_record
[
spec
.
relation
]
=
storage
.
fetch
({
"
pass
"
:
spec
,
"
pass
"
:
spec
,
...
@@ -3971,15 +3974,15 @@
...
@@ -3971,15 +3974,15 @@
}
}
return
output
.
then
(
function
(
answer
)
{
return
output
.
then
(
function
(
answer
)
{
var
data
,
doc
;
var
data
=
answer
.
response
.
data
;
data
=
answer
.
response
.
data
;
// set subordinate value
// set subordinate value
if
(
data
.
total_rows
>
0
)
{
if
(
data
.
total_rows
>
0
)
{
spec
.
value
=
data
.
rows
[
0
].
doc
[
spec
.
subordinate
]
spec
.
value
=
data
.
rows
[
0
].
doc
[
spec
.
subordinate
]
}
}
// NOTE: delete here, otherwise impossible to track. This will still
// work cause subsequent requests will fire async and be set from flux
delete
flux
.
active_record
[
spec
.
relation
];
return
spec
;
return
spec
;
}).
fail
(
app
.
util
.
error
);
}).
fail
(
app
.
util
.
error
);
...
@@ -6143,9 +6146,10 @@
...
@@ -6143,9 +6146,10 @@
// TODO: refactor... appocalyptic
// TODO: refactor... appocalyptic
app
.
content
.
make
=
function
(
reply
)
{
app
.
content
.
make
=
function
(
reply
)
{
var
pass
,
method
,
type
,
kids
,
promise_list
,
route
,
var
pass
,
method
,
type
,
kids
,
promise_list
,
route
,
search
,
search_id
,
kid
,
is_html
,
is_dynamic
,
is_id
,
i
,
j
,
last
,
search
,
search_id
,
kid
,
is_html
,
is_dynamic
,
is_id
,
i
,
j
,
k
,
last
,
encoded
,
wrapper
,
active
,
selector
,
update_target
,
target
,
widget
,
encoded
,
wrapper
,
active
,
selector
,
update_target
,
target
,
widget
,
grant_child
,
quirk_dict
,
generator
,
pointer_results
,
data_total_rows
;
quirk_dict
,
generator
,
pointer_results
,
data_total_rows
,
is_parameter
,
param_len
,
parameter
;
pass
=
reply
.
pass
;
pass
=
reply
.
pass
;
pass
.
config_dict
=
pass
.
config_dict
||
{};
pass
.
config_dict
=
pass
.
config_dict
||
{};
...
@@ -6347,6 +6351,7 @@
...
@@ -6347,6 +6351,7 @@
// we don't need is_dynamic!
// we don't need is_dynamic!
is_dynamic
=
kid
.
property_dict
&&
kid
.
property_dict
.
dynamic
;
is_dynamic
=
kid
.
property_dict
&&
kid
.
property_dict
.
dynamic
;
is_html
=
kid
.
direct
;
is_html
=
kid
.
direct
;
is_parameter
=
(
kid
.
logic
||
{}).
setParam
;
// inherit item id to child elements (see above)
// inherit item id to child elements (see above)
...
@@ -6368,26 +6373,23 @@
...
@@ -6368,26 +6373,23 @@
kid
.
property_dict
.
input
=
"
#
"
+
search_id
;
kid
.
property_dict
.
input
=
"
#
"
+
search_id
;
}
}
// inherit properties of parent (> dynamic!) and add data to kid
// map on kid directly and inherit data down (only single items)
kid
.
property_dict
=
util
.
mergeObject
(
kid
.
property_dict
,
quirk_dict
);
if
(
quirk_dict
.
direct_map
)
{
kid
.
children
=
util
.
inherit
(
kid
.
property_dict
.
data
=
pointer_results
.
data
.
rows
[
0
];
pointer_results
.
data
.
rows
.
concat
(
kid
.
children
||
[]),
{
"
scheme
"
:
quirk_dict
.
scheme
,
"
field_dict
"
:
quirk_dict
.
field_dict
}
);
}
// HACK for setParam in login window
// set "grant-children", which will be mapped into ?
if
(
kid
.
logic
&&
kid
.
logic
.
setParam
)
{
}
else
{
kid
.
direct
.
href
+=
kid
.
direct
.
href
.
indexOf
(
"
?
"
)
>
0
?
"
&
"
:
"
?
"
;
kid
.
property_dict
=
util
.
mergeObject
(
kid
.
property_dict
,
quirk_dict
);
switch
(
kid
.
logic
.
setParam
[
1
])
{
kid
.
children
=
util
.
inherit
(
case
"
location
"
:
pointer_results
.
data
.
rows
.
concat
(
kid
.
children
||
[]),
target
=
window
.
location
.
origin
+
{
"
scheme
"
:
quirk_dict
.
scheme
,
"
field_dict
"
:
quirk_dict
.
field_dict
}
window
.
location
.
pathname
+
);
window
.
location
.
hash
.
split
(
"
?
"
)[
0
];
break
;
}
}
kid
.
direct
.
href
+=
window
.
encodeURIComponent
(
kid
.
logic
.
setParam
[
0
])
+
}
"
=
"
+
window
.
encodeURIComponent
(
target
);
// setParam(s)
if
(
is_parameter
)
{
kid
=
app
.
util
.
setParam
(
kid
,
wrapper
);
}
}
if
(
quirk_dict
.
update
!==
true
||
is_dynamic
||
quirk_dict
.
dynamic
)
{
if
(
quirk_dict
.
update
!==
true
||
is_dynamic
||
quirk_dict
.
dynamic
)
{
...
@@ -6589,6 +6591,91 @@
...
@@ -6589,6 +6591,91 @@
/* ********************************************************************** */
/* ********************************************************************** */
app
.
util
=
{};
app
.
util
=
{};
/** Fetch a subordinate record to set values of an object
* @method setSubordinate
* @method setParam
* @param {object} kid Element configuration object
* @param {object} wrapper Wrapping document
* @returns {object} kid
*/
// TODO: change setParam into scheme like structure to use same handler?
app
.
util
.
setSubordinate
=
function
(
element
,
wrapper
)
{
var
i
,
len
,
param_list
,
param
,
promise_list
,
field
,
pass
;
param_list
=
element
.
logic
.
setParam
;
promise_list
=
[];
for
(
i
=
0
,
len
=
param_list
.
length
;
i
<
len
;
i
+=
1
)
{
param
=
param_list
[
i
];
// NOTE: all regular params should be deleted by now!
field
=
param
[
1
];
pass
=
{
"
field
"
:
field
,
"
relation
"
:
wrapper
.
property_dict
.
data
.
doc
[
field
],
"
subordinate
"
:
field
.
split
(
"
subordinate_
"
)[
1
]
};
promise_list
[
i
]
=
storage
.
subordinate
(
pass
);
}
return
RSVP
.
all
(
promise_list
)
.
then
(
function
(
response_list
)
{
var
j
,
k
,
res_len
,
response
,
param_len
,
out_param
;
// TODO: CUSTOM CODE, wrap in callback and make generic handler
for
(
j
=
0
,
res_len
=
response_list
.
length
;
j
<
res_len
;
j
+=
1
)
{
response
=
response_list
[
j
];
for
(
k
=
0
,
param_len
=
param_list
.
length
;
k
<
param_len
;
k
+=
1
)
{
out_param
=
param_list
[
k
];
if
(
response
.
field
===
out_param
[
1
])
{
element
.
logic
[
out_param
[
0
]]
=
response
.
value
;
}
}
}
return
element
;
})
.
fail
(
app
.
util
.
error
);
};
/** Set parameters on an object or flag object for subordination =
* fetch related record to get value
* @method setParam
* @param {object} kid Element configuration object
* @param {object} wrapper Wrapping document
* @returns {object} kid
*/
app
.
util
.
setParam
=
function
(
kid
,
wrapper
)
{
var
i
,
len
,
param_list
,
param
,
href
,
loc
,
sep
;
param_list
=
kid
.
logic
.
setParam
;
for
(
i
=
0
,
len
=
param_list
.
length
;
i
<
len
;
i
+=
1
)
{
param
=
param_list
[
i
];
switch
(
param
[
1
])
{
// NOTE: hacked for oauth redirect url TODO: remove, not generic!
case
"
location
"
:
href
=
kid
.
direct
.
href
;
sep
=
href
.
indexOf
(
"
?
"
)
>
0
?
"
&
"
:
"
?
"
;
loc
=
window
.
location
;
kid
.
direct
.
href
+=
sep
+
window
.
encodeURIComponent
(
param
[
0
])
+
"
=
"
+
window
.
encodeURIComponent
(
loc
.
origin
+
loc
.
pathname
+
loc
.
hash
.
split
(
"
?
"
)[
0
]
);
break
;
// set values or flag for subordination inside map.element
default
:
if
(
param
[
1
].
split
(
"
subordinate_
"
).
length
>
1
)
{
kid
.
needs_subordination
=
true
;
}
else
{
kid
.
logic
[
param
[
0
]]
=
wrapper
.
property_dict
.
data
.
doc
[
param
[
1
]];
delete
kid
.
logic
.
setParam
[
i
];
}
}
}
return
kid
;
};
/**
/**
* Parse a clicked link to determine which page to load
* Parse a clicked link to determine which page to load
* @method parseLink
* @method parseLink
...
...
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