Ребята, подскажите
Нужно реализовать что-то на подобее Excel таблицы
т.е. есть таблица, по стути двумерный массив наверно
и нужно реализовать формулы на подобие Excel
Где мне копать?
На vue такое в принципе реализовать элементарно.
- Сделать массив объектов населенных пунктов c id и title н.п.
- Сделать форму для ввода данных, где через select отрисовать населенные пункты и поле ввода значения. Записывать значение id н.п. и значение родившихся через v-model в временный объект
- По нажатию клавиши "Добавить", можно писать это значение одновременно и в БД, и пушить его в массив уже существующих данных в vue-компоненте.
- создать computed свойство которое будет при каждом обновлении этот массив пересчитывать и группировать по каждому ключу суммарный массив значений, например Lodash функцией
computed: {
result : function () {
var tmp = _.groupBy(массив_записей, 'свойство');
получим key -> values хранилище, которое можно отработать, например, через _.map
var tmp2 = []
_.forEach(tmp, function(value, key){
var count = 0
_.map(value, function(val){
count += val
})
tmp2.push({
id: key,
count: count
})
})
return tmp2
}
После чего отрисовать в template
<ul>
<li v-for="item in result">{{ item.id }} : {{ item.count }}</li>
</ul>
И нужно еще сделать вспомогательный метод для получения названия н.п по id чтобы вообще красиво было
getTitle(id) {
return _.find(массив_нп, { 'id': id }).title
}
тогда шаблон будет таким
<ul>
<li v-for="item in tmp2">{{getTitle(item.id) }} : {{ item.count }}</li>
</ul>
- и все, можно идти пить кофе)
Vue awesome!
* Естественно, использовать Lodash не обязательно, можно и на чистом JS этот перебор сделать, но я лентяй)