Commit ebe4a9b1 authored by Romain Courteaud's avatar Romain Courteaud

[erp5_web_renderjs_ui] Factorise code

Only use what is visible / checked
parent 67b6d207
......@@ -99,87 +99,79 @@
}
function triggerListboxClipboardAction(argument_list) {
var action_list = ensureArray(this.state.erp5_document._links.action_object_list_action || []),
var gadget = this,
action_list = ensureArray(gadget.state.erp5_document._links.action_object_list_action || []),
action_name = argument_list[0],
checked_uid_list = argument_list[1],
unchecked_uid_list = argument_list[2],
gadget = this,
extended_search = '',
view,
i;
i,
queue;
if (action_name === 'copy_document_list') {
if (checked_uid_list.length === 0) {
// If nothing is checked, use all unchecked values (same as xhtml style)
checked_uid_list = unchecked_uid_list;
}
if (checked_uid_list.length === 0) {
// XXX Queries do not correctly handle empty uid list
return gadget.redirect({
command: 'reload'
});
}
return gadget.setSetting('clipboard', checked_uid_list)
.push(function () {
return gadget.notifySubmitted({
"message": "Copied.",
"status": "success"
});
});
if (checked_uid_list.length === 0) {
// If nothing is checked, use all unchecked values (same as xhtml style)
checked_uid_list = unchecked_uid_list;
}
for (i = 0; i < action_list.length; i += 1) {
if (action_name === action_list[i].name) {
view = action_list[i].href;
if (action_name !== 'copy_document_list') {
// Copy action is only done on javascript side
for (i = 0; i < action_list.length; i += 1) {
if (action_name === action_list[i].name) {
view = action_list[i].href;
}
}
if (view === undefined) {
// Action was not found.
return gadget.notifySubmitted({
"message": "Action not handled."
});
}
}
if (checked_uid_list.length !== 0) {
// If nothing is checked, use original query
extended_search = createSearchQuery(
checked_uid_list,
'catalog.uid'
);
}
if (view === undefined) {
// Action was not found.
// Reload
return gadget.redirect({
command: 'reload'
});
}
if (action_name === 'paste_document_list') {
return gadget.getSetting('clipboard')
// Get the list of document uid from the internal clipboard
queue = gadget.getSetting('clipboard')
.push(function (uid_list) {
uid_list = uid_list || [];
if (uid_list.length === 0) {
// Nothing to paste, go away
uid_list = ['XXX'];
}
return gadget.redirect({
command: 'display_dialog_with_history',
options: {
"jio_key": gadget.state.jio_key,
"view": view,
"extended_search": createSearchQuery(
uid_list,
'catalog.uid'
)
}
}, true);
checked_uid_list = uid_list || [];
});
} else {
queue = new RSVP.Queue();
}
return gadget.redirect({
command: 'display_dialog_with_history',
options: {
"jio_key": gadget.state.jio_key,
"view": view,
"extended_search": extended_search
}
}, true);
return queue
.push(function () {
if (checked_uid_list.length === 0) {
// Do not trigger action if the listbox was empty
// Dialog listbox use catalog method, which may be different from the current select method
// and so, it is mandatory to propagate a list of uid, otherwise, the dialog may display
// an unexpected huge list of unrelated documents
return gadget.notifySubmitted({
"message": "Nothing selected."
});
}
if (action_name === 'copy_document_list') {
return gadget.setSetting('clipboard', checked_uid_list)
.push(function () {
return gadget.notifySubmitted({
"message": "Copied.",
"status": "success"
});
});
}
return gadget.redirect({
command: 'display_dialog_with_history',
options: {
"jio_key": gadget.state.jio_key,
"view": view,
"extended_search": createSearchQuery(
checked_uid_list,
'catalog.uid'
)
}
}, true);
});
}
window.triggerListboxClipboardAction = triggerListboxClipboardAction;
......
......@@ -228,7 +228,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>974.44319.22564.50107</string> </value>
<value> <string>974.48315.28627.55534</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -246,7 +246,7 @@
</tuple>
<state>
<tuple>
<float>1553869431.11</float>
<float>1554109242.58</float>
<string>UTC</string>
</tuple>
</state>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment