UNPKG

@jigx/mdk

Version:

Jigx Mobile Development Kit - SDK for building Jigx applications

48 lines 7.1 kB
/** * Expense list screen with category summaries and full transaction history. * Displays all expenses with filtering and grouping capabilities. * @param app - Application builder instance * @returns Configured expense list screen */ export function expenseListScreen(app) { const screen = app.addScreen.default('expense-list', 'All Expenses'); // Configure category summary datasource const expenseSummary = 'expenses-summary'; screen.addDatasource.sqlite(expenseSummary, 'dynamic') .entity('default/expenses') .query(/* sql */ ` SELECT json_extract(data, '$.category') AS category, SUM(json_extract(data, '$.amount')) AS total_amount, COUNT(1) AS count FROM [default/expenses] GROUP BY json_extract(data, '$.category') ORDER BY total_amount DESC `); // Category summary card const summaryCard = screen.addControl .card({ instanceId: 'summary-card' }); summaryCard.addControl.textField({ instanceId: 'summary-title' }) .label('Summary by Category') .value('Category Breakdown'); const summaryList = summaryCard.addControl.list({ instanceId: 'summary-list' }) .data(expenseSummary); // Bind to datasourceId summaryList.addControl.listItem({ instanceId: 'summary-item' }) .title('=@ctx.current.item.category') .subtitle('=$formatCurrency(@ctx.current.item.total_amount) & " • " & @ctx.current.item.count & " expenses"'); // Main expense list const list = screen.addControl.list('expense-list') .data('data-expenses'); // Bind to global datasourceId list.addControl.listItem({ instanceId: 'expense-item' }) .title('=@ctx.current.item.title') .subtitle('=@ctx.current.item.category & " • " & @ctx.current.item.date') .description('=$formatCurrency(@ctx.current.item.amount)') .onPress .goto('edit-expense') .parameter('expenseId', '=@ctx.current.item.id'); // Bottom panel actions const buttons = screen.bottomPanel.buttons(1); buttons.add.goto('Add New', 'add-expense'); return screen; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwZW5zZS1saXN0LXNjcmVlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RlbXBsYXRlLWFwcC0xL3NjcmVlbnMvZXhwZW5zZS1saXN0LXNjcmVlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUF1QjtJQUN2RCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUE7SUFFcEUsd0NBQXdDO0lBQ3hDLE1BQU0sY0FBYyxHQUFHLGtCQUFrQixDQUFBO0lBQ3pDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUM7U0FDbkQsTUFBTSxDQUFDLGtCQUFrQixDQUFDO1NBQzFCLEtBQUssQ0FBQyxTQUFTLENBQUE7Ozs7Ozs7O0tBUWYsQ0FBQyxDQUFBO0lBRUosd0JBQXdCO0lBQ3hCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVO1NBQ2xDLElBQUksQ0FBQyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFBO0lBRXZDLFdBQVcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxDQUFDO1NBQzlELEtBQUssQ0FBQyxxQkFBcUIsQ0FBQztTQUM1QixLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUU5QixNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsQ0FBQztTQUM1RSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQyx1QkFBdUI7SUFFL0MsV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLENBQUM7U0FDNUQsS0FBSyxDQUFDLDZCQUE2QixDQUFDO1NBQ3BDLFFBQVEsQ0FBQyxrR0FBa0csQ0FBQyxDQUFBO0lBRS9HLG9CQUFvQjtJQUNwQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDaEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFBLENBQUMsOEJBQThCO0lBRXZELElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxDQUFDO1NBQ3JELEtBQUssQ0FBQywwQkFBMEIsQ0FBQztTQUNqQyxRQUFRLENBQUMsOERBQThELENBQUM7U0FDeEUsV0FBVyxDQUFDLDRDQUE0QyxDQUFDO1NBQ3pELE9BQU87U0FDTCxJQUFJLENBQUMsY0FBYyxDQUFDO1NBQ3BCLFNBQVMsQ0FBQyxXQUFXLEVBQUUsdUJBQXVCLENBQUMsQ0FBQTtJQUVwRCx1QkFBdUI7SUFDdkIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDN0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFBO0lBRTFDLE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uQnVpbGRlciwgRGVmYXVsdFNjcmVlbkJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5cbi8qKlxuICogRXhwZW5zZSBsaXN0IHNjcmVlbiB3aXRoIGNhdGVnb3J5IHN1bW1hcmllcyBhbmQgZnVsbCB0cmFuc2FjdGlvbiBoaXN0b3J5LlxuICogRGlzcGxheXMgYWxsIGV4cGVuc2VzIHdpdGggZmlsdGVyaW5nIGFuZCBncm91cGluZyBjYXBhYmlsaXRpZXMuXG4gKiBAcGFyYW0gYXBwIC0gQXBwbGljYXRpb24gYnVpbGRlciBpbnN0YW5jZVxuICogQHJldHVybnMgQ29uZmlndXJlZCBleHBlbnNlIGxpc3Qgc2NyZWVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBlbnNlTGlzdFNjcmVlbihhcHA6IEFwcGxpY2F0aW9uQnVpbGRlcik6IERlZmF1bHRTY3JlZW5CdWlsZGVyIHtcbiAgY29uc3Qgc2NyZWVuID0gYXBwLmFkZFNjcmVlbi5kZWZhdWx0KCdleHBlbnNlLWxpc3QnLCAnQWxsIEV4cGVuc2VzJylcblxuICAvLyBDb25maWd1cmUgY2F0ZWdvcnkgc3VtbWFyeSBkYXRhc291cmNlXG4gIGNvbnN0IGV4cGVuc2VTdW1tYXJ5ID0gJ2V4cGVuc2VzLXN1bW1hcnknXG4gIHNjcmVlbi5hZGREYXRhc291cmNlLnNxbGl0ZShleHBlbnNlU3VtbWFyeSwgJ2R5bmFtaWMnKVxuICAgIC5lbnRpdHkoJ2RlZmF1bHQvZXhwZW5zZXMnKVxuICAgIC5xdWVyeSgvKiBzcWwgKi9gXG4gICAgICBTRUxFQ1QgXG4gICAgICAgIGpzb25fZXh0cmFjdChkYXRhLCAnJC5jYXRlZ29yeScpIEFTIGNhdGVnb3J5LFxuICAgICAgICBTVU0oanNvbl9leHRyYWN0KGRhdGEsICckLmFtb3VudCcpKSBBUyB0b3RhbF9hbW91bnQsXG4gICAgICAgIENPVU5UKDEpIEFTIGNvdW50XG4gICAgICBGUk9NIFtkZWZhdWx0L2V4cGVuc2VzXVxuICAgICAgR1JPVVAgQlkganNvbl9leHRyYWN0KGRhdGEsICckLmNhdGVnb3J5JylcbiAgICAgIE9SREVSIEJZIHRvdGFsX2Ftb3VudCBERVNDXG4gICAgYClcblxuICAvLyBDYXRlZ29yeSBzdW1tYXJ5IGNhcmRcbiAgY29uc3Qgc3VtbWFyeUNhcmQgPSBzY3JlZW4uYWRkQ29udHJvbFxuICAgIC5jYXJkKHsgaW5zdGFuY2VJZDogJ3N1bW1hcnktY2FyZCcgfSlcbiAgXG4gIHN1bW1hcnlDYXJkLmFkZENvbnRyb2wudGV4dEZpZWxkKHsgaW5zdGFuY2VJZDogJ3N1bW1hcnktdGl0bGUnIH0pXG4gICAgLmxhYmVsKCdTdW1tYXJ5IGJ5IENhdGVnb3J5JylcbiAgICAudmFsdWUoJ0NhdGVnb3J5IEJyZWFrZG93bicpXG5cbiAgY29uc3Qgc3VtbWFyeUxpc3QgPSBzdW1tYXJ5Q2FyZC5hZGRDb250cm9sLmxpc3QoeyBpbnN0YW5jZUlkOiAnc3VtbWFyeS1saXN0JyB9KVxuICAgIC5kYXRhKGV4cGVuc2VTdW1tYXJ5KSAvLyBCaW5kIHRvIGRhdGFzb3VyY2VJZFxuXG4gIHN1bW1hcnlMaXN0LmFkZENvbnRyb2wubGlzdEl0ZW0oeyBpbnN0YW5jZUlkOiAnc3VtbWFyeS1pdGVtJyB9KVxuICAgIC50aXRsZSgnPUBjdHguY3VycmVudC5pdGVtLmNhdGVnb3J5JylcbiAgICAuc3VidGl0bGUoJz0kZm9ybWF0Q3VycmVuY3koQGN0eC5jdXJyZW50Lml0ZW0udG90YWxfYW1vdW50KSAmIFwiIOKAoiBcIiAmIEBjdHguY3VycmVudC5pdGVtLmNvdW50ICYgXCIgZXhwZW5zZXNcIicpXG5cbiAgLy8gTWFpbiBleHBlbnNlIGxpc3RcbiAgY29uc3QgbGlzdCA9IHNjcmVlbi5hZGRDb250cm9sLmxpc3QoJ2V4cGVuc2UtbGlzdCcpXG4gICAgLmRhdGEoJ2RhdGEtZXhwZW5zZXMnKSAvLyBCaW5kIHRvIGdsb2JhbCBkYXRhc291cmNlSWRcblxuICBsaXN0LmFkZENvbnRyb2wubGlzdEl0ZW0oeyBpbnN0YW5jZUlkOiAnZXhwZW5zZS1pdGVtJyB9KVxuICAgIC50aXRsZSgnPUBjdHguY3VycmVudC5pdGVtLnRpdGxlJylcbiAgICAuc3VidGl0bGUoJz1AY3R4LmN1cnJlbnQuaXRlbS5jYXRlZ29yeSAmIFwiIOKAoiBcIiAmIEBjdHguY3VycmVudC5pdGVtLmRhdGUnKVxuICAgIC5kZXNjcmlwdGlvbignPSRmb3JtYXRDdXJyZW5jeShAY3R4LmN1cnJlbnQuaXRlbS5hbW91bnQpJylcbiAgICAub25QcmVzc1xuICAgICAgLmdvdG8oJ2VkaXQtZXhwZW5zZScpXG4gICAgICAucGFyYW1ldGVyKCdleHBlbnNlSWQnLCAnPUBjdHguY3VycmVudC5pdGVtLmlkJylcblxuICAvLyBCb3R0b20gcGFuZWwgYWN0aW9uc1xuICBjb25zdCBidXR0b25zID0gc2NyZWVuLmJvdHRvbVBhbmVsLmJ1dHRvbnMoMSlcbiAgYnV0dG9ucy5hZGQuZ290bygnQWRkIE5ldycsICdhZGQtZXhwZW5zZScpXG5cbiAgcmV0dXJuIHNjcmVlblxufSJdfQ==