Skip to content

wolflu05/inventree-report-lsp-plugin

Repository files navigation

inventree-report-lsp-plugin

License: GPL3 CI

A report editor plugin that is powered by django-template-lsp.

Screenshot

⚙️ Installation

  1. Install the inventree-report-lsp-plugin from the Admin Center > Plugins > Install plugin. (Make sure the user interface plugin integration is enabled.)
  2. Now the LSP server needs to be started separately via the inventree-report-lsp cmd and the requests to /plugins/report-lsp/ws need to be proxied to it. If you're using the official docker stack, follow the guide below:

Important

At least InvenTree v0.18.0 is required to use this plugin.

🐳 Docker

Add this extra container to the docker-compose.yml file:

    inventree-report-lsp:
        image: inventree/inventree:${INVENTREE_TAG:-stable}
        container_name: inventree-report-lsp
        command: /bin/bash -c "invoke plugins && inventree-report-lsp"
        env_file:
            - .env
        volumes:
            - ${INVENTREE_EXT_VOLUME}:/home/inventree/data:z
        restart: unless-stopped

Add this proxy_route to the Caddyfile:

                 forward_auth {$INVENTREE_SERVER:"http://inventree-server:8000"} {
                         uri /auth/
                 }
         }
 
+        reverse_proxy /plugin/report-lsp/ws "http://inventree-report-lsp:8765"
 
         # All other requests are proxied to the InvenTree server
         reverse_proxy {$INVENTREE_SERVER:"http://inventree-server:8000"} {

🏃 Usage

Goto the Admin Center > Label Templates or Report Templates. Click on any in the table and select the "Report Editor". For the first load, this can take some time (up to ~30s) until the data is collected. The status bar at the bottom should show LSP Running (Connected) when its ready.

🧑‍💻 Development

For this plugin to work in development, the inventree source has to be patched temporary:

  1. Add this to the InvenTree vite.config.ts:

           proxy: {
             '/media': {
               target: 'http://localhost:8000',
               changeOrigin: true,
               secure: true
             },
    +        '/static/plugins/report-lsp/dist/': {
    +          target: 'http://localhost:5212',
    +          changeOrigin: true,
    +          secure: true,
    +          ws: true
    +        },
    +        "/plugin/report-lsp/ws": {
    +          target: "http://localhost:8765",
    +          changeOrigin: true,
    +          secure: true,
    +          ws: true,
    +        }
           },
  2. Remove Strict Mode temporary from src/frontend/src/main.tsx:

     ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
    -  <React.StrictMode>
           <MainView />
    -  </React.StrictMode>
     );
  3. Set the INVENTREE_REPORT_LSP_DEV to True before starting the dev server

  4. Install this package as editable pip package into your venv via

    pip install -e path/to/the/inventree-report-lsp-plugin
  5. Install frontend dependencies via cd frontend && npm ci

  6. Run the LSP in the background by invoking the inventree-report-lsp command in a terminal where the venv is activated. (If you want to use a custom djlsp instance because you want to do changes there, you need to specify the INVENTREE_DJANGO_LSP_SERVER_CMD env variable. E.g. /path/to/django-template-lsp/env/bin/djlsp)

  7. Run the Frontend dev server via cd frontend && npm run dev

About

A report editor plugin that is powered by django-template-lsp.

Topics

Resources

License

Stars

Watchers

Forks