Analytics Widgets
Analytics Widgets UI Extension for Umbraco Commerce
Last updated
Was this helpful?
Analytics Widgets UI Extension for Umbraco Commerce
Last updated
Was this helpful?
Was this helpful?
import { UcManifestAnalyticsWidget } from "@umbraco-commerce/backoffice";
export const manifests : UcManifestAnalyticsWidget[] = [
{
type: 'ucAnalyticsWidget',
alias: 'Uc.AnalyticsWidget.TotalOrders',
name: 'Total Orders',
element: () => import('./total-orders-widget.element.js'),
meta: {
label: '#ucAnalytics_totalOrdersHeadline',
description: '#ucAnalytics_totalOrdersDescription'
}
}
];
extensionRegistry.register(manifests);export interface UcAnalyticsWidget extends UmbControllerHostElement {
storeId:string;
manifest: UcManifestAnalyticsWidget;
timeframe: UcAnalyticsTimeframe;
}// total-orders-widget.element.js
import { customElement, html, property, state } from "@umbraco-cms/backoffice/external/lit";
import { UmbLitElement } from "@umbraco-cms/backoffice/lit-element";
import { UcAnalyticsTimeframe, UcAnalyticsWidget, UcManifestAnalyticsWidget } from "@umbraco-commerce/backoffice";
@customElement('uc-total-orders-widget')
export class UcTotalOrdersWidgetElement extends UmbLitElement implements UcAnalyticsWidget {
@property({ type:String })
storeId!:string;
@property({ type: Object, attribute: false })
manifest?: UcManifestAnalyticsWidget;
@property({ type: Object, attribute: false })
set timeframe(timeframe: UcAnalyticsTimeframe) {
this._timeframe = timeframe;
this.#fetchData();
}
private _timeframe?: UcAnalyticsTimeframe;
@state()
private _data?:any[];
#fetchData = async () => {
// Fetch data using this._timeframe properties as a filter
// and store the result in this._data
}
render() {
if (!this._data) return;
return html`-- WIDGET MARKUP GOES HERE --`;
}
}
export default UcTotalOrdersWidgetElement;
declare global {
interface HTMLElementTagNameMap {
'uc-total-orders-widget': UcTotalOrdersWidgetElement;
}
}