import { ui, context, data, notification, window } from '@shopware-ag/meteor-admin-sdk';
import { defineComponent } from 'vue';
import { SwButton, SwTextField } from '@shopware-ag/meteor-component-library';
const { repository, Classes: { Criteria } } = data;
// Register the main module
ui.mainModule.addMainModule({
heading: 'Order Manager',
locationId: 'order-manager-main',
displaySearchBar: true,
});
// Add smart bar button
ui.mainModule.addSmartBarButton({
locationId: 'order-manager-main',
buttonId: 'export-btn',
label: 'Export Orders',
variant: 'primary',
onClickCallback: () => {
notification.dispatch({
title: 'Export Started',
message: 'Exporting orders...',
variant: 'info'
});
}
});
// Create the view component
export default defineComponent({
components: {
'sw-button': SwButton,
'sw-text-field': SwTextField,
},
template: `
<div style="padding: 20px;">
<h1>Order Manager</h1>
<div>
<h3>Quick Stats</h3>
<sw-button @click="loadOrderStats">Load Statistics</sw-button>
<p>Total Orders: {{ totalOrders }}</p>
</div>
<div>
<h3>Navigate</h3>
<sw-button @click="goToDashboard">Go to Dashboard</sw-button>
</div>
</div>
`,
data() {
return {
totalOrders: 0
};
},
methods: {
async loadOrderStats() {
const criteria = new Criteria();
criteria.setLimit(1);
const orders = await repository('order').search(criteria);
if (orders) {
this.totalOrders = orders.total;
}
},
goToDashboard() {
window.routerPush({
name: 'sw.dashboard.index',
params: {}
});
}
},
mounted() {
this.loadOrderStats();
}
});