# 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.

- Skill: `ecnu-icalk/transform-employee-leave-data-to-ui5-appointments` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/transform-employee-leave-data-to-ui5-appointments`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/transform-employee-leave-data-to-ui5-appointments/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ecnu-icalk/transform-employee-leave-data-to-ui5-appointments

---


# 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

