Skip to content

Commit

Permalink
Merge pull request #16 from andrey-helldar/compiles-json
Browse files Browse the repository at this point in the history
Compiles json
  • Loading branch information
Andrey Helldar authored Oct 20, 2020
2 parents 5103bd5 + 530d30f commit 3f00ae9
Show file tree
Hide file tree
Showing 10 changed files with 261 additions and 164 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/phpunit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
- name: Install dependencies
run: |
composer require laravel/framework:^${{ matrix.laravel }}
composer update --prefer-stable --prefer-dist --no-progress --no-interaction --no-suggest
composer update --prefer-stable --prefer-dist --no-progress --no-interaction
- name: Execute tests
run: |
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@ If your using autodiscovery in Laravel, it should just work.
Otherwise - add to your `config/app.php` providers array to where all your package providers are (before your app's providers):

```php
PrettyRoutes\ServiceProvider::class,
PrettyRoutes\AppServiceProvider::class,
```

By default, the package exposes a `/routes` url. If you wish to configure this, publish the config.

```bash
php artisan vendor:publish --provider="PrettyRoutes\ServiceProvider"
php artisan vendor:publish --provider="PrettyRoutes\AppServiceProvider"
```

If accessing `/routes` isn't working, ensure that you've included the provider within the same area as all your package providers (before all your app's providers) to ensure it takes priority.
Expand Down
3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,8 @@
"extra": {
"laravel": {
"providers": [
"PrettyRoutes\\ServiceProvider"
"PrettyRoutes\\BladeServiceProvider",
"PrettyRoutes\\AppServiceProvider"
]
}
}
Expand Down
32 changes: 32 additions & 0 deletions resources/views/layout.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui">

<title>{{ trans('Routes list') }} | {{ config('app.name') }}</title>

<link
rel="shortcut icon"
type="image/svg"
sizes="16x16"
href="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzk0Ljk3MSAzOTQuOTcxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzOTQuOTcxIDM5NC45NzE7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxnPg0KCQk8Zz4NCgkJCTxwYXRoIGQ9Ik01Ni40MjQsMTQ2LjI4NmMtMjguMjc3LDAtNTEuMiwyMi45MjMtNTEuMiw1MS4yczIyLjkyMyw1MS4yLDUxLjIsNTEuMnM1MS4yLTIyLjkyMyw1MS4yLTUxLjINCgkJCQlTODQuNzAxLDE0Ni4yODYsNTYuNDI0LDE0Ni4yODZ6IE01Ni40MjQsMjI3Ljc4OEw1Ni40MjQsMjI3Ljc4OGMtMTYuNzM1LDAtMzAuMzAyLTEzLjU2Ny0zMC4zMDItMzAuMzAyDQoJCQkJczEzLjU2Ny0zMC4zMDIsMzAuMzAyLTMwLjMwMmMxNi43MzUsMCwzMC4zMDIsMTMuNTY3LDMwLjMwMiwzMC4zMDJTNzMuMTYsMjI3Ljc4OCw1Ni40MjQsMjI3Ljc4OHoiLz4NCgkJCTxwYXRoIGQ9Ik0zNzkuMjk4LDE4Ny4wMzdIMTQzLjE1MWMtNS43NzEsMC0xMC40NDksNC42NzgtMTAuNDQ5LDEwLjQ0OXM0LjY3OCwxMC40NDksMTAuNDQ5LDEwLjQ0OWgyMzYuMTQ3DQoJCQkJYzUuNzcxLDAsMTAuNDQ5LTQuNjc4LDEwLjQ0OS0xMC40NDlTMzg1LjA2OSwxODcuMDM3LDM3OS4yOTgsMTg3LjAzN3oiLz4NCgkJCTxwYXRoIGQ9Ik01Ni40MjQsMGMtMjguMjc3LDAtNTEuMiwyMi45MjMtNTEuMiw1MS4yczIyLjkyMyw1MS4yLDUxLjIsNTEuMnM1MS4yLTIyLjkyMyw1MS4yLTUxLjJTODQuNzAxLDAsNTYuNDI0LDB6DQoJCQkJIE01Ni40MjQsODEuNTAyYy0xNi43MzUsMC0zMC4zMDItMTMuNTY3LTMwLjMwMi0zMC4zMDJzMTMuNTY3LTMwLjMwMiwzMC4zMDItMzAuMzAyUzg2LjcyNiwzNC40NjUsODYuNzI2LDUxLjINCgkJCQlTNzMuMTYsODEuNTAyLDU2LjQyNCw4MS41MDJ6Ii8+DQoJCQk8cGF0aCBkPSJNMTQzLjE1MSw2MS42NDloMjM2LjE0N2M1Ljc3MSwwLDEwLjQ0OS00LjY3OCwxMC40NDktMTAuNDQ5cy00LjY3OC0xMC40NDktMTAuNDQ5LTEwLjQ0OUgxNDMuMTUxDQoJCQkJYy01Ljc3MSwwLTEwLjQ0OSw0LjY3OC0xMC40NDksMTAuNDQ5UzEzNy4zOCw2MS42NDksMTQzLjE1MSw2MS42NDl6Ii8+DQoJCQk8cGF0aCBkPSJNNTYuNDI0LDI5Mi41NzFjLTI4LjI3NywwLTUxLjIsMjIuOTIzLTUxLjIsNTEuMmMwLDI4LjI3NywyMi45MjMsNTEuMiw1MS4yLDUxLjJzNTEuMi0yMi45MjMsNTEuMi01MS4yDQoJCQkJQzEwNy42MjQsMzE1LjQ5NCw4NC43MDEsMjkyLjU3MSw1Ni40MjQsMjkyLjU3MXogTTg2LjcyNiwzNDMuNzcxYzAsMTYuNzM1LTEzLjU2NywzMC4zMDItMzAuMzAyLDMwLjMwMnYwDQoJCQkJYy0xNi43MzUsMC0zMC4zMDItMTMuNTY3LTMwLjMwMi0zMC4zMDJjMC0xNi43MzUsMTMuNTY3LTMwLjMwMiwzMC4zMDItMzAuMzAyUzg2LjcyNiwzMjcuMDM2LDg2LjcyNiwzNDMuNzcxTDg2LjcyNiwzNDMuNzcxeiIvPg0KCQkJPHBhdGggZD0iTTM3OS4yOTgsMzMzLjMyMkgxNDMuMTUxYy01Ljc3MSwwLTEwLjQ0OSw0LjY3OC0xMC40NDksMTAuNDQ5czQuNjc4LDEwLjQ0OSwxMC40NDksMTAuNDQ5aDIzNi4xNDcNCgkJCQljNS43NzEsMCwxMC40NDktNC42NzgsMTAuNDQ5LTEwLjQ0OVMzODUuMDY5LDMzMy4zMjIsMzc5LjI5OCwzMzMuMzIyeiIvPg0KCQk8L2c+DQoJPC9nPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPC9zdmc+DQo=">

<link rel="dns-prefetch" href="https://fonts.googleapis.com">
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net">

<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/@mdi/[email protected]/css/materialdesignicons.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/vuetify.min.css" rel="stylesheet">

@stack('styles')
</head>
<body>

<div id="app">
@include('pretty-routes::vue')
</div>

@include('pretty-routes::scripts')

</body>
</html>
Original file line number Diff line number Diff line change
@@ -1,154 +1,3 @@
<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui">

<title>{{ trans('Routes list') }} | {{ config('app.name') }}</title>

<link rel="dns-prefetch" href="https://fonts.googleapis.com">
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net">

<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/@mdi/[email protected]/css/materialdesignicons.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/vuetify.min.css" rel="stylesheet">

<style>
.spaced { margin: 2px; }
.deprecated { text-decoration: line-through; }
.link:hover { text-decoration: underline; cursor: pointer; }
</style>
</head>
<body>

<div id="app">
<v-app>
<v-app-bar app>
<v-toolbar-title>
<span
v-text="trans('title')"
:class="{link: filterIsFull()}"
@click="resetFilters"
></span> (<span v-text="countRoutes"></span>)
</v-toolbar-title>

<v-spacer v-if="hasDeprecated"></v-spacer>
<v-select
v-if="hasDeprecated"
v-model="filter.deprecated"
:label="trans('show')"
:items="items.deprecated"
item-value="key"
item-text="value"
hide-details="true"
></v-select>

<v-spacer v-if="hasModules"></v-spacer>
<v-select
v-if="hasModules"
v-model="filter.modules"
:label="trans('module')"
:items="filteredModules"
item-value="key"
item-text="value"
hide-details="true"
></v-select>

<v-spacer></v-spacer>
<v-text-field
v-model="filter.value"
:label="trans('search')"
append-icon="mdi-magnify"
hide-details
clearable
></v-text-field>

<v-spacer></v-spacer>
<v-btn icon @click="openGitHubRepository">
<v-avatar size="36">
<img
:src="repository.icon"
alt="Github Project Page"
>
</v-avatar>
</v-btn>
</v-app-bar>

<v-main>
<v-data-table
:headers="filteredHeaders"
:items="filteredRoutes"
:items-per-page="itemsPerPage"
:search="filter.value"
:loading="loading"
:loading-text="trans('loading')"
:no-data-text="trans('noDataText')"
:no-results-text="trans('noResultsText')"
:footer-props="{
itemsPerPageAllText: trans('itemsPerPageAllText'),
itemsPerPageText: trans('itemsPerPageText'),
pageText: trans('pageText')
}"
ref="routes"
multi-sort
>
<template v-slot:item.methods="{ item }">
<v-chip
v-for="badge in item.methods"
v-text="badge.toUpperCase()"
:color="badges[badge]"
text-color="white"
label
small
class="spaced"
@click="setSearch(badge)"
></v-chip>
</template>

<template v-slot:item.path="{ item }">
<span v-html="highlightParameters(item.path)"></span>
</template>

<template v-slot:item.module="{ item }">
<v-chip
v-if="item.module !== null"
v-text="item.module"
label
small
class="spaced"
@click="setModule(item.module)"
></v-chip>
</template>

<template v-slot:item.action="{ item }">
<v-tooltip top v-if="item.deprecated">
<template v-slot:activator="{ on }">
<span
v-on="on"
v-html="highlightMethod(item.action)"
class="deprecated"
></span>
</template>
<span v-text="trans('deprecated')"></span>
</v-tooltip>

<span v-else v-html="highlightMethod(item.action)"></span>
</template>

<template v-slot:item.middlewares="{ item }">
<span
v-for="(middleware, key) in item.middlewares"
v-text="`${middleware}${key !== item.middlewares.length - 1 ? ', ' : ''}`"
@click="setSearch(middleware)"
class="link"
></span>
</template>
</v-data-table>
</v-main>
</v-app>
</div>

<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify"></script>
<script src="https://cdn.jsdelivr.net/npm/axios"></script>
Expand Down Expand Up @@ -181,7 +30,7 @@ class="link"
};
const colorScheme = () => {
switch ({!! json_encode(config('pretty-routes.color_scheme', 'auto')) !!}) {
switch (@json(config('pretty-routes.color_scheme', 'auto'))) {
case 'dark':
return true;
case 'light':
Expand Down Expand Up @@ -415,6 +264,3 @@ class="link"
}
});
</script>

