Отображение значения в метрике Laravel Nova Value - PullRequest
0 голосов
/ 10 января 2019

Мне нужно показать сумму столбца price модели Foo. Прямо сейчас я могу сделать это с этим.

    public function calculate(Request $request)
    {

        return $this
            ->sum($request, Contribution::class, 'contribution_amount')
            ->dollars();
    }

Который показывает следующий вывод.

  • На сумму 22 => $22
  • На сумму 3120 => $3.10k

Мне нужно просто показать $22, $3120 без какого-либо форматирования. Я попытался переопределить функцию агрегирования, но она все еще не дает мне правильный выходной формат.

protected function aggregate($request, $model, $function, $column = null, $dateColumn = null)
    {
        $query = $model instanceof Builder ? $model : (new $model)->newQuery();

        $column = $column ?? $query->getModel()->getQualifiedKeyName();

        $previousValue = with(clone $query)->whereBetween(
            $dateColumn ?? $query->getModel()->getCreatedAtColumn(), $this->previousRange($request->range)
        )->{$function}($column);

        return $this->result(
            with(clone $query)->whereBetween(
                $dateColumn ?? $query->getModel()->getCreatedAtColumn(), $this->currentRange($request->range)
            )->{$function}($column)
        )->previous($previousValue);
    }

Кто-нибудь может дать указатель здесь?

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Для будущих читателей ..

Начиная с Nova 1.3.1 мы можем использовать форматирование Numeral.js для форматирования значений в метрике Trend/Value.

return $this
            ->result($val)
            ->dollars()
            ->format('0,0.00')

Выше фрагмент будет отформатировать значение для отображения в двух десятичных разрядах.

0 голосов
/ 11 января 2019

Начиная с версии 1.2.0

Формат происходит в nova/resources/js/components/Metrics/Base/ValueMetric.vue

formattedValue() {
    if (!this.isNullValue) {
        const numeralValue = numeral(this.value)

        return numeralValue.value() > 1000
            ? this.prefix + numeralValue.format('(0.00a)')
            : this.prefix + this.value
    }

    return ''
},

Не настраивается.

Обход

Вы можете редактировать вышеупомянутый файл только для того, чтобы вернуть неформатное значение. Затем выполните команду npm run prod, чтобы создать и запустить команду php artisan nova:publish для копирования обновленных файлов.

Примечание - Ваши изменения будут отменены при обновлении версии Nova в будущем.

...