diff --git a/laravel_app/app/Livewire/Projects/Tabs/Mosaic.php b/laravel_app/app/Livewire/Projects/Tabs/Mosaic.php index b4b56df..a0cfd65 100644 --- a/laravel_app/app/Livewire/Projects/Tabs/Mosaic.php +++ b/laravel_app/app/Livewire/Projects/Tabs/Mosaic.php @@ -4,6 +4,7 @@ use App\Jobs\ProjectMosiacGeneratorJob; use App\Models\Project; +use Carbon\Carbon; use Livewire\Component; use Livewire\WithPagination; @@ -14,8 +15,8 @@ class Mosaic extends Component public Project $project; public $formData = [ - 'week' => '', - 'year' => '', + 'end_date' => '', + 'offset' => '7', ]; public $showCreateModal = false; @@ -27,18 +28,19 @@ class Mosaic extends Component public function mount(Project $project) { $this->path = $project->download_path; + $this->formData['end_date'] = Carbon::yesterday()->toDateString(); } public function saveMosaic() { $this->validate([ - 'formData.year' => 'required', - 'formData.week' => 'required', + 'formData.end_date' => ['required','date','before:today'], + 'formData.offset' => 'required|integer|min:1|max:1000', ]); $mosaic = $this->project->mosaics()->updateOrCreate([ - 'name' => sprintf('Week %s, %s', $this->formData['week'], $this->formData['year']), - 'year' => $this->formData['year'], - 'week' => $this->formData['week'], + 'name' => sprintf('', $this->formData['end_date'], $this->formData['offset']), + 'offset' => $this->formData['offset'], + 'end_date' => $this->formData['end_date'], ], [ 'path' => $this->project->getMosaicPath(), ]); @@ -55,24 +57,20 @@ public function openCreateMosiacsModal() public function getDateRangeProperty() { - if (empty($this->formData['week']) || strlen($this->formData['year']) !== 4) { - return 'Invalid week or year'; + if (!$this->formData['end_date'] || !$this->formData['offset']) { + return 'Please give a correct date or offset'; } - $begin = now() - ->setISODate($this->formData['year'], $this->formData['week']) - ->startOfWeek(); - $end = now() - ->setISODate($this->formData['year'], $this->formData['week']) - ->endOfWeek(); - return $begin->format('Y-m-d').' - '.$end->format('Y-m-d'); + $start = (new Carbon($this->formData['end_date']))->subDays($this->formData['offset']-1); + $end = new Carbon($this->formData['end_date']); + return 'from '.$start->format('Y-m-d').' to '.$end->format('Y-m-d'); } private function applySearch($query) { return $query->when($this->search !== '', function ($q){ $q->where('name', 'like', '%'.$this->search.'%') - ->orWhere('year', 'like', '%' . $this->search . '%') - ->orWhere('week', 'like', '%' . $this->search . '%'); + ->orWhere('offset', 'like', '%' . $this->search . '%') + ->orWhere('end_date', 'like', '%' . $this->search . '%'); }); } @@ -86,8 +84,8 @@ public function update($property) public function render() { $query = $this->project->mosaics() - ->orderBy('year', 'desc') - ->orderBy('week', 'desc'); + ->orderBy('offset', 'desc') + ->orderBy('end_date', 'desc'); $query = $this->applySearch($query); $mosaics = $query->paginate(10, pageName: 'mosaicPage'); diff --git a/laravel_app/app/Models/ProjectMosaic.php b/laravel_app/app/Models/ProjectMosaic.php index 8398811..3c100b9 100644 --- a/laravel_app/app/Models/ProjectMosaic.php +++ b/laravel_app/app/Models/ProjectMosaic.php @@ -22,13 +22,14 @@ class ProjectMosaic extends Model 'week', 'year', 'end_date', + 'offset', 'status' ]; public static function getFilenameByPeriod(Carbon $endDate,int $offset) { - return sprintf('period_%s_%s.tif',(clone $endDate)->subdays($offset-1)->format('Y-m-d'),$endDate->format('Y-m-d')); + return sprintf('period_%s_%s.tif',(clone $endDate)->subdays($offset)->format('Y-m-d'),$endDate->format('Y-m-d')); } public function project() diff --git a/laravel_app/app/Rules/AllMosaicsPresentRule.php b/laravel_app/app/Rules/AllMosaicsPresentRule.php index f70c6cf..7a7e3d0 100644 --- a/laravel_app/app/Rules/AllMosaicsPresentRule.php +++ b/laravel_app/app/Rules/AllMosaicsPresentRule.php @@ -28,7 +28,8 @@ public function passes($attribute, $value) } return $project->allMosaicsPresent( - ProjectReport::getReportDateForYearAndWeek($project, $value['year'], $value['week']) + // TODO change with end_date. + $value['end_date'] ); } catch (\Exception $e) { $this->errorMessage = $e->getMessage(); diff --git a/laravel_app/resources/views/components/mosaic-create-modal.blade.php b/laravel_app/resources/views/components/mosaic-create-modal.blade.php index fd318e5..3de1e8a 100644 --- a/laravel_app/resources/views/components/mosaic-create-modal.blade.php +++ b/laravel_app/resources/views/components/mosaic-create-modal.blade.php @@ -17,13 +17,13 @@
- - - + + +
- - - + + +
diff --git a/laravel_app/resources/views/livewire/projects/tabs/mosaic.blade.php b/laravel_app/resources/views/livewire/projects/tabs/mosaic.blade.php index 422aa52..47a205b 100644 --- a/laravel_app/resources/views/livewire/projects/tabs/mosaic.blade.php +++ b/laravel_app/resources/views/livewire/projects/tabs/mosaic.blade.php @@ -22,10 +22,16 @@ class="justify-center rounded-md bg-indigo-600 px-3 py-2 text-sm font-semibold t - Name + {{__('Name')}} - Year-Week + {{__('Start')}} + + + {{__('End')}} + + + {{__('Range (days)')}} @@ -38,7 +44,13 @@ class="px-3 py-3.5 text-right text-sm font-semibold text-gray-900 sm:pr-8 lg:pr- {{ $mosaic->name }} - {{ $mosaic->year }}-{{ $mosaic->week}} + {{ $mosaic->end_date->copy()->subDays($mosaic->offset)->format('Y-m-d') }} + + + {{ $mosaic->end_date->format('Y-m-d') }} + + + {{ $mosaic->offset }} @@ -52,7 +64,6 @@ class="px-3 py-3.5 text-right text-sm font-semibold text-gray-900 sm:pr-8 lg:pr-
Results: {{ \Illuminate\Support\Number::format($mosaics->total()) }}
- {{ $mosaics->links('livewire.pagination') }}