saade / filament-fullcalendar

The Most Popular JavaScript Calendar as a Filament Widget
MIT License
291 stars 88 forks source link

Introduce the methods to fetch resources from the livewire component … #216

Open felahdab opened 3 months ago

felahdab commented 3 months ago

Hi,

Since PR #66 , the resource time line plugin is readily available. However, there is no way to make the calendar load the resources from the Livewire component while it seems like a logical way of using this.

This PR introduces slight changes to allow that.

First, the javascript part introduces the resources method which calls the livewire backend to retrieve the resources. It also sets the refetchResourcesOnNavigate to true to make sure that the calendar gets an updated list of resources to display when the user navigates the calendar. An it also make sure that a filament-fullcalendar--refresh event will refresh both the events and the resources.

Then, it introduces the fetchResources method in the livewire part. This method is called by the resources method, and must return an array of resources. An empty array is returned by default.

The config method can be used to pass some aditionnal settings for the resource timeline like so:

public function config(): array
    {
        return [
            'initialView' => 'resourceTimelineMonth',

            'headerToolbar' => [
                'left' => 'resourceTimelineMonth,resourceTimelineYear',
                'center' => 'title',
                'right' => 'prev,next today',
            ],
            'resourceAreaHeaderContent' => 'Resource Header',
            'resourceAreaWidth' => '10%'
        ];
    }

I suppose this PR requires some non regression tests to be sure that the other plugins are not affected by those changes.

Hope that helps.

Regards. Florian.

felahdab commented 2 months ago

@saade any comment on this ?

Regards. Florian

felahdab commented 2 months ago

@saade Hi again. No news from you since one month. Can you have a look at my PR ? Regards.

oxyac commented 1 month ago

@saade This pull request makes the resource timeline usable. It contains only a few lines of code, please check it out.

saade commented 1 month ago

@felahdab @oxyac I'm not familiar with Resources or the Resource Timeline plugin. Could one of you explain to me like I'm five what a Resource is and how it differs from a regular Event?

oxyac commented 1 month ago

Based on the docs, to display events in the calendar in Resource timeline mode, we need to use a different parameter in the JS object:

resources: [
    // your resource list
  ]

When switching to resourceTimeline, possible only after #66 PR, we can see resource tab but it cannot be filled with data until we merge this.

@saade Hope this makes sense

FullCalendar docs

felahdab commented 1 month ago

@saade

Ressources are a way to group events in the resourcetimeline view. The fullcalendar component can load ressources either statically or thru a dynamic method.

This pull request makes it possible to load the resources from the livewire backend.

saade commented 1 month ago

A group of events, got it. Ty guys

felahdab commented 1 month ago

@saade Can you give us your sentiment about this ? Do you intend to merge ? Do you need something more from us before merging ?

Regards.

saade commented 1 month ago

@felahdab I understand the needing for this and i'll review and merge as soon as i can. Right now i'm unable to do so.

If you really need this and can't wait, you may update your project to reference this branch.

To do so, temporarily add this PR's branch to the repositories property of your composer.json:

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/saade/filament-fullcalendar.git"
        }
    ]
}

Then update your dependency constraint to reference this branch:

{
    "require": {
        "saade/filament-fullcalendar": "felahdab:florianthecoder-introduce-methods-to-use-resources",
    }
}

Finally, run: composer update