{"body": [{"tabs": [{"label": "Time Entries", "elements": [{"type": "table", "options": {"filters": {"approved": false}, "addButton": false, "tableName": "time_entries", "editFormId": 38, "inlineEdit": true, "filterField": ["user_id", "approved", "date"], "columnButtons": {"approved": {"buttonMap": {"true": {"text": "✓ Approved", "title": "Click to disapprove", "dataset": {"field": "approved", "tableName": "time_entries", "entityName": "entry", "primaryKey": "time_entry_id", "confirmTrue": "Approve this entry?", "confirmFalse": "Disapprove this entry?"}, "onClick": "genericToggle", "className": "badge badge-success badge-sm cursor-pointer"}, "false": {"text": "⏳ Pending", "title": "Click to approve", "dataset": {"field": "approved", "tableName": "time_entries", "entityName": "entry", "primaryKey": "time_entry_id", "confirmTrue": "Approve this entry?", "confirmFalse": "Disapprove this entry?"}, "onClick": "genericToggle", "className": "badge badge-warning badge-sm cursor-pointer"}}, "showValue": false}, "billable": {"buttonMap": {"true": {"text": "✓ Billable", "title": "Click to mark as non-billable", "dataset": {"field": "billable", "tableName": "time_entries", "entityName": "entry", "primaryKey": "time_entry_id", "confirmTrue": "Mark as billable?", "confirmFalse": "Mark as non-billable?"}, "onClick": "genericToggle", "className": "badge badge-success badge-sm cursor-pointer"}, "false": {"text": "✗ Non-Billable", "title": "Click to mark as billable", "dataset": {"field": "billable", "tableName": "time_entries", "entityName": "entry", "primaryKey": "time_entry_id", "confirmTrue": "Mark as billable?", "confirmFalse": "Mark as non-billable?"}, "onClick": "genericToggle", "className": "badge badge-ghost badge-sm cursor-pointer"}}, "showValue": false}}, "columnsToShow": ["date", "counsel", "client_name", "case_name", "hours", "total", "description", "billable", "approved", "approval_comment"], "showGlobalSearch": false}}]}, {"label": "Expenses", "elements": [{"type": "table", "options": {"filters": {"approved": false}, "addButton": false, "tableName": "expenses", "editFormId": 48, "inlineEdit": true, "filterField": ["user_id", "approved", "date"], "columnButtons": {"approved": {"buttonMap": {"true": {"text": "✓ Approved", "title": "Click to disapprove", "dataset": {"field": "approved", "tableName": "expenses", "entityName": "expense", "primaryKey": "expense_id", "confirmTrue": "Approve this expense?", "confirmFalse": "Disapprove this expense?"}, "onClick": "genericToggle", "className": "badge badge-success badge-sm cursor-pointer"}, "false": {"text": "⏳ Pending", "title": "Click to approve", "dataset": {"field": "approved", "tableName": "expenses", "entityName": "expense", "primaryKey": "expense_id", "confirmTrue": "Approve this expense?", "confirmFalse": "Disapprove this expense?"}, "onClick": "genericToggle", "className": "badge badge-warning badge-sm cursor-pointer"}}, "showValue": false}, "billable": {"buttonMap": {"true": {"text": "✓ Billable", "title": "Click to mark as non-billable", "dataset": {"field": "billable", "tableName": "expenses", "entityName": "expense", "primaryKey": "expense_id", "confirmTrue": "Mark as billable?", "confirmFalse": "Mark as non-billable?"}, "onClick": "genericToggle", "className": "badge badge-success badge-sm cursor-pointer"}, "false": {"text": "✗ Non-Billable", "title": "Click to mark as billable", "dataset": {"field": "billable", "tableName": "expenses", "entityName": "expense", "primaryKey": "expense_id", "confirmTrue": "Mark as billable?", "confirmFalse": "Mark as non-billable?"}, "onClick": "genericToggle", "className": "badge badge-ghost badge-sm cursor-pointer"}}, "showValue": false}}, "columnsToShow": ["date", "counsel", "client_name", "case_name", "amount", "description", "billable", "approved", "approval_comment"], "showGlobalSearch": false}}]}, {"label": "One Time Costs", "elements": [{"type": "table", "options": {"filters": {"approved": false}, "tableName": "one_time_service_costs", "editFormId": 58, "inlineEdit": true, "filterField": ["user_id", "approved", "date"], "columnButtons": {"approved": {"buttonMap": {"true": {"text": "✓ Approved", "title": "Click to disapprove", "dataset": {"field": "approved", "tableName": "one_time_service_costs", "entityName": "cost", "primaryKey": "one_time_service_cost_id", "confirmTrue": "Approve this cost?", "confirmFalse": "Disapprove this cost?"}, "onClick": "genericToggle", "className": "badge badge-success badge-sm cursor-pointer"}, "false": {"text": "⏳ Pending", "title": "Click to approve", "dataset": {"field": "approved", "tableName": "one_time_service_costs", "entityName": "cost", "primaryKey": "one_time_service_cost_id", "confirmTrue": "Approve this cost?", "confirmFalse": "Disapprove this cost?"}, "onClick": "genericToggle", "className": "badge badge-warning badge-sm cursor-pointer"}}, "showValue": false}, "billable": {"buttonMap": {"true": {"text": "✓ Billable", "title": "Click to mark as non-billable", "dataset": {"field": "billable", "tableName": "one_time_service_costs", "entityName": "cost", "primaryKey": "one_time_service_cost_id", "confirmTrue": "Mark as billable?", "confirmFalse": "Mark as non-billable?"}, "onClick": "genericToggle", "className": "badge badge-success badge-sm cursor-pointer"}, "false": {"text": "✗ Non-Billable", "title": "Click to mark as billable", "dataset": {"field": "billable", "tableName": "one_time_service_costs", "entityName": "cost", "primaryKey": "one_time_service_cost_id", "confirmTrue": "Mark as billable?", "confirmFalse": "Mark as non-billable?"}, "onClick": "genericToggle", "className": "badge badge-ghost badge-sm cursor-pointer"}}, "showValue": false}}, "columnsToShow": ["date", "counsel", "client_name", "case_name", "amount", "description", "billable", "approved", "comments"]}}]}], "type": "tabs"}], "title": "Time Entries & Expenses", "footer": [{"type": "button", "label": "Close", "onClick": "closeModal"}], "header": [{"type": "filter-select", "options": {"data_column": "user_id", "placeholder": "Search users...", "source_table": "users", "default_label": "All", "search_fields": ["full_name", "email"], "source_column": "user_id", "display_column": "full_name"}}, {"type": "filter-select", "options": {"value": false, "options": [{"label": "All", "value": ""}, {"label": "Approved", "value": true}, {"label": "Pending", "value": false}], "data_column": "approved"}}, {"type": "filter-date-range", "options": {"data_column": "date"}}]}