Settings › Manage Tags › Manage Tag List
🎬 Simulate:

Manage Tag List

Tag Name ↕ Tag Group ↕ Courses Used ↕ Specializations Used ↕ Last Updated ↕ Actions
Programming Basics Technology 3 1 2026-05-20
Web Development Technology 5 2 2026-05-18
Project Management Business 2 0 2026-05-15
Financial Analysis Business 0 0 2026-05-10
Cybersecurity Technology 0 0 2026-05-22

Screen Flow (from flow.puml):

📝 Spec notes — UC-LMS.03 / SCR-LMS.14 (fields, actions, requirements)
Identity
  • Screen: SCR-LMS.14 — Manage Tag List (entry screen)
  • Use case: UC-LMS.03 — Manage Tag
  • Primary actor: ACT-11 — Tag Admin
  • Secondary actor: ACT-04 — Super Administrator
Brief description

Tag management screen for Tag Admin. Displays all tags in a table — tag name, Tag Group, courses used, specializations used, last updated. A "+ Add Tag" button above the table opens a pop-up (SCR-LMS.59) to create a new tag. Each row has an Edit button that opens the same pop-up pre-populated for editing, and a Delete button that opens SCR-LMS.15 before proceeding. Supports search by tag name and filter by Tag Group.

Fields
  • filter_group_id "Filter by Tag Group" — dropdown · TagGroup.id · optional · null = all · Page header
  • search_query "Search tag" — text · optional · max 200 · Page header
  • tag_name "Tag name" — text · Tag.name · read-only · Tag table
  • tag_group_name "Tag Group" — text · Tag.tag_group_id · read-only · Tag table
  • course_count "Courses used" — number · computed from CourseTag count · fallback 0 · read-only
  • specialization_count "Specializations used" — number · computed from SpecializationTag count · fallback 0 · read-only
  • updated_at "Last updated" — date · Tag.updated_at · read-only
Actions
  • add_tag "+ Add Tag" — enabled when at least one active Tag Group exists · opens SCR-LMS.59 in create mode · triggers UC-LMS.03-M-2
  • search "Search" — always enabled · inline filter
  • edit_tag "Edit" (per row) — always enabled · opens SCR-LMS.59 pre-populated · triggers UC-LMS.03-A-2A-1
  • delete_tag "Delete" (per row) — always enabled · opens SCR-LMS.15 · triggers UC-LMS.03-A-2B-1
Additional requirements
  1. Default sort: primary by Tag Group (alphabetical), secondary by tag name (alphabetical). Column sorting — click any column header to switch between ascending and descending sort.
  2. Empty state — (a) no tags in the system: show a message guiding the user to add the first tag; (b) search/filter returns no results: show "No tags match the criteria" with a clear filter button.
  3. If no active Tag Group exists — the "+ Add Tag" button is always disabled and a warning message "Please create a Tag Group first" is shown with a link to Manage Tag Group (UC-LMS.12). [refs: UC-LMS.12]
↳ Embedded dialog: SCR-LMS.59 — Tag Form (Add / Edit)
Brief description

Pop-up form used in 2 modes: (1) Create — opens an empty form when the User clicks the "+ Add Tag" button. (2) Edit — loads the existing tag's data when the User clicks "Edit" on any tag row. The system checks for duplicate tag names before saving.

Fields
  • tag_name "Tag Name" — text · required · max 100 · Tag.name
  • tag_group_id "Tag Group" — dropdown · required · Active TagGroups only · Tag.tag_group_id
Actions
  • save "Save" — enabled when tag_name.length > 0 && tag_group_id != null · triggers UC-LMS.03-M-5 / UC-LMS.03-A-2A-4
  • cancel "Cancel" — always enabled · dismisses modal
Additional requirements
  1. Pop-up title changes by mode — "Add Tag" (Create) / "Edit Tag" (Edit).
  2. Edit mode — the system loads the existing tag's values into every form field before display: tag_name → Tag.name, tag_group_id → Tag.tag_group_id.
  3. Tag name must be unique (case-insensitive) on both create and edit — if duplicate, show an inline error below the Tag Name field without closing the pop-up.
↳ Embedded dialog: SCR-LMS.15 — Tag Delete Confirmation Dialog
Brief description

Confirmation dialog for deleting a tag. Shows the count of courses and Specializations currently using the tag. If total > 0 — disables confirmation and shows a cannot-delete message with a suggestion to remove the tag from courses/Specializations first. If count = 0 — enables the confirm button for soft delete.

Fields
  • tag_name_label "Tag name" — text · Tag.name · read-only · Tag summary region
  • course_count "Courses used" — number · computed from CourseTag count · fallback 0 · read-only · Tag summary region
  • specialization_count "Specializations used" — number · computed from SpecializationTag count · fallback 0 · read-only · Tag summary region
  • block_message "Reason deletion is blocked" — text · computed · read-only · visible when course_count > 0 || specialization_count > 0 · Dialog actions region
Actions
  • confirm_delete "Confirm Delete" — enabled when course_count == 0 && specialization_count == 0 · triggers UC-LMS.03-A-2B-3
  • cancel "Cancel" — always enabled · closes dialog, returns to SCR-LMS.14
Additional requirements
  1. course_count + specialization_count > 0 → Confirm disabled + block_message "Cannot delete — this tag is used by N course(s) and M Specialization(s). Please remove the tag from all courses and Specializations first."
  2. Delete is soft delete — tag marked with deleted_at; no longer appears in tag picker or catalog filter.
Open issues (UC-LMS.03)
  • Tag merging / renaming for semantically duplicate tags — out of scope v1?
  • Tag color / icon (cosmetic) — add field after catalog UI design is finalized?