Optimized performance while rendering references and computed fields and allowed computed fields to be shown asynchronously.
This commit is contained in:
parent
7d3ac9112b
commit
88cd4f7c46
6 changed files with 72 additions and 40 deletions
|
@ -157,6 +157,12 @@
|
|||
}
|
||||
askAjaxChunk(hookId, 'GET', objectUrl, 'widgets/ref', 'viewContent',params);
|
||||
}
|
||||
function askComputedField(hookId, objectUrl, fieldName) {
|
||||
// Sends an Ajax request for getting the content of a computed field
|
||||
var params = {'fieldName': fieldName};
|
||||
askAjaxChunk(hookId, 'GET', objectUrl, 'widgets/computed', 'viewContent',
|
||||
params);
|
||||
}
|
||||
|
||||
// Function used by checkbox widgets for having radio-button-like behaviour
|
||||
function toggleCheckbox(visibleCheckbox, hiddenBoolean) {
|
||||
|
@ -455,7 +461,7 @@
|
|||
</tr>
|
||||
<tr tal:repeat="change event/changes/items" valign="top">
|
||||
<td tal:content="python: tool.translate(change[1][1])"></td>
|
||||
<td tal:define="appyValue python: contextObj.getFieldValue(change[0], useParamValue=True, value=change[1][0]);
|
||||
<td tal:define="appyValue python: contextObj.getFormattedFieldValue(change[0], change[1][0]);
|
||||
appyType python:contextObj.getAppyType(change[0], asDict=True);
|
||||
severalValues python: (appyType['multiplicity'][1] > 1) or (appyType['multiplicity'][1] == None)">
|
||||
<span tal:condition="not: severalValues" tal:replace="appyValue"></span>
|
||||
|
|
|
@ -1,7 +1,26 @@
|
|||
<tal:comment replace="nothing">View macro for a Computed.</tal:comment>
|
||||
<metal:view define-macro="view">
|
||||
<span tal:condition="widget/plainText" tal:replace="value"/>
|
||||
<span tal:condition="not: widget/plainText" tal:replace="structure value"/>
|
||||
<tal:sync condition="sync">
|
||||
<span tal:condition="widget/plainText" tal:replace="value"/>
|
||||
<span tal:condition="not: widget/plainText" tal:replace="structure value"/>
|
||||
</tal:sync>
|
||||
<tal:async condition="not: sync">
|
||||
<div tal:define= "ajaxHookId python: contextObj.UID() + name"
|
||||
tal:attributes = "id ajaxHookId">
|
||||
<script language="javascript"
|
||||
tal:content="python: 'askComputedField(\'%s\',\'%s\',\'%s\')' % (ajaxHookId, contextObj.absolute_url(), name)">
|
||||
</script>
|
||||
</div>
|
||||
</tal:async>
|
||||
</metal:view>
|
||||
|
||||
<tal:comment replace="nothing">Ajax-called view content of a non sync Computed field.</tal:comment>
|
||||
<metal:view define-macro="viewContent"
|
||||
tal:define="name request/fieldName;
|
||||
widget python: contextObj.getAppyType(name, asDict=True);
|
||||
value python: contextObj.getFieldValue(name);
|
||||
sync python:True">
|
||||
<metal:call use-macro="portal/skyn/widgets/computed/macros/view"/>
|
||||
</metal:view>
|
||||
|
||||
<tal:comment replace="nothing">Edit macro for a Computed.</tal:comment>
|
||||
|
|
|
@ -54,8 +54,9 @@
|
|||
tal:define="contextMacro python: portal.skyn.widgets;
|
||||
layout python: widget['layouts'][layoutType];
|
||||
name widget/name;
|
||||
value python: contextObj.getFieldValue(name);
|
||||
rawValue python: contextObj.getFieldValue(name, formatted=False);
|
||||
sync python: widget['sync'][layoutType];
|
||||
rawValue python: sync and contextObj.getFieldValue(name) or None;
|
||||
value python: sync and contextObj.getFormattedFieldValue(name, rawValue) or None;
|
||||
requestValue python: request.get(name, None);
|
||||
inRequest python: request.has_key(name);
|
||||
errors errors | python: ();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue