Прошу помощи в решении задачи

Главные вкладки

Аватар пользователя zeon76 zeon76 15 марта 2021 в 19:07

Есть webform в которую раз в день заносятся два числовых поля.
Здесь все просто и понятно. Теперь вывод во вьюху. Создаю вьюху для вывода полей. Дополнительно с помощью computed_field создаю поле в котором суммирую эти два поля. Все нормально подсчёт идёт . А вот теперь загвоздка. На следующий день при вводе данных в webform, снова ввожу два числа идёт подсчёт. И хочу чтоб во вьюхе напротив уже подсчитанного поля появилось число за предыдущий день.
Типа запись к примеру:
12.03.2021 поле1=4 поле2=4 итого=8
13.03.2021 поле1=5 поле2=7 итого=12 итого за предыдущий день=8
Помощи прошу куда копать. Не могу допетрить. Особо прошу не пинать.
Совсем начинающий.

Комментарии

Аватар пользователя denis.noskov denis.noskov 15 марта 2021 в 21:53

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

Аватар пользователя avtomoda avtomoda 16 марта 2021 в 23:17

Не скажу что данное решение идеально, возможно что то пришло бы лучше в голову если было время. Слету так:
1.В views вывести номера строк (можно скрыть из вывода)
2.В webform добавить поле - last_field_itogo (у вас будет last_computed_field) - не заполнять его и даже можно скрыть в форме.
3.theme_preprocess_views_view_fields - в помощь. (ну или если в модуле - module_preprocess_views_view_fields)

function theme_preprocess_views_view_fields(&$variables) {
if($variables['view']->id() == 'view_webform' && $variables['view']->current_display == 'page_1') {
$items = views_get_view_result('view_webform','page_1');

if($variables['row']->index > 0) {
foreach($items as $item) {
if($item->index == $variables['row']->index - 1) {
$nid = $item->nid;
$node_storage = \Drupal::entityTypeManager()->getStorage('node');
$node = $node_storage->load($nid);
$temp_field_itogo = $node->get('field_itogo')->value;
$variables['fields']['field_last_field_itogo']->content = $temp_field_itogo;
}
}
}
}
}

Делал когда то для приятеля. Накидал быстро, но на node. Думаю на webform тот же принцип. В kint посмотрите какие поля выводит и свои подставьте.