@vendure/dashboard 3.3.8 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -0
- package/dist/plugin/api/api-extensions.d.ts +1 -0
- package/dist/plugin/api/api-extensions.js +38 -0
- package/dist/plugin/api/metrics.resolver.d.ts +8 -0
- package/dist/plugin/api/metrics.resolver.js +40 -0
- package/dist/plugin/config/metrics-strategies.d.ts +39 -0
- package/dist/plugin/config/metrics-strategies.js +74 -0
- package/dist/plugin/constants.d.ts +4 -3
- package/dist/plugin/constants.js +10 -277
- package/dist/plugin/dashboard.plugin.d.ts +95 -0
- package/dist/plugin/dashboard.plugin.js +168 -0
- package/dist/plugin/index.d.ts +2 -1
- package/dist/plugin/index.js +18 -1
- package/dist/plugin/package.json +3 -0
- package/dist/plugin/service/metrics.service.d.ts +15 -0
- package/dist/plugin/service/metrics.service.js +145 -0
- package/dist/plugin/types.d.ts +20 -37
- package/dist/plugin/types.js +13 -1
- package/dist/vite/constants.d.ts +5 -0
- package/dist/vite/constants.js +277 -0
- package/dist/vite/index.d.ts +1 -0
- package/dist/vite/index.js +1 -0
- package/dist/vite/types.d.ts +40 -0
- package/dist/vite/utils/config-loader.js +1 -0
- package/dist/{plugin → vite}/utils/plugin-discovery.js +1 -1
- package/dist/vite/utils/ui-config.d.ts +3 -0
- package/dist/vite/utils/ui-config.js +30 -0
- package/dist/vite/vite-plugin-ui-config.d.ts +123 -0
- package/dist/{plugin → vite}/vite-plugin-ui-config.js +3 -11
- package/dist/{plugin → vite}/vite-plugin-vendure-dashboard.js +1 -1
- package/index.html +1 -1
- package/package.json +16 -7
- package/src/app/app-providers.tsx +1 -1
- package/src/app/routes/_authenticated/_collections/collections_.$id.tsx +1 -1
- package/src/app/routes/_authenticated/_facets/components/facet-values-table.tsx +20 -35
- package/src/app/routes/_authenticated/_facets/facets.graphql.ts +40 -0
- package/src/app/routes/_authenticated/_facets/facets_.$facetId.values_.$id.tsx +147 -0
- package/src/app/routes/_authenticated/_orders/components/order-history/order-history.tsx +380 -33
- package/src/app/routes/_authenticated/_products/components/option-value-input.tsx +1 -1
- package/src/app/routes/_authenticated/_system/healthchecks.tsx +1 -1
- package/src/app/routes/_authenticated/_system/job-queue.tsx +1 -0
- package/src/app/routes/_authenticated/index.tsx +2 -2
- package/src/app/routes/_authenticated.tsx +1 -1
- package/src/lib/components/data-input/rich-text-input.tsx +14 -8
- package/src/lib/components/data-table/data-table-bulk-actions.tsx +17 -4
- package/src/lib/components/layout/app-layout.tsx +2 -7
- package/src/lib/components/layout/channel-switcher.tsx +166 -57
- package/src/lib/components/layout/dev-mode-indicator.tsx +18 -0
- package/src/lib/components/layout/language-dialog.tsx +2 -1
- package/src/lib/components/layout/manage-languages-dialog.tsx +77 -40
- package/src/lib/components/layout/nav-item-wrapper.tsx +107 -0
- package/src/lib/components/layout/nav-main.tsx +196 -107
- package/src/lib/components/login/login-form.tsx +80 -45
- package/src/lib/components/shared/asset/asset-bulk-actions.tsx +19 -4
- package/src/lib/components/shared/asset/asset-gallery.tsx +2 -2
- package/src/lib/components/shared/detail-page-button.tsx +42 -0
- package/src/lib/components/shared/history-timeline/history-entry-date.tsx +37 -0
- package/src/lib/components/shared/history-timeline/history-entry.tsx +135 -65
- package/src/lib/components/shared/history-timeline/history-note-input.tsx +4 -4
- package/src/lib/components/shared/history-timeline/history-timeline.tsx +7 -54
- package/src/lib/components/shared/translatable-form-field.tsx +16 -2
- package/src/lib/framework/defaults.ts +4 -10
- package/src/lib/framework/extension-api/define-dashboard-extension.ts +4 -0
- package/src/lib/framework/extension-api/extension-api-types.ts +11 -2
- package/src/lib/framework/extension-api/logic/index.ts +1 -0
- package/src/lib/framework/extension-api/logic/login.ts +17 -0
- package/src/lib/framework/extension-api/logic/navigation.ts +1 -0
- package/src/lib/framework/extension-api/types/data-table.ts +12 -3
- package/src/lib/framework/extension-api/types/detail-forms.ts +13 -0
- package/src/lib/framework/extension-api/types/form-components.ts +11 -0
- package/src/lib/framework/extension-api/types/index.ts +1 -0
- package/src/lib/framework/extension-api/types/layout.ts +3 -6
- package/src/lib/framework/extension-api/types/login.ts +96 -0
- package/src/lib/framework/extension-api/types/navigation.ts +57 -0
- package/src/lib/framework/extension-api/types/widgets.ts +0 -4
- package/src/lib/framework/extension-api/use-login-extensions.ts +26 -0
- package/src/lib/framework/layout-engine/dev-mode-button.tsx +24 -0
- package/src/lib/framework/layout-engine/location-wrapper.tsx +5 -12
- package/src/lib/framework/registry/global-registry.ts +4 -0
- package/src/lib/framework/registry/registry-types.ts +2 -0
- package/src/lib/graphql/api.ts +25 -3
- package/src/lib/graphql/graphql-env.d.ts +28 -28
- package/src/lib/graphql/settings-store-operations.ts +17 -0
- package/src/lib/hooks/use-floating-bulk-actions.ts +82 -0
- package/src/lib/hooks/use-local-format.ts +20 -5
- package/src/lib/index.ts +2 -1
- package/src/lib/providers/channel-provider.tsx +13 -11
- package/src/lib/providers/user-settings.tsx +78 -3
- package/src/lib/virtual.d.ts +26 -2
- package/src/vite-env.d.ts +2 -0
- package/vite/utils/plugin-discovery.ts +1 -1
- package/vite/utils/ui-config.ts +30 -42
- package/vite/vite-plugin-ui-config.ts +119 -17
- package/vite/vite-plugin-vendure-dashboard.ts +1 -1
- package/dist/plugin/utils/ui-config.d.ts +0 -3
- package/dist/plugin/utils/ui-config.js +0 -34
- package/dist/plugin/vite-plugin-ui-config.d.ts +0 -15
- package/src/app/routes/_authenticated/_facets/components/add-facet-value-dialog.tsx +0 -146
- package/src/lib/components/shared/rich-text-editor.tsx +0 -0
- /package/dist/{plugin/utils/ast-utils.spec.d.ts → vite/types.js} +0 -0
- /package/dist/{plugin → vite}/utils/ast-utils.d.ts +0 -0
- /package/dist/{plugin → vite}/utils/ast-utils.js +0 -0
- /package/dist/{plugin/utils/config-loader.d.ts → vite/utils/ast-utils.spec.d.ts} +0 -0
- /package/dist/{plugin → vite}/utils/ast-utils.spec.js +0 -0
- /package/dist/{plugin → vite}/utils/compiler.d.ts +0 -0
- /package/dist/{plugin → vite}/utils/compiler.js +0 -0
- /package/dist/{plugin/utils/config-loader.js → vite/utils/config-loader.d.ts} +0 -0
- /package/dist/{plugin → vite}/utils/logger.d.ts +0 -0
- /package/dist/{plugin → vite}/utils/logger.js +0 -0
- /package/dist/{plugin → vite}/utils/plugin-discovery.d.ts +0 -0
- /package/dist/{plugin → vite}/utils/schema-generator.d.ts +0 -0
- /package/dist/{plugin → vite}/utils/schema-generator.js +0 -0
- /package/dist/{plugin → vite}/utils/tsconfig-utils.d.ts +0 -0
- /package/dist/{plugin → vite}/utils/tsconfig-utils.js +0 -0
- /package/dist/{plugin → vite}/vite-plugin-admin-api-schema.d.ts +0 -0
- /package/dist/{plugin → vite}/vite-plugin-admin-api-schema.js +0 -0
- /package/dist/{plugin → vite}/vite-plugin-config-loader.d.ts +0 -0
- /package/dist/{plugin → vite}/vite-plugin-config-loader.js +0 -0
- /package/dist/{plugin → vite}/vite-plugin-config.d.ts +0 -0
- /package/dist/{plugin → vite}/vite-plugin-config.js +0 -0
- /package/dist/{plugin → vite}/vite-plugin-dashboard-metadata.d.ts +0 -0
- /package/dist/{plugin → vite}/vite-plugin-dashboard-metadata.js +0 -0
- /package/dist/{plugin → vite}/vite-plugin-gql-tada.d.ts +0 -0
- /package/dist/{plugin → vite}/vite-plugin-gql-tada.js +0 -0
- /package/dist/{plugin → vite}/vite-plugin-tailwind-source.d.ts +0 -0
- /package/dist/{plugin → vite}/vite-plugin-tailwind-source.js +0 -0
- /package/dist/{plugin → vite}/vite-plugin-theme.d.ts +0 -0
- /package/dist/{plugin → vite}/vite-plugin-theme.js +0 -0
- /package/dist/{plugin → vite}/vite-plugin-transform-index.d.ts +0 -0
- /package/dist/{plugin → vite}/vite-plugin-transform-index.js +0 -0
- /package/dist/{plugin → vite}/vite-plugin-vendure-dashboard.d.ts +0 -0
package/README.md
CHANGED
|
@@ -3,6 +3,68 @@
|
|
|
3
3
|
This is a React-based admin dashboard for Vendure. It is a standalone application that can be extended to suit the
|
|
4
4
|
needs of any Vendure project.
|
|
5
5
|
|
|
6
|
+
The package consists of three main components:
|
|
7
|
+
|
|
8
|
+
- `@vendure/dashboard`: Dashboard source code
|
|
9
|
+
- `@vendure/dashboard/vite`: A Vite plugin that is used to compile the dashboard in your project
|
|
10
|
+
- `@vendure/dashboard/plugin`: A Vendure plugin that provides backend functionality used by the dashboard app.
|
|
11
|
+
|
|
12
|
+
## DashboardPlugin
|
|
13
|
+
|
|
14
|
+
### Basic usage - serving the Dashboard UI
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
import { DashboardPlugin } from '@vendure/dashboard-plugin';
|
|
18
|
+
|
|
19
|
+
const config: VendureConfig = {
|
|
20
|
+
// Add an instance of the plugin to the plugins array
|
|
21
|
+
plugins: [
|
|
22
|
+
DashboardPlugin.init({ route: 'dashboard' }),
|
|
23
|
+
],
|
|
24
|
+
};
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The Dashboard UI will be served at the `/dashboard/` path.
|
|
28
|
+
|
|
29
|
+
### Using only the metrics API
|
|
30
|
+
|
|
31
|
+
If you are building a stand-alone version of the Dashboard UI app and don't need this plugin to serve the Dashboard UI, you can still use the `metricSummary` query by adding the `DashboardPlugin` to the `plugins` array without calling the `init()` method:
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
import { DashboardPlugin } from '@vendure/dashboard-plugin';
|
|
35
|
+
|
|
36
|
+
const config: VendureConfig = {
|
|
37
|
+
plugins: [
|
|
38
|
+
DashboardPlugin, // <-- no call to .init()
|
|
39
|
+
],
|
|
40
|
+
// ...
|
|
41
|
+
};
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Custom Dashboard UI build
|
|
45
|
+
|
|
46
|
+
You can also provide a custom build of the Dashboard UI:
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
import { DashboardPlugin } from '@vendure/dashboard-plugin';
|
|
50
|
+
|
|
51
|
+
const config: VendureConfig = {
|
|
52
|
+
plugins: [
|
|
53
|
+
DashboardPlugin.init({
|
|
54
|
+
route: 'dashboard',
|
|
55
|
+
app: path.join(__dirname, 'custom-dashboard-build'),
|
|
56
|
+
}),
|
|
57
|
+
],
|
|
58
|
+
};
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## API
|
|
62
|
+
|
|
63
|
+
### DashboardPluginOptions
|
|
64
|
+
|
|
65
|
+
- `route: string` - The route at which the Dashboard UI will be served (default: `'dashboard'`)
|
|
66
|
+
- `app?: string` - Optional path to a custom build of the Dashboard UI
|
|
67
|
+
|
|
6
68
|
## Development
|
|
7
69
|
|
|
8
70
|
Run `npx vite` to start Vite in dev mode.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const adminApiExtensions: import("graphql").DocumentNode;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.adminApiExtensions = void 0;
|
|
7
|
+
const graphql_tag_1 = __importDefault(require("graphql-tag"));
|
|
8
|
+
exports.adminApiExtensions = (0, graphql_tag_1.default) `
|
|
9
|
+
type MetricSummary {
|
|
10
|
+
interval: MetricInterval!
|
|
11
|
+
type: MetricType!
|
|
12
|
+
title: String!
|
|
13
|
+
entries: [MetricSummaryEntry!]!
|
|
14
|
+
}
|
|
15
|
+
enum MetricInterval {
|
|
16
|
+
Daily
|
|
17
|
+
}
|
|
18
|
+
enum MetricType {
|
|
19
|
+
OrderCount
|
|
20
|
+
OrderTotal
|
|
21
|
+
AverageOrderValue
|
|
22
|
+
}
|
|
23
|
+
type MetricSummaryEntry {
|
|
24
|
+
label: String!
|
|
25
|
+
value: Float!
|
|
26
|
+
}
|
|
27
|
+
input MetricSummaryInput {
|
|
28
|
+
interval: MetricInterval!
|
|
29
|
+
types: [MetricType!]!
|
|
30
|
+
refresh: Boolean
|
|
31
|
+
}
|
|
32
|
+
extend type Query {
|
|
33
|
+
"""
|
|
34
|
+
Get metrics for the given interval and metric types.
|
|
35
|
+
"""
|
|
36
|
+
metricSummary(input: MetricSummaryInput): [MetricSummary!]!
|
|
37
|
+
}
|
|
38
|
+
`;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { RequestContext } from '@vendure/core';
|
|
2
|
+
import { MetricsService } from '../service/metrics.service.js';
|
|
3
|
+
import { MetricSummary, MetricSummaryInput } from '../types.js';
|
|
4
|
+
export declare class MetricsResolver {
|
|
5
|
+
private service;
|
|
6
|
+
constructor(service: MetricsService);
|
|
7
|
+
metricSummary(ctx: RequestContext, input: MetricSummaryInput): Promise<MetricSummary[]>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.MetricsResolver = void 0;
|
|
16
|
+
const graphql_1 = require("@nestjs/graphql");
|
|
17
|
+
const core_1 = require("@vendure/core");
|
|
18
|
+
const metrics_service_js_1 = require("../service/metrics.service.js");
|
|
19
|
+
let MetricsResolver = class MetricsResolver {
|
|
20
|
+
constructor(service) {
|
|
21
|
+
this.service = service;
|
|
22
|
+
}
|
|
23
|
+
async metricSummary(ctx, input) {
|
|
24
|
+
return this.service.getMetrics(ctx, input);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
exports.MetricsResolver = MetricsResolver;
|
|
28
|
+
__decorate([
|
|
29
|
+
(0, graphql_1.Query)(),
|
|
30
|
+
(0, core_1.Allow)(core_1.Permission.ReadOrder),
|
|
31
|
+
__param(0, (0, core_1.Ctx)()),
|
|
32
|
+
__param(1, (0, graphql_1.Args)('input')),
|
|
33
|
+
__metadata("design:type", Function),
|
|
34
|
+
__metadata("design:paramtypes", [core_1.RequestContext, Object]),
|
|
35
|
+
__metadata("design:returntype", Promise)
|
|
36
|
+
], MetricsResolver.prototype, "metricSummary", null);
|
|
37
|
+
exports.MetricsResolver = MetricsResolver = __decorate([
|
|
38
|
+
(0, graphql_1.Resolver)(),
|
|
39
|
+
__metadata("design:paramtypes", [metrics_service_js_1.MetricsService])
|
|
40
|
+
], MetricsResolver);
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { RequestContext } from '@vendure/core';
|
|
2
|
+
import { MetricData } from '../service/metrics.service.js';
|
|
3
|
+
import { MetricInterval, MetricSummaryEntry, MetricType } from '../types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Calculate your metric data based on the given input.
|
|
6
|
+
* Be careful with heavy queries and calculations,
|
|
7
|
+
* as this function is executed everytime a user views its dashboard
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
10
|
+
export interface MetricCalculation {
|
|
11
|
+
type: MetricType;
|
|
12
|
+
getTitle(ctx: RequestContext): string;
|
|
13
|
+
calculateEntry(ctx: RequestContext, interval: MetricInterval, data: MetricData): MetricSummaryEntry;
|
|
14
|
+
}
|
|
15
|
+
export declare function getMonthName(monthNr: number): string;
|
|
16
|
+
/**
|
|
17
|
+
* Calculates the average order value per month/week
|
|
18
|
+
*/
|
|
19
|
+
export declare class AverageOrderValueMetric implements MetricCalculation {
|
|
20
|
+
readonly type = MetricType.AverageOrderValue;
|
|
21
|
+
getTitle(ctx: RequestContext): string;
|
|
22
|
+
calculateEntry(ctx: RequestContext, interval: MetricInterval, data: MetricData): MetricSummaryEntry;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Calculates number of orders
|
|
26
|
+
*/
|
|
27
|
+
export declare class OrderCountMetric implements MetricCalculation {
|
|
28
|
+
readonly type = MetricType.OrderCount;
|
|
29
|
+
getTitle(ctx: RequestContext): string;
|
|
30
|
+
calculateEntry(ctx: RequestContext, interval: MetricInterval, data: MetricData): MetricSummaryEntry;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Calculates order total
|
|
34
|
+
*/
|
|
35
|
+
export declare class OrderTotalMetric implements MetricCalculation {
|
|
36
|
+
readonly type = MetricType.OrderTotal;
|
|
37
|
+
getTitle(ctx: RequestContext): string;
|
|
38
|
+
calculateEntry(ctx: RequestContext, interval: MetricInterval, data: MetricData): MetricSummaryEntry;
|
|
39
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OrderTotalMetric = exports.OrderCountMetric = exports.AverageOrderValueMetric = void 0;
|
|
4
|
+
exports.getMonthName = getMonthName;
|
|
5
|
+
const types_js_1 = require("../types.js");
|
|
6
|
+
function getMonthName(monthNr) {
|
|
7
|
+
const monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
|
8
|
+
return monthNames[monthNr];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Calculates the average order value per month/week
|
|
12
|
+
*/
|
|
13
|
+
class AverageOrderValueMetric {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.type = types_js_1.MetricType.AverageOrderValue;
|
|
16
|
+
}
|
|
17
|
+
getTitle(ctx) {
|
|
18
|
+
return 'average-order-value';
|
|
19
|
+
}
|
|
20
|
+
calculateEntry(ctx, interval, data) {
|
|
21
|
+
const label = data.date.toISOString();
|
|
22
|
+
if (!data.orders.length) {
|
|
23
|
+
return {
|
|
24
|
+
label,
|
|
25
|
+
value: 0,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const total = data.orders.map(o => o.totalWithTax).reduce((_total, current) => _total + current);
|
|
29
|
+
const average = Math.round(total / data.orders.length);
|
|
30
|
+
return {
|
|
31
|
+
label,
|
|
32
|
+
value: average,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.AverageOrderValueMetric = AverageOrderValueMetric;
|
|
37
|
+
/**
|
|
38
|
+
* Calculates number of orders
|
|
39
|
+
*/
|
|
40
|
+
class OrderCountMetric {
|
|
41
|
+
constructor() {
|
|
42
|
+
this.type = types_js_1.MetricType.OrderCount;
|
|
43
|
+
}
|
|
44
|
+
getTitle(ctx) {
|
|
45
|
+
return 'order-count';
|
|
46
|
+
}
|
|
47
|
+
calculateEntry(ctx, interval, data) {
|
|
48
|
+
const label = data.date.toISOString();
|
|
49
|
+
return {
|
|
50
|
+
label,
|
|
51
|
+
value: data.orders.length,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.OrderCountMetric = OrderCountMetric;
|
|
56
|
+
/**
|
|
57
|
+
* Calculates order total
|
|
58
|
+
*/
|
|
59
|
+
class OrderTotalMetric {
|
|
60
|
+
constructor() {
|
|
61
|
+
this.type = types_js_1.MetricType.OrderTotal;
|
|
62
|
+
}
|
|
63
|
+
getTitle(ctx) {
|
|
64
|
+
return 'order-totals';
|
|
65
|
+
}
|
|
66
|
+
calculateEntry(ctx, interval, data) {
|
|
67
|
+
const label = data.date.toISOString();
|
|
68
|
+
return {
|
|
69
|
+
label,
|
|
70
|
+
value: data.orders.map(o => o.totalWithTax).reduce((_total, current) => _total + current, 0),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.OrderTotalMetric = OrderTotalMetric;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const
|
|
1
|
+
export declare const DEFAULT_APP_PATH: string;
|
|
2
|
+
export declare const loggerCtx = "DashboardPlugin";
|
|
3
|
+
export declare const defaultLanguage = "en";
|
|
3
4
|
export declare const defaultLocale: undefined;
|
|
4
|
-
export declare const defaultAvailableLanguages:
|
|
5
|
+
export declare const defaultAvailableLanguages: string[];
|
|
5
6
|
export declare const defaultAvailableLocales: string[];
|
package/dist/plugin/constants.js
CHANGED
|
@@ -1,277 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
LanguageCode.zh_Hans,
|
|
12
|
-
LanguageCode.zh_Hant,
|
|
13
|
-
LanguageCode.pt_BR,
|
|
14
|
-
LanguageCode.pt_PT,
|
|
15
|
-
LanguageCode.cs,
|
|
16
|
-
LanguageCode.fr,
|
|
17
|
-
LanguageCode.ru,
|
|
18
|
-
LanguageCode.uk,
|
|
19
|
-
LanguageCode.it,
|
|
20
|
-
LanguageCode.fa,
|
|
21
|
-
LanguageCode.ne,
|
|
22
|
-
LanguageCode.hr,
|
|
23
|
-
LanguageCode.sv,
|
|
24
|
-
LanguageCode.nb,
|
|
25
|
-
LanguageCode.tr,
|
|
26
|
-
];
|
|
27
|
-
export const defaultAvailableLocales = [
|
|
28
|
-
'AF',
|
|
29
|
-
'AL',
|
|
30
|
-
'DZ',
|
|
31
|
-
'AS',
|
|
32
|
-
'AD',
|
|
33
|
-
'AO',
|
|
34
|
-
'AI',
|
|
35
|
-
'AQ',
|
|
36
|
-
'AG',
|
|
37
|
-
'AR',
|
|
38
|
-
'AM',
|
|
39
|
-
'AW',
|
|
40
|
-
'AU',
|
|
41
|
-
'AT',
|
|
42
|
-
'AZ',
|
|
43
|
-
'BS',
|
|
44
|
-
'BH',
|
|
45
|
-
'BD',
|
|
46
|
-
'BB',
|
|
47
|
-
'BY',
|
|
48
|
-
'BE',
|
|
49
|
-
'BZ',
|
|
50
|
-
'BJ',
|
|
51
|
-
'BM',
|
|
52
|
-
'BT',
|
|
53
|
-
'BO',
|
|
54
|
-
'BQ',
|
|
55
|
-
'BA',
|
|
56
|
-
'BW',
|
|
57
|
-
'BV',
|
|
58
|
-
'BR',
|
|
59
|
-
'IO',
|
|
60
|
-
'BN',
|
|
61
|
-
'BG',
|
|
62
|
-
'BF',
|
|
63
|
-
'BI',
|
|
64
|
-
'CV',
|
|
65
|
-
'KH',
|
|
66
|
-
'CM',
|
|
67
|
-
'CA',
|
|
68
|
-
'KY',
|
|
69
|
-
'CF',
|
|
70
|
-
'TD',
|
|
71
|
-
'CL',
|
|
72
|
-
'CN',
|
|
73
|
-
'CX',
|
|
74
|
-
'CC',
|
|
75
|
-
'CO',
|
|
76
|
-
'KM',
|
|
77
|
-
'CD',
|
|
78
|
-
'CG',
|
|
79
|
-
'CK',
|
|
80
|
-
'CR',
|
|
81
|
-
'HR',
|
|
82
|
-
'CU',
|
|
83
|
-
'CW',
|
|
84
|
-
'CY',
|
|
85
|
-
'CZ',
|
|
86
|
-
'CI',
|
|
87
|
-
'DK',
|
|
88
|
-
'DJ',
|
|
89
|
-
'DM',
|
|
90
|
-
'DO',
|
|
91
|
-
'EC',
|
|
92
|
-
'EG',
|
|
93
|
-
'SV',
|
|
94
|
-
'GQ',
|
|
95
|
-
'ER',
|
|
96
|
-
'EE',
|
|
97
|
-
'SZ',
|
|
98
|
-
'ET',
|
|
99
|
-
'FK',
|
|
100
|
-
'FO',
|
|
101
|
-
'FJ',
|
|
102
|
-
'FI',
|
|
103
|
-
'FR',
|
|
104
|
-
'GF',
|
|
105
|
-
'PF',
|
|
106
|
-
'TF',
|
|
107
|
-
'GA',
|
|
108
|
-
'GM',
|
|
109
|
-
'GE',
|
|
110
|
-
'DE',
|
|
111
|
-
'GH',
|
|
112
|
-
'GI',
|
|
113
|
-
'GR',
|
|
114
|
-
'GL',
|
|
115
|
-
'GD',
|
|
116
|
-
'GP',
|
|
117
|
-
'GU',
|
|
118
|
-
'GT',
|
|
119
|
-
'GG',
|
|
120
|
-
'GN',
|
|
121
|
-
'GW',
|
|
122
|
-
'GY',
|
|
123
|
-
'HT',
|
|
124
|
-
'HM',
|
|
125
|
-
'VA',
|
|
126
|
-
'HN',
|
|
127
|
-
'HK',
|
|
128
|
-
'HU',
|
|
129
|
-
'IS',
|
|
130
|
-
'IN',
|
|
131
|
-
'ID',
|
|
132
|
-
'IR',
|
|
133
|
-
'IQ',
|
|
134
|
-
'IE',
|
|
135
|
-
'IM',
|
|
136
|
-
'IL',
|
|
137
|
-
'IT',
|
|
138
|
-
'JM',
|
|
139
|
-
'JP',
|
|
140
|
-
'JE',
|
|
141
|
-
'JO',
|
|
142
|
-
'KZ',
|
|
143
|
-
'KE',
|
|
144
|
-
'KI',
|
|
145
|
-
'KP',
|
|
146
|
-
'KR',
|
|
147
|
-
'KW',
|
|
148
|
-
'KG',
|
|
149
|
-
'LA',
|
|
150
|
-
'LV',
|
|
151
|
-
'LB',
|
|
152
|
-
'LS',
|
|
153
|
-
'LR',
|
|
154
|
-
'LY',
|
|
155
|
-
'LI',
|
|
156
|
-
'LT',
|
|
157
|
-
'LU',
|
|
158
|
-
'MO',
|
|
159
|
-
'MG',
|
|
160
|
-
'MW',
|
|
161
|
-
'MY',
|
|
162
|
-
'MV',
|
|
163
|
-
'ML',
|
|
164
|
-
'MT',
|
|
165
|
-
'MH',
|
|
166
|
-
'MQ',
|
|
167
|
-
'MR',
|
|
168
|
-
'MU',
|
|
169
|
-
'YT',
|
|
170
|
-
'MX',
|
|
171
|
-
'FM',
|
|
172
|
-
'MD',
|
|
173
|
-
'MC',
|
|
174
|
-
'MN',
|
|
175
|
-
'ME',
|
|
176
|
-
'MS',
|
|
177
|
-
'MA',
|
|
178
|
-
'MZ',
|
|
179
|
-
'MM',
|
|
180
|
-
'NA',
|
|
181
|
-
'NR',
|
|
182
|
-
'NP',
|
|
183
|
-
'NL',
|
|
184
|
-
'NC',
|
|
185
|
-
'NZ',
|
|
186
|
-
'NI',
|
|
187
|
-
'NE',
|
|
188
|
-
'NG',
|
|
189
|
-
'NU',
|
|
190
|
-
'NF',
|
|
191
|
-
'MK',
|
|
192
|
-
'MP',
|
|
193
|
-
'NO',
|
|
194
|
-
'OM',
|
|
195
|
-
'PK',
|
|
196
|
-
'PW',
|
|
197
|
-
'PS',
|
|
198
|
-
'PA',
|
|
199
|
-
'PG',
|
|
200
|
-
'PY',
|
|
201
|
-
'PE',
|
|
202
|
-
'PH',
|
|
203
|
-
'PN',
|
|
204
|
-
'PL',
|
|
205
|
-
'PT',
|
|
206
|
-
'PR',
|
|
207
|
-
'QA',
|
|
208
|
-
'RO',
|
|
209
|
-
'RU',
|
|
210
|
-
'RW',
|
|
211
|
-
'RE',
|
|
212
|
-
'BL',
|
|
213
|
-
'SH',
|
|
214
|
-
'KN',
|
|
215
|
-
'LC',
|
|
216
|
-
'MF',
|
|
217
|
-
'PM',
|
|
218
|
-
'VC',
|
|
219
|
-
'WS',
|
|
220
|
-
'SM',
|
|
221
|
-
'ST',
|
|
222
|
-
'SA',
|
|
223
|
-
'SN',
|
|
224
|
-
'RS',
|
|
225
|
-
'SC',
|
|
226
|
-
'SL',
|
|
227
|
-
'SG',
|
|
228
|
-
'SX',
|
|
229
|
-
'SK',
|
|
230
|
-
'SI',
|
|
231
|
-
'SB',
|
|
232
|
-
'SO',
|
|
233
|
-
'ZA',
|
|
234
|
-
'GS',
|
|
235
|
-
'SS',
|
|
236
|
-
'ES',
|
|
237
|
-
'LK',
|
|
238
|
-
'SD',
|
|
239
|
-
'SR',
|
|
240
|
-
'SJ',
|
|
241
|
-
'SE',
|
|
242
|
-
'CH',
|
|
243
|
-
'SY',
|
|
244
|
-
'TW',
|
|
245
|
-
'TJ',
|
|
246
|
-
'TZ',
|
|
247
|
-
'TH',
|
|
248
|
-
'TL',
|
|
249
|
-
'TG',
|
|
250
|
-
'TK',
|
|
251
|
-
'TO',
|
|
252
|
-
'TT',
|
|
253
|
-
'TN',
|
|
254
|
-
'TR',
|
|
255
|
-
'TM',
|
|
256
|
-
'TC',
|
|
257
|
-
'TV',
|
|
258
|
-
'UG',
|
|
259
|
-
'UA',
|
|
260
|
-
'AE',
|
|
261
|
-
'GB',
|
|
262
|
-
'UM',
|
|
263
|
-
'US',
|
|
264
|
-
'UY',
|
|
265
|
-
'UZ',
|
|
266
|
-
'VU',
|
|
267
|
-
'VE',
|
|
268
|
-
'VN',
|
|
269
|
-
'VG',
|
|
270
|
-
'VI',
|
|
271
|
-
'WF',
|
|
272
|
-
'EH',
|
|
273
|
-
'YE',
|
|
274
|
-
'ZM',
|
|
275
|
-
'ZW',
|
|
276
|
-
'AX',
|
|
277
|
-
];
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultAvailableLocales = exports.defaultAvailableLanguages = exports.defaultLocale = exports.defaultLanguage = exports.loggerCtx = exports.DEFAULT_APP_PATH = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
exports.DEFAULT_APP_PATH = (0, path_1.join)(__dirname, 'dist');
|
|
6
|
+
exports.loggerCtx = 'DashboardPlugin';
|
|
7
|
+
exports.defaultLanguage = 'en';
|
|
8
|
+
exports.defaultLocale = undefined;
|
|
9
|
+
exports.defaultAvailableLanguages = ['en', 'de', 'es', 'cs', 'zh_Hans', 'pt_BR', 'pt_PT', 'zh_Hant'];
|
|
10
|
+
exports.defaultAvailableLocales = ['en-US', 'de-DE', 'es-ES', 'zh-CN', 'zh-TW', 'pt-BR', 'pt-PT'];
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { MiddlewareConsumer, NestModule } from '@nestjs/common';
|
|
2
|
+
import { Type } from '@vendure/common/lib/shared-types';
|
|
3
|
+
import { ProcessContext } from '@vendure/core';
|
|
4
|
+
/**
|
|
5
|
+
* @description
|
|
6
|
+
* Configuration options for the {@link DashboardPlugin}.
|
|
7
|
+
*
|
|
8
|
+
* @docsCategory core plugins/DashboardPlugin
|
|
9
|
+
*/
|
|
10
|
+
export interface DashboardPluginOptions {
|
|
11
|
+
/**
|
|
12
|
+
* @description
|
|
13
|
+
* The route to the Dashboard UI.
|
|
14
|
+
*
|
|
15
|
+
* @default 'dashboard'
|
|
16
|
+
*/
|
|
17
|
+
route: string;
|
|
18
|
+
/**
|
|
19
|
+
* @description
|
|
20
|
+
* The path to the dashboard UI app dist directory. By default, the built-in dashboard UI
|
|
21
|
+
* will be served. This can be overridden with a custom build of the dashboard.
|
|
22
|
+
*/
|
|
23
|
+
appDir: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @description
|
|
27
|
+
* This plugin serves the static files of the Vendure Dashboard and provides the
|
|
28
|
+
* GraphQL extensions needed for the order metrics on the dashboard index page.
|
|
29
|
+
*
|
|
30
|
+
* ## Installation
|
|
31
|
+
*
|
|
32
|
+
* `npm install \@vendure/dashboard`
|
|
33
|
+
*
|
|
34
|
+
* ## Usage
|
|
35
|
+
*
|
|
36
|
+
* First you need to set up compilation of the Dashboard, using the Vite configuration
|
|
37
|
+
* described in the [Dashboard Getting Started Guide](/guides/extending-the-dashboard/getting-started/)
|
|
38
|
+
*
|
|
39
|
+
* Once set up, you run `npx vite build` to build the production version of the dashboard app.
|
|
40
|
+
*
|
|
41
|
+
* The built app files will be output to the location specified by `build.outDir` in your Vite
|
|
42
|
+
* config file. This should then be passed to the `appDir` init option, as in the example below:
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* import { DashboardPlugin } from '\@vendure/dashboard/plugin';
|
|
47
|
+
*
|
|
48
|
+
* const config: VendureConfig = {
|
|
49
|
+
* // Add an instance of the plugin to the plugins array
|
|
50
|
+
* plugins: [
|
|
51
|
+
* DashboardPlugin.init({
|
|
52
|
+
* route: 'dashboard',
|
|
53
|
+
* appDir: './dist/dashboard',
|
|
54
|
+
* }),
|
|
55
|
+
* ],
|
|
56
|
+
* };
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* ## Metrics
|
|
60
|
+
*
|
|
61
|
+
* This plugin defines a `metricSummary` query which is used by the Dashboard UI to
|
|
62
|
+
* display the order metrics on the dashboard.
|
|
63
|
+
*
|
|
64
|
+
* If you are building a stand-alone version of the Dashboard UI app, and therefore
|
|
65
|
+
* don't need this plugin to serve the Dashboard UI, you can still use the
|
|
66
|
+
* `metricSummary` query by adding the `DashboardPlugin` to the `plugins` array,
|
|
67
|
+
* but without calling the `init()` method:
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* import { DashboardPlugin } from '\@vendure/dashboard-plugin';
|
|
72
|
+
*
|
|
73
|
+
* const config: VendureConfig = {
|
|
74
|
+
* plugins: [
|
|
75
|
+
* DashboardPlugin, // <-- no call to .init()
|
|
76
|
+
* ],
|
|
77
|
+
* // ...
|
|
78
|
+
* };
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
81
|
+
* @docsCategory core plugins/DashboardPlugin
|
|
82
|
+
*/
|
|
83
|
+
export declare class DashboardPlugin implements NestModule {
|
|
84
|
+
private readonly processContext;
|
|
85
|
+
private static options;
|
|
86
|
+
constructor(processContext: ProcessContext);
|
|
87
|
+
/**
|
|
88
|
+
* @description
|
|
89
|
+
* Set the plugin options
|
|
90
|
+
*/
|
|
91
|
+
static init(options: DashboardPluginOptions): Type<DashboardPlugin>;
|
|
92
|
+
configure(consumer: MiddlewareConsumer): void;
|
|
93
|
+
private createStaticServer;
|
|
94
|
+
private getDashboardPath;
|
|
95
|
+
}
|