diff --git a/src/Abstracts/FloatingFilter.php b/src/Abstracts/FloatingFilter.php index 90fad8d..bee174e 100644 --- a/src/Abstracts/FloatingFilter.php +++ b/src/Abstracts/FloatingFilter.php @@ -8,6 +8,11 @@ abstract class FloatingFilter extends Visualizable { protected FloatingFilterType|string $floatingFilterType; + public function getFieldPrefix(): string + { + return 'floating_filter_'; + } + /** * @return array{field: string, header: string, type: string, meta: array} */ diff --git a/src/Abstracts/Visualizable.php b/src/Abstracts/Visualizable.php index 359e53b..a34ae57 100644 --- a/src/Abstracts/Visualizable.php +++ b/src/Abstracts/Visualizable.php @@ -71,9 +71,11 @@ public function getFilterWithBindings(): array return $this->filterWithBindings?->getBindings() ?? $this->selectWithBindings->getBindings(); } + abstract public function getFieldPrefix(): string; + public function getField(): string { - return $this->field; + return $this->getFieldPrefix().$this->field; } protected function selectWith(string $selectWith): static @@ -113,7 +115,7 @@ public function header(string $header): static public function getHeader(): string { - return $this->header ?? $this->getField(); + return $this->header ?? $this->field; } /** @return array */ diff --git a/src/Charts/Abstracts/Dataset.php b/src/Charts/Abstracts/Dataset.php index 1039e81..a2fbbe7 100644 --- a/src/Charts/Abstracts/Dataset.php +++ b/src/Charts/Abstracts/Dataset.php @@ -14,6 +14,11 @@ abstract class Dataset extends Visualizable { use Macroable; + public function getFieldPrefix(): string + { + return 'dataset_'; + } + /** * The type of dataset, which tells the front-end how to render this series. */ diff --git a/src/Charts/Labels/Label.php b/src/Charts/Labels/Label.php index 5c4faad..712cd29 100644 --- a/src/Charts/Labels/Label.php +++ b/src/Charts/Labels/Label.php @@ -13,6 +13,11 @@ class Label extends Visualizable { use Macroable; + public function getFieldPrefix(): string + { + return 'label_'; + } + /** * Transform the label to a standardized specification for the front-end schema. * diff --git a/src/DataGrids/Abstracts/Column.php b/src/DataGrids/Abstracts/Column.php index 3404063..383e707 100644 --- a/src/DataGrids/Abstracts/Column.php +++ b/src/DataGrids/Abstracts/Column.php @@ -11,6 +11,11 @@ abstract class Column extends Visualizable { use Macroable; + public function getFieldPrefix(): string + { + return 'column_'; + } + /** * Whether we want to hide the column in the grid. This is useful for columns that you may want exposed to the * user, but not visible by default. diff --git a/src/Metrics/Value.php b/src/Metrics/Value.php index 74fffe9..61db96e 100644 --- a/src/Metrics/Value.php +++ b/src/Metrics/Value.php @@ -13,6 +13,11 @@ class Value extends Visualizable { use Macroable; + public function getFieldPrefix(): string + { + return 'value_'; + } + /** @return array */ public function toArray(): array { diff --git a/tests/Charts/Abstracts/ChartTest.php b/tests/Charts/Abstracts/ChartTest.php index 062c27d..42cc37a 100644 --- a/tests/Charts/Abstracts/ChartTest.php +++ b/tests/Charts/Abstracts/ChartTest.php @@ -46,7 +46,7 @@ expect($schema)->toHaveKeys(['visualization_key', 'label', 'datasets', 'floating_filters']); expect($schema['label'])->toBe([ - 'field' => 'date', + 'field' => 'label_date', 'header' => 'date', 'meta' => [], ]); @@ -54,7 +54,7 @@ expect($schema['datasets'])->toHaveCount(2); expect($schema['datasets']->first())->toBe([ - 'field' => 'revenue', + 'field' => 'dataset_revenue', 'header' => 'Revenue', 'type' => 'bar', 'meta' => [], @@ -79,7 +79,7 @@ expect($schema['floating_filters'])->toHaveCount(1); expect($schema['floating_filters']->first())->toBe([ - 'field' => 'date_range', + 'field' => 'floating_filter_date_range', 'header' => 'Date Range', 'type' => 'date_range', 'meta' => [], diff --git a/tests/Charts/Datasets/AreaTest.php b/tests/Charts/Datasets/AreaTest.php index 035723a..24f7e0f 100644 --- a/tests/Charts/Datasets/AreaTest.php +++ b/tests/Charts/Datasets/AreaTest.php @@ -6,7 +6,7 @@ $dataset = Area::make('SUM(total)', 'revenue')->header('Revenue'); expect($dataset->toArray())->toBe([ - 'field' => 'revenue', + 'field' => 'dataset_revenue', 'header' => 'Revenue', 'type' => 'area', 'meta' => [], diff --git a/tests/Charts/Datasets/BarTest.php b/tests/Charts/Datasets/BarTest.php index 8338333..a1e6d03 100644 --- a/tests/Charts/Datasets/BarTest.php +++ b/tests/Charts/Datasets/BarTest.php @@ -6,7 +6,7 @@ $dataset = Bar::make('SUM(total)', 'revenue')->header('Revenue'); expect($dataset->toArray())->toBe([ - 'field' => 'revenue', + 'field' => 'dataset_revenue', 'header' => 'Revenue', 'type' => 'bar', 'meta' => [], diff --git a/tests/Charts/Datasets/DoughnutTest.php b/tests/Charts/Datasets/DoughnutTest.php index 707beeb..8e1d124 100644 --- a/tests/Charts/Datasets/DoughnutTest.php +++ b/tests/Charts/Datasets/DoughnutTest.php @@ -6,7 +6,7 @@ $dataset = Doughnut::make('SUM(total)', 'revenue')->header('Revenue'); expect($dataset->toArray())->toBe([ - 'field' => 'revenue', + 'field' => 'dataset_revenue', 'header' => 'Revenue', 'type' => 'doughnut', 'meta' => [], diff --git a/tests/Charts/Datasets/LineTest.php b/tests/Charts/Datasets/LineTest.php index 0126f6e..404bec0 100644 --- a/tests/Charts/Datasets/LineTest.php +++ b/tests/Charts/Datasets/LineTest.php @@ -6,7 +6,7 @@ $dataset = Line::make('SUM(total)', 'revenue')->header('Revenue'); expect($dataset->toArray())->toBe([ - 'field' => 'revenue', + 'field' => 'dataset_revenue', 'header' => 'Revenue', 'type' => 'line', 'meta' => [], diff --git a/tests/Charts/Datasets/PieTest.php b/tests/Charts/Datasets/PieTest.php index d760703..ed8790f 100644 --- a/tests/Charts/Datasets/PieTest.php +++ b/tests/Charts/Datasets/PieTest.php @@ -6,7 +6,7 @@ $dataset = Pie::make('SUM(total)', 'revenue')->header('Revenue'); expect($dataset->toArray())->toBe([ - 'field' => 'revenue', + 'field' => 'dataset_revenue', 'header' => 'Revenue', 'type' => 'pie', 'meta' => [], diff --git a/tests/Charts/Datasets/ScatterTest.php b/tests/Charts/Datasets/ScatterTest.php index fb91c0b..89c43c1 100644 --- a/tests/Charts/Datasets/ScatterTest.php +++ b/tests/Charts/Datasets/ScatterTest.php @@ -6,7 +6,7 @@ $dataset = Scatter::make('SUM(total)', 'revenue')->header('Revenue'); expect($dataset->toArray())->toBe([ - 'field' => 'revenue', + 'field' => 'dataset_revenue', 'header' => 'Revenue', 'type' => 'scatter', 'meta' => [], diff --git a/tests/Charts/Labels/LabelTest.php b/tests/Charts/Labels/LabelTest.php index 358ae9c..f97c3f5 100644 --- a/tests/Charts/Labels/LabelTest.php +++ b/tests/Charts/Labels/LabelTest.php @@ -6,7 +6,7 @@ $label = Label::make('order_date', 'date')->header('Order Date'); expect($label->toArray())->toBe([ - 'field' => 'date', + 'field' => 'label_date', 'header' => 'Order Date', 'meta' => [], ]); diff --git a/tests/DataGrids/Columns/BooleanTest.php b/tests/DataGrids/Columns/BooleanTest.php index 76a4ab2..908eef2 100644 --- a/tests/DataGrids/Columns/BooleanTest.php +++ b/tests/DataGrids/Columns/BooleanTest.php @@ -14,7 +14,7 @@ $array = $column->toArray(); expect($array)->toHaveKeys(['field', 'type', 'is_sortable', 'is_filterable', 'is_hidden', 'meta']); - expect($array['field'])->toBe('field'); + expect($array['field'])->toBe('column_field'); expect($array['type'])->toBe(ColumnType::Boolean->value); expect($array['is_sortable'])->toBeTrue(); expect($array['is_filterable'])->toBeTrue(); diff --git a/tests/DataGrids/Columns/ChipTest.php b/tests/DataGrids/Columns/ChipTest.php index 28652ff..1798fca 100644 --- a/tests/DataGrids/Columns/ChipTest.php +++ b/tests/DataGrids/Columns/ChipTest.php @@ -15,7 +15,7 @@ $array = $column->toArray(); expect($array)->toHaveKeys(['field', 'type', 'is_sortable', 'is_filterable', 'is_hidden', 'meta']); - expect($array['field'])->toBe('Status'); + expect($array['field'])->toBe('column_Status'); expect($array['type'])->toBe(ColumnType::Chip->value); expect($array['is_sortable'])->toBeTrue(); expect($array['is_filterable'])->toBeTrue(); diff --git a/tests/DataGrids/Columns/DateTest.php b/tests/DataGrids/Columns/DateTest.php index b796b7a..20ce5de 100644 --- a/tests/DataGrids/Columns/DateTest.php +++ b/tests/DataGrids/Columns/DateTest.php @@ -14,7 +14,7 @@ $array = $column->toArray(); expect($array)->toHaveKeys(['field', 'type', 'is_sortable', 'is_filterable', 'is_hidden', 'meta']); - expect($array['field'])->toBe('field'); + expect($array['field'])->toBe('column_field'); expect($array['type'])->toBe(ColumnType::Date->value); expect($array['is_sortable'])->toBeTrue(); expect($array['is_filterable'])->toBeTrue(); diff --git a/tests/DataGrids/Columns/DateTimeTest.php b/tests/DataGrids/Columns/DateTimeTest.php index 80c2a0e..7298efb 100644 --- a/tests/DataGrids/Columns/DateTimeTest.php +++ b/tests/DataGrids/Columns/DateTimeTest.php @@ -14,7 +14,7 @@ $array = $column->toArray(); expect($array)->toHaveKeys(['field', 'type', 'is_sortable', 'is_filterable', 'is_hidden', 'meta']); - expect($array['field'])->toBe('field'); + expect($array['field'])->toBe('column_field'); expect($array['type'])->toBe(ColumnType::DateTime->value); expect($array['is_sortable'])->toBeTrue(); expect($array['is_filterable'])->toBeTrue(); diff --git a/tests/DataGrids/Columns/NumberTest.php b/tests/DataGrids/Columns/NumberTest.php index 742f186..a27654a 100644 --- a/tests/DataGrids/Columns/NumberTest.php +++ b/tests/DataGrids/Columns/NumberTest.php @@ -14,7 +14,7 @@ $array = $column->toArray(); expect($array)->toHaveKeys(['field', 'type', 'is_sortable', 'is_filterable', 'is_hidden', 'meta']); - expect($array['field'])->toBe('field'); + expect($array['field'])->toBe('column_field'); expect($array['type'])->toBe(ColumnType::Number->value); expect($array['is_sortable'])->toBeTrue(); expect($array['is_filterable'])->toBeTrue(); diff --git a/tests/DataGrids/Columns/TextTest.php b/tests/DataGrids/Columns/TextTest.php index ab1ded5..c5714bd 100644 --- a/tests/DataGrids/Columns/TextTest.php +++ b/tests/DataGrids/Columns/TextTest.php @@ -14,7 +14,7 @@ $array = $column->toArray(); expect($array)->toHaveKeys(['field', 'type', 'is_sortable', 'is_filterable', 'is_hidden', 'meta']); - expect($array['field'])->toBe('field'); + expect($array['field'])->toBe('column_field'); expect($array['type'])->toBe(ColumnType::Text->value); expect($array['is_sortable'])->toBeTrue(); expect($array['is_filterable'])->toBeTrue(); diff --git a/tests/DataGrids/Columns/TimeTest.php b/tests/DataGrids/Columns/TimeTest.php index c1d3bbb..8a1a423 100644 --- a/tests/DataGrids/Columns/TimeTest.php +++ b/tests/DataGrids/Columns/TimeTest.php @@ -14,7 +14,7 @@ $array = $column->toArray(); expect($array)->toHaveKeys(['field', 'type', 'is_sortable', 'is_filterable', 'is_hidden', 'meta']); - expect($array['field'])->toBe('field'); + expect($array['field'])->toBe('column_field'); expect($array['type'])->toBe(ColumnType::Time->value); expect($array['is_sortable'])->toBeTrue(); expect($array['is_filterable'])->toBeTrue(); diff --git a/tests/DataGrids/Grids/UserDataGridTest.php b/tests/DataGrids/Grids/UserDataGridTest.php index b543f5a..83ab11e 100644 --- a/tests/DataGrids/Grids/UserDataGridTest.php +++ b/tests/DataGrids/Grids/UserDataGridTest.php @@ -21,7 +21,7 @@ function validateDataGridSchema(array $schema): void $columns = [ [ - 'field' => 'ID', + 'field' => 'column_ID', 'header' => 'ID', 'type' => ColumnType::Number->value, 'pin' => 'none', @@ -32,7 +32,7 @@ function validateDataGridSchema(array $schema): void 'meta' => [], ], [ - 'field' => 'Name', + 'field' => 'column_Name', 'header' => 'Name', 'type' => ColumnType::Text->value, 'pin' => 'none', @@ -43,7 +43,7 @@ function validateDataGridSchema(array $schema): void 'meta' => [], ], [ - 'field' => 'Email', + 'field' => 'column_Email', 'header' => 'Email', 'type' => ColumnType::Text->value, 'pin' => 'none', @@ -74,7 +74,7 @@ function validateDataGridSchema(array $schema): void expect($schema['inline_actions'])->toContain($action); } - $floatingFilters = [['field' => 'Joined On', 'header' => 'Joined On', 'type' => 'date_range', 'meta' => []]]; + $floatingFilters = [['field' => 'floating_filter_Joined On', 'header' => 'Joined On', 'type' => 'date_range', 'meta' => []]]; foreach ($floatingFilters as $floatingFilter) { expect($schema['floating_filters'])->toContain($floatingFilter); } @@ -104,12 +104,12 @@ function validateDataGridSchema(array $schema): void $rows = $data['data']; expect($rows)->toHaveCount(2); - expect($rows[0]['ID'])->toBe(1); - expect($rows[0]['Name'])->toBe('John Doe'); - expect($rows[0]['Email'])->toBe('john@example.com'); - expect($rows[1]['ID'])->toBe(2); - expect($rows[1]['Name'])->toBe('Jane Doe'); - expect($rows[1]['Email'])->toBe('jane@example.com'); + expect($rows[0]['column_ID'])->toBe(1); + expect($rows[0]['column_Name'])->toBe('John Doe'); + expect($rows[0]['column_Email'])->toBe('john@example.com'); + expect($rows[1]['column_ID'])->toBe(2); + expect($rows[1]['column_Name'])->toBe('Jane Doe'); + expect($rows[1]['column_Email'])->toBe('jane@example.com'); expect($data['first'])->toBe(0); expect($data['last'])->toBe(100); }); @@ -137,12 +137,12 @@ function validateDataGridSchema(array $schema): void expect($data['total'])->toBe(2); expect($data['data'])->toHaveCount(2); - expect($data['data'][0]['ID'])->toBe(1); - expect($data['data'][0]['Name'])->toBe('John Doe'); - expect($data['data'][0]['Email'])->toBe('john@example.com'); - expect($data['data'][1]['ID'])->toBe(2); - expect($data['data'][1]['Name'])->toBe('Jane Doe'); - expect($data['data'][1]['Email'])->toBe('jane@example.com'); + expect($data['data'][0]['column_ID'])->toBe(1); + expect($data['data'][0]['column_Name'])->toBe('John Doe'); + expect($data['data'][0]['column_Email'])->toBe('john@example.com'); + expect($data['data'][1]['column_ID'])->toBe(2); + expect($data['data'][1]['column_Name'])->toBe('Jane Doe'); + expect($data['data'][1]['column_Email'])->toBe('jane@example.com'); expect($data['per_page'])->toBe(250); }); diff --git a/tests/Metrics/Abstracts/MetricTest.php b/tests/Metrics/Abstracts/MetricTest.php index e1af49c..9dc6b1b 100644 --- a/tests/Metrics/Abstracts/MetricTest.php +++ b/tests/Metrics/Abstracts/MetricTest.php @@ -49,7 +49,7 @@ expect($schema)->toHaveKeys(['visualization_key', 'value', 'floating_filters']); expect($schema['visualization_key'])->toBe('metrics.revenues'); expect($schema['value'])->toBe([ - 'field' => 'revenue', + 'field' => 'value_revenue', 'header' => 'Total Revenue', 'meta' => [], ]); @@ -61,7 +61,7 @@ expect($schema['floating_filters'])->toHaveCount(1); expect($schema['floating_filters']->first())->toBe([ - 'field' => 'date_range', + 'field' => 'floating_filter_date_range', 'header' => 'Date Range', 'type' => 'date_range', 'meta' => [], @@ -86,7 +86,7 @@ expect($data)->toHaveKeys(['visualization_key', 'value', 'floating_filters']); expect($data['visualization_key'])->toBe('metrics.revenues'); - expect($data['value']['field'])->toBe('revenue'); + expect($data['value']['field'])->toBe('value_revenue'); expect($data['value']['header'])->toBe('Total Revenue'); }); @@ -149,7 +149,7 @@ [ 'filter_set_operator' => 'and', 'filters' => [ - ['field' => 'total', 'value' => 100, 'filter_operator' => 'gte'], + ['field' => 'floating_filter_total', 'value' => 100, 'filter_operator' => 'gte'], ], ], ], diff --git a/tests/Metrics/ValueTest.php b/tests/Metrics/ValueTest.php index 6a7e5d7..5c3c266 100644 --- a/tests/Metrics/ValueTest.php +++ b/tests/Metrics/ValueTest.php @@ -5,7 +5,7 @@ it('makes a Value with an expression and field', function () { $value = Value::make('sum(orders.total)', 'revenue'); - expect($value->getField())->toBe('revenue'); + expect($value->getField())->toBe('value_revenue'); expect($value->getSelectWith())->toBe('sum(orders.total)'); }); @@ -27,7 +27,7 @@ ->header('Total Revenue'); expect($value->toArray())->toBe([ - 'field' => 'revenue', + 'field' => 'value_revenue', 'header' => 'Total Revenue', 'meta' => [], ]); diff --git a/tests/Traits/HandlesQueryExpressionsTest.php b/tests/Traits/HandlesQueryExpressionsTest.php index 20ceb12..239b4ce 100644 --- a/tests/Traits/HandlesQueryExpressionsTest.php +++ b/tests/Traits/HandlesQueryExpressionsTest.php @@ -4,6 +4,11 @@ class MockVisualizable extends Visualizable { + public function getFieldPrefix(): string + { + return 'mock_'; + } + public function toArray(): array { return []; @@ -18,7 +23,7 @@ public function toArray(): array test('can get field', function () { $mock = MockVisualizable::make('test_column', 'test_field'); - expect($mock->getField())->toBe('test_field'); + expect($mock->getField())->toBe('mock_test_field'); }); test('can check if having is required', function () { @@ -33,6 +38,6 @@ public function toArray(): array $instance = MockVisualizable::make('test_column', 'test_field', ['test_binding']); expect($instance->getSelectWith())->toBe('test_column'); - expect($instance->getField())->toBe('test_field'); + expect($instance->getField())->toBe('mock_test_field'); expect($instance->getSelectWithBindings())->toContain('test_binding'); });