Skip to content

Commit a744c70

Browse files
jbrooksukclaude
andauthored
Advanced Component Group Ordering (#212)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent b531b0e commit a744c70

41 files changed

Lines changed: 620 additions & 26 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

database/factories/ComponentGroupFactory.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
namespace Cachet\Database\Factories;
44

55
use Cachet\Enums\ComponentGroupVisibilityEnum;
6+
use Cachet\Enums\ResourceOrderColumnEnum;
7+
use Cachet\Enums\ResourceOrderDirectionEnum;
68
use Cachet\Models\ComponentGroup;
79
use Illuminate\Database\Eloquent\Factories\Factory;
810

@@ -23,7 +25,20 @@ public function definition(): array
2325
return [
2426
'name' => fake()->word,
2527
'order' => 0,
28+
'order_column' => ResourceOrderColumnEnum::Manual,
29+
'order_direction' => null,
2630
'visible' => ComponentGroupVisibilityEnum::expanded->value,
2731
];
2832
}
33+
34+
/**
35+
* Order the group's components by the given column and direction.
36+
*/
37+
public function orderedBy(ResourceOrderColumnEnum $column, ?ResourceOrderDirectionEnum $direction = ResourceOrderDirectionEnum::Asc): static
38+
{
39+
return $this->state(fn (array $attributes) => [
40+
'order_column' => $column,
41+
'order_direction' => $column === ResourceOrderColumnEnum::Manual ? null : $direction,
42+
]);
43+
}
2944
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
3+
use Cachet\Enums\ResourceOrderColumnEnum;
4+
use Illuminate\Database\Migrations\Migration;
5+
use Illuminate\Database\Schema\Blueprint;
6+
use Illuminate\Support\Facades\DB;
7+
use Illuminate\Support\Facades\Schema;
8+
9+
return new class extends Migration
10+
{
11+
/**
12+
* Run the migrations.
13+
*/
14+
public function up(): void
15+
{
16+
Schema::table('component_groups', function (Blueprint $table) {
17+
$table->string('order_column')->nullable()->after('order');
18+
$table->char('order_direction', 4)->nullable()->after('order_column');
19+
});
20+
21+
DB::table('component_groups')->update(['order_column' => ResourceOrderColumnEnum::Manual->value]);
22+
}
23+
24+
/**
25+
* Reverse the migrations.
26+
*/
27+
public function down(): void
28+
{
29+
Schema::table('component_groups', function (Blueprint $table) {
30+
$table->dropColumn([
31+
'order_column',
32+
'order_direction',
33+
]);
34+
});
35+
}
36+
};

resources/lang/de/component_group.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
'name' => 'Name',
1414
'visible' => 'Sichtbar',
1515
'collapsed' => 'Ausgeklappt',
16+
'order_column' => 'Sortierung der Komponentengruppe',
1617
'created_at' => 'Erstellt am',
1718
'updated_at' => 'Aktualisiert am',
1819
],
@@ -25,5 +26,7 @@
2526
'name_label' => 'Name',
2627
'visible_label' => 'Sichtbar',
2728
'collapsed_label' => 'Ausgeklappt',
29+
'order_column_label' => 'Sortierung der Komponentengruppe',
30+
'order_direction' => 'Sortierrichtung',
2831
],
2932
];

resources/lang/de/resource.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
11
<?php
22

33
return [
4+
'order_column' => [
5+
'id' => 'ID',
6+
'last_updated' => 'Zuletzt aktualisiert',
7+
'name' => 'Name',
8+
'manual' => 'Manuell',
9+
'status' => 'Status',
10+
],
11+
'order_direction' => [
12+
'asc' => 'Aufsteigend',
13+
'desc' => 'Absteigend',
14+
],
415
'visibility' => [
516
'authenticated' => 'Benutzer',
617
'guest' => 'Gäste',

resources/lang/de_AT/component_group.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
'name' => 'Name',
1414
'visible' => 'Sichtbar',
1515
'collapsed' => 'Ausgeklappt',
16+
'order_column' => 'Sortierung der Komponentengruppe',
1617
'created_at' => 'Erstellt am',
1718
'updated_at' => 'Aktualisiert am',
1819
],
@@ -25,5 +26,7 @@
2526
'name_label' => 'Name',
2627
'visible_label' => 'Sichtbar',
2728
'collapsed_label' => 'Ausgeklappt',
29+
'order_column_label' => 'Sortierung der Komponentengruppe',
30+
'order_direction' => 'Sortierrichtung',
2831
],
2932
];

resources/lang/de_AT/resource.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
11
<?php
22

33
return [
4+
'order_column' => [
5+
'id' => 'ID',
6+
'last_updated' => 'Zuletzt aktualisiert',
7+
'name' => 'Name',
8+
'manual' => 'Manuell',
9+
'status' => 'Status',
10+
],
11+
'order_direction' => [
12+
'asc' => 'Aufsteigend',
13+
'desc' => 'Absteigend',
14+
],
415
'visibility' => [
516
'authenticated' => 'Benutzer',
617
'guest' => 'Gäste',

resources/lang/de_CH/component_group.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
'name' => 'Name',
1414
'visible' => 'Sichtbar',
1515
'collapsed' => 'Ausgeklappt',
16+
'order_column' => 'Sortierung der Komponentengruppe',
1617
'created_at' => 'Erstellt am',
1718
'updated_at' => 'Aktualisiert am',
1819
],
@@ -25,5 +26,7 @@
2526
'name_label' => 'Name',
2627
'visible_label' => 'Sichtbar',
2728
'collapsed_label' => 'Ausgeklappt',
29+
'order_column_label' => 'Sortierung der Komponentengruppe',
30+
'order_direction' => 'Sortierrichtung',
2831
],
2932
];

resources/lang/de_CH/resource.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
11
<?php
22

33
return [
4+
'order_column' => [
5+
'id' => 'ID',
6+
'last_updated' => 'Zuletzt aktualisiert',
7+
'name' => 'Name',
8+
'manual' => 'Manuell',
9+
'status' => 'Status',
10+
],
11+
'order_direction' => [
12+
'asc' => 'Aufsteigend',
13+
'desc' => 'Absteigend',
14+
],
415
'visibility' => [
516
'authenticated' => 'Benutzer',
617
'guest' => 'Gäste',

resources/lang/en/component_group.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
'name' => 'Name',
1414
'visible' => 'Visible',
1515
'collapsed' => 'Collapsed',
16+
'order_column' => 'Component Group Order',
1617
'created_at' => 'Created at',
1718
'updated_at' => 'Updated at',
1819
],
@@ -25,5 +26,7 @@
2526
'name_label' => 'Name',
2627
'visible_label' => 'Visible',
2728
'collapsed_label' => 'Collapsed',
29+
'order_column_label' => 'Component Group Order',
30+
'order_direction' => 'Order Direction',
2831
],
2932
];

resources/lang/en/resource.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
11
<?php
22

33
return [
4+
'order_column' => [
5+
'id' => 'ID',
6+
'last_updated' => 'Last Updated',
7+
'name' => 'Name',
8+
'manual' => 'Manual',
9+
'status' => 'Status',
10+
],
11+
'order_direction' => [
12+
'asc' => 'Ascending',
13+
'desc' => 'Descending',
14+
],
415
'visibility' => [
516
'authenticated' => 'Users',
617
'guest' => 'Guests',

0 commit comments

Comments
 (0)