forked from extern/egroupware
* Calendar: Optimize fetching participant names to reduce requests
This commit is contained in:
parent
9463a0f395
commit
7ad8e57d2e
@ -140,12 +140,22 @@ class calendar_owner_etemplate_widget extends Etemplate\Widget\Taglist
|
|||||||
public static function ajax_owner($id = null)
|
public static function ajax_owner($id = null)
|
||||||
{
|
{
|
||||||
// Handle a request for a single ID
|
// Handle a request for a single ID
|
||||||
if($id)
|
if($id && !is_array($id))
|
||||||
{
|
{
|
||||||
$label = self::get_owner_label($id);
|
$label = self::get_owner_label($id);
|
||||||
Api\Json\Response::get()->data($label);
|
Api\Json\Response::get()->data($label);
|
||||||
return $label;
|
return $label;
|
||||||
}
|
}
|
||||||
|
else if($id && is_array($id))
|
||||||
|
{
|
||||||
|
$labels = Array();
|
||||||
|
foreach($id as $index => $_id)
|
||||||
|
{
|
||||||
|
$labels[$_id] = self::get_owner_label($_id);
|
||||||
|
}
|
||||||
|
Api\Json\Response::get()->data($labels);
|
||||||
|
return $labels;
|
||||||
|
}
|
||||||
|
|
||||||
$bo = new calendar_bo();
|
$bo = new calendar_bo();
|
||||||
$query = $_REQUEST['query'];
|
$query = $_REQUEST['query'];
|
||||||
|
@ -100,16 +100,31 @@ var et2_calendar_owner = /** @class */ (function (_super) {
|
|||||||
_super.prototype.set_value.call(this, _value);
|
_super.prototype.set_value.call(this, _value);
|
||||||
// If parent didn't find a label, label will be the same as ID so we
|
// If parent didn't find a label, label will be the same as ID so we
|
||||||
// can find them that way
|
// can find them that way
|
||||||
|
var missing_labels = [];
|
||||||
for (var i = 0; i < this.options.value.length; i++) {
|
for (var i = 0; i < this.options.value.length; i++) {
|
||||||
var value = this.options.value[i];
|
var value = this.options.value[i];
|
||||||
if (value.id == value.label) {
|
if (value.id == value.label) {
|
||||||
// Proper label was not found by parent - ask directly
|
missing_labels.push(value.id);
|
||||||
egw.json('calendar_owner_etemplate_widget::ajax_owner', value.id, function (data) {
|
|
||||||
this.widget.options.value[this.i].label = data;
|
|
||||||
this.widget.set_value(this.widget.options.value);
|
|
||||||
}, this, true, { widget: this, i: i }).sendRequest();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (Object.keys(missing_labels).length > 0) {
|
||||||
|
// Proper label was not found by parent - ask directly
|
||||||
|
egw.json('calendar_owner_etemplate_widget::ajax_owner', [missing_labels], function (data) {
|
||||||
|
var _loop_1 = function (owner) {
|
||||||
|
if (!owner || typeof owner == "undefined")
|
||||||
|
return "continue";
|
||||||
|
var idx = this_1.options.value.find(function (element) { return element.id == owner; });
|
||||||
|
if (idx) {
|
||||||
|
idx.label = data[owner];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var this_1 = this;
|
||||||
|
for (var owner in data) {
|
||||||
|
_loop_1(owner);
|
||||||
|
}
|
||||||
|
this.set_value(this.options.value);
|
||||||
|
}, this, true, this).sendRequest();
|
||||||
|
}
|
||||||
if (this.taglist) {
|
if (this.taglist) {
|
||||||
this.taglist.clear(true);
|
this.taglist.clear(true);
|
||||||
this.taglist.addToSelection(this.options.value, true);
|
this.taglist.addToSelection(this.options.value, true);
|
||||||
|
@ -120,18 +120,31 @@ export class et2_calendar_owner extends et2_taglist_email
|
|||||||
|
|
||||||
// If parent didn't find a label, label will be the same as ID so we
|
// If parent didn't find a label, label will be the same as ID so we
|
||||||
// can find them that way
|
// can find them that way
|
||||||
|
let missing_labels = [];
|
||||||
for(var i = 0; i < this.options.value.length; i++)
|
for(var i = 0; i < this.options.value.length; i++)
|
||||||
{
|
{
|
||||||
var value = this.options.value[i];
|
var value = this.options.value[i];
|
||||||
if(value.id == value.label)
|
if(value.id == value.label)
|
||||||
{
|
{
|
||||||
// Proper label was not found by parent - ask directly
|
missing_labels.push(value.id);
|
||||||
egw.json('calendar_owner_etemplate_widget::ajax_owner',value.id,function(data) {
|
|
||||||
this.widget.options.value[this.i].label = data;
|
|
||||||
this.widget.set_value(this.widget.options.value);
|
|
||||||
}, this,true,{widget: this, i: i}).sendRequest();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(Object.keys(missing_labels).length > 0)
|
||||||
|
{
|
||||||
|
// Proper label was not found by parent - ask directly
|
||||||
|
egw.json('calendar_owner_etemplate_widget::ajax_owner',[missing_labels],function(data) {
|
||||||
|
for(let owner in data)
|
||||||
|
{
|
||||||
|
if(!owner || typeof owner == "undefined") continue;
|
||||||
|
let idx = this.options.value.find(element => element.id == owner);
|
||||||
|
if(idx)
|
||||||
|
{
|
||||||
|
idx.label = data[owner];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.set_value(this.options.value);
|
||||||
|
}, this,true,this).sendRequest();
|
||||||
|
}
|
||||||
|
|
||||||
if(this.taglist)
|
if(this.taglist)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user