Необходимо отображать вывод каталога как полное имя вместо адреса электронной почты

Я следую шагам, описанным в этом видео, чтобы создать раздел комментариев.

Джеймс (автор) создал две модели, затем создал связь между ними, а затем создал таблицу для добавления/редактирования комментариев/примечаний.

Он использует следующее событие в одной модели:

onCreate    
record.reported_by = Session.getActiveUser().getEmail();    
record.Date = new Date();

и следующее событие во втором.

onCreate
record.Tech = Session.getActiveUser().getEmail();
record.Date = new Date();

Теперь, если у вас есть метка, связанная с отношением, она будет отображать адрес электронной почты пользователя, создавшего новый элемент.

Все это работает отлично. Я просто пытался найти способ, чтобы на ярлыке отображалось полное имя вместо адреса электронной почты.

Я надеялся, что это будет что-то простое, вроде переключения getEmail на что-то вроде getFullName, но не тут-то было.


person Adam Bergeron    schedule 27.01.2017    source источник
comment
не проще ли будет изменить привязку виджета?   -  person Juan Diego Antezana    schedule 27.01.2017


Ответы (1)


Насколько я знаю, в настоящее время в App Maker нет встроенного метода для получения полного имени текущего пользователя, но вы можете получить его, добавив ссылку Модель каталога для вашего приложения. После того, как вы добавили модель каталога, у вас есть несколько способов обслуживать полное имя пользователя:

1 Сохраните его в своей базе данных при создании записи

// onCreate
var email = Session.getActiveUser().getEmail();

var directoryQuery = app.models.Directory.newQuery();
directoryQuery.filters.PrimaryEmail._equals = email;
var reporter = directoryQuery.run()[0];

record.reported_by = email;
record.reported_full_name = reporter.FullName;
record.Date = new Date();

а затем используйте это «reported_full_name» в привязке вместо «reported_by».

  • плюсы - лучшая производительность при отображении нескольких записей в пользовательском интерфейсе
  • значения cons в вашей БД могут со временем устареть

2 Используйте расчетную модель и создайте динамическую «виртуальную связь» между вашей локальной моделью и каталогом.

  • плюсы - у вас всегда будут актуальные данные
  • минусы - будет работать медленнее, сложнее будет поддерживать и внедрять

3 Сервер запросов для полного имени после загрузки источника данных в пользовательский интерфейс

// widget binding
setFullName(widget, @datasource.item.reported_by)

// client script
setFullName(widget, email) {
  google.script.run
        .withSuccessHandler(function(fullName) {
           widget.text = fullName;
         })
         .getFullName(email);
}

// server script
function getFullName(email) {
  var directoryQuery = app.models.Directory.newQuery();
  directoryQuery.filters.PrimaryEmail._equals = email;
  var person = directoryQuery.run()[0];

  return person.FullName;
}
  • плюсы - у вас всегда будут актуальные данные
  • минусы - метки на интерфейсе будут мигать, производительность хуже из-за большого количества запросов к серверу
person Pavel Shkleinik    schedule 27.01.2017
comment
Возможно, вы также хотите, чтобы ваше приложение выглядело лучше и было более социальным, тогда вы также можете сохранить ThumbnailPhotoUrl в базе данных и привязать его к виджету изображения. - person Pavel Shkleinik; 28.01.2017