Я пробовал несколько подходов безрезультатно. На приведенном ниже снимке экрана показана сетка с общим итогом, за которой следуют промежуточные итоги и затем детали. Мне нужно несколько инвертировать эту сетку, чтобы данные отображались в виде деталей, промежуточных итогов и итоговой суммы.
Текущее состояние сетки
В этом примере я показываю только один Номер проекта, 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-й степени.
Пример плунжера