Git Product home page Git Product logo

nova-dashboard's People

Contributors

cord avatar dependabot[bot] avatar gbespyatykh avatar marispro avatar milewski avatar xoco70 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nova-dashboard's Issues

Improve documentation

Docs were quickly written, there are grammar mistakes.. and many things are missing such as

  • migration,
  • how to create widgets,
  • how to publish config to customize database model and tables,
  • better examples,
  • how to use the widgets as standard nova cards
  • how to use the WidgetResource::class to direcly link to a view using collapsible-resource-mananger
  • write docs for the value-widget and the chartjs-widget

Replacing default dashboard

Did you find a trick to replace default dashboard with this one using digital-creative/collapsible-resource-manager?

Charts are not updated when changing filters

Hi,

After updating the the latest version ( 2b82fea )
While all my value filters are working well, my chart now has a problem. If I change a filter, chart will not update. I checked that all queries are being well executed ( the changing params are OK).

The latest commit that is working for me is :

9032a6b

After that, chart is not taking the filters modification.

Publish Migrations error

running

php artisan vendor:publish --provider="DigitalCreative\NovaDashboard\ToolServiceProvider" --tag="migration"

fails with

Unable to locate publishable resources.

However php artisan migrate works

Value Widget

Love the changes you made, however I'm getting a few errors on the value widget now.

Not sure if it's me though, you git it working in combination with nova-dashboard?

Error in render: "TypeError: Cannot read property 'Increase' of null"

found in

---> <Widget> at resources/js/components/Widget.vue
Missing required prop: "card"

found in

---> <Widget> at resources/js/components/Widget.vue

Hiding dashboards from sidemenu when having only 1 item

Hi,

I have only 1 dashboard, I would like to hide the whole dashboard items ( Dashboards and subitem my-dashboard ).

Is it currently possible to hide the whole dashboard without losing dashboard ( if I remove it from NovaServiceProvider, it also disappear )

Compatible with awesome-nova/dependent-filter ?

Hi,

I'm using the plugin https://github.com/awesome-nova/dependent-filter#dynamic-dependencies as I have operation, and inside operations, I have meters.

So when I select an operation, I want meter filter to refresh, filtering by operation.

While I could implement it in resource views, it is not working in dashboard, I get a 404 on http://localhost:8000/nova-api/tableau-de-bord/filters/options?filters=e30%3D&filter=operation_id

