From de05798e068bc35b8a0ca9eab8f9dfd812c9894b Mon Sep 17 00:00:00 2001 From: Adrian Hopek Date: Thu, 17 Feb 2022 11:31:24 +0100 Subject: [PATCH] #39 - wip --- app/Domain/CalendarGenerator.php | 2 +- app/Domain/TimesheetExport.php | 40 + app/Domain/TimesheetPerUserSheet.php | 216 +++++ .../Http/Controllers/TimesheetController.php | 57 ++ composer.json | 1 + composer.lock | 823 ++++++++++++++---- config/excel.php | 103 +++ resources/js/Pages/Calendar.vue | 18 +- resources/lang/pl.json | 9 +- routes/web.php | 3 + 10 files changed, 1104 insertions(+), 168 deletions(-) create mode 100644 app/Domain/TimesheetExport.php create mode 100644 app/Domain/TimesheetPerUserSheet.php create mode 100644 app/Infrastructure/Http/Controllers/TimesheetController.php create mode 100644 config/excel.php diff --git a/app/Domain/CalendarGenerator.php b/app/Domain/CalendarGenerator.php index f1d72f2..cd97443 100644 --- a/app/Domain/CalendarGenerator.php +++ b/app/Domain/CalendarGenerator.php @@ -29,7 +29,7 @@ class CalendarGenerator return $this->generateCalendar($period, $holidays); } - protected function monthNameToNumber($name): int + protected function monthNameToNumber(string $name): int { return match ($name) { default => CarbonInterface::JANUARY, diff --git a/app/Domain/TimesheetExport.php b/app/Domain/TimesheetExport.php new file mode 100644 index 0000000..ec7cf1e --- /dev/null +++ b/app/Domain/TimesheetExport.php @@ -0,0 +1,40 @@ +users as $user) { + $sheets[] = new TimesheetPerUserSheet($user, $this->month); + } + + return $sheets; + } + + public function forUsers(Collection $users): static + { + $this->users = $users; + + return $this; + } + + public function forMonth(Carbon $month): static + { + $this->month = $month; + + return $this; + } +} diff --git a/app/Domain/TimesheetPerUserSheet.php b/app/Domain/TimesheetPerUserSheet.php new file mode 100644 index 0000000..6a7bc0d --- /dev/null +++ b/app/Domain/TimesheetPerUserSheet.php @@ -0,0 +1,216 @@ +user->fullName; + } + + public function headings(): array + { + $types = VacationType::cases(); + + $headings = [ + __("Date"), + __("Day of week"), + __("Start date"), + __("End date"), + __("Worked hours"), + ]; + + foreach ($types as $type) { + $headings[] = $type->label(); + } + + return $headings; + } + + public function generator(): Generator + { + $period = CarbonPeriod::create($this->month->copy()->startOfMonth(), $this->month->copy()->endOfMonth()); + $vacations = $this->getVacationsForPeriod($this->user, $period); + $holidays = $this->getHolidaysForPeriod($period); + + foreach ($period as $day) { + $vacationsForDay = $vacations->get($day->toDateString(), new Collection()); + $workedThisDay = $this->checkIfWorkedThisDay($day, $holidays, $vacationsForDay); + + $row = [ + Date::dateTimeToExcel($day), + $day->translatedFormat("l"), + $workedThisDay ? $this->toExcelTime(Carbon::createFromTime(8)) : null, + $workedThisDay ? $this->toExcelTime(Carbon::createFromTime(16)) : null, + $workedThisDay ? static::HOURS_PER_DAY : null, + ]; + + foreach (VacationType::cases() as $type) { + $row[] = $vacationsForDay->has($type->value) ? static::HOURS_PER_DAY : null; + } + + yield $row; + } + } + + public function styles(Worksheet $sheet): void + { + $lastRow = $sheet->getHighestRow(); + $lastColumn = $sheet->getHighestColumn(); + + $sheet->getStyle("A1:{$lastColumn}1") + ->getFont()->setBold(true); + + $sheet->getStyle("A1:{$lastColumn}1") + ->getAlignment() + ->setVertical(Alignment::VERTICAL_CENTER); + + $sheet->getStyle("A1:{$lastColumn}1") + ->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getStartColor() + ->setRGB("D9D9D9"); + + $sheet->getStyle("C1:{$lastColumn}{$lastRow}") + ->getAlignment() + ->setHorizontal(Alignment::HORIZONTAL_CENTER); + + $sheet->getStyle("A2:A{$lastRow}") + ->getNumberFormat() + ->setFormatCode(NumberFormat::FORMAT_DATE_DDMMYYYY); + + $sheet->getStyle("C1:D{$lastRow}") + ->getNumberFormat() + ->setFormatCode(NumberFormat::FORMAT_DATE_TIME3); + + $sheet->getStyle("A2:A{$lastRow}") + ->getFont() + ->setBold(true); + + for ($i = 2; $i < $lastRow; $i++) { + $date = Date::excelToDateTimeObject($sheet->getCell("A{$i}")->getValue()); + + if (Carbon::createFromInterface($date)->isWeekend()) { + $sheet->getStyle("A{$i}:{$lastColumn}{$i}") + ->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getStartColor() + ->setRGB("FEE2E2"); + } + } + + $sheet->getStyle("A1:{$lastColumn}{$lastRow}") + ->getBorders() + ->getAllBorders() + ->setBorderStyle(Border::BORDER_THIN); + } + + public static function afterSheet(AfterSheet $event): void + { + $sheet = $event->getSheet(); + $lastRow = $sheet->getDelegate()->getHighestRow(); + + $sheet->append([ + __("Sum:"), + null, + null, + null, + "=SUM(E2:E{$lastRow})", + ]); + + $lastRow++; + + $sheet->getDelegate()->getStyle("A{$lastRow}") + ->getAlignment() + ->setHorizontal(Alignment::HORIZONTAL_RIGHT); + + $sheet->getDelegate()->getStyle("A{$lastRow}") + ->getFont() + ->setBold(true); + + $sheet->getDelegate()->getStyle("E{$lastRow}") + ->getAlignment() + ->setHorizontal(Alignment::HORIZONTAL_CENTER); + + $sheet->getDelegate()->mergeCells("A{$lastRow}:D{$lastRow}"); + + $sheet->getDelegate()->getStyle("A{$lastRow}:E{$lastRow}") + ->getBorders() + ->getAllBorders() + ->setBorderStyle(Border::BORDER_THIN); + } + + protected function getVacationsForPeriod(User $user, CarbonPeriod $period): Collection + { + return $user->vacations() + ->with("vacationRequest") + ->whereBetween("date", [$period->start, $period->end]) + ->whereRelation("vacationRequest", "state", VacationRequestState::Approved->value) + ->get() + ->groupBy( + [ + fn(Vacation $vacation) => $vacation->date->toDateString(), + fn(Vacation $vacation) => $vacation->vacationRequest->type->value, + ], + ); + } + + protected function getHolidaysForPeriod(CarbonPeriod $period): Collection + { + return Holiday::query() + ->whereBetween("date", [$period->start, $period->end]) + ->pluck("date"); + } + + protected function toExcelTime(Carbon $time): float + { + $excelTimestamp = Date::dateTimeToExcel($time); + $excelDate = floor($excelTimestamp); + + return $excelTimestamp - $excelDate; + } + + protected function checkIfWorkedThisDay(CarbonInterface $day, Collection $holidays, Collection $vacations): bool + { + return $day->isWeekday() && $holidays->doesntContain($day) && $vacations->isEmpty(); + } +} diff --git a/app/Infrastructure/Http/Controllers/TimesheetController.php b/app/Infrastructure/Http/Controllers/TimesheetController.php new file mode 100644 index 0000000..11d0636 --- /dev/null +++ b/app/Infrastructure/Http/Controllers/TimesheetController.php @@ -0,0 +1,57 @@ +selected(); + $month = Str::lower($request->query("month", Carbon::now()->englishMonth)); + + $month = Carbon::create($yearPeriod->year, $this->monthNameToNumber($month)); + + $users = User::query() + ->orderBy("last_name") + ->orderBy("first_name") + ->get(); + + $filename = "{$month->translatedFormat("F Y")}.xlsx"; + + $timesheet = (new TimesheetExport()) + ->forMonth($month) + ->forUsers($users); + + return Excel::download($timesheet, $filename); + } + + protected function monthNameToNumber(string $name): int + { + return match ($name) { + default => CarbonInterface::JANUARY, + "february" => CarbonInterface::FEBRUARY, + "march" => CarbonInterface::MARCH, + "april" => CarbonInterface::APRIL, + "may" => CarbonInterface::MAY, + "june" => CarbonInterface::JUNE, + "july" => CarbonInterface::JULY, + "august" => CarbonInterface::AUGUST, + "september" => CarbonInterface::SEPTEMBER, + "october" => CarbonInterface::OCTOBER, + "november" => CarbonInterface::NOVEMBER, + "december" => CarbonInterface::DECEMBER, + }; + } +} diff --git a/composer.json b/composer.json index 3296b26..3e2a8c2 100644 --- a/composer.json +++ b/composer.json @@ -18,6 +18,7 @@ "laravel/telescope": "^4.6", "laravel/tinker": "^2.5", "lasserafn/php-initial-avatar-generator": "^4.2", + "maatwebsite/excel": "^3.1", "spatie/laravel-google-calendar": "^3.5" }, "require-dev": { diff --git a/composer.lock b/composer.lock index 1d9d951..fc5be77 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9f6a05e262278b2e7bc50b7264c02fc9", + "content-hash": "e78c179928c45b84657ac8942654dc6f", "packages": [ { "name": "asm89/stack-cors", @@ -515,23 +515,23 @@ }, { "name": "dompdf/dompdf", - "version": "v1.1.1", + "version": "v1.2.0", "source": { "type": "git", "url": "https://github.com/dompdf/dompdf.git", - "reference": "de4aad040737a89fae2129cdeb0f79c45513128d" + "reference": "60b704331479a69e9bcdb3496da2315b5c4f94fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/dompdf/zipball/de4aad040737a89fae2129cdeb0f79c45513128d", - "reference": "de4aad040737a89fae2129cdeb0f79c45513128d", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/60b704331479a69e9bcdb3496da2315b5c4f94fd", + "reference": "60b704331479a69e9bcdb3496da2315b5c4f94fd", "shasum": "" }, "require": { "ext-dom": "*", "ext-mbstring": "*", - "phenx/php-font-lib": "^0.5.2", - "phenx/php-svg-lib": "^0.3.3", + "phenx/php-font-lib": "^0.5.4", + "phenx/php-svg-lib": "^0.3.3 || ^0.4.0", "php": "^7.1 || ^8.0" }, "require-dev": { @@ -576,9 +576,9 @@ "homepage": "https://github.com/dompdf/dompdf", "support": { "issues": "https://github.com/dompdf/dompdf/issues", - "source": "https://github.com/dompdf/dompdf/tree/v1.1.1" + "source": "https://github.com/dompdf/dompdf/tree/v1.2.0" }, - "time": "2021-11-24T00:45:04+00:00" + "time": "2022-02-07T13:02:10+00:00" }, { "name": "dragonmantank/cron-expression", @@ -709,6 +709,57 @@ ], "time": "2020-12-29T14:50:06+00:00" }, + { + "name": "ezyang/htmlpurifier", + "version": "v4.14.0", + "source": { + "type": "git", + "url": "https://github.com/ezyang/htmlpurifier.git", + "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/12ab42bd6e742c70c0a52f7b82477fcd44e64b75", + "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75", + "shasum": "" + }, + "require": { + "php": ">=5.2" + }, + "type": "library", + "autoload": { + "psr-0": { + "HTMLPurifier": "library/" + }, + "files": [ + "library/HTMLPurifier.composer.php" + ], + "exclude-from-classmap": [ + "/library/HTMLPurifier/Language/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "Edward Z. Yang", + "email": "admin@htmlpurifier.org", + "homepage": "http://ezyang.com" + } + ], + "description": "Standards compliant HTML filter written in PHP", + "homepage": "http://htmlpurifier.org/", + "keywords": [ + "html" + ], + "support": { + "issues": "https://github.com/ezyang/htmlpurifier/issues", + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.14.0" + }, + "time": "2021-12-25T01:21:49+00:00" + }, { "name": "firebase/php-jwt", "version": "v5.5.1", @@ -1124,12 +1175,12 @@ } }, "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1558,16 +1609,16 @@ }, { "name": "laravel/framework", - "version": "v8.81.0", + "version": "v8.83.1", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "9cc0efd724ce67a190b1695ba31a27bbb1ae9177" + "reference": "bddba117f8bce2f3c9875ca1ca375a96350d0f4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/9cc0efd724ce67a190b1695ba31a27bbb1ae9177", - "reference": "9cc0efd724ce67a190b1695ba31a27bbb1ae9177", + "url": "https://api.github.com/repos/laravel/framework/zipball/bddba117f8bce2f3c9875ca1ca375a96350d0f4d", + "reference": "bddba117f8bce2f3c9875ca1ca375a96350d0f4d", "shasum": "" }, "require": { @@ -1727,20 +1778,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2022-01-25T16:41:46+00:00" + "time": "2022-02-15T15:05:20+00:00" }, { "name": "laravel/sanctum", - "version": "v2.14.0", + "version": "v2.14.1", "source": { "type": "git", "url": "https://github.com/laravel/sanctum.git", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9" + "reference": "89937617fa144ddb759a740861a47c4f2fd2245b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/0647a87140c7522e75826cffcadb3ad6e01f71e9", - "reference": "0647a87140c7522e75826cffcadb3ad6e01f71e9", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/89937617fa144ddb759a740861a47c4f2fd2245b", + "reference": "89937617fa144ddb759a740861a47c4f2fd2245b", "shasum": "" }, "require": { @@ -1791,20 +1842,20 @@ "issues": "https://github.com/laravel/sanctum/issues", "source": "https://github.com/laravel/sanctum" }, - "time": "2022-01-12T15:07:43+00:00" + "time": "2022-02-15T08:08:57+00:00" }, { "name": "laravel/serializable-closure", - "version": "v1.0.5", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "25de3be1bca1b17d52ff0dc02b646c667ac7266c" + "reference": "9e4b005daa20b0c161f3845040046dc9ddc1d74e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/25de3be1bca1b17d52ff0dc02b646c667ac7266c", - "reference": "25de3be1bca1b17d52ff0dc02b646c667ac7266c", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/9e4b005daa20b0c161f3845040046dc9ddc1d74e", + "reference": "9e4b005daa20b0c161f3845040046dc9ddc1d74e", "shasum": "" }, "require": { @@ -1850,20 +1901,20 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2021-11-30T15:53:04+00:00" + "time": "2022-02-11T19:23:53+00:00" }, { "name": "laravel/socialite", - "version": "v5.4.0", + "version": "v5.5.1", "source": { "type": "git", "url": "https://github.com/laravel/socialite.git", - "reference": "4b1999232a572dfe61f42c7295490d1372dad097" + "reference": "9b96dfd69e9c1de69c23205cb390550bc71c357e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/socialite/zipball/4b1999232a572dfe61f42c7295490d1372dad097", - "reference": "4b1999232a572dfe61f42c7295490d1372dad097", + "url": "https://api.github.com/repos/laravel/socialite/zipball/9b96dfd69e9c1de69c23205cb390550bc71c357e", + "reference": "9b96dfd69e9c1de69c23205cb390550bc71c357e", "shasum": "" }, "require": { @@ -1919,20 +1970,20 @@ "issues": "https://github.com/laravel/socialite/issues", "source": "https://github.com/laravel/socialite" }, - "time": "2022-01-25T20:10:22+00:00" + "time": "2022-02-07T16:08:19+00:00" }, { "name": "laravel/telescope", - "version": "v4.7.0", + "version": "v4.7.3", "source": { "type": "git", "url": "https://github.com/laravel/telescope.git", - "reference": "4c7f170e20c2303321fa857bc3acceb69a588563" + "reference": "f91e7d068d3754575388b990332d0aad8d7ac7d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/telescope/zipball/4c7f170e20c2303321fa857bc3acceb69a588563", - "reference": "4c7f170e20c2303321fa857bc3acceb69a588563", + "url": "https://api.github.com/repos/laravel/telescope/zipball/f91e7d068d3754575388b990332d0aad8d7ac7d1", + "reference": "f91e7d068d3754575388b990332d0aad8d7ac7d1", "shasum": "" }, "require": { @@ -1943,6 +1994,7 @@ }, "require-dev": { "ext-gd": "*", + "guzzlehttp/guzzle": "^6.0|^7.0", "orchestra/testbench": "^6.0|^7.0" }, "type": "library", @@ -1984,9 +2036,9 @@ ], "support": { "issues": "https://github.com/laravel/telescope/issues", - "source": "https://github.com/laravel/telescope/tree/v4.7.0" + "source": "https://github.com/laravel/telescope/tree/v4.7.3" }, - "time": "2022-01-12T17:03:58+00:00" + "time": "2022-02-14T17:29:12+00:00" }, { "name": "laravel/tinker", @@ -2221,16 +2273,16 @@ }, { "name": "league/commonmark", - "version": "2.2.1", + "version": "2.2.2", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" + "reference": "13d7751377732637814f0cda0e3f6d3243f9f769" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", - "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/13d7751377732637814f0cda0e3f6d3243f9f769", + "reference": "13d7751377732637814f0cda0e3f6d3243f9f769", "shasum": "" }, "require": { @@ -2321,7 +2373,7 @@ "type": "tidelift" } ], - "time": "2022-01-25T14:37:33+00:00" + "time": "2022-02-13T15:00:57+00:00" }, { "name": "league/config", @@ -2631,6 +2683,262 @@ }, "time": "2021-08-15T23:05:49+00:00" }, + { + "name": "maatwebsite/excel", + "version": "3.1.36", + "source": { + "type": "git", + "url": "https://github.com/SpartnerNL/Laravel-Excel.git", + "reference": "eb31f30d72c51c3fb11644b636945accbe50404f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/eb31f30d72c51c3fb11644b636945accbe50404f", + "reference": "eb31f30d72c51c3fb11644b636945accbe50404f", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/support": "5.8.*|^6.0|^7.0|^8.0|^9.0", + "php": "^7.0|^8.0", + "phpoffice/phpspreadsheet": "^1.18" + }, + "require-dev": { + "orchestra/testbench": "^6.0|^7.0", + "predis/predis": "^1.1" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Maatwebsite\\Excel\\ExcelServiceProvider" + ], + "aliases": { + "Excel": "Maatwebsite\\Excel\\Facades\\Excel" + } + } + }, + "autoload": { + "psr-4": { + "Maatwebsite\\Excel\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Patrick Brouwers", + "email": "patrick@spartner.nl" + } + ], + "description": "Supercharged Excel exports and imports in Laravel", + "keywords": [ + "PHPExcel", + "batch", + "csv", + "excel", + "export", + "import", + "laravel", + "php", + "phpspreadsheet" + ], + "support": { + "issues": "https://github.com/SpartnerNL/Laravel-Excel/issues", + "source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.36" + }, + "funding": [ + { + "url": "https://laravel-excel.com/commercial-support", + "type": "custom" + }, + { + "url": "https://github.com/patrickbrouwers", + "type": "github" + } + ], + "time": "2022-01-27T18:34:20+00:00" + }, + { + "name": "maennchen/zipstream-php", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/maennchen/ZipStream-PHP.git", + "reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/c4c5803cc1f93df3d2448478ef79394a5981cc58", + "reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58", + "shasum": "" + }, + "require": { + "myclabs/php-enum": "^1.5", + "php": ">= 7.1", + "psr/http-message": "^1.0", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "ext-zip": "*", + "guzzlehttp/guzzle": ">= 6.3", + "mikey179/vfsstream": "^1.6", + "phpunit/phpunit": ">= 7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZipStream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paul Duncan", + "email": "pabs@pablotron.org" + }, + { + "name": "Jonatan Männchen", + "email": "jonatan@maennchen.ch" + }, + { + "name": "Jesse Donat", + "email": "donatj@gmail.com" + }, + { + "name": "András Kolesár", + "email": "kolesar@kolesar.hu" + } + ], + "description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.", + "keywords": [ + "stream", + "zip" + ], + "support": { + "issues": "https://github.com/maennchen/ZipStream-PHP/issues", + "source": "https://github.com/maennchen/ZipStream-PHP/tree/master" + }, + "funding": [ + { + "url": "https://opencollective.com/zipstream", + "type": "open_collective" + } + ], + "time": "2020-05-30T13:11:16+00:00" + }, + { + "name": "markbaker/complex", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPComplex.git", + "reference": "ab8bc271e404909db09ff2d5ffa1e538085c0f22" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/ab8bc271e404909db09ff2d5ffa1e538085c0f22", + "reference": "ab8bc271e404909db09ff2d5ffa1e538085c0f22", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "phpcompatibility/php-compatibility": "^9.0", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.3", + "squizlabs/php_codesniffer": "^3.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Complex\\": "classes/src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@lange.demon.co.uk" + } + ], + "description": "PHP Class for working with complex numbers", + "homepage": "https://github.com/MarkBaker/PHPComplex", + "keywords": [ + "complex", + "mathematics" + ], + "support": { + "issues": "https://github.com/MarkBaker/PHPComplex/issues", + "source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.1" + }, + "time": "2021-06-29T15:32:53+00:00" + }, + { + "name": "markbaker/matrix", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPMatrix.git", + "reference": "c66aefcafb4f6c269510e9ac46b82619a904c576" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/c66aefcafb4f6c269510e9ac46b82619a904c576", + "reference": "c66aefcafb4f6c269510e9ac46b82619a904c576", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "phpcompatibility/php-compatibility": "^9.0", + "phpdocumentor/phpdocumentor": "2.*", + "phploc/phploc": "^4.0", + "phpmd/phpmd": "2.*", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.3", + "sebastian/phpcpd": "^4.0", + "squizlabs/php_codesniffer": "^3.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Matrix\\": "classes/src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@demon-angel.eu" + } + ], + "description": "PHP Class for working with matrices", + "homepage": "https://github.com/MarkBaker/PHPMatrix", + "keywords": [ + "mathematics", + "matrix", + "vector" + ], + "support": { + "issues": "https://github.com/MarkBaker/PHPMatrix/issues", + "source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.0" + }, + "time": "2021-07-01T19:01:15+00:00" + }, { "name": "meyfa/php-svg", "version": "v0.9.1", @@ -2781,17 +3089,77 @@ "time": "2021-10-01T21:08:31+00:00" }, { - "name": "nesbot/carbon", - "version": "2.56.0", + "name": "myclabs/php-enum", + "version": "1.8.3", "source": { "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4" + "url": "https://github.com/myclabs/php-enum.git", + "reference": "b942d263c641ddb5190929ff840c68f78713e937" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/626ec8cbb724cd3c3400c3ed8f730545b744e3f4", - "reference": "626ec8cbb724cd3c3400c3ed8f730545b744e3f4", + "url": "https://api.github.com/repos/myclabs/php-enum/zipball/b942d263c641ddb5190929ff840c68f78713e937", + "reference": "b942d263c641ddb5190929ff840c68f78713e937", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5", + "squizlabs/php_codesniffer": "1.*", + "vimeo/psalm": "^4.6.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "MyCLabs\\Enum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP Enum contributors", + "homepage": "https://github.com/myclabs/php-enum/graphs/contributors" + } + ], + "description": "PHP Enum implementation", + "homepage": "http://github.com/myclabs/php-enum", + "keywords": [ + "enum" + ], + "support": { + "issues": "https://github.com/myclabs/php-enum/issues", + "source": "https://github.com/myclabs/php-enum/tree/1.8.3" + }, + "funding": [ + { + "url": "https://github.com/mnapoli", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/php-enum", + "type": "tidelift" + } + ], + "time": "2021-07-05T08:18:36+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.57.0", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "4a54375c21eea4811dbd1149fe6b246517554e78" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4a54375c21eea4811dbd1149fe6b246517554e78", + "reference": "4a54375c21eea4811dbd1149fe6b246517554e78", "shasum": "" }, "require": { @@ -2874,7 +3242,7 @@ "type": "tidelift" } ], - "time": "2022-01-21T17:08:38+00:00" + "time": "2022-02-13T18:13:33+00:00" }, { "name": "nette/schema", @@ -3180,12 +3548,12 @@ } }, "autoload": { - "psr-4": { - "Overtrue\\Pinyin\\": "src/" - }, "files": [ "src/const.php" - ] + ], + "psr-4": { + "Overtrue\\Pinyin\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3380,21 +3748,22 @@ }, { "name": "phenx/php-svg-lib", - "version": "0.3.4", + "version": "0.4.0", "source": { "type": "git", - "url": "https://github.com/PhenX/php-svg-lib.git", - "reference": "f627771eb854aa7f45f80add0f23c6c4d67ea0f2" + "url": "https://github.com/dompdf/php-svg-lib.git", + "reference": "3ffbbb037f0871c3a819e90cff8b36dd7e656189" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/f627771eb854aa7f45f80add0f23c6c4d67ea0f2", - "reference": "f627771eb854aa7f45f80add0f23c6c4d67ea0f2", + "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/3ffbbb037f0871c3a819e90cff8b36dd7e656189", + "reference": "3ffbbb037f0871c3a819e90cff8b36dd7e656189", "shasum": "" }, "require": { + "ext-mbstring": "*", "php": "^7.4 || ^8.0", - "sabberworm/php-css-parser": "^8.3" + "sabberworm/php-css-parser": "^8.4" }, "require-dev": { "phpunit/phpunit": "^9.5" @@ -3418,10 +3787,114 @@ "description": "A library to read, parse and export to PDF SVG files.", "homepage": "https://github.com/PhenX/php-svg-lib", "support": { - "issues": "https://github.com/PhenX/php-svg-lib/issues", - "source": "https://github.com/PhenX/php-svg-lib/tree/0.3.4" + "issues": "https://github.com/dompdf/php-svg-lib/issues", + "source": "https://github.com/dompdf/php-svg-lib/tree/0.4.0" }, - "time": "2021-10-18T02:13:32+00:00" + "time": "2021-12-17T14:08:35+00:00" + }, + { + "name": "phpoffice/phpspreadsheet", + "version": "1.21.0", + "source": { + "type": "git", + "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", + "reference": "1a359d2ccbb89c05f5dffb32711a95f4afc67964" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/1a359d2ccbb89c05f5dffb32711a95f4afc67964", + "reference": "1a359d2ccbb89c05f5dffb32711a95f4afc67964", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-dom": "*", + "ext-fileinfo": "*", + "ext-gd": "*", + "ext-iconv": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "ext-xml": "*", + "ext-xmlreader": "*", + "ext-xmlwriter": "*", + "ext-zip": "*", + "ext-zlib": "*", + "ezyang/htmlpurifier": "^4.13", + "maennchen/zipstream-php": "^2.1", + "markbaker/complex": "^3.0", + "markbaker/matrix": "^3.0", + "php": "^7.3 || ^8.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "psr/simple-cache": "^1.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-master", + "dompdf/dompdf": "^1.0", + "friendsofphp/php-cs-fixer": "^3.2", + "jpgraph/jpgraph": "^4.0", + "mpdf/mpdf": "^8.0", + "phpcompatibility/php-compatibility": "^9.3", + "phpstan/phpstan": "^1.1", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^8.5 || ^9.0", + "squizlabs/php_codesniffer": "^3.6", + "tecnickcom/tcpdf": "^6.4" + }, + "suggest": { + "dompdf/dompdf": "Option for rendering PDF with PDF Writer (doesn't yet support PHP8)", + "jpgraph/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", + "mpdf/mpdf": "Option for rendering PDF with PDF Writer", + "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer (doesn't yet support PHP8)" + }, + "type": "library", + "autoload": { + "psr-4": { + "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Maarten Balliauw", + "homepage": "https://blog.maartenballiauw.be" + }, + { + "name": "Mark Baker", + "homepage": "https://markbakeruk.net" + }, + { + "name": "Franck Lefevre", + "homepage": "https://rootslabs.net" + }, + { + "name": "Erik Tilt" + }, + { + "name": "Adrien Crivelli" + } + ], + "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", + "homepage": "https://github.com/PHPOffice/PhpSpreadsheet", + "keywords": [ + "OpenXML", + "excel", + "gnumeric", + "ods", + "php", + "spreadsheet", + "xls", + "xlsx" + ], + "support": { + "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.21.0" + }, + "time": "2022-01-06T11:10:08+00:00" }, { "name": "phpoption/phpoption", @@ -5424,12 +5897,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Iconv\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5504,12 +5977,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5587,12 +6060,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5672,12 +6145,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -5759,12 +6232,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5836,12 +6309,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5912,12 +6385,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -5991,12 +6464,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -6074,12 +6547,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -7098,16 +7571,16 @@ }, { "name": "composer/composer", - "version": "2.2.5", + "version": "2.2.6", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "22c41ef275c7bb64fa28fb2c0871a39666832cb9" + "reference": "ce785a18c0fb472421e52d958bab339247cb0e82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/22c41ef275c7bb64fa28fb2c0871a39666832cb9", - "reference": "22c41ef275c7bb64fa28fb2c0871a39666832cb9", + "url": "https://api.github.com/repos/composer/composer/zipball/ce785a18c0fb472421e52d958bab339247cb0e82", + "reference": "ce785a18c0fb472421e52d958bab339247cb0e82", "shasum": "" }, "require": { @@ -7177,7 +7650,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", - "source": "https://github.com/composer/composer/tree/2.2.5" + "source": "https://github.com/composer/composer/tree/2.2.6" }, "funding": [ { @@ -7193,7 +7666,7 @@ "type": "tidelift" } ], - "time": "2022-01-21T16:25:52+00:00" + "time": "2022-02-04T16:00:38+00:00" }, { "name": "composer/metadata-minifier", @@ -7337,23 +7810,23 @@ }, { "name": "composer/semver", - "version": "3.2.7", + "version": "3.2.9", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "deac27056b57e46faf136fae7b449eeaa71661ee" + "reference": "a951f614bd64dcd26137bc9b7b2637ddcfc57649" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/deac27056b57e46faf136fae7b449eeaa71661ee", - "reference": "deac27056b57e46faf136fae7b449eeaa71661ee", + "url": "https://api.github.com/repos/composer/semver/zipball/a951f614bd64dcd26137bc9b7b2637ddcfc57649", + "reference": "a951f614bd64dcd26137bc9b7b2637ddcfc57649", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.54", + "phpstan/phpstan": "^1.4", "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", @@ -7398,7 +7871,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.2.7" + "source": "https://github.com/composer/semver/tree/3.2.9" }, "funding": [ { @@ -7414,7 +7887,7 @@ "type": "tidelift" } ], - "time": "2022-01-04T09:57:54+00:00" + "time": "2022-02-04T13:58:43+00:00" }, { "name": "composer/spdx-licenses", @@ -7818,12 +8291,12 @@ } }, "autoload": { - "psr-4": { - "Facade\\FlareClient\\": "src" - }, "files": [ "src/helpers.php" - ] + ], + "psr-4": { + "Facade\\FlareClient\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7900,12 +8373,12 @@ } }, "autoload": { - "psr-4": { - "Facade\\Ignition\\": "src" - }, "files": [ "src/helpers.php" - ] + ], + "psr-4": { + "Facade\\Ignition\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7982,16 +8455,16 @@ }, { "name": "fakerphp/faker", - "version": "v1.18.0", + "version": "v1.19.0", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "2e77a868f6540695cf5ebf21e5ab472c65f47567" + "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/2e77a868f6540695cf5ebf21e5ab472c65f47567", - "reference": "2e77a868f6540695cf5ebf21e5ab472c65f47567", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", + "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", "shasum": "" }, "require": { @@ -8004,10 +8477,12 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", "ext-intl": "*", "symfony/phpunit-bridge": "^4.4 || ^5.2" }, "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", "ext-curl": "Required by Faker\\Provider\\Image to download images.", "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", @@ -8016,7 +8491,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "v1.18-dev" + "dev-main": "v1.19-dev" } }, "autoload": { @@ -8041,9 +8516,9 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.18.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" }, - "time": "2022-01-23T17:56:23+00:00" + "time": "2022-02-02T17:38:57+00:00" }, { "name": "filp/whoops", @@ -8239,16 +8714,16 @@ }, { "name": "laravel/dusk", - "version": "v6.21.0", + "version": "v6.22.1", "source": { "type": "git", "url": "https://github.com/laravel/dusk.git", - "reference": "45c1005ec73ab46504a666b6b52dddf1108b3eb4" + "reference": "bc9fd27ea167746ba0616a7661e6b5bd4a80c472" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/dusk/zipball/45c1005ec73ab46504a666b6b52dddf1108b3eb4", - "reference": "45c1005ec73ab46504a666b6b52dddf1108b3eb4", + "url": "https://api.github.com/repos/laravel/dusk/zipball/bc9fd27ea167746ba0616a7661e6b5bd4a80c472", + "reference": "bc9fd27ea167746ba0616a7661e6b5bd4a80c472", "shasum": "" }, "require": { @@ -8306,9 +8781,9 @@ ], "support": { "issues": "https://github.com/laravel/dusk/issues", - "source": "https://github.com/laravel/dusk/tree/v6.21.0" + "source": "https://github.com/laravel/dusk/tree/v6.22.1" }, - "time": "2022-01-12T18:00:01+00:00" + "time": "2022-02-12T17:43:36+00:00" }, { "name": "mockery/mockery", @@ -8409,12 +8884,12 @@ }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -8687,16 +9162,16 @@ }, { "name": "phar-io/version", - "version": "3.1.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" + "reference": "15a90844ad40f127afd244c0cad228de2a80052a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a", + "reference": "15a90844ad40f127afd244c0cad228de2a80052a", "shasum": "" }, "require": { @@ -8732,9 +9207,9 @@ "description": "Library for handling version information and constraints", "support": { "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.1.0" + "source": "https://github.com/phar-io/version/tree/3.1.1" }, - "time": "2021-02-23T14:00:09+00:00" + "time": "2022-02-07T21:56:48+00:00" }, { "name": "php-webdriver/webdriver", @@ -9472,11 +9947,11 @@ } }, "autoload": { - "classmap": [ - "src/" - ], "files": [ "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -9515,32 +9990,32 @@ }, { "name": "react/promise", - "version": "v2.8.0", + "version": "v2.9.0", "source": { "type": "git", "url": "https://github.com/reactphp/promise.git", - "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4" + "reference": "234f8fd1023c9158e2314fa9d7d0e6a83db42910" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/f3cff96a19736714524ca0dd1d4130de73dbbbc4", - "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4", + "url": "https://api.github.com/repos/reactphp/promise/zipball/234f8fd1023c9158e2314fa9d7d0e6a83db42910", + "reference": "234f8fd1023c9158e2314fa9d7d0e6a83db42910", "shasum": "" }, "require": { "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^7.0 || ^6.5 || ^5.7 || ^4.8.36" + "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.36" }, "type": "library", "autoload": { - "psr-4": { - "React\\Promise\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "React\\Promise\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -9549,7 +10024,23 @@ "authors": [ { "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com" + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" } ], "description": "A lightweight implementation of CommonJS Promises/A for PHP", @@ -9559,9 +10050,19 @@ ], "support": { "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v2.8.0" + "source": "https://github.com/reactphp/promise/tree/v2.9.0" }, - "time": "2020-05-12T15:16:56+00:00" + "funding": [ + { + "url": "https://github.com/WyriHaximus", + "type": "github" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2022-02-11T10:27:51+00:00" }, { "name": "sebastian/cli-parser", @@ -10069,16 +10570,16 @@ }, { "name": "sebastian/global-state", - "version": "5.0.3", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { @@ -10121,7 +10622,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" }, "funding": [ { @@ -10129,7 +10630,7 @@ "type": "github" } ], - "time": "2021-06-11T13:31:12+00:00" + "time": "2022-02-14T08:28:10+00:00" }, { "name": "sebastian/lines-of-code", diff --git a/config/excel.php b/config/excel.php new file mode 100644 index 0000000..d27a443 --- /dev/null +++ b/config/excel.php @@ -0,0 +1,103 @@ + [ + "chunk_size" => 1000, + "pre_calculate_formulas" => false, + "strict_null_comparison" => false, + "csv" => [ + "delimiter" => ",", + "enclosure" => '"', + "line_ending" => PHP_EOL, + "use_bom" => false, + "include_separator_line" => false, + "excel_compatibility" => false, + "output_encoding" => "", + ], + "properties" => [ + "creator" => "", + "lastModifiedBy" => "", + "title" => "", + "description" => "", + "subject" => "", + "keywords" => "", + "category" => "", + "manager" => "", + "company" => "", + ], + ], + + "imports" => [ + "read_only" => true, + "ignore_empty" => false, + "heading_row" => [ + "formatter" => "slug", + ], + "csv" => [ + "delimiter" => ",", + "enclosure" => '"', + "escape_character" => "\\", + "contiguous" => false, + "input_encoding" => "UTF-8", + ], + "properties" => [ + "creator" => "", + "lastModifiedBy" => "", + "title" => "", + "description" => "", + "subject" => "", + "keywords" => "", + "category" => "", + "manager" => "", + "company" => "", + ], + ], + "extension_detector" => [ + "xlsx" => Excel::XLSX, + "xlsm" => Excel::XLSX, + "xltx" => Excel::XLSX, + "xltm" => Excel::XLSX, + "xls" => Excel::XLS, + "xlt" => Excel::XLS, + "ods" => Excel::ODS, + "ots" => Excel::ODS, + "slk" => Excel::SLK, + "xml" => Excel::XML, + "gnumeric" => Excel::GNUMERIC, + "htm" => Excel::HTML, + "html" => Excel::HTML, + "csv" => Excel::CSV, + "tsv" => Excel::TSV, + "pdf" => Excel::DOMPDF, + ], + "value_binder" => [ + "default" => Maatwebsite\Excel\DefaultValueBinder::class, + ], + + "cache" => [ + "driver" => "memory", + "batch" => [ + "memory_limit" => 60000, + ], + "illuminate" => [ + "store" => null, + ], + ], + "transactions" => [ + "handler" => "db", + "db" => [ + "connection" => null, + ], + ], + + "temporary_files" => [ + "local_path" => storage_path("framework/cache/laravel-excel"), + "remote_disk" => null, + "remote_prefix" => null, + "force_resync_remote" => null, + ], +]; diff --git a/resources/js/Pages/Calendar.vue b/resources/js/Pages/Calendar.vue index 1415b0a..e77f1ee 100644 --- a/resources/js/Pages/Calendar.vue +++ b/resources/js/Pages/Calendar.vue @@ -1,10 +1,20 @@