Инвертировать сетку для отображения данных в виде деталей, промежуточных итогов и итоговой суммы - PullRequest
0 голосов
/ 08 января 2020

Я пробовал несколько подходов безрезультатно. На приведенном ниже снимке экрана показана сетка с общим итогом, за которой следуют промежуточные итоги и затем детали. Мне нужно несколько инвертировать эту сетку, чтобы данные отображались в виде деталей, промежуточных итогов и итоговой суммы.

Текущее состояние сетки

В этом примере я показываю только один Номер проекта, IMCOPS; возможно иметь несколько номеров проекта. Сетка также сгруппирована по номеру проекта и номеру задачи, но пользователь может изменить группировки или добавить / удалить столбцы. Для меня возможно создать два массива, один из которых содержит итоги, а другой - только детали в последовательном порядке.

Следующий массив - это то, что я в настоящее время использовал для построения сетки. Индекс 0 используется для определения столбцов сетки. Индекс 1 - общий итог. Индекс 2 является спейсером. Индекс 3 является подытогом. Индексы 4, 5 и 6 - это детали индекса 3. Затем шаблон повторяется.

0:
    Prime Contract No: ""
    BC ID: ""
    Project Number: ""
    Task Number: ""
    Task Name: ""
    Task Cognizant Org: ""
    Hours MTD: ""
    Hours YTD: ""
__proto__: Object
1:
    Hours MTD: 542.3
    Hours YTD: 1690.2
    Project Number: "IMCOPS"
__proto__: Object
2:  null
3:
    Hours MTD: 177.1
    Hours YTD: 1325
    Task Number: "22.1.02"
__proto__: Object
4:
    BC ID: "011500000"
    Project Number: "IMCOPS"
    Task Number: "22.1.02"
    Task Name: "TRAINING"
    Task Cognizant Org: "2200 - ENTERPRISE BUSINESS INFORMATION SERVICES"
    Hours MTD: 0
    Hours YTD: 0
    G2: "IMCOPS"
    G3: "2"
__proto__: Object
5:
    BC ID: "020100000"
    Project Number: "IMCOPS"
    Task Number: "22.1.02"
    Task Name: "TRAINING"
    Task Cognizant Org: "2200 - ENTERPRISE BUSINESS INFORMATION SERVICES"
    Hours MTD: 0
    Hours YTD: 0
    G2: "IMCOPS"
    G3: "2"
__proto__: Object
6:
    BC ID: "030100000"
    Project Number: "IMCOPS"
    Task Number: "22.1.02"
    Task Name: "TRAINING"
    Task Cognizant Org: "2200 - ENTERPRISE BUSINESS INFORMATION SERVICES"
    Hours MTD: 177.1
    Hours YTD: 1325
    G2: "IMCOPS"
    G3: "2"
__proto__: Object
7:
    Hours MTD: 1
    Hours YTD: 1
    Task Number: "22.1.02.2202"
__proto__: Object
8:
    BC ID: "030100000"
    Project Number: "IMCOPS"
    Task Number: "22.1.02.2202"
    Task Name: "2202 TRAINING"
    Task Cognizant Org: "2200 - ENTERPRISE BUSINESS INFORMATION SERVICES"
    Hours MTD: 1
    Hours YTD: 1
    G2: "IMCOPS"
    G3: "2"
__proto__: Object
9:
    Hours MTD: 142.2
    Hours YTD: 142.2
    Task Number: "22.1.02.2210"
__proto__: Object
10:
    BC ID: "030100000"
    Project Number: "IMCOPS"
    Task Number: "22.1.02.2210"
    Task Name: "2210 TRAINING"
    Task Cognizant Org: "2200 - ENTERPRISE BUSINESS INFORMATION SERVICES"
    Hours MTD: 142.2
    Hours YTD: 142.2
    G2: "IMCOPS"
    G3: "2"
__proto__: Object
11:
    Hours MTD: 222
    Hours YTD: 222
    Task Number: "22.1.02.2220"
__proto__: Object
12:
    BC ID: "030100000"
    Project Number: "IMCOPS"
    Task Number: "22.1.02.2220"
    Task Name: "2220 TRAINING"
    Task Cognizant Org: "2200 - ENTERPRISE BUSINESS INFORMATION SERVICES"
    Hours MTD: 222
    Hours YTD: 222
    G2: "IMCOPS"
    G3: "2"

ОБНОВЛЕНИЕ

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

До и После

Вот пример Plunker некоторого кода, который я написал. У меня почти все работает; однако я не поднимаю первый «уровень 1», а «уровень 0» (общий итог) появляется дважды. Обратите внимание, это простая иллюстрация моей проблемы. Исходный массив может иметь несколько уровней до n-й степени.

Пример плунжера

Ответы [ 2 ]

0 голосов
/ 21 января 2020

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

Решение Plunker

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

0 голосов
/ 08 января 2020

Не могли бы вы поделиться быстрым макетом (с использованием Excel или чего-то другого) того, как вы хотите, чтобы конечный результат выглядел?

Спред JS команда

...