Welcome, Guest. Please login or register.
Did you miss your activation email?

Author Topic: Model roles  (Read 6134 times)

Riko

  • Newbie
  • *
  • Posts: 11
    • View Profile
Model roles
« on: October 25, 2023, 11:52:00 am »
Добрый день.

При передачи кастомной модели в качестве источника данных, возможно
ли из скриптов получить значения произвольных ролей элемента (цвет фона, цвет текста и т.п.)?

C увежением, Р

Subst

  • Sr. Member
  • ****
  • Posts: 451
    • View Profile
Re: Model roles
« Reply #1 on: October 26, 2023, 06:49:48 am »
Ты же из модели хочешь данные доставать, не из самой таблицы.
Значит просто отдать БД в репорт не прокатит.
Модель знакома только твоему коду внутри программы.
Соответственно, LR должен обращаться к коду за порцией данных.
Для этого есть ICallbackDatasource, загляни в docs/UserManualRu.pdf, примерно на страницу 11, Внешние источники данных.

Другой вариант - построить несколько "плоских" моделей и отдать их все в твой репорт.

Третий вариант - скриптами пролублировать твои правила, которыми ты определяешь роли модели.
Code: [Select]
$S {
   if ($D{table.field}==..)
      ...;
  }

Riko

  • Newbie
  • *
  • Posts: 11
    • View Profile
Re: Model roles
« Reply #2 on: October 26, 2023, 10:38:05 am »
Здравствуйте.

Я рассматривал эти варианты - эти подходы требуют доп. работы + код программы становится сильно путанным.

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

Добавил в LR функцию getFieldByRowIndexEx("FieldName", "row", "role") которая позволяет получать значения произвольных ролей каждого элемента: стандратные роли Qt (Display, Background ...) + кастомные роли модели. Выгрузил в отдельную ветку

PS: так же нет функций для получения значений заголовков моделей, нет функции для получения количества столбцов, строк.

Subst

  • Sr. Member
  • ****
  • Posts: 451
    • View Profile
Re: Model roles
« Reply #3 on: October 26, 2023, 08:00:56 pm »
это открытый проект :o)
напиши и шлефани пул-реквест или просто Алексу поправленные исходники. Будет у него время, посмотрит.

Riko

  • Newbie
  • *
  • Posts: 11
    • View Profile
Re: Model roles
« Reply #4 on: October 26, 2023, 08:30:10 pm »
Уже...

Перед внесением доработок думал пововетоваться с сообществом - возможно не заметил существующей возможности.

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 1005
    • View Profile
Re: Model roles
« Reply #5 on: November 21, 2023, 01:27:21 pm »
Riko, Приветствую! Я там на github написал комментарий к pull request продублирую его здесь

Quote
Приветствую !
Очень ценю Ваше желание внести свой вклад в развитие проекта.
У меня большая просьба, если Вы хотите, чтобы Ваш pull request был принят, верните форматирование кода к изначальному виду. Во-первых, форматирование кода для разработчика дело интимное :), а во-вторых, так проще смотреть какие изменения были реально сделаны. Ну и желательно это объединить в один commit.