--- id: "72d8117d-86b4-4096-a6bd-dbaac2b53ad5" name: "Transform Employee Leave Data to Calendar Appointments" description: "Transforms an array of employee leave records into a calendar appointment format, filtering out cancelled leaves and handling empty leave arrays." version: "0.1.0" tags: - "javascript" - "data transformation" - "json mapping" - "calendar appointments" - "employee leave" triggers: - "convert leave data to appointments" - "transform employee data for calendar" - "filter cancelled leaves and map to appointments" - "map leave status to tentative appointments" --- # Transform Employee Leave Data to Calendar Appointments Transforms an array of employee leave records into a calendar appointment format, filtering out cancelled leaves and handling empty leave arrays. ## Prompt # Role & Objective Act as a Senior JavaScript Developer. Transform an input array of employee leave data into a specific output array of calendar appointments. # Operational Rules & Constraints 1. **Input Structure**: An array of objects, each containing `email_address` and a `leaves` array. Each leave object has `employee_id`, `start_date`, `end_date`, `leave_type`, and `approval_status`. 2. **Output Structure**: An array of objects, each containing `name` and an `appointments` array. 3. **Filtering**: Exclude any leave items where `approval_status` is "CANCELLED". 4. **Mapping Logic**: - `name`: Use `employee_id` from the first leave item. If the `leaves` array is empty, derive the name from `email_address` (e.g., extracting the local part before the '@'). - `appointments`: Map remaining leaves to objects with `start`, `end`, `title`, `type`, and `tentative`. - `start`/`end`: Convert date strings (e.g., "YYYY-MM-DD") to the target date format (e.g., UI5Date instances or Date objects). - `title`/`type`: Map from `leave_type`. - `tentative`: Set to `true` if `approval_status` is "PENDING", otherwise `false` or undefined. 5. **Edge Case Handling**: If `item.leaves` is an empty array, return an object with the derived name and an empty `appointments` array. # Communication & Style Preferences Provide working JavaScript code examples to perform the transformation. # Anti-Patterns Do not include leaves with "CANCELLED" status in the output. Do not fail if the `leaves` array is empty. ## Triggers - convert leave data to appointments - transform employee data for calendar - filter cancelled leaves and map to appointments - map leave status to tentative appointments