${esc(id)}
${items ? `${esc(items)}
` : ''} Track crate →(function () {
function esc(value) {
return String(value ?? '')
.replace(/&/g, '&')
.replace(//g, '>')
.replace(/"/g, '"');
}
function formatDate(value) {
if (!value) return '—';
const d = new Date(value);
if (Number.isNaN(d.getTime())) return '—';
return d.toLocaleDateString('en-IN', { year: 'numeric', month: 'short', day: 'numeric' });
}
function formatMoney(value) {
return '₹' + Number(value || 0).toLocaleString('en-IN', { maximumFractionDigits: 0 });
}
function orderId(order) {
return order.orderId || order.order_id || 'Order';
}
function orderTotal(order) {
return order.total ?? order.amount ?? 0;
}
function orderPayment(order) {
return order.paymentMethod || order.payment_method || order.payment_method_name || '';
}
function orderEmail(order, fallback) {
return order.email || fallback || '';
}
function orderItemsSummary(order) {
const items = Array.isArray(order.items) ? order.items : [];
if (!items.length) return '';
const names = items.slice(0, 3).map((item) => item.title || item['Product Title'] || 'Item');
const extra = items.length > 3 ? ` +${items.length - 3} more` : '';
return names.join(', ') + extra;
}
function statusTone(status) {
const s = String(status || 'placed').toLowerCase();
if (s.includes('deliver') || s.includes('complete')) return 'delivered';
if (s.includes('ship') || s.includes('transit') || s.includes('dispatch')) return 'shipped';
if (s.includes('cancel')) return 'cancelled';
if (s.includes('paid') || s.includes('confirm') || s.includes('pack') || s.includes('process')) return 'packed';
return 'placed';
}
function statusLabel(status) {
const tone = statusTone(status);
const map = {
placed: 'Order placed',
packed: 'Packed',
shipped: 'En route',
delivered: 'Delivered',
cancelled: 'Cancelled',
};
if (map[tone]) return map[tone];
return String(status || 'Placed');
}
function slipRotate(index) {
const angles = [-1.5, 0.8, -0.6, 1.2, -1.1, 0.5];
return angles[index % angles.length];
}
function renderOrderRow(order, userEmail, index) {
const id = orderId(order);
const email = orderEmail(order, userEmail);
const trackPage = window.ECOM_ORDERS_TRACK_PAGE || 'order-status.php';
const trackUrl = trackPage + '?order_id=' + encodeURIComponent(id) + '&email=' + encodeURIComponent(email);
const items = orderItemsSummary(order);
const btnClass = window.ECOM_ORDERS_BTN_CLASS || 'btn btn-soft';
const status = order.status || 'Placed';
const tone = statusTone(status);
const i = typeof index === 'number' ? index : 0;
if (window.ECOM_ORDERS_CARD_LAYOUT === 'harvest-slip') {
return ` ${esc(id)} ${esc(items)}