Расчет значений в компоненте таблицы AngularJS

Я использую компонент расширяющейся таблицы для отображения списка обслуживающего персонала, который работал в определенном магазине. Мне нужно сделать две вещи:

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'];

Расчет значений в компоненте таблицы AngularJS

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

Mawg says reinstate Monica 17.09.2018 14:51

@Mawg Я не могу этого сделать. Я должен придерживаться того, как таблица реализуется сейчас.

user9541762 17.09.2018 15:02

Лично я бы поспорил. Если вы не можете, это будет сложнее> попробуйте обсудить это с тем, кто дал вам задание. Также подумайте о том, чтобы иметь отдельный код таблицы sin, который визуально выглядит как одна таблица на экране без видимого промежутка между ними.

Mawg says reinstate Monica 17.09.2018 16:22
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
35
0

Другие вопросы по теме