</body>
</html>
134 changes: 134 additions & 0 deletions resources/views/vue.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
@push('styles')
<style>
.spaced { margin: 2px; }
.deprecated { text-decoration: line-through; }
.link:hover { text-decoration: underline; cursor: pointer; }
</style>
@endpush

<v-app>
<v-app-bar app>
<v-toolbar-title>
<span
v-text="trans('title')"
:class="{link: filterIsFull()}"
@click="resetFilters"
></span> (<span v-text="countRoutes"></span>)
</v-toolbar-title>

<v-spacer v-if="hasDeprecated"></v-spacer>
<v-select
v-if="hasDeprecated"
v-model="filter.deprecated"
:label="trans('show')"
:items="items.deprecated"
item-value="key"
item-text="value"
hide-details="true"
></v-select>

<v-spacer v-if="hasModules"></v-spacer>
<v-select
v-if="hasModules"
v-model="filter.modules"
:label="trans('module')"
:items="filteredModules"
item-value="key"
item-text="value"
hide-details="true"
></v-select>

<v-spacer></v-spacer>
<v-text-field
v-model="filter.value"
:label="trans('search')"
append-icon="mdi-magnify"
hide-details
clearable
></v-text-field>

<v-spacer></v-spacer>
<v-btn icon @click="openGitHubRepository">
<v-avatar size="36">
<img
:src="repository.icon"
alt="Github Project Page"
>
</v-avatar>
</v-btn>
</v-app-bar>

