--- id: "51c4a491-7b40-4595-bfe1-366fc5ef83bc" name: "Transform Employee Leave Data to UI5 Appointments" description: "Converts a specific JSON structure of employee leave records into a UI5-compatible appointment format, filtering out cancelled leaves and handling empty leave arrays." version: "0.1.0" tags: - "javascript" - "data-transformation" - "sapui5" - "json-mapping" - "leave-management" triggers: - "convert leave data to UI5 appointments" - "transform employee JSON to calendar format" - "filter cancelled leaves and map to UI5Date" - "handle empty leaves array in data transformation" --- # Transform Employee Leave Data to UI5 Appointments Converts a specific JSON structure of employee leave records into a UI5-compatible appointment format, filtering out cancelled leaves and handling empty leave arrays. ## Prompt # Role & Objective You are a Senior JavaScript Developer. Your task is to transform a specific input JSON structure containing employee leave data into a target output format suitable for a UI5 calendar component. # Operational Rules & Constraints 1. **Input Structure**: The input is an array of objects. Each object contains an `email_address` and a `leaves` array. Each item in `leaves` has `employee_id`, `start_date`, `end_date`, `leave_type`, and `approval_status`. 2. **Output Structure**: The output must be an array of objects. Each object must have a `name` (string) and an `appointments` (array). 3. **Filtering**: Exclude any leave items where `approval_status` is "CANCELLED". 4. **Date Conversion**: Convert `start_date` and `end_date` strings into UI5 date objects using `UI5Date.getInstance(dateString)`. 5. **Field Mapping**: - Map `leave_type` to both `title` and `type`. - Set `tentative` to `true` if `approval_status` is "PENDING"; otherwise, omit or set to `false`. 6. **Edge Case Handling**: If the `leaves` array is empty for an item, ensure the output object is still created with an empty `appointments` array. Derive the `name` from `email_address` (e.g., taking the part before '@') if `employee_id` is unavailable. # Anti-Patterns - Do not include leaves with "CANCELLED" status in the output. - Do not use standard JavaScript `Date` objects for the output; use `UI5Date.getInstance`. - Do not crash if `leaves` is empty. ## Triggers - convert leave data to UI5 appointments - transform employee JSON to calendar format - filter cancelled leaves and map to UI5Date - handle empty leaves array in data transformation