@vendure/admin-ui 3.0.7 → 3.0.8
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/catalog/components/product-list/product-list.component.d.ts +1 -1
- package/catalog/components/product-variant-list/product-variant-list.component.d.ts +1 -1
- package/core/common/version.d.ts +1 -1
- package/esm2022/catalog/components/move-collections-dialog/move-collections-dialog.component.mjs +1 -1
- package/esm2022/catalog/components/product-variant-quick-jump/product-variant-quick-jump.component.mjs +12 -12
- package/esm2022/core/common/version.mjs +2 -2
- package/esm2022/core/components/theme-switcher/theme-switcher.component.mjs +1 -1
- package/esm2022/core/shared/components/card/card.component.mjs +1 -1
- package/esm2022/core/shared/components/currency-code-selector/currency-code-selector.component.mjs +1 -1
- package/esm2022/core/shared/components/data-table-filter-presets/data-table-filter-presets.component.mjs +1 -1
- package/esm2022/core/shared/components/dropdown/dropdown-trigger.directive.mjs +1 -1
- package/esm2022/core/shared/components/help-tooltip/help-tooltip.component.mjs +1 -1
- package/esm2022/core/shared/components/language-code-selector/language-code-selector.component.mjs +1 -1
- package/esm2022/core/shared/components/product-variant-selector/product-variant-selector.component.mjs +1 -1
- package/esm2022/core/shared/directives/disabled.directive.mjs +1 -1
- package/esm2022/core/shared/pipes/state-i18n-token.pipe.mjs +1 -1
- package/esm2022/dashboard/widgets/test-widget/test-widget.component.mjs +1 -1
- package/esm2022/order/components/order-payment-card/order-payment-card.component.mjs +1 -1
- package/esm2022/order/components/order-state-select-dialog/order-state-select-dialog.component.mjs +1 -1
- package/esm2022/settings/components/add-country-to-zone-dialog/add-country-to-zone-dialog.component.mjs +3 -3
- package/esm2022/system/components/job-state-label/job-state-label.component.mjs +1 -1
- package/fesm2022/vendure-admin-ui-catalog.mjs +11 -11
- package/fesm2022/vendure-admin-ui-catalog.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-core.mjs +1 -1
- package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-dashboard.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-order.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-settings.mjs +2 -2
- package/fesm2022/vendure-admin-ui-settings.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-system.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vendure-admin-ui-dashboard.mjs","sources":["../../src/lib/dashboard/src/components/dashboard-widget/dashboard-widget.component.ts","../../src/lib/dashboard/src/components/dashboard-widget/dashboard-widget.component.html","../../src/lib/dashboard/src/components/dashboard/dashboard.component.ts","../../src/lib/dashboard/src/components/dashboard/dashboard.component.html","../../src/lib/dashboard/src/dashboard.routes.ts","../../src/lib/dashboard/src/widgets/latest-orders-widget/latest-orders-widget.component.ts","../../src/lib/dashboard/src/widgets/latest-orders-widget/latest-orders-widget.component.html","../../src/lib/dashboard/src/widgets/order-chart-widget/order-chart-widget.component.ts","../../src/lib/dashboard/src/widgets/order-chart-widget/order-chart-widget.component.html","../../src/lib/dashboard/src/widgets/order-summary-widget/order-summary-widget.component.ts","../../src/lib/dashboard/src/widgets/order-summary-widget/order-summary-widget.component.html","../../src/lib/dashboard/src/default-widgets.ts","../../src/lib/dashboard/src/dashboard.module.ts","../../src/lib/dashboard/src/widgets/test-widget/test-widget.component.ts","../../src/lib/dashboard/src/widgets/test-widget/test-widget.component.html","../../src/lib/dashboard/src/widgets/welcome-widget/welcome-widget.component.ts","../../src/lib/dashboard/src/widgets/welcome-widget/welcome-widget.component.html","../../src/lib/dashboard/src/public_api.ts","../../src/lib/dashboard/src/vendure-admin-ui-dashboard.ts"],"sourcesContent":["import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ComponentRef,\r\n Input,\r\n OnDestroy,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { DashboardWidgetConfig } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-dashboard-widget',\r\n templateUrl: './dashboard-widget.component.html',\r\n styleUrls: ['./dashboard-widget.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DashboardWidgetComponent implements AfterViewInit, OnDestroy {\r\n @Input() widgetConfig: DashboardWidgetConfig;\r\n\r\n @ViewChild('portal', { read: ViewContainerRef })\r\n private portal: ViewContainerRef;\r\n\r\n private componentRef: ComponentRef<any>;\r\n\r\n ngAfterViewInit(): void {\r\n this.loadWidget();\r\n }\r\n\r\n private async loadWidget() {\r\n const loadComponentResult = this.widgetConfig.loadComponent();\r\n const componentType =\r\n loadComponentResult instanceof Promise ? await loadComponentResult : loadComponentResult;\r\n this.componentRef = this.portal.createComponent(componentType);\r\n this.componentRef.changeDetectorRef.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.componentRef) {\r\n this.componentRef.destroy();\r\n }\r\n }\r\n}\r\n","<vdr-card [title]=\"widgetConfig.title ?? '' | translate\">\r\n <ng-template vdrCardControls>\r\n <ng-content></ng-content>\r\n </ng-template>\r\n <ng-template #portal></ng-template>\r\n</vdr-card>\r\n","import { CdkDragDrop } from '@angular/cdk/drag-drop';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\r\nimport {\r\n DashboardWidgetConfig,\r\n DashboardWidgetService,\r\n DashboardWidgetWidth,\r\n DataService,\r\n LocalStorageService,\r\n titleSetter,\r\n WidgetLayout,\r\n WidgetLayoutDefinition,\r\n} from '@vendure/admin-ui/core';\r\nimport { assertNever } from '@vendure/common/lib/shared-utils';\r\nimport { Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-dashboard',\r\n templateUrl: './dashboard.component.html',\r\n styleUrls: ['./dashboard.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DashboardComponent implements OnInit {\r\n widgetLayout: WidgetLayout | undefined;\r\n availableWidgets$: Observable<Array<{ id: string; config: DashboardWidgetConfig }>>;\r\n private readonly deletionMarker = '__delete__';\r\n private setTitle = titleSetter();\r\n constructor(\r\n private dashboardWidgetService: DashboardWidgetService,\r\n private localStorageService: LocalStorageService,\r\n private changedDetectorRef: ChangeDetectorRef,\r\n private dataService: DataService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.availableWidgets$ = this.dataService.client.userStatus().stream$.pipe(\r\n map(({ userStatus }) => userStatus.permissions),\r\n map(permissions => this.dashboardWidgetService.getAvailableWidgets(permissions)),\r\n tap(widgets => (this.widgetLayout = this.initLayout(widgets.map(w => w.id)))),\r\n );\r\n this.setTitle('breadcrumb.dashboard');\r\n }\r\n\r\n getClassForWidth(width: DashboardWidgetWidth): string {\r\n switch (width) {\r\n case 3:\r\n return `clr-col-12 clr-col-sm-6 clr-col-lg-3`;\r\n case 4:\r\n return `clr-col-12 clr-col-sm-6 clr-col-lg-4`;\r\n case 6:\r\n return `clr-col-12 clr-col-lg-6`;\r\n case 8:\r\n return `clr-col-12 clr-col-lg-8`;\r\n case 12:\r\n return `clr-col-12`;\r\n default:\r\n assertNever(width);\r\n }\r\n }\r\n\r\n getSupportedWidths(config: DashboardWidgetConfig): DashboardWidgetWidth[] {\r\n return config.supportedWidths || [3, 4, 6, 8, 12];\r\n }\r\n\r\n setWidgetWidth(widget: WidgetLayout[number][number], width: DashboardWidgetWidth) {\r\n widget.width = width;\r\n this.recalculateLayout();\r\n }\r\n\r\n trackRow(index: number, row: WidgetLayout[number]) {\r\n const id = row.map(item => `${item.id}:${item.width}`).join('|');\r\n return id;\r\n }\r\n\r\n trackRowItem(index: number, item: WidgetLayout[number][number]) {\r\n return item.config;\r\n }\r\n\r\n addWidget(id: string) {\r\n const config = this.dashboardWidgetService.getWidgetById(id);\r\n if (config) {\r\n const width = this.getSupportedWidths(config)[0];\r\n const widget: WidgetLayout[number][number] = {\r\n id,\r\n config,\r\n width,\r\n };\r\n let targetRow: WidgetLayout[number];\r\n if (this.widgetLayout && this.widgetLayout.length) {\r\n targetRow = this.widgetLayout[this.widgetLayout.length - 1];\r\n } else {\r\n targetRow = [];\r\n this.widgetLayout?.push(targetRow);\r\n }\r\n targetRow.push(widget);\r\n this.recalculateLayout();\r\n }\r\n }\r\n\r\n removeWidget(widget: WidgetLayout[number][number]) {\r\n widget.id = this.deletionMarker;\r\n this.recalculateLayout();\r\n }\r\n\r\n drop(event: CdkDragDrop<{ index: number }>) {\r\n const { currentIndex, previousIndex, previousContainer, container } = event;\r\n if (previousIndex === currentIndex && previousContainer.data.index === container.data.index) {\r\n // Nothing changed\r\n return;\r\n }\r\n if (this.widgetLayout) {\r\n const previousLayoutRow = this.widgetLayout[previousContainer.data.index];\r\n const newLayoutRow = this.widgetLayout[container.data.index];\r\n\r\n previousLayoutRow.splice(previousIndex, 1);\r\n newLayoutRow.splice(currentIndex, 0, event.item.data);\r\n this.recalculateLayout();\r\n }\r\n }\r\n\r\n private initLayout(availableIds: string[]): WidgetLayout {\r\n const savedLayoutDef = this.localStorageService.get('dashboardWidgetLayout');\r\n let layoutDef: WidgetLayoutDefinition | undefined;\r\n if (savedLayoutDef) {\r\n // validate all the IDs from the saved layout are still available\r\n layoutDef = savedLayoutDef.filter(item => availableIds.includes(item.id));\r\n }\r\n return this.dashboardWidgetService.getWidgetLayout(layoutDef);\r\n }\r\n\r\n private recalculateLayout() {\r\n if (this.widgetLayout) {\r\n const flattened = this.widgetLayout\r\n .reduce((flat, row) => [...flat, ...row], [])\r\n .filter(item => item.id !== this.deletionMarker);\r\n const newLayoutDef: WidgetLayoutDefinition = flattened.map(item => ({\r\n id: item.id,\r\n width: item.width,\r\n }));\r\n this.widgetLayout = this.dashboardWidgetService.getWidgetLayout(newLayoutDef);\r\n this.localStorageService.set('dashboardWidgetLayout', newLayoutDef);\r\n setTimeout(() => this.changedDetectorRef.markForCheck());\r\n }\r\n }\r\n}\r\n","<vdr-page-block>\r\n <div class=\"widget-header mb-1\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-secondary btn-sm\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'dashboard.add-widget' | translate }}\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n vdrDropdownItem\r\n *ngFor=\"let widget of availableWidgets$ | async\"\r\n (click)=\"addWidget(widget.id)\"\r\n >\r\n {{ (widget.config.title ?? widget.id) | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n <div cdkDropListGroup>\r\n <div\r\n class=\"clr-row dashboard-row\"\r\n *ngFor=\"let row of widgetLayout; index as rowIndex; trackBy: trackRow\"\r\n cdkDropList\r\n (cdkDropListDropped)=\"drop($event)\"\r\n cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListData]=\"{ index: rowIndex }\"\r\n >\r\n <div\r\n *ngFor=\"let widget of row; trackBy: trackRowItem\"\r\n class=\"dashboard-item\"\r\n [ngClass]=\"getClassForWidth(widget.width)\"\r\n cdkDrag\r\n [cdkDragData]=\"widget\"\r\n >\r\n <vdr-dashboard-widget\r\n *vdrIfPermissions=\"widget.config.requiresPermissions || null\"\r\n [widgetConfig]=\"widget.config\"\r\n >\r\n <div class=\"flex\">\r\n <div class=\"drag-handle\" cdkDragHandle>\r\n <clr-icon shape=\"drag-handle\" size=\"24\"></clr-icon>\r\n </div>\r\n <vdr-dropdown>\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <h4 class=\"dropdown-header\">{{ 'dashboard.widget-resize' | translate }}</h4>\r\n <button\r\n vdrDropdownItem\r\n [disabled]=\"width === widget.width\"\r\n *ngFor=\"let width of getSupportedWidths(widget.config)\"\r\n (click)=\"setWidgetWidth(widget, width)\"\r\n >\r\n {{ 'dashboard.widget-width' | translate : { width: width } }}\r\n </button>\r\n <div class=\"dropdown-divider\" role=\"separator\"></div>\r\n <button vdrDropdownItem (click)=\"removeWidget(widget)\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'dashboard.remove-widget' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-dashboard-widget>\r\n </div>\r\n </div>\r\n </div>\r\n</vdr-page-block>\r\n","import { Routes } from '@angular/router';\r\n\r\nimport { DashboardComponent } from './components/dashboard/dashboard.component';\r\n\r\nexport const dashboardRoutes: Routes = [\r\n {\r\n path: '',\r\n component: DashboardComponent,\r\n pathMatch: 'full',\r\n },\r\n];\r\n","import { ChangeDetectionStrategy, Component, NgModule, OnInit } from '@angular/core';\r\nimport {\r\n CoreModule,\r\n DataService,\r\n GetLatestOrdersDocument,\r\n GetLatestOrdersQuery,\r\n GetOrderListQuery,\r\n ItemOf,\r\n SharedModule,\r\n SortOrder,\r\n} from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\nimport { Observable } from 'rxjs';\r\n\r\nconst GET_LATEST_ORDERS = gql`\r\n query GetLatestOrders($options: OrderListOptions) {\r\n orders(options: $options) {\r\n items {\r\n id\r\n createdAt\r\n updatedAt\r\n type\r\n orderPlacedAt\r\n code\r\n state\r\n total\r\n totalWithTax\r\n currencyCode\r\n customer {\r\n id\r\n firstName\r\n lastName\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-latest-orders-widget',\r\n templateUrl: './latest-orders-widget.component.html',\r\n styleUrls: ['./latest-orders-widget.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LatestOrdersWidgetComponent implements OnInit {\r\n latestOrders$: Observable<Array<ItemOf<GetLatestOrdersQuery, 'orders'>>>;\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit(): void {\r\n this.latestOrders$ = this.dataService\r\n .query(GetLatestOrdersDocument, {\r\n options: {\r\n take: 10,\r\n filter: {\r\n active: { eq: false },\r\n state: { notIn: ['Cancelled', 'Draft'] },\r\n },\r\n sort: {\r\n orderPlacedAt: SortOrder.DESC,\r\n },\r\n },\r\n })\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.orders.items);\r\n }\r\n}\r\n\r\n@NgModule({\r\n imports: [CoreModule, SharedModule],\r\n declarations: [LatestOrdersWidgetComponent],\r\n})\r\nexport class LatestOrdersWidgetModule {}\r\n","<vdr-data-table-2 [items]=\"latestOrders$ | async\" id=\"latest-orders-widget-list\">\r\n <vdr-dt2-column [heading]=\"'common.code' | translate\" id=\"code\">\r\n <ng-template let-order=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['/orders/', order.id]\"\r\n ><span>{{ order.code }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.state' | translate\" id=\"state\" [hiddenByDefault]=\"true\">\r\n <ng-template let-order=\"item\">\r\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'customer.customer' | translate\" id=\"customer\" [hiddenByDefault]=\"true\">\r\n <ng-template let-order=\"item\">\r\n <vdr-customer-label [customer]=\"order.customer\"></vdr-customer-label>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.total' | translate\" id=\"total\">\r\n <ng-template let-order=\"item\">\r\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.placed-at' | translate\" id=\"placed-at\">\r\n <ng-template let-order=\"item\">\r\n {{ order.orderPlacedAt | timeAgo }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n</vdr-data-table-2>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport {\r\n ChartEntry,\r\n ChartFormatOptions,\r\n DataService,\r\n GetOrderChartDataDocument,\r\n MetricType,\r\n} from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\nimport { BehaviorSubject, combineLatest, Observable, Subject, switchMap } from 'rxjs';\r\nimport { distinctUntilChanged, map, startWith } from 'rxjs/operators';\r\n\r\nexport const GET_ORDER_CHART_DATA = gql`\r\n query GetOrderChartData($refresh: Boolean, $types: [MetricType!]!) {\r\n metricSummary(input: { interval: Daily, types: $types, refresh: $refresh }) {\r\n interval\r\n type\r\n entries {\r\n label\r\n value\r\n }\r\n }\r\n }\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-order-chart-widget',\r\n templateUrl: './order-chart-widget.component.html',\r\n styleUrls: ['./order-chart-widget.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderChartWidgetComponent implements OnInit {\r\n constructor(private dataService: DataService) {}\r\n metrics$: Observable<ChartEntry[]>;\r\n refresh$ = new Subject<boolean>();\r\n metricType$ = new BehaviorSubject(MetricType.OrderTotal);\r\n MetricType = MetricType;\r\n\r\n ngOnInit() {\r\n const currencyCode$ = this.dataService.settings\r\n .getActiveChannel()\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.activeChannel.defaultCurrencyCode || undefined);\r\n const uiState$ = this.dataService.client.uiState().mapStream(data => data.uiState);\r\n const metricType$ = this.metricType$.pipe(distinctUntilChanged());\r\n this.metrics$ = combineLatest(metricType$, currencyCode$, uiState$).pipe(\r\n switchMap(([metricType, currencyCode, uiState]) =>\r\n this.refresh$.pipe(\r\n startWith(false),\r\n switchMap(refresh =>\r\n this.dataService\r\n .query(GetOrderChartDataDocument, {\r\n types: [metricType],\r\n refresh,\r\n })\r\n .mapSingle(data => data.metricSummary)\r\n .pipe(\r\n map(metrics => {\r\n const formatValueAs: 'currency' | 'number' =\r\n metricType === MetricType.OrderCount ? 'number' : 'currency';\r\n const locale = `${uiState.language}-${uiState.locale}`;\r\n\r\n const formatOptions: ChartFormatOptions = {\r\n formatValueAs,\r\n currencyCode,\r\n locale,\r\n };\r\n return (\r\n metrics\r\n .find(m => m.type === metricType)\r\n ?.entries.map(entry => ({ ...entry, formatOptions })) ?? []\r\n );\r\n }),\r\n ),\r\n ),\r\n ),\r\n ),\r\n );\r\n }\r\n\r\n refresh() {\r\n this.refresh$.next(true);\r\n }\r\n}\r\n","<vdr-chart [entries]=\"metrics$ | async\" />\r\n<div class=\"flex\" *ngIf=\"metricType$ | async as activeMetricType\">\r\n <button\r\n class=\"button-small\"\r\n (click)=\"metricType$.next(MetricType.OrderTotal)\"\r\n [class.active]=\"activeMetricType === MetricType.OrderTotal\"\r\n >\r\n {{ 'dashboard.metric-order-total-value' | translate }}\r\n </button>\r\n <button\r\n class=\"ml-1 button-small\"\r\n (click)=\"metricType$.next(MetricType.OrderCount)\"\r\n [class.active]=\"activeMetricType === MetricType.OrderCount\"\r\n >\r\n {{ 'dashboard.metric-number-of-orders' | translate }}\r\n </button>\r\n <button\r\n class=\"ml-1 button-small\"\r\n (click)=\"metricType$.next(MetricType.AverageOrderValue)\"\r\n [class.active]=\"activeMetricType === MetricType.AverageOrderValue\"\r\n >\r\n {{ 'dashboard.metric-average-order-value' | translate }}\r\n </button>\r\n <div class=\"flex-spacer\"></div>\r\n <button class=\"button-small\" (click)=\"refresh()\">\r\n <clr-icon shape=\"refresh\"></clr-icon>\r\n </button>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, NgModule, OnInit } from '@angular/core';\r\nimport { CoreModule, DataService, GetOrderSummaryDocument } from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\nimport dayjs from 'dayjs';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { distinctUntilChanged, map, shareReplay, switchMap } from 'rxjs/operators';\r\n\r\nexport type Timeframe = 'day' | 'week' | 'month';\r\n\r\nexport const GET_ORDER_SUMMARY = gql`\r\n query GetOrderSummary($start: DateTime!, $end: DateTime!) {\r\n orders(options: { filter: { orderPlacedAt: { between: { start: $start, end: $end } } } }) {\r\n totalItems\r\n items {\r\n id\r\n totalWithTax\r\n currencyCode\r\n }\r\n }\r\n }\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-order-summary-widget',\r\n templateUrl: './order-summary-widget.component.html',\r\n styleUrls: ['./order-summary-widget.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderSummaryWidgetComponent implements OnInit {\r\n today = new Date();\r\n yesterday = new Date(new Date().setDate(this.today.getDate() - 1));\r\n totalOrderCount$: Observable<number>;\r\n totalOrderValue$: Observable<number>;\r\n currencyCode$: Observable<string | undefined>;\r\n selection$ = new BehaviorSubject<{ timeframe: Timeframe; date?: Date }>({\r\n timeframe: 'day',\r\n date: this.today,\r\n });\r\n dateRange$: Observable<{ start: Date; end: Date }>;\r\n\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit(): void {\r\n this.dateRange$ = this.selection$.pipe(\r\n distinctUntilChanged(),\r\n map(selection => ({\r\n start: dayjs(selection.date).startOf(selection.timeframe).toDate(),\r\n end: dayjs(selection.date).endOf(selection.timeframe).toDate(),\r\n })),\r\n shareReplay(1),\r\n );\r\n const orderSummary$ = this.dateRange$.pipe(\r\n switchMap(({ start, end }) =>\r\n this.dataService\r\n .query(GetOrderSummaryDocument, { start: start.toISOString(), end: end.toISOString() })\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.orders),\r\n ),\r\n shareReplay(1),\r\n );\r\n this.totalOrderCount$ = orderSummary$.pipe(map(res => res.totalItems));\r\n this.totalOrderValue$ = orderSummary$.pipe(\r\n map(res => res.items.reduce((total, order) => total + order.totalWithTax, 0)),\r\n );\r\n this.currencyCode$ = this.dataService.settings\r\n .getActiveChannel()\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.activeChannel.defaultCurrencyCode || undefined);\r\n }\r\n}\r\n\r\n@NgModule({\r\n imports: [CoreModule],\r\n declarations: [OrderSummaryWidgetComponent],\r\n})\r\nexport class OrderSummaryWidgetModule {}\r\n","<div class=\"stats\">\r\n <div class=\"stat\">\r\n <div class=\"stat-figure\">{{ totalOrderCount$ | async }}</div>\r\n <div class=\"stat-label\">{{ 'dashboard.total-orders' | translate }}</div>\r\n </div>\r\n <div class=\"stat\">\r\n <div class=\"stat-figure\">\r\n {{ totalOrderValue$ | async | localeCurrency: (currencyCode$ | async) || undefined }}\r\n </div>\r\n <div class=\"stat-label\">{{ 'dashboard.total-order-value' | translate }}</div>\r\n </div>\r\n</div>\r\n<div class=\"footer\">\r\n <div class=\"flex\" *ngIf=\"selection$ | async as selection\">\r\n <button class=\"button-small\" [class.active]=\"selection.date === today\" (click)=\"selection$.next({timeframe: 'day', date: today})\">\r\n {{ 'dashboard.today' | translate }}\r\n </button>\r\n <button class=\"ml-1 button-small\" [class.active]=\"selection.date === yesterday\" (click)=\"selection$.next({timeframe: 'day', date: yesterday})\">\r\n {{ 'dashboard.yesterday' | translate }}\r\n </button>\r\n <button class=\"ml-1 button-small\" [class.active]=\"selection.timeframe === 'week'\" (click)=\"selection$.next({timeframe: 'week'})\">\r\n {{ 'dashboard.thisWeek' | translate }}\r\n </button>\r\n <button class=\"ml-1 button-small\" [class.active]=\"selection.timeframe === 'month'\" (click)=\"selection$.next({timeframe: 'month'})\">\r\n {{ 'dashboard.thisMonth' | translate }}\r\n </button>\r\n </div>\r\n\r\n <div class=\"date-range\" *ngIf=\"dateRange$ | async as range\">\r\n {{ range.start | localeDate }} - {{ range.end | localeDate }}\r\n </div>\r\n</div>\r\n","import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport { DashboardWidgetConfig, Permission, WidgetLayoutDefinition } from '@vendure/admin-ui/core';\r\n\r\nimport { LatestOrdersWidgetComponent } from './widgets/latest-orders-widget/latest-orders-widget.component';\r\nimport { OrderChartWidgetComponent } from './widgets/order-chart-widget/order-chart-widget.component';\r\nimport { OrderSummaryWidgetComponent } from './widgets/order-summary-widget/order-summary-widget.component';\r\n\r\nexport const DEFAULT_DASHBOARD_WIDGET_LAYOUT: WidgetLayoutDefinition = [\r\n { id: 'metrics', width: 12 },\r\n { id: 'orderSummary', width: 6 },\r\n { id: 'latestOrders', width: 6 },\r\n];\r\n\r\nexport const DEFAULT_WIDGETS: { [id: string]: DashboardWidgetConfig } = {\r\n metrics: {\r\n title: _('dashboard.metrics'),\r\n supportedWidths: [6, 8, 12],\r\n loadComponent: () => OrderChartWidgetComponent,\r\n requiresPermissions: [Permission.ReadOrder],\r\n },\r\n orderSummary: {\r\n title: _('dashboard.orders-summary'),\r\n loadComponent: () => OrderSummaryWidgetComponent,\r\n supportedWidths: [4, 6, 8, 12],\r\n requiresPermissions: [Permission.ReadOrder],\r\n },\r\n latestOrders: {\r\n title: _('dashboard.latest-orders'),\r\n loadComponent: () => LatestOrdersWidgetComponent,\r\n supportedWidths: [6, 8, 12],\r\n requiresPermissions: [Permission.ReadOrder],\r\n },\r\n};\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { DashboardWidgetService, SharedModule } from '@vendure/admin-ui/core';\r\n\r\nimport { DashboardWidgetComponent } from './components/dashboard-widget/dashboard-widget.component';\r\nimport { DashboardComponent } from './components/dashboard/dashboard.component';\r\nimport { dashboardRoutes } from './dashboard.routes';\r\nimport { DEFAULT_DASHBOARD_WIDGET_LAYOUT, DEFAULT_WIDGETS } from './default-widgets';\r\nimport { OrderChartWidgetComponent } from './widgets/order-chart-widget/order-chart-widget.component';\r\n\r\n@NgModule({\r\n imports: [SharedModule, RouterModule.forChild(dashboardRoutes)],\r\n declarations: [DashboardComponent, DashboardWidgetComponent, OrderChartWidgetComponent],\r\n})\r\nexport class DashboardModule {\r\n constructor(dashboardWidgetService: DashboardWidgetService) {\r\n Object.entries(DEFAULT_WIDGETS).map(([id, config]) => {\r\n if (!dashboardWidgetService.getWidgetById(id)) {\r\n dashboardWidgetService.registerWidget(id, config);\r\n }\r\n });\r\n if (dashboardWidgetService.getDefaultLayout().length === 0) {\r\n dashboardWidgetService.setDefaultLayout(DEFAULT_DASHBOARD_WIDGET_LAYOUT);\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, NgModule } from '@angular/core';\n\n@Component({\n selector: 'vdr-test-widget',\n templateUrl: './test-widget.component.html',\n styleUrls: ['./test-widget.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TestWidgetComponent {}\n\n@NgModule({\n declarations: [TestWidgetComponent],\n})\nexport class TestWidgetModule {}\n","<p>This is a test widget!</p>\r\n","import { ChangeDetectionStrategy, Component, NgModule, OnInit } from '@angular/core';\r\nimport {\r\n ADMIN_UI_VERSION,\r\n CoreModule,\r\n DataService,\r\n GetActiveAdministratorQuery,\r\n getAppConfig,\r\n} from '@vendure/admin-ui/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'vdr-welcome-widget',\r\n templateUrl: './welcome-widget.component.html',\r\n styleUrls: ['./welcome-widget.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class WelcomeWidgetComponent implements OnInit {\r\n version = ADMIN_UI_VERSION;\r\n administrator$: Observable<GetActiveAdministratorQuery['activeAdministrator']>;\r\n brand = getAppConfig().brand;\r\n hideVendureBranding = getAppConfig().hideVendureBranding;\r\n hideVersion = getAppConfig().hideVersion;\r\n\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit(): void {\r\n this.administrator$ = this.dataService.administrator\r\n .getActiveAdministrator()\r\n .mapStream(data => data.activeAdministrator || null);\r\n }\r\n}\r\n\r\n@NgModule({\r\n imports: [CoreModule],\r\n declarations: [WelcomeWidgetComponent],\r\n})\r\nexport class WelcomeWidgetModule {}\r\n","<div *ngIf=\"administrator$ | async as administrator\">\r\n <h4 class=\"\">\r\n Welcome, {{ administrator.firstName }} {{ administrator.lastName }}<br />\r\n <small class=\"p5\">Last login: {{ administrator.user.lastLogin | timeAgo }}</small>\r\n </h4>\r\n\r\n <p class=\"p5\" *ngIf=\"!hideVendureBranding || !hideVersion\">\r\n {{ hideVendureBranding ? '' : 'Vendure' }} {{ hideVersion ? '' : ('Admin UI v' + version) }}\r\n </p>\r\n</div>\r\n<div class=\"placeholder\">\r\n <clr-icon shape=\"line-chart\" size=\"128\"></clr-icon>\r\n</div>\r\n","// This file was generated by the build-public-api.ts script\nexport * from './components/dashboard/dashboard.component';\nexport * from './components/dashboard-widget/dashboard-widget.component';\nexport * from './dashboard.module';\nexport * from './dashboard.routes';\nexport * from './default-widgets';\nexport * from './widgets/latest-orders-widget/latest-orders-widget.component';\nexport * from './widgets/order-chart-widget/order-chart-widget.component';\nexport * from './widgets/order-summary-widget/order-summary-widget.component';\nexport * from './widgets/test-widget/test-widget.component';\nexport * from './widgets/welcome-widget/welcome-widget.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i5.DashboardWidgetComponent","i6","i3","i4","i5","switchMap","_"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vendure-admin-ui-dashboard.mjs","sources":["../../src/lib/dashboard/src/components/dashboard-widget/dashboard-widget.component.ts","../../src/lib/dashboard/src/components/dashboard-widget/dashboard-widget.component.html","../../src/lib/dashboard/src/components/dashboard/dashboard.component.ts","../../src/lib/dashboard/src/components/dashboard/dashboard.component.html","../../src/lib/dashboard/src/dashboard.routes.ts","../../src/lib/dashboard/src/widgets/latest-orders-widget/latest-orders-widget.component.ts","../../src/lib/dashboard/src/widgets/latest-orders-widget/latest-orders-widget.component.html","../../src/lib/dashboard/src/widgets/order-chart-widget/order-chart-widget.component.ts","../../src/lib/dashboard/src/widgets/order-chart-widget/order-chart-widget.component.html","../../src/lib/dashboard/src/widgets/order-summary-widget/order-summary-widget.component.ts","../../src/lib/dashboard/src/widgets/order-summary-widget/order-summary-widget.component.html","../../src/lib/dashboard/src/default-widgets.ts","../../src/lib/dashboard/src/dashboard.module.ts","../../src/lib/dashboard/src/widgets/test-widget/test-widget.component.ts","../../src/lib/dashboard/src/widgets/test-widget/test-widget.component.html","../../src/lib/dashboard/src/widgets/welcome-widget/welcome-widget.component.ts","../../src/lib/dashboard/src/widgets/welcome-widget/welcome-widget.component.html","../../src/lib/dashboard/src/public_api.ts","../../src/lib/dashboard/src/vendure-admin-ui-dashboard.ts"],"sourcesContent":["import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ComponentRef,\r\n Input,\r\n OnDestroy,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { DashboardWidgetConfig } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-dashboard-widget',\r\n templateUrl: './dashboard-widget.component.html',\r\n styleUrls: ['./dashboard-widget.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DashboardWidgetComponent implements AfterViewInit, OnDestroy {\r\n @Input() widgetConfig: DashboardWidgetConfig;\r\n\r\n @ViewChild('portal', { read: ViewContainerRef })\r\n private portal: ViewContainerRef;\r\n\r\n private componentRef: ComponentRef<any>;\r\n\r\n ngAfterViewInit(): void {\r\n this.loadWidget();\r\n }\r\n\r\n private async loadWidget() {\r\n const loadComponentResult = this.widgetConfig.loadComponent();\r\n const componentType =\r\n loadComponentResult instanceof Promise ? await loadComponentResult : loadComponentResult;\r\n this.componentRef = this.portal.createComponent(componentType);\r\n this.componentRef.changeDetectorRef.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.componentRef) {\r\n this.componentRef.destroy();\r\n }\r\n }\r\n}\r\n","<vdr-card [title]=\"widgetConfig.title ?? '' | translate\">\r\n <ng-template vdrCardControls>\r\n <ng-content></ng-content>\r\n </ng-template>\r\n <ng-template #portal></ng-template>\r\n</vdr-card>\r\n","import { CdkDragDrop } from '@angular/cdk/drag-drop';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\r\nimport {\r\n DashboardWidgetConfig,\r\n DashboardWidgetService,\r\n DashboardWidgetWidth,\r\n DataService,\r\n LocalStorageService,\r\n titleSetter,\r\n WidgetLayout,\r\n WidgetLayoutDefinition,\r\n} from '@vendure/admin-ui/core';\r\nimport { assertNever } from '@vendure/common/lib/shared-utils';\r\nimport { Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-dashboard',\r\n templateUrl: './dashboard.component.html',\r\n styleUrls: ['./dashboard.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DashboardComponent implements OnInit {\r\n widgetLayout: WidgetLayout | undefined;\r\n availableWidgets$: Observable<Array<{ id: string; config: DashboardWidgetConfig }>>;\r\n private readonly deletionMarker = '__delete__';\r\n private setTitle = titleSetter();\r\n constructor(\r\n private dashboardWidgetService: DashboardWidgetService,\r\n private localStorageService: LocalStorageService,\r\n private changedDetectorRef: ChangeDetectorRef,\r\n private dataService: DataService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.availableWidgets$ = this.dataService.client.userStatus().stream$.pipe(\r\n map(({ userStatus }) => userStatus.permissions),\r\n map(permissions => this.dashboardWidgetService.getAvailableWidgets(permissions)),\r\n tap(widgets => (this.widgetLayout = this.initLayout(widgets.map(w => w.id)))),\r\n );\r\n this.setTitle('breadcrumb.dashboard');\r\n }\r\n\r\n getClassForWidth(width: DashboardWidgetWidth): string {\r\n switch (width) {\r\n case 3:\r\n return `clr-col-12 clr-col-sm-6 clr-col-lg-3`;\r\n case 4:\r\n return `clr-col-12 clr-col-sm-6 clr-col-lg-4`;\r\n case 6:\r\n return `clr-col-12 clr-col-lg-6`;\r\n case 8:\r\n return `clr-col-12 clr-col-lg-8`;\r\n case 12:\r\n return `clr-col-12`;\r\n default:\r\n assertNever(width);\r\n }\r\n }\r\n\r\n getSupportedWidths(config: DashboardWidgetConfig): DashboardWidgetWidth[] {\r\n return config.supportedWidths || [3, 4, 6, 8, 12];\r\n }\r\n\r\n setWidgetWidth(widget: WidgetLayout[number][number], width: DashboardWidgetWidth) {\r\n widget.width = width;\r\n this.recalculateLayout();\r\n }\r\n\r\n trackRow(index: number, row: WidgetLayout[number]) {\r\n const id = row.map(item => `${item.id}:${item.width}`).join('|');\r\n return id;\r\n }\r\n\r\n trackRowItem(index: number, item: WidgetLayout[number][number]) {\r\n return item.config;\r\n }\r\n\r\n addWidget(id: string) {\r\n const config = this.dashboardWidgetService.getWidgetById(id);\r\n if (config) {\r\n const width = this.getSupportedWidths(config)[0];\r\n const widget: WidgetLayout[number][number] = {\r\n id,\r\n config,\r\n width,\r\n };\r\n let targetRow: WidgetLayout[number];\r\n if (this.widgetLayout && this.widgetLayout.length) {\r\n targetRow = this.widgetLayout[this.widgetLayout.length - 1];\r\n } else {\r\n targetRow = [];\r\n this.widgetLayout?.push(targetRow);\r\n }\r\n targetRow.push(widget);\r\n this.recalculateLayout();\r\n }\r\n }\r\n\r\n removeWidget(widget: WidgetLayout[number][number]) {\r\n widget.id = this.deletionMarker;\r\n this.recalculateLayout();\r\n }\r\n\r\n drop(event: CdkDragDrop<{ index: number }>) {\r\n const { currentIndex, previousIndex, previousContainer, container } = event;\r\n if (previousIndex === currentIndex && previousContainer.data.index === container.data.index) {\r\n // Nothing changed\r\n return;\r\n }\r\n if (this.widgetLayout) {\r\n const previousLayoutRow = this.widgetLayout[previousContainer.data.index];\r\n const newLayoutRow = this.widgetLayout[container.data.index];\r\n\r\n previousLayoutRow.splice(previousIndex, 1);\r\n newLayoutRow.splice(currentIndex, 0, event.item.data);\r\n this.recalculateLayout();\r\n }\r\n }\r\n\r\n private initLayout(availableIds: string[]): WidgetLayout {\r\n const savedLayoutDef = this.localStorageService.get('dashboardWidgetLayout');\r\n let layoutDef: WidgetLayoutDefinition | undefined;\r\n if (savedLayoutDef) {\r\n // validate all the IDs from the saved layout are still available\r\n layoutDef = savedLayoutDef.filter(item => availableIds.includes(item.id));\r\n }\r\n return this.dashboardWidgetService.getWidgetLayout(layoutDef);\r\n }\r\n\r\n private recalculateLayout() {\r\n if (this.widgetLayout) {\r\n const flattened = this.widgetLayout\r\n .reduce((flat, row) => [...flat, ...row], [])\r\n .filter(item => item.id !== this.deletionMarker);\r\n const newLayoutDef: WidgetLayoutDefinition = flattened.map(item => ({\r\n id: item.id,\r\n width: item.width,\r\n }));\r\n this.widgetLayout = this.dashboardWidgetService.getWidgetLayout(newLayoutDef);\r\n this.localStorageService.set('dashboardWidgetLayout', newLayoutDef);\r\n setTimeout(() => this.changedDetectorRef.markForCheck());\r\n }\r\n }\r\n}\r\n","<vdr-page-block>\r\n <div class=\"widget-header mb-1\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-secondary btn-sm\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'dashboard.add-widget' | translate }}\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n vdrDropdownItem\r\n *ngFor=\"let widget of availableWidgets$ | async\"\r\n (click)=\"addWidget(widget.id)\"\r\n >\r\n {{ (widget.config.title ?? widget.id) | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n <div cdkDropListGroup>\r\n <div\r\n class=\"clr-row dashboard-row\"\r\n *ngFor=\"let row of widgetLayout; index as rowIndex; trackBy: trackRow\"\r\n cdkDropList\r\n (cdkDropListDropped)=\"drop($event)\"\r\n cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListData]=\"{ index: rowIndex }\"\r\n >\r\n <div\r\n *ngFor=\"let widget of row; trackBy: trackRowItem\"\r\n class=\"dashboard-item\"\r\n [ngClass]=\"getClassForWidth(widget.width)\"\r\n cdkDrag\r\n [cdkDragData]=\"widget\"\r\n >\r\n <vdr-dashboard-widget\r\n *vdrIfPermissions=\"widget.config.requiresPermissions || null\"\r\n [widgetConfig]=\"widget.config\"\r\n >\r\n <div class=\"flex\">\r\n <div class=\"drag-handle\" cdkDragHandle>\r\n <clr-icon shape=\"drag-handle\" size=\"24\"></clr-icon>\r\n </div>\r\n <vdr-dropdown>\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <h4 class=\"dropdown-header\">{{ 'dashboard.widget-resize' | translate }}</h4>\r\n <button\r\n vdrDropdownItem\r\n [disabled]=\"width === widget.width\"\r\n *ngFor=\"let width of getSupportedWidths(widget.config)\"\r\n (click)=\"setWidgetWidth(widget, width)\"\r\n >\r\n {{ 'dashboard.widget-width' | translate : { width: width } }}\r\n </button>\r\n <div class=\"dropdown-divider\" role=\"separator\"></div>\r\n <button vdrDropdownItem (click)=\"removeWidget(widget)\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'dashboard.remove-widget' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-dashboard-widget>\r\n </div>\r\n </div>\r\n </div>\r\n</vdr-page-block>\r\n","import { Routes } from '@angular/router';\r\n\r\nimport { DashboardComponent } from './components/dashboard/dashboard.component';\r\n\r\nexport const dashboardRoutes: Routes = [\r\n {\r\n path: '',\r\n component: DashboardComponent,\r\n pathMatch: 'full',\r\n },\r\n];\r\n","import { ChangeDetectionStrategy, Component, NgModule, OnInit } from '@angular/core';\r\nimport {\r\n CoreModule,\r\n DataService,\r\n GetLatestOrdersDocument,\r\n GetLatestOrdersQuery,\r\n GetOrderListQuery,\r\n ItemOf,\r\n SharedModule,\r\n SortOrder,\r\n} from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\nimport { Observable } from 'rxjs';\r\n\r\nconst GET_LATEST_ORDERS = gql`\r\n query GetLatestOrders($options: OrderListOptions) {\r\n orders(options: $options) {\r\n items {\r\n id\r\n createdAt\r\n updatedAt\r\n type\r\n orderPlacedAt\r\n code\r\n state\r\n total\r\n totalWithTax\r\n currencyCode\r\n customer {\r\n id\r\n firstName\r\n lastName\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-latest-orders-widget',\r\n templateUrl: './latest-orders-widget.component.html',\r\n styleUrls: ['./latest-orders-widget.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LatestOrdersWidgetComponent implements OnInit {\r\n latestOrders$: Observable<Array<ItemOf<GetLatestOrdersQuery, 'orders'>>>;\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit(): void {\r\n this.latestOrders$ = this.dataService\r\n .query(GetLatestOrdersDocument, {\r\n options: {\r\n take: 10,\r\n filter: {\r\n active: { eq: false },\r\n state: { notIn: ['Cancelled', 'Draft'] },\r\n },\r\n sort: {\r\n orderPlacedAt: SortOrder.DESC,\r\n },\r\n },\r\n })\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.orders.items);\r\n }\r\n}\r\n\r\n@NgModule({\r\n imports: [CoreModule, SharedModule],\r\n declarations: [LatestOrdersWidgetComponent],\r\n})\r\nexport class LatestOrdersWidgetModule {}\r\n","<vdr-data-table-2 [items]=\"latestOrders$ | async\" id=\"latest-orders-widget-list\">\r\n <vdr-dt2-column [heading]=\"'common.code' | translate\" id=\"code\">\r\n <ng-template let-order=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['/orders/', order.id]\"\r\n ><span>{{ order.code }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.state' | translate\" id=\"state\" [hiddenByDefault]=\"true\">\r\n <ng-template let-order=\"item\">\r\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'customer.customer' | translate\" id=\"customer\" [hiddenByDefault]=\"true\">\r\n <ng-template let-order=\"item\">\r\n <vdr-customer-label [customer]=\"order.customer\"></vdr-customer-label>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.total' | translate\" id=\"total\">\r\n <ng-template let-order=\"item\">\r\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.placed-at' | translate\" id=\"placed-at\">\r\n <ng-template let-order=\"item\">\r\n {{ order.orderPlacedAt | timeAgo }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n</vdr-data-table-2>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport {\r\n ChartEntry,\r\n ChartFormatOptions,\r\n DataService,\r\n GetOrderChartDataDocument,\r\n MetricType,\r\n} from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\nimport { BehaviorSubject, combineLatest, Observable, Subject, switchMap } from 'rxjs';\r\nimport { distinctUntilChanged, map, startWith } from 'rxjs/operators';\r\n\r\nexport const GET_ORDER_CHART_DATA = gql`\r\n query GetOrderChartData($refresh: Boolean, $types: [MetricType!]!) {\r\n metricSummary(input: { interval: Daily, types: $types, refresh: $refresh }) {\r\n interval\r\n type\r\n entries {\r\n label\r\n value\r\n }\r\n }\r\n }\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-order-chart-widget',\r\n templateUrl: './order-chart-widget.component.html',\r\n styleUrls: ['./order-chart-widget.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderChartWidgetComponent implements OnInit {\r\n constructor(private dataService: DataService) {}\r\n metrics$: Observable<ChartEntry[]>;\r\n refresh$ = new Subject<boolean>();\r\n metricType$ = new BehaviorSubject(MetricType.OrderTotal);\r\n MetricType = MetricType;\r\n\r\n ngOnInit() {\r\n const currencyCode$ = this.dataService.settings\r\n .getActiveChannel()\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.activeChannel.defaultCurrencyCode || undefined);\r\n const uiState$ = this.dataService.client.uiState().mapStream(data => data.uiState);\r\n const metricType$ = this.metricType$.pipe(distinctUntilChanged());\r\n this.metrics$ = combineLatest(metricType$, currencyCode$, uiState$).pipe(\r\n switchMap(([metricType, currencyCode, uiState]) =>\r\n this.refresh$.pipe(\r\n startWith(false),\r\n switchMap(refresh =>\r\n this.dataService\r\n .query(GetOrderChartDataDocument, {\r\n types: [metricType],\r\n refresh,\r\n })\r\n .mapSingle(data => data.metricSummary)\r\n .pipe(\r\n map(metrics => {\r\n const formatValueAs: 'currency' | 'number' =\r\n metricType === MetricType.OrderCount ? 'number' : 'currency';\r\n const locale = `${uiState.language}-${uiState.locale}`;\r\n\r\n const formatOptions: ChartFormatOptions = {\r\n formatValueAs,\r\n currencyCode,\r\n locale,\r\n };\r\n return (\r\n metrics\r\n .find(m => m.type === metricType)\r\n ?.entries.map(entry => ({ ...entry, formatOptions })) ?? []\r\n );\r\n }),\r\n ),\r\n ),\r\n ),\r\n ),\r\n );\r\n }\r\n\r\n refresh() {\r\n this.refresh$.next(true);\r\n }\r\n}\r\n","<vdr-chart [entries]=\"metrics$ | async\" />\r\n<div class=\"flex\" *ngIf=\"metricType$ | async as activeMetricType\">\r\n <button\r\n class=\"button-small\"\r\n (click)=\"metricType$.next(MetricType.OrderTotal)\"\r\n [class.active]=\"activeMetricType === MetricType.OrderTotal\"\r\n >\r\n {{ 'dashboard.metric-order-total-value' | translate }}\r\n </button>\r\n <button\r\n class=\"ml-1 button-small\"\r\n (click)=\"metricType$.next(MetricType.OrderCount)\"\r\n [class.active]=\"activeMetricType === MetricType.OrderCount\"\r\n >\r\n {{ 'dashboard.metric-number-of-orders' | translate }}\r\n </button>\r\n <button\r\n class=\"ml-1 button-small\"\r\n (click)=\"metricType$.next(MetricType.AverageOrderValue)\"\r\n [class.active]=\"activeMetricType === MetricType.AverageOrderValue\"\r\n >\r\n {{ 'dashboard.metric-average-order-value' | translate }}\r\n </button>\r\n <div class=\"flex-spacer\"></div>\r\n <button class=\"button-small\" (click)=\"refresh()\">\r\n <clr-icon shape=\"refresh\"></clr-icon>\r\n </button>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, NgModule, OnInit } from '@angular/core';\r\nimport { CoreModule, DataService, GetOrderSummaryDocument } from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\nimport dayjs from 'dayjs';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { distinctUntilChanged, map, shareReplay, switchMap } from 'rxjs/operators';\r\n\r\nexport type Timeframe = 'day' | 'week' | 'month';\r\n\r\nexport const GET_ORDER_SUMMARY = gql`\r\n query GetOrderSummary($start: DateTime!, $end: DateTime!) {\r\n orders(options: { filter: { orderPlacedAt: { between: { start: $start, end: $end } } } }) {\r\n totalItems\r\n items {\r\n id\r\n totalWithTax\r\n currencyCode\r\n }\r\n }\r\n }\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-order-summary-widget',\r\n templateUrl: './order-summary-widget.component.html',\r\n styleUrls: ['./order-summary-widget.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderSummaryWidgetComponent implements OnInit {\r\n today = new Date();\r\n yesterday = new Date(new Date().setDate(this.today.getDate() - 1));\r\n totalOrderCount$: Observable<number>;\r\n totalOrderValue$: Observable<number>;\r\n currencyCode$: Observable<string | undefined>;\r\n selection$ = new BehaviorSubject<{ timeframe: Timeframe; date?: Date }>({\r\n timeframe: 'day',\r\n date: this.today,\r\n });\r\n dateRange$: Observable<{ start: Date; end: Date }>;\r\n\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit(): void {\r\n this.dateRange$ = this.selection$.pipe(\r\n distinctUntilChanged(),\r\n map(selection => ({\r\n start: dayjs(selection.date).startOf(selection.timeframe).toDate(),\r\n end: dayjs(selection.date).endOf(selection.timeframe).toDate(),\r\n })),\r\n shareReplay(1),\r\n );\r\n const orderSummary$ = this.dateRange$.pipe(\r\n switchMap(({ start, end }) =>\r\n this.dataService\r\n .query(GetOrderSummaryDocument, { start: start.toISOString(), end: end.toISOString() })\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.orders),\r\n ),\r\n shareReplay(1),\r\n );\r\n this.totalOrderCount$ = orderSummary$.pipe(map(res => res.totalItems));\r\n this.totalOrderValue$ = orderSummary$.pipe(\r\n map(res => res.items.reduce((total, order) => total + order.totalWithTax, 0)),\r\n );\r\n this.currencyCode$ = this.dataService.settings\r\n .getActiveChannel()\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.activeChannel.defaultCurrencyCode || undefined);\r\n }\r\n}\r\n\r\n@NgModule({\r\n imports: [CoreModule],\r\n declarations: [OrderSummaryWidgetComponent],\r\n})\r\nexport class OrderSummaryWidgetModule {}\r\n","<div class=\"stats\">\r\n <div class=\"stat\">\r\n <div class=\"stat-figure\">{{ totalOrderCount$ | async }}</div>\r\n <div class=\"stat-label\">{{ 'dashboard.total-orders' | translate }}</div>\r\n </div>\r\n <div class=\"stat\">\r\n <div class=\"stat-figure\">\r\n {{ totalOrderValue$ | async | localeCurrency: (currencyCode$ | async) || undefined }}\r\n </div>\r\n <div class=\"stat-label\">{{ 'dashboard.total-order-value' | translate }}</div>\r\n </div>\r\n</div>\r\n<div class=\"footer\">\r\n <div class=\"flex\" *ngIf=\"selection$ | async as selection\">\r\n <button class=\"button-small\" [class.active]=\"selection.date === today\" (click)=\"selection$.next({timeframe: 'day', date: today})\">\r\n {{ 'dashboard.today' | translate }}\r\n </button>\r\n <button class=\"ml-1 button-small\" [class.active]=\"selection.date === yesterday\" (click)=\"selection$.next({timeframe: 'day', date: yesterday})\">\r\n {{ 'dashboard.yesterday' | translate }}\r\n </button>\r\n <button class=\"ml-1 button-small\" [class.active]=\"selection.timeframe === 'week'\" (click)=\"selection$.next({timeframe: 'week'})\">\r\n {{ 'dashboard.thisWeek' | translate }}\r\n </button>\r\n <button class=\"ml-1 button-small\" [class.active]=\"selection.timeframe === 'month'\" (click)=\"selection$.next({timeframe: 'month'})\">\r\n {{ 'dashboard.thisMonth' | translate }}\r\n </button>\r\n </div>\r\n\r\n <div class=\"date-range\" *ngIf=\"dateRange$ | async as range\">\r\n {{ range.start | localeDate }} - {{ range.end | localeDate }}\r\n </div>\r\n</div>\r\n","import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport { DashboardWidgetConfig, Permission, WidgetLayoutDefinition } from '@vendure/admin-ui/core';\r\n\r\nimport { LatestOrdersWidgetComponent } from './widgets/latest-orders-widget/latest-orders-widget.component';\r\nimport { OrderChartWidgetComponent } from './widgets/order-chart-widget/order-chart-widget.component';\r\nimport { OrderSummaryWidgetComponent } from './widgets/order-summary-widget/order-summary-widget.component';\r\n\r\nexport const DEFAULT_DASHBOARD_WIDGET_LAYOUT: WidgetLayoutDefinition = [\r\n { id: 'metrics', width: 12 },\r\n { id: 'orderSummary', width: 6 },\r\n { id: 'latestOrders', width: 6 },\r\n];\r\n\r\nexport const DEFAULT_WIDGETS: { [id: string]: DashboardWidgetConfig } = {\r\n metrics: {\r\n title: _('dashboard.metrics'),\r\n supportedWidths: [6, 8, 12],\r\n loadComponent: () => OrderChartWidgetComponent,\r\n requiresPermissions: [Permission.ReadOrder],\r\n },\r\n orderSummary: {\r\n title: _('dashboard.orders-summary'),\r\n loadComponent: () => OrderSummaryWidgetComponent,\r\n supportedWidths: [4, 6, 8, 12],\r\n requiresPermissions: [Permission.ReadOrder],\r\n },\r\n latestOrders: {\r\n title: _('dashboard.latest-orders'),\r\n loadComponent: () => LatestOrdersWidgetComponent,\r\n supportedWidths: [6, 8, 12],\r\n requiresPermissions: [Permission.ReadOrder],\r\n },\r\n};\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { DashboardWidgetService, SharedModule } from '@vendure/admin-ui/core';\r\n\r\nimport { DashboardWidgetComponent } from './components/dashboard-widget/dashboard-widget.component';\r\nimport { DashboardComponent } from './components/dashboard/dashboard.component';\r\nimport { dashboardRoutes } from './dashboard.routes';\r\nimport { DEFAULT_DASHBOARD_WIDGET_LAYOUT, DEFAULT_WIDGETS } from './default-widgets';\r\nimport { OrderChartWidgetComponent } from './widgets/order-chart-widget/order-chart-widget.component';\r\n\r\n@NgModule({\r\n imports: [SharedModule, RouterModule.forChild(dashboardRoutes)],\r\n declarations: [DashboardComponent, DashboardWidgetComponent, OrderChartWidgetComponent],\r\n})\r\nexport class DashboardModule {\r\n constructor(dashboardWidgetService: DashboardWidgetService) {\r\n Object.entries(DEFAULT_WIDGETS).map(([id, config]) => {\r\n if (!dashboardWidgetService.getWidgetById(id)) {\r\n dashboardWidgetService.registerWidget(id, config);\r\n }\r\n });\r\n if (dashboardWidgetService.getDefaultLayout().length === 0) {\r\n dashboardWidgetService.setDefaultLayout(DEFAULT_DASHBOARD_WIDGET_LAYOUT);\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, NgModule } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'vdr-test-widget',\r\n templateUrl: './test-widget.component.html',\r\n styleUrls: ['./test-widget.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class TestWidgetComponent {}\r\n\r\n@NgModule({\r\n declarations: [TestWidgetComponent],\r\n})\r\nexport class TestWidgetModule {}\r\n","<p>This is a test widget!</p>\r\n","import { ChangeDetectionStrategy, Component, NgModule, OnInit } from '@angular/core';\r\nimport {\r\n ADMIN_UI_VERSION,\r\n CoreModule,\r\n DataService,\r\n GetActiveAdministratorQuery,\r\n getAppConfig,\r\n} from '@vendure/admin-ui/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'vdr-welcome-widget',\r\n templateUrl: './welcome-widget.component.html',\r\n styleUrls: ['./welcome-widget.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class WelcomeWidgetComponent implements OnInit {\r\n version = ADMIN_UI_VERSION;\r\n administrator$: Observable<GetActiveAdministratorQuery['activeAdministrator']>;\r\n brand = getAppConfig().brand;\r\n hideVendureBranding = getAppConfig().hideVendureBranding;\r\n hideVersion = getAppConfig().hideVersion;\r\n\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit(): void {\r\n this.administrator$ = this.dataService.administrator\r\n .getActiveAdministrator()\r\n .mapStream(data => data.activeAdministrator || null);\r\n }\r\n}\r\n\r\n@NgModule({\r\n imports: [CoreModule],\r\n declarations: [WelcomeWidgetComponent],\r\n})\r\nexport class WelcomeWidgetModule {}\r\n","<div *ngIf=\"administrator$ | async as administrator\">\r\n <h4 class=\"\">\r\n Welcome, {{ administrator.firstName }} {{ administrator.lastName }}<br />\r\n <small class=\"p5\">Last login: {{ administrator.user.lastLogin | timeAgo }}</small>\r\n </h4>\r\n\r\n <p class=\"p5\" *ngIf=\"!hideVendureBranding || !hideVersion\">\r\n {{ hideVendureBranding ? '' : 'Vendure' }} {{ hideVersion ? '' : ('Admin UI v' + version) }}\r\n </p>\r\n</div>\r\n<div class=\"placeholder\">\r\n <clr-icon shape=\"line-chart\" size=\"128\"></clr-icon>\r\n</div>\r\n","// This file was generated by the build-public-api.ts script\nexport * from './components/dashboard/dashboard.component';\nexport * from './components/dashboard-widget/dashboard-widget.component';\nexport * from './dashboard.module';\nexport * from './dashboard.routes';\nexport * from './default-widgets';\nexport * from './widgets/latest-orders-widget/latest-orders-widget.component';\nexport * from './widgets/order-chart-widget/order-chart-widget.component';\nexport * from './widgets/order-summary-widget/order-summary-widget.component';\nexport * from './widgets/test-widget/test-widget.component';\nexport * from './widgets/welcome-widget/welcome-widget.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i5.DashboardWidgetComponent","i6","i3","i4","i5","switchMap","_"],"mappings":"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"}
|