<v-main>
<v-data-table
:headers="filteredHeaders"
:items="filteredRoutes"
:items-per-page="itemsPerPage"
:search="filter.value"
:loading="loading"
:loading-text="trans('loading')"
:no-data-text="trans('noDataText')"
:no-results-text="trans('noResultsText')"
:footer-props="{
itemsPerPageAllText: trans('itemsPerPageAllText'),
itemsPerPageText: trans('itemsPerPageText'),
pageText: trans('pageText')
}"
ref="routes"
multi-sort
>
<template v-slot:item.methods="{ item }">
<v-chip
v-for="badge in item.methods"
v-text="badge.toUpperCase()"
:color="badges[badge]"
text-color="white"
label
small
class="spaced"
@click="setSearch(badge)"
></v-chip>
</template>

<template v-slot:item.path="{ item }">
<span v-html="highlightParameters(item.path)"></span>
</template>

<template v-slot:item.module="{ item }">
<v-chip
v-if="item.module !== null"
v-text="item.module"
label
small
class="spaced"
@click="setModule(item.module)"
></v-chip>
</template>

<template v-slot:item.action="{ item }">
<v-tooltip top v-if="item.deprecated">
<template v-slot:activator="{ on }">
<span
v-on="on"
v-html="highlightMethod(item.action)"
class="deprecated"
></span>
</template>
<span v-text="trans('deprecated')"></span>
</v-tooltip>

<span v-else v-html="highlightMethod(item.action)"></span>
</template>

<template v-slot:item.middlewares="{ item }">
<span
v-for="(middleware, key) in item.middlewares"
v-text="`${middleware}${key !== item.middlewares.length - 1 ? ', ' : ''}`"
@click="setSearch(middleware)"
class="link"
></span>
</template>
</v-data-table>
</v-main>
</v-app>
2 changes: 1 addition & 1 deletion src/ServiceProvider.php → src/AppServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

use Illuminate\Support\ServiceProvider as BaseServiceProvider;

class ServiceProvider extends BaseServiceProvider
class AppServiceProvider extends BaseServiceProvider
{
public function register()
{
Expand Down
Loading

0 comments on commit 3f00ae9

Please sign in to comment.