{
    "message": "",
    "exception": "Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException",
    "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Foundation/Application.php",
    "line": 1068,
    "trace": [
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php",
            "line": 44,
            "function": "abort",
            "class": "Illuminate\\Foundation\\Application",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php",
            "line": 64,
            "function": "abort"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/nova/src/Http/Requests/InteractsWithResources.php",
            "line": 51,
            "function": "abort_if"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Support/helpers.php",
            "line": 263,
            "function": "Laravel\\Nova\\Http\\Requests\\{closure}",
            "class": "Laravel\\Nova\\Http\\Requests\\NovaRequest",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/nova/src/Http/Requests/InteractsWithResources.php",
            "line": 53,
            "function": "tap"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/nova/src/Http/Requests/InteractsWithResources.php",
            "line": 63,
            "function": "resource",
            "class": "Laravel\\Nova\\Http\\Requests\\NovaRequest",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/awesome-nova/dependent-filter/src/Http/Controllers/FilterController.php",
            "line": 15,
            "function": "newResource",
            "class": "Laravel\\Nova\\Http\\Requests\\NovaRequest",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
            "line": 48,
            "function": "options",
            "class": "AwesomeNova\\Http\\Controllers\\FilterController",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
            "line": 255,
            "function": "dispatch",
            "class": "Illuminate\\Routing\\ControllerDispatcher",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
            "line": 197,
            "function": "runController",
            "class": "Illuminate\\Routing\\Route",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 691,
            "function": "run",
            "class": "Illuminate\\Routing\\Route",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 128,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/nova/src/Http/Middleware/Authorize.php",
            "line": 18,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 167,
            "function": "handle",
            "class": "Laravel\\Nova\\Http\\Middleware\\Authorize",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/nova/src/Http/Middleware/BootTools.php",
            "line": 20,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 167,
            "function": "handle",
            "class": "Laravel\\Nova\\Http\\Middleware\\BootTools",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/nova/src/Http/Middleware/DispatchServingNovaEvent.php",
            "line": 20,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 167,
            "function": "handle",
            "class": "Laravel\\Nova\\Http\\Middleware\\DispatchServingNovaEvent",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php",
            "line": 44,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/nova/src/Http/Middleware/Authenticate.php",
            "line": 31,
            "function": "handle",
            "class": "Illuminate\\Auth\\Middleware\\Authenticate",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 167,
            "function": "handle",
            "class": "Laravel\\Nova\\Http\\Middleware\\Authenticate",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
            "line": 41,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 167,
            "function": "handle",
            "class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php",
            "line": 77,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 167,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php",
            "line": 49,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 167,
            "function": "handle",
            "class": "Illuminate\\View\\Middleware\\ShareErrorsFromSession",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php",
            "line": 121,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php",
            "line": 63,
            "function": "handleStatefulRequest",
            "class": "Illuminate\\Session\\Middleware\\StartSession",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 167,
            "function": "handle",
            "class": "Illuminate\\Session\\Middleware\\StartSession",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php",
            "line": 37,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 167,
            "function": "handle",
            "class": "Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php",
            "line": 67,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 167,
            "function": "handle",
            "class": "Illuminate\\Cookie\\Middleware\\EncryptCookies",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 103,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 693,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 668,
            "function": "runRouteWithinStack",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 634,
            "function": "runRoute",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 623,
            "function": "dispatchToRoute",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 166,
            "function": "dispatch",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 128,
            "function": "Illuminate\\Foundation\\Http\\{closure}",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/kabbouchi/nova-impersonate/src/Http/Middleware/Impersonate.php",
            "line": 23,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 167,
            "function": "handle",
            "class": "KABBOUCHI\\NovaImpersonate\\Http\\Middleware\\Impersonate",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/nova/src/Http/Middleware/ServeNova.php",
            "line": 26,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 167,
            "function": "handle",
            "class": "Laravel\\Nova\\Http\\Middleware\\ServeNova",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php",
            "line": 67,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 167,
            "function": "handle",
            "class": "Barryvdh\\Debugbar\\Middleware\\InjectDebugbar",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/spatie/laravel-cookie-consent/src/CookieConsentMiddleware.php",
            "line": 12,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 167,
            "function": "handle",
            "class": "Spatie\\CookieConsent\\CookieConsentMiddleware",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
            "line": 21,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 167,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
            "line": 21,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 167,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php",
            "line": 27,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 167,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
            "line": 87,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 167,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/fideloper/proxy/src/TrustProxies.php",
            "line": 57,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 167,
            "function": "handle",
            "class": "Fideloper\\Proxy\\TrustProxies",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 103,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 141,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 110,
            "function": "sendRequestThroughRouter",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/public/index.php",
            "line": 55,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/home/julio/Code/acc/server.php",
            "line": 21,
            "function": "require_once"
        }
    ]
}

For resource page, I get a Code 200:

[{"label":"ACC00000017","value":1},{"label":"ACC00000021","value":2},{"label":"ACC00000026","value":3},{"label":"ACC00000030","value":6},{"label":"ACC00000045","value":4},{"label":"ACC000000YY","value":5}]

Is it the limit of Laravel Nova when 2 good plugins doesn't integrate with each other ? Anything I could do about it ?

Hiding widgets based on role?

Is it possible to hide certain widgets based or if they have authorization. I have tried using the canSee() function but it hides the entire view not just the widget. Any help would be appreciated.

Update on Static and dynamic mix?

Note: While possible to mix Static and Dynamic Widgets the static ones gets shifted around due to the lack of a setting to lock an item on the grid, this will likely be fixed once the original author of the underlying grid library accepts the suggestion of developing such feature: bensladden/vue-responsive-dash#196

This was completed Aug..6th I believe. Just curious if you have had a chance to test / implement. Thanks!

Problem with nova version

The package seems too great. But I have a problem with the nova version. I have nova 2.11.0 and composer say:

optimistdigital/nova-translatable 1.5.0 requires laravel/nova ^2.9 || ^3.0 -> satisfiable by laravel/nova[2.x-dev].

Which version do I need to use your package?

public Team-dashboard

Scenario:

A sales team has a shared team-dashboard, which is shown on a smart-TV screen using a built-in browser.

This would require:

  • option to access a Dashboard through a public url (e.g. protected by a hashkey, no login)
  • show a dashboard outside the context of the nova gui / hide the nova frontend and disable all other resources

Filters' width

In docs :

we can see, that filters have set up width. What is method to archive it?

Multiple Dashboard link doesn't work

in NovaServiceProvider.php
image

in Sidebar.
image

It shows on sidebar as different url but It's not work as url.
It's doesn't work with multiple dashboard when I'm click on it?

HELP

Navigation state doesn't update

For my Nova menu, I have a section called Reports with two dashboards inside of it

MenuSection::make('Reports', [
    MenuItem::dashboard(Demographics::class),
    MenuItem::dashboard(Statistics::class),
])->icon('document-report'),

Anytime I click from one of those dashboards links to any other item in the menu, the menu state doesn't change. This is limited to just these two dashboards... If I remove the NovaDashboard card from each dashboard, the issue resolves itself, so I figured it something to do with NovaDashboard,

Ex dashboard

class Demographics extends Dashboard
{
    public function name()
    {
        return 'Demographics';
    }

    public function cards()
    {
        return [
            NovaDashboard::make()
                ->addView('Demographics Filters', function (View $view) {
                    $view->static();

                    return $view
                        ->icon('window')
                        ->addWidgets([
                            GenderWidget::make()->layout(4, 2, 9, 0),
                        ])
                        ->addFilters([
                            Gender::make(),
                            Status::make(),
                            Year::make(),
                        ]);
                }),
        ];
    }

    public function uriKey()
    {
        return 'demographics';
    }
}

Demo

Screen.Recording.2024-02-05.at.2.45.25.PM.mov

It doesn't show in the demo, but the new page loads with no issues after each click

Full Example

Hi, can you provide a full example of how to use this package in Laravel Nova. I need a dashboard where I can filter my current cards.

Image 2024-01-10 at 7 24 06 PM

Access to $filters in widgets() function

Hi,

Right now, I have 6 value Widget on my dashboard, each one is making the same query, but select a different field or agregator.

It would be nice to have access to $filters value in widgets() function so that I can only make one query select all field, and then pass the value in the constructor of each widget.

Right now, I have to execute the same query 6 times

Here is an example of the value metrics I display

//            DB::raw('sum(delta) as sum_delta'),
//            DB::raw('avg(delta) as avg_delta'),
//            DB::raw('sum(redistributed) as sum_redistr'),
//            DB::raw('avg(redistributed) as avg_redistr'),
//            DB::raw('avg(repartition_rate) as avg_repartition_rate'),
//            DB::raw('sum(redistributed) / sum(delta) * 100) as autoprod_rate'),

It could be useful for simple widgets like ValueWidget

Besides, it could also allow conditional display of metrics depending on filters.

In my case, I have operations and meters (a meter belongs to an operation). Metrics are differents for a whole operation, or for a single meter.

enhance widget placement options

as listed on https://vue-responsive-dash.netlify.app/api/#props-3 there are many options to control the behaviour of widgets.

Would be great to get control of these settings through the widgets options.

control if widgets can be resized and moved:

  • draggable
  • resizable
  • locked

control of the dimensions of the widget (some widget will require fixed dimensions, others are flexible)

  • width

  • maxWidth

  • minWidth

  • height

  • maxHeight

  • minHeight

looks like
resources/js/components/Grid.vue
needs to be enhanced and the properties of course.

update url with filter settings

filter settings are currently to added to the url, so we can copy a direct link to a specific setup.

Would be great if the URL is updated with the filter data

static mode is not working for widget

Hi,

When adding a widget in static mode, with 5 params, it says it wants 0 or 4 :

if ($argumentsCount !== 0 && $argumentsCount !== 4) {

            throw new RuntimeException('Invalid number of arguments, expected: { int $x, int $y, int $width, int $height } or none.');

        }

so static mode is not working.

How to pass options to a widget ???

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.