Я использую компонент расширяющейся таблицы для отображения списка обслуживающего персонала, который работал в определенном магазине. Мне нужно сделать две вещи:
1) Мне нужно вставить новую строку под последним дежурным, которая суммирует общий столбец для каждого дежурного (см. Приложенный снимок экрана).
2) Мне нужно рассчитать текущую сумму, которая, как я полагаю, будет чем-то вроде текущего + предыдущего.
Вот что у меня есть на данный момент:
store-totals.list.view.html
<div class = "page-section-header">
<h1 class = "list-title">Store Tender Totals</h1>
</div>
<act-search-box
default-type = "attendant"
search = "vm.search"
type = "vm.type"
placeholder = "Enter a Store ID"
type-options = "[
{ label: 'Terminal', value : 'terminal' },
{ label: 'Total', value: 'total' },
{ label: 'Attendant', value: 'attendant' }
]"
on-search = "vm.getAttendants()">
</act-search-box>
<div class = "page-section-below-search-box single-width" style = "width:27%;">
<span style = "float:left;margin-top:2.2%;font-size:14px;">Showing totals for</span>
<act-date-picker model = "vm.date" placeholder = "Select a date" on-change = "vm.getAttendants()">
</act-date-picker>
</div>
<act-expanding-table
list = "vm.attendantNames"
ng-hide = "vm.emptyResult"
properties = "[
{ type: 'attendantName', size: 2, label: 'Attendant Name'},
{ type: 'total', size: 2, label: 'Total', format:'currency'},
{ type: 'runningTotal', size:2, label: 'Running Total', format:'currency'}
]"
allow-selecting = "true">
<div>
<div class = "col-xs-12 form-section-header">
<h4>Tender Totals</h4>
</act-expanding-table>
<act-error-message ng-show = "vm.errorMessage">{{ vm.errorMessage }}</act-error-message>
магазин-тоталс-список.controller.js
import { digest, showLoader } from 'act/services/events';
import 'act/components';
import Searcher from 'act/services/lists/searcher';
import * as moment from 'moment';
import * as api from '../services/totals';
import {header, dev} from 'act/services/logger';
import {goToError} from 'act/services/controller-helpers';
import '../components/store-total';
const defaultStartDate = moment().startOf('day');
export default class StoreTotalsController {
constructor() {
this.attendantNames = [];
this.stores = [];
this.emptyResult = true;
this.totals = 0;
}
getAttendants() {
showLoader('Searching');
const baseUrl = '/src/areas/store-totals/services/tender-total-data.json';
const getStores = new Request(baseUrl, {
method: 'GET'
});
fetch(getStores).then(function(response){
return response.json();
}).then(resp => {
if (!(resp[0] && resp[0].error)) {
this.attendantNames = resp.stores[0].attendants;
this.attendantNames.forEach(a=>{
this.totals += a.total;
console.info(this.totals);
})
this.emptyResult = false;
this.errorMessage = null;
} else {
this.errorMessage = resp[0].error.name;
}
digest();
showLoader(false);
});
}
searchIfReady() {
if (this.search && this.date && this.date.isValid()) {
this.getSearch();
}
}
updateDate(date) {
this.date = moment(date).startOf('day');
this.searchIfReady();
}
}
StoreTotalsController.$inject = ['$stateParams'];
@Mawg Я не могу этого сделать. Я должен придерживаться того, как таблица реализуется сейчас.
Лично я бы поспорил. Если вы не можете, это будет сложнее> попробуйте обсудить это с тем, кто дал вам задание. Также подумайте о том, чтобы иметь отдельный код таблицы sin, который визуально выглядит как одна таблица на экране без видимого промежутка между ними.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Лично я бы не стал помещать все это в одну таблицу. Я бы оставил необработанные данные в таблице и еще одну или две таблицы для пунктов 1) и 2). Таким образом, вы можете легко использовать встроенные в таблицы методы для суммирования столбцов.