@bluevolt-tech/lumen 2.2.0 → 2.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,7 +12,22 @@ var CATEGORY_OPTIONS = [
12
12
  { label: "Structured Cabling", value: "structured-cabling", depth: 1 },
13
13
  { label: "Contractor Training", value: "contractor-training", depth: 0 },
14
14
  { label: "Field Technicians", value: "field-technicians", depth: 1 },
15
- { label: "Continuing Ed Credits", value: "cet", depth: 0 }
15
+ { label: "Continuing Ed Credits", value: "cet", depth: 0 },
16
+ // Skill/topic tags — a course is commonly tagged with several of these at
17
+ // once (see getCategoryForCourse), unlike the product-line tree above
18
+ // where a course usually has one clear place in the hierarchy.
19
+ { label: "Advanced Wiring Techniques", value: "advanced-wiring-techniques", depth: 0 },
20
+ { label: "Essential Electrical Skills", value: "essential-electrical-skills", depth: 0 },
21
+ { label: "Circuit Analysis Basics", value: "circuit-analysis-basics", depth: 0 },
22
+ { label: "Energy Efficiency Solutions", value: "energy-efficiency-solutions", depth: 0 },
23
+ { label: "Smart Lighting Strategies", value: "smart-lighting-strategies", depth: 0 },
24
+ { label: "Safety Compliance Guidelines", value: "safety-compliance-guidelines", depth: 0 },
25
+ { label: "Lightning Protection Measures", value: "lightning-protection-measures", depth: 0 },
26
+ { label: "Practical Skills Enhancement", value: "practical-skills-enhancement", depth: 0 },
27
+ { label: "Renewable Energy Systems", value: "renewable-energy-systems", depth: 0 },
28
+ { label: "Industrial Automation", value: "industrial-automation", depth: 0 },
29
+ { label: "Fire & Life Safety", value: "fire-life-safety", depth: 0 },
30
+ { label: "Power Quality Management", value: "power-quality-management", depth: 0 }
16
31
  ];
17
32
  var COURSE_OPTIONS = [
18
33
  { label: "35697 \xB7 Flexcor Wire Mesh Grips: ED", value: "35697", depth: 0 },
@@ -30,26 +45,127 @@ var COURSE_OPTIONS = [
30
45
  { label: "412765 \xB7 Surge Protection Devices: ED", value: "412765", depth: 0 },
31
46
  { label: "428390 \xB7 Conference Room AV Solutions", value: "428390", depth: 0 },
32
47
  { label: "467233 \xB7 Power over Ethernet L2", value: "467233", depth: 0 },
33
- { label: "142859 \xB7 In-Person Technician Training", value: "142859", depth: 0, inactive: true }
48
+ { label: "142859 \xB7 In-Person Technician Training", value: "142859", depth: 0, inactive: true },
49
+ // Deliberately long names — exercise the search picker's row wrap/truncation.
50
+ {
51
+ label: "501234 \xB7 Comprehensive Introduction to Advanced Electrical Safety Standards and Regulatory Compliance for Commercial Installations",
52
+ value: "501234",
53
+ depth: 0
54
+ },
55
+ {
56
+ label: "502567 \xB7 Understanding the Complete Lifecycle of Structured Cabling Systems from Design Through Certification and Long-Term Maintenance",
57
+ value: "502567",
58
+ depth: 0
59
+ },
60
+ {
61
+ label: "503891 \xB7 Best Practices for Integrating Audio, Video, and Networking Infrastructure in Modern Enterprise Conference Room Environments",
62
+ value: "503891",
63
+ depth: 0
64
+ },
65
+ // 20 more long-named courses, each tagged with several categories in
66
+ // CATEGORY_COURSES below — exercises both the search picker's row wrap and
67
+ // the report table's concatenated "Course Categories" column.
68
+ {
69
+ label: "701001 \xB7 WD-40: Specialist Contact Cleaner and Machine & Engine Degreaser",
70
+ value: "701001",
71
+ depth: 0
72
+ },
73
+ {
74
+ label: "701002 \xB7 Comprehensive Guide to Ground Fault Circuit Interrupter Installation and Troubleshooting for Residential Applications",
75
+ value: "701002",
76
+ depth: 0
77
+ },
78
+ {
79
+ label: "701003 \xB7 Advanced Techniques for Diagnosing and Repairing Variable Frequency Drives in Industrial HVAC Systems",
80
+ value: "701003",
81
+ depth: 0
82
+ },
83
+ {
84
+ label: "701004 \xB7 Understanding NFPA 70E Arc Flash Hazard Analysis and Personal Protective Equipment Selection Criteria",
85
+ value: "701004",
86
+ depth: 0
87
+ },
88
+ {
89
+ label: "701005 \xB7 Complete Overview of Low Voltage Structured Cabling Standards for Data Centers and Enterprise Networks",
90
+ value: "701005",
91
+ depth: 0
92
+ },
93
+ {
94
+ label: "701006 \xB7 Practical Application of Photovoltaic Solar Panel Installation and Grid-Tied Inverter Configuration",
95
+ value: "701006",
96
+ depth: 0
97
+ },
98
+ {
99
+ label: "701007 \xB7 Fundamentals of Fire Alarm System Design, Programming, and NFPA 72 Code Compliance Requirements",
100
+ value: "701007",
101
+ depth: 0
102
+ },
103
+ {
104
+ label: "701008 \xB7 Detailed Instruction on Lithium-Ion Battery Storage Safety Protocols and Thermal Runaway Prevention",
105
+ value: "701008",
106
+ depth: 0
107
+ },
108
+ {
109
+ label: "701009 \xB7 Mastering Commercial Building Automation Systems Integration with BACnet and Modbus Protocols",
110
+ value: "701009",
111
+ depth: 0
112
+ },
113
+ {
114
+ label: "701010 \xB7 Essential Skills for Installing and Maintaining Emergency Backup Generator Transfer Switch Systems",
115
+ value: "701010",
116
+ depth: 0
117
+ },
118
+ {
119
+ label: "701011 \xB7 In-Depth Training on Structured Wiring for Home Theater and Whole-House Audio Distribution Networks",
120
+ value: "701011",
121
+ depth: 0
122
+ },
123
+ {
124
+ label: "701012 \xB7 Comprehensive Review of National Electrical Code Article 250 Grounding and Bonding Requirements",
125
+ value: "701012",
126
+ depth: 0
127
+ },
128
+ {
129
+ label: "701013 \xB7 Techniques for Troubleshooting Three-Phase Motor Control Circuits in Industrial Manufacturing Facilities",
130
+ value: "701013",
131
+ depth: 0
132
+ },
133
+ {
134
+ label: "701014 \xB7 Introduction to Smart Home Automation Wiring for Lighting Control and Occupancy Sensor Networks",
135
+ value: "701014",
136
+ depth: 0
137
+ },
138
+ {
139
+ label: "701015 \xB7 Best Practices for Selecting and Installing Surge Protection Devices in Commercial Electrical Panels",
140
+ value: "701015",
141
+ depth: 0
142
+ },
143
+ {
144
+ label: "701016 \xB7 Complete Certification Course for Journeyman Electricians Preparing for State Licensing Examinations",
145
+ value: "701016",
146
+ depth: 0
147
+ },
148
+ {
149
+ label: "701017 \xB7 Advanced Diagnostic Methods for Identifying Power Quality Issues and Harmonic Distortion in Facilities",
150
+ value: "701017",
151
+ depth: 0
152
+ },
153
+ {
154
+ label: "701018 \xB7 Hands-On Workshop for Terminating and Testing Fiber Optic Cabling in Enterprise Network Installations",
155
+ value: "701018",
156
+ depth: 0
157
+ },
158
+ {
159
+ label: "701019 \xB7 Understanding Underwriters Laboratories Certification Requirements for Electrical Equipment Manufacturers",
160
+ value: "701019",
161
+ depth: 0
162
+ },
163
+ {
164
+ label: "701020 \xB7 Practical Guide to Installing and Configuring Access Control Systems for Commercial Security Applications",
165
+ value: "701020",
166
+ depth: 0
167
+ }
34
168
  ];
35
- var COURSE_SEAT_TIMES = {
36
- "35697": 45,
37
- "43588": 60,
38
- "111430": 30,
39
- "118402": 45,
40
- "163061": 25,
41
- "223929": 90,
42
- "230765": 50,
43
- "230818": 60,
44
- "309214": 40,
45
- "331980": 75,
46
- "341235": 60,
47
- "392536": 55,
48
- "412765": 35,
49
- "428390": 65,
50
- "467233": 70,
51
- "142859": 120
52
- };
53
169
  var GROUP_OPTIONS = [
54
170
  { label: "Ungrouped", value: "ungrouped", depth: 0, italic: true },
55
171
  { label: "Legrand University", value: "legrand-university", depth: 0 },
@@ -65,19 +181,45 @@ var GROUP_OPTIONS = [
65
181
  { label: "Lighting Control", value: "lighting-control", depth: 0, inactive: true }
66
182
  ];
67
183
  var USER_OPTIONS = [
68
- { label: "310735 \xB7 Donald Barr", value: "310735", depth: 0 },
69
- { label: "450194 \xB7 Rob Hutchinson", value: "450194", depth: 0 },
70
- { label: "543510 \xB7 Juan Carlos", value: "543510", depth: 0 },
71
- { label: "321934 \xB7 Seth Pancoast", value: "321934", depth: 0 },
72
- { label: "330921 \xB7 Maria Delgado", value: "330921", depth: 0 },
73
- { label: "1920714 \xB7 Don Fisher", value: "1920714", depth: 0 },
74
- { label: "1955010 \xB7 Priya Nair", value: "1955010", depth: 0 },
75
- { label: "2242106 \xB7 Frederik Westerhoff", value: "2242106", depth: 0 },
76
- { label: "1778021 \xB7 John Gentry", value: "1778021", depth: 0 },
77
- { label: "2301455 \xB7 Carla Whitman", value: "2301455", depth: 0 },
78
- { label: "2219698 \xB7 Samuel Rawlings", value: "2219698", depth: 0 },
79
- { label: "1508573 \xB7 Levi Satterlee", value: "1508573", depth: 0, inactive: true },
80
- { label: "1405823 \xB7 Hidden User", value: "1405823", depth: 0, inactive: true }
184
+ { label: "dbarr", value: "310735", depth: 0 },
185
+ { label: "rhutchinson", value: "450194", depth: 0 },
186
+ { label: "jcarlos", value: "543510", depth: 0 },
187
+ { label: "spancoast", value: "321934", depth: 0 },
188
+ { label: "mdelgado", value: "330921", depth: 0 },
189
+ { label: "dfisher", value: "1920714", depth: 0 },
190
+ { label: "pnair", value: "1955010", depth: 0 },
191
+ { label: "fwesterhoff", value: "2242106", depth: 0 },
192
+ { label: "jgentry", value: "1778021", depth: 0 },
193
+ { label: "cwhitman", value: "2301455", depth: 0 },
194
+ { label: "srawlings", value: "2219698", depth: 0 },
195
+ { label: "lsatterlee", value: "1508573", depth: 0, inactive: true },
196
+ { label: "huser", value: "1405823", depth: 0, inactive: true },
197
+ // Some universities' SSO usernames are the full email address — deliberately
198
+ // long, to exercise the search picker's row wrap/truncation.
199
+ { label: "tiffany75@johnson-fitzgerald.org", value: "604812", depth: 0 },
200
+ { label: "michael.thompson92@rodriguez-consulting.net", value: "608347", depth: 0 },
201
+ { label: "amanda.k.williams@blackwell-associates.com", value: "611926", depth: 0 },
202
+ // 20 more — same idea, paired 1:1 with the 20 long-named courses above.
203
+ { label: "brandon.mitchell87@sterling-industrial.net", value: "705001", depth: 0 },
204
+ { label: "crystal.hendricks23@meadowbrook-solutions.com", value: "705002", depth: 0 },
205
+ { label: "jonathan.abernathy56@crestwood-technologies.org", value: "705003", depth: 0 },
206
+ { label: "samantha.oconnell99@blackstone-electrical.com", value: "705004", depth: 0 },
207
+ { label: "dwayne.fitzpatrick34@ironwood-consulting.net", value: "705005", depth: 0 },
208
+ { label: "valentina.rodriguez88@pinnacle-systems.org", value: "705006", depth: 0 },
209
+ { label: "marcus.thornberry12@keystone-engineering.com", value: "705007", depth: 0 },
210
+ { label: "ashley.winterbottom45@brightline-services.net", value: "705008", depth: 0 },
211
+ { label: "terrence.blackwood67@summit-electrical.org", value: "705009", depth: 0 },
212
+ { label: "giovanni.castellano78@harborview-technologies.com", value: "705010", depth: 0 },
213
+ { label: "felicia.underwood91@northgate-solutions.net", value: "705011", depth: 0 },
214
+ { label: "reginald.hollingsworth29@cornerstone-systems.org", value: "705012", depth: 0 },
215
+ { label: "mariana.villanueva64@lakeshore-industrial.com", value: "705013", depth: 0 },
216
+ { label: "desmond.chamberlain83@ridgeline-consulting.net", value: "705014", depth: 0 },
217
+ { label: "anastasia.kowalczyk52@brookfield-engineering.org", value: "705015", depth: 0 },
218
+ { label: "leonardo.fitzsimmons38@westgate-electrical.com", value: "705016", depth: 0 },
219
+ { label: "rosalind.abernathy71@stonebridge-technologies.net", value: "705017", depth: 0 },
220
+ { label: "maximilian.hawthorne15@cedarcrest-solutions.org", value: "705018", depth: 0 },
221
+ { label: "guinevere.thackeray47@ironhaven-systems.com", value: "705019", depth: 0 },
222
+ { label: "bartholomew.winchester93@millbrook-industrial.net", value: "705020", depth: 0 }
81
223
  ];
82
224
  var ENROLLMENTS = [
83
225
  {
@@ -3567,6 +3709,589 @@ var ENROLLMENTS = [
3567
3709
  requiredCredits: 60,
3568
3710
  earnedCredits: 16,
3569
3711
  remainingCredits: 44
3712
+ },
3713
+ // ── Long course names / long (email-style) usernames ─────────────────────
3714
+ // Exercises the report table's own column truncation, not just the
3715
+ // search picker's — same entities the COURSE_OPTIONS/USER_OPTIONS long
3716
+ // entries reference, cross-paired with a couple of the regular ones too.
3717
+ {
3718
+ id: 10151,
3719
+ courseId: "501234",
3720
+ courseName: "Comprehensive Introduction to Advanced Electrical Safety Standards and Regulatory Compliance for Commercial Installations",
3721
+ publisher: "Legrand University",
3722
+ userGroup: "AV & Networking",
3723
+ userId: "604812",
3724
+ username: "tiffany75@johnson-fitzgerald.org",
3725
+ fullName: "Tiffany Johnson",
3726
+ email: "tiffany75@johnson-fitzgerald.org",
3727
+ hireDate: "May 12, 2025",
3728
+ lastLogin: "4 days ago",
3729
+ userStatus: "active",
3730
+ enrollmentType: "external",
3731
+ progress: "on-schedule",
3732
+ enrolledDate: "Jun 2, 2025 09:30 AM",
3733
+ completedDate: null,
3734
+ certificateDate: null,
3735
+ score: null,
3736
+ requiredCredits: 90,
3737
+ earnedCredits: 20,
3738
+ remainingCredits: 70
3739
+ },
3740
+ {
3741
+ id: 10152,
3742
+ courseId: "502567",
3743
+ courseName: "Understanding the Complete Lifecycle of Structured Cabling Systems from Design Through Certification and Long-Term Maintenance",
3744
+ publisher: "Legrand University",
3745
+ userGroup: "AV & Networking",
3746
+ userId: "608347",
3747
+ username: "michael.thompson92@rodriguez-consulting.net",
3748
+ fullName: "Michael Thompson",
3749
+ email: "michael.thompson92@rodriguez-consulting.net",
3750
+ hireDate: "Apr 3, 2025",
3751
+ lastLogin: "2 weeks ago",
3752
+ userStatus: "active",
3753
+ enrollmentType: "external",
3754
+ progress: "complete",
3755
+ enrolledDate: "Apr 20, 2025 01:15 PM",
3756
+ completedDate: "Jun 1, 2025 04:45 PM",
3757
+ certificateDate: "Jun 1, 2025",
3758
+ score: 88,
3759
+ requiredCredits: 120,
3760
+ earnedCredits: 130,
3761
+ remainingCredits: 0
3762
+ },
3763
+ {
3764
+ id: 10153,
3765
+ courseId: "503891",
3766
+ courseName: "Best Practices for Integrating Audio, Video, and Networking Infrastructure in Modern Enterprise Conference Room Environments",
3767
+ publisher: "Legrand University",
3768
+ userGroup: "DAT Contractor",
3769
+ userId: "611926",
3770
+ username: "amanda.k.williams@blackwell-associates.com",
3771
+ fullName: "Amanda Williams",
3772
+ email: "amanda.k.williams@blackwell-associates.com",
3773
+ hireDate: "Mar 18, 2025",
3774
+ lastLogin: "1 week ago",
3775
+ userStatus: "active",
3776
+ enrollmentType: "external",
3777
+ progress: "behind-schedule",
3778
+ enrolledDate: "May 5, 2025 10:00 AM",
3779
+ completedDate: null,
3780
+ certificateDate: null,
3781
+ score: null,
3782
+ requiredCredits: 75,
3783
+ earnedCredits: 15,
3784
+ remainingCredits: 60
3785
+ },
3786
+ {
3787
+ id: 10154,
3788
+ courseId: "35697",
3789
+ courseName: "Flexcor Wire Mesh Grips: ED",
3790
+ publisher: "Legrand University",
3791
+ userGroup: "AV & Networking",
3792
+ userId: "604812",
3793
+ username: "tiffany75@johnson-fitzgerald.org",
3794
+ fullName: "Tiffany Johnson",
3795
+ email: "tiffany75@johnson-fitzgerald.org",
3796
+ hireDate: "May 12, 2025",
3797
+ lastLogin: "4 days ago",
3798
+ userStatus: "active",
3799
+ enrollmentType: "external",
3800
+ progress: "enrolled",
3801
+ enrolledDate: "Jul 1, 2025 08:00 AM",
3802
+ completedDate: null,
3803
+ certificateDate: null,
3804
+ score: null,
3805
+ requiredCredits: 45,
3806
+ earnedCredits: 0,
3807
+ remainingCredits: 45
3808
+ },
3809
+ {
3810
+ id: 10155,
3811
+ courseId: "501234",
3812
+ courseName: "Comprehensive Introduction to Advanced Electrical Safety Standards and Regulatory Compliance for Commercial Installations",
3813
+ publisher: "Legrand University",
3814
+ userGroup: "Legrand University",
3815
+ userId: "310735",
3816
+ username: "dbarr",
3817
+ fullName: "Donald Barr",
3818
+ email: "donald.barr@example.com",
3819
+ hireDate: "Jun 15, 2025",
3820
+ lastLogin: "2 days ago",
3821
+ userStatus: "active",
3822
+ enrollmentType: "internal",
3823
+ progress: "pending-approval",
3824
+ enrolledDate: "Jul 10, 2025 02:00 PM",
3825
+ completedDate: null,
3826
+ certificateDate: null,
3827
+ score: null,
3828
+ requiredCredits: 90,
3829
+ earnedCredits: 0,
3830
+ remainingCredits: 90
3831
+ },
3832
+ // ── 20 more long course names × 20 more long (email-style) usernames ─────
3833
+ // Each course is tagged with several categories in CATEGORY_COURSES above,
3834
+ // so the table's "Course Categories" column shows a realistic multi-tag
3835
+ // concatenation (see getCategoryForCourse) instead of just one label.
3836
+ {
3837
+ id: 10156,
3838
+ courseId: "701001",
3839
+ courseName: "WD-40: Specialist Contact Cleaner and Machine & Engine Degreaser",
3840
+ publisher: "Legrand University",
3841
+ userGroup: "AV & Networking",
3842
+ userId: "705001",
3843
+ username: "brandon.mitchell87@sterling-industrial.net",
3844
+ fullName: "Brandon Mitchell",
3845
+ email: "brandon.mitchell87@sterling-industrial.net",
3846
+ hireDate: "Jan 8, 2025",
3847
+ lastLogin: "3 days ago",
3848
+ userStatus: "active",
3849
+ enrollmentType: "external",
3850
+ progress: "complete",
3851
+ enrolledDate: "Feb 3, 2025 08:00 AM",
3852
+ completedDate: "Feb 3, 2025 08:20 AM",
3853
+ certificateDate: "Feb 3, 2025",
3854
+ score: 100,
3855
+ requiredCredits: 20,
3856
+ earnedCredits: 20,
3857
+ remainingCredits: 0
3858
+ },
3859
+ {
3860
+ id: 10157,
3861
+ courseId: "701002",
3862
+ courseName: "Comprehensive Guide to Ground Fault Circuit Interrupter Installation and Troubleshooting for Residential Applications",
3863
+ publisher: "Legrand University",
3864
+ userGroup: "DAT Contractor",
3865
+ userId: "705002",
3866
+ username: "crystal.hendricks23@meadowbrook-solutions.com",
3867
+ fullName: "Crystal Hendricks",
3868
+ email: "crystal.hendricks23@meadowbrook-solutions.com",
3869
+ hireDate: "Feb 14, 2025",
3870
+ lastLogin: "1 week ago",
3871
+ userStatus: "active",
3872
+ enrollmentType: "external",
3873
+ progress: "on-schedule",
3874
+ enrolledDate: "Mar 10, 2025 10:30 AM",
3875
+ completedDate: null,
3876
+ certificateDate: null,
3877
+ score: null,
3878
+ requiredCredits: 45,
3879
+ earnedCredits: 25,
3880
+ remainingCredits: 20
3881
+ },
3882
+ {
3883
+ id: 10158,
3884
+ courseId: "701003",
3885
+ courseName: "Advanced Techniques for Diagnosing and Repairing Variable Frequency Drives in Industrial HVAC Systems",
3886
+ publisher: "Legrand University",
3887
+ userGroup: "Legrand University",
3888
+ userId: "705003",
3889
+ username: "jonathan.abernathy56@crestwood-technologies.org",
3890
+ fullName: "Jonathan Abernathy",
3891
+ email: "jonathan.abernathy56@crestwood-technologies.org",
3892
+ hireDate: "Mar 2, 2025",
3893
+ lastLogin: "2 weeks ago",
3894
+ userStatus: "active",
3895
+ enrollmentType: "internal",
3896
+ progress: "behind-schedule",
3897
+ enrolledDate: "Mar 22, 2025 01:45 PM",
3898
+ completedDate: null,
3899
+ certificateDate: null,
3900
+ score: null,
3901
+ requiredCredits: 90,
3902
+ earnedCredits: 15,
3903
+ remainingCredits: 75
3904
+ },
3905
+ {
3906
+ id: 10159,
3907
+ courseId: "701004",
3908
+ courseName: "Understanding NFPA 70E Arc Flash Hazard Analysis and Personal Protective Equipment Selection Criteria",
3909
+ publisher: "Legrand University",
3910
+ userGroup: "Specifier",
3911
+ userId: "705004",
3912
+ username: "samantha.oconnell99@blackstone-electrical.com",
3913
+ fullName: "Samantha Oconnell",
3914
+ email: "samantha.oconnell99@blackstone-electrical.com",
3915
+ hireDate: "Apr 19, 2025",
3916
+ lastLogin: "4 days ago",
3917
+ userStatus: "active",
3918
+ enrollmentType: "external",
3919
+ progress: "pending-approval",
3920
+ enrolledDate: "May 1, 2025 09:00 AM",
3921
+ completedDate: null,
3922
+ certificateDate: null,
3923
+ score: null,
3924
+ requiredCredits: 60,
3925
+ earnedCredits: 0,
3926
+ remainingCredits: 60
3927
+ },
3928
+ {
3929
+ id: 10160,
3930
+ courseId: "701005",
3931
+ courseName: "Complete Overview of Low Voltage Structured Cabling Standards for Data Centers and Enterprise Networks",
3932
+ publisher: "Legrand University",
3933
+ userGroup: "AV & Networking",
3934
+ userId: "705005",
3935
+ username: "dwayne.fitzpatrick34@ironwood-consulting.net",
3936
+ fullName: "Dwayne Fitzpatrick",
3937
+ email: "dwayne.fitzpatrick34@ironwood-consulting.net",
3938
+ hireDate: "May 6, 2025",
3939
+ lastLogin: "5 days ago",
3940
+ userStatus: "active",
3941
+ enrollmentType: "external",
3942
+ progress: "ready-to-pay",
3943
+ enrolledDate: "Jun 12, 2025 11:15 AM",
3944
+ completedDate: null,
3945
+ certificateDate: null,
3946
+ score: null,
3947
+ requiredCredits: null,
3948
+ earnedCredits: null,
3949
+ remainingCredits: null
3950
+ },
3951
+ {
3952
+ id: 10161,
3953
+ courseId: "701006",
3954
+ courseName: "Practical Application of Photovoltaic Solar Panel Installation and Grid-Tied Inverter Configuration",
3955
+ publisher: "Legrand University",
3956
+ userGroup: "DAT Contractor",
3957
+ userId: "705006",
3958
+ username: "valentina.rodriguez88@pinnacle-systems.org",
3959
+ fullName: "Valentina Rodriguez",
3960
+ email: "valentina.rodriguez88@pinnacle-systems.org",
3961
+ hireDate: "Jun 1, 2025",
3962
+ lastLogin: "1 month ago",
3963
+ userStatus: "active",
3964
+ enrollmentType: "external",
3965
+ progress: "enrolled",
3966
+ enrolledDate: "Jul 8, 2025 03:30 PM",
3967
+ completedDate: null,
3968
+ certificateDate: null,
3969
+ score: null,
3970
+ requiredCredits: 90,
3971
+ earnedCredits: 0,
3972
+ remainingCredits: 90
3973
+ },
3974
+ {
3975
+ id: 10162,
3976
+ courseId: "701007",
3977
+ courseName: "Fundamentals of Fire Alarm System Design, Programming, and NFPA 72 Code Compliance Requirements",
3978
+ publisher: "Legrand University",
3979
+ userGroup: "Legrand University",
3980
+ userId: "705007",
3981
+ username: "marcus.thornberry12@keystone-engineering.com",
3982
+ fullName: "Marcus Thornberry",
3983
+ email: "marcus.thornberry12@keystone-engineering.com",
3984
+ hireDate: "Jan 22, 2025",
3985
+ lastLogin: "6 days ago",
3986
+ userStatus: "active",
3987
+ enrollmentType: "internal",
3988
+ progress: "complete",
3989
+ enrolledDate: "Feb 18, 2025 09:00 AM",
3990
+ completedDate: "Mar 4, 2025 04:00 PM",
3991
+ certificateDate: "Mar 4, 2025",
3992
+ score: 92,
3993
+ requiredCredits: 60,
3994
+ earnedCredits: 65,
3995
+ remainingCredits: 0
3996
+ },
3997
+ {
3998
+ id: 10163,
3999
+ courseId: "701008",
4000
+ courseName: "Detailed Instruction on Lithium-Ion Battery Storage Safety Protocols and Thermal Runaway Prevention",
4001
+ publisher: "Legrand University",
4002
+ userGroup: "Specifier",
4003
+ userId: "705008",
4004
+ username: "ashley.winterbottom45@brightline-services.net",
4005
+ fullName: "Ashley Winterbottom",
4006
+ email: "ashley.winterbottom45@brightline-services.net",
4007
+ hireDate: "Feb 27, 2025",
4008
+ lastLogin: "2 months ago",
4009
+ userStatus: "inactive",
4010
+ enrollmentType: "external",
4011
+ progress: "on-schedule",
4012
+ enrolledDate: "Mar 15, 2025 02:00 PM",
4013
+ completedDate: null,
4014
+ certificateDate: null,
4015
+ score: null,
4016
+ requiredCredits: 45,
4017
+ earnedCredits: 20,
4018
+ remainingCredits: 25
4019
+ },
4020
+ {
4021
+ id: 10164,
4022
+ courseId: "701009",
4023
+ courseName: "Mastering Commercial Building Automation Systems Integration with BACnet and Modbus Protocols",
4024
+ publisher: "Legrand University",
4025
+ userGroup: "AV & Networking",
4026
+ userId: "705009",
4027
+ username: "terrence.blackwood67@summit-electrical.org",
4028
+ fullName: "Terrence Blackwood",
4029
+ email: "terrence.blackwood67@summit-electrical.org",
4030
+ hireDate: "Mar 11, 2025",
4031
+ lastLogin: "3 months ago",
4032
+ userStatus: "active",
4033
+ enrollmentType: "internal",
4034
+ progress: "behind-schedule",
4035
+ enrolledDate: "Apr 2, 2025 10:00 AM",
4036
+ completedDate: null,
4037
+ certificateDate: null,
4038
+ score: null,
4039
+ requiredCredits: 105,
4040
+ earnedCredits: 30,
4041
+ remainingCredits: 75
4042
+ },
4043
+ {
4044
+ id: 10165,
4045
+ courseId: "701010",
4046
+ courseName: "Essential Skills for Installing and Maintaining Emergency Backup Generator Transfer Switch Systems",
4047
+ publisher: "Legrand University",
4048
+ userGroup: "DAT Contractor",
4049
+ userId: "705010",
4050
+ username: "giovanni.castellano78@harborview-technologies.com",
4051
+ fullName: "Giovanni Castellano",
4052
+ email: "giovanni.castellano78@harborview-technologies.com",
4053
+ hireDate: "Apr 5, 2025",
4054
+ lastLogin: "4 months ago",
4055
+ userStatus: "active",
4056
+ enrollmentType: "external",
4057
+ progress: "pending-approval",
4058
+ enrolledDate: "May 9, 2025 01:00 PM",
4059
+ completedDate: null,
4060
+ certificateDate: null,
4061
+ score: null,
4062
+ requiredCredits: 60,
4063
+ earnedCredits: 0,
4064
+ remainingCredits: 60
4065
+ },
4066
+ {
4067
+ id: 10166,
4068
+ courseId: "701011",
4069
+ courseName: "In-Depth Training on Structured Wiring for Home Theater and Whole-House Audio Distribution Networks",
4070
+ publisher: "Legrand University",
4071
+ userGroup: "Legrand University",
4072
+ userId: "705011",
4073
+ username: "felicia.underwood91@northgate-solutions.net",
4074
+ fullName: "Felicia Underwood",
4075
+ email: "felicia.underwood91@northgate-solutions.net",
4076
+ hireDate: "May 20, 2025",
4077
+ lastLogin: "5 months ago",
4078
+ userStatus: "active",
4079
+ enrollmentType: "external",
4080
+ progress: "ready-to-pay",
4081
+ enrolledDate: "Jun 6, 2025 09:45 AM",
4082
+ completedDate: null,
4083
+ certificateDate: null,
4084
+ score: null,
4085
+ requiredCredits: null,
4086
+ earnedCredits: null,
4087
+ remainingCredits: null
4088
+ },
4089
+ {
4090
+ id: 10167,
4091
+ courseId: "701012",
4092
+ courseName: "Comprehensive Review of National Electrical Code Article 250 Grounding and Bonding Requirements",
4093
+ publisher: "Legrand University",
4094
+ userGroup: "Specifier",
4095
+ userId: "705012",
4096
+ username: "reginald.hollingsworth29@cornerstone-systems.org",
4097
+ fullName: "Reginald Hollingsworth",
4098
+ email: "reginald.hollingsworth29@cornerstone-systems.org",
4099
+ hireDate: "Jun 3, 2025",
4100
+ lastLogin: "1 week ago",
4101
+ userStatus: "active",
4102
+ enrollmentType: "internal",
4103
+ progress: "enrolled",
4104
+ enrolledDate: "Jul 14, 2025 08:30 AM",
4105
+ completedDate: null,
4106
+ certificateDate: null,
4107
+ score: null,
4108
+ requiredCredits: 60,
4109
+ earnedCredits: 0,
4110
+ remainingCredits: 60
4111
+ },
4112
+ {
4113
+ id: 10168,
4114
+ courseId: "701013",
4115
+ courseName: "Techniques for Troubleshooting Three-Phase Motor Control Circuits in Industrial Manufacturing Facilities",
4116
+ publisher: "Legrand University",
4117
+ userGroup: "AV & Networking",
4118
+ userId: "705013",
4119
+ username: "mariana.villanueva64@lakeshore-industrial.com",
4120
+ fullName: "Mariana Villanueva",
4121
+ email: "mariana.villanueva64@lakeshore-industrial.com",
4122
+ hireDate: "Jan 30, 2025",
4123
+ lastLogin: "2 days ago",
4124
+ userStatus: "active",
4125
+ enrollmentType: "external",
4126
+ progress: "complete",
4127
+ enrolledDate: "Feb 20, 2025 11:00 AM",
4128
+ completedDate: "Mar 25, 2025 03:15 PM",
4129
+ certificateDate: "Mar 25, 2025",
4130
+ score: 88,
4131
+ requiredCredits: 90,
4132
+ earnedCredits: 95,
4133
+ remainingCredits: 0
4134
+ },
4135
+ {
4136
+ id: 10169,
4137
+ courseId: "701014",
4138
+ courseName: "Introduction to Smart Home Automation Wiring for Lighting Control and Occupancy Sensor Networks",
4139
+ publisher: "Legrand University",
4140
+ userGroup: "DAT Contractor",
4141
+ userId: "705014",
4142
+ username: "desmond.chamberlain83@ridgeline-consulting.net",
4143
+ fullName: "Desmond Chamberlain",
4144
+ email: "desmond.chamberlain83@ridgeline-consulting.net",
4145
+ hireDate: "Feb 9, 2025",
4146
+ lastLogin: "3 weeks ago",
4147
+ userStatus: "active",
4148
+ enrollmentType: "external",
4149
+ progress: "on-schedule",
4150
+ enrolledDate: "Mar 5, 2025 04:00 PM",
4151
+ completedDate: null,
4152
+ certificateDate: null,
4153
+ score: null,
4154
+ requiredCredits: 60,
4155
+ earnedCredits: 35,
4156
+ remainingCredits: 25
4157
+ },
4158
+ {
4159
+ id: 10170,
4160
+ courseId: "701015",
4161
+ courseName: "Best Practices for Selecting and Installing Surge Protection Devices in Commercial Electrical Panels",
4162
+ publisher: "Legrand University",
4163
+ userGroup: "Legrand University",
4164
+ userId: "705015",
4165
+ username: "anastasia.kowalczyk52@brookfield-engineering.org",
4166
+ fullName: "Anastasia Kowalczyk",
4167
+ email: "anastasia.kowalczyk52@brookfield-engineering.org",
4168
+ hireDate: "Mar 17, 2025",
4169
+ lastLogin: "6 months ago",
4170
+ userStatus: "inactive",
4171
+ enrollmentType: "internal",
4172
+ progress: "behind-schedule",
4173
+ enrolledDate: "Apr 8, 2025 10:20 AM",
4174
+ completedDate: null,
4175
+ certificateDate: null,
4176
+ score: null,
4177
+ requiredCredits: 45,
4178
+ earnedCredits: 5,
4179
+ remainingCredits: 40
4180
+ },
4181
+ {
4182
+ id: 10171,
4183
+ courseId: "701016",
4184
+ courseName: "Complete Certification Course for Journeyman Electricians Preparing for State Licensing Examinations",
4185
+ publisher: "Legrand University",
4186
+ userGroup: "Specifier",
4187
+ userId: "705016",
4188
+ username: "leonardo.fitzsimmons38@westgate-electrical.com",
4189
+ fullName: "Leonardo Fitzsimmons",
4190
+ email: "leonardo.fitzsimmons38@westgate-electrical.com",
4191
+ hireDate: "Apr 21, 2025",
4192
+ lastLogin: "1 day ago",
4193
+ userStatus: "active",
4194
+ enrollmentType: "external",
4195
+ progress: "pending-approval",
4196
+ enrolledDate: "May 30, 2025 09:30 AM",
4197
+ completedDate: null,
4198
+ certificateDate: null,
4199
+ score: null,
4200
+ requiredCredits: 180,
4201
+ earnedCredits: 0,
4202
+ remainingCredits: 180
4203
+ },
4204
+ {
4205
+ id: 10172,
4206
+ courseId: "701017",
4207
+ courseName: "Advanced Diagnostic Methods for Identifying Power Quality Issues and Harmonic Distortion in Facilities",
4208
+ publisher: "Legrand University",
4209
+ userGroup: "AV & Networking",
4210
+ userId: "705017",
4211
+ username: "rosalind.abernathy71@stonebridge-technologies.net",
4212
+ fullName: "Rosalind Abernathy",
4213
+ email: "rosalind.abernathy71@stonebridge-technologies.net",
4214
+ hireDate: "May 12, 2025",
4215
+ lastLogin: "2 weeks ago",
4216
+ userStatus: "active",
4217
+ enrollmentType: "external",
4218
+ progress: "ready-to-pay",
4219
+ enrolledDate: "Jun 19, 2025 01:30 PM",
4220
+ completedDate: null,
4221
+ certificateDate: null,
4222
+ score: null,
4223
+ requiredCredits: null,
4224
+ earnedCredits: null,
4225
+ remainingCredits: null
4226
+ },
4227
+ {
4228
+ id: 10173,
4229
+ courseId: "701018",
4230
+ courseName: "Hands-On Workshop for Terminating and Testing Fiber Optic Cabling in Enterprise Network Installations",
4231
+ publisher: "Legrand University",
4232
+ userGroup: "DAT Contractor",
4233
+ userId: "705018",
4234
+ username: "maximilian.hawthorne15@cedarcrest-solutions.org",
4235
+ fullName: "Maximilian Hawthorne",
4236
+ email: "maximilian.hawthorne15@cedarcrest-solutions.org",
4237
+ hireDate: "Jun 9, 2025",
4238
+ lastLogin: "4 days ago",
4239
+ userStatus: "active",
4240
+ enrollmentType: "external",
4241
+ progress: "enrolled",
4242
+ enrolledDate: "Jul 21, 2025 08:00 AM",
4243
+ completedDate: null,
4244
+ certificateDate: null,
4245
+ score: null,
4246
+ requiredCredits: 75,
4247
+ earnedCredits: 0,
4248
+ remainingCredits: 75
4249
+ },
4250
+ {
4251
+ id: 10174,
4252
+ courseId: "701019",
4253
+ courseName: "Understanding Underwriters Laboratories Certification Requirements for Electrical Equipment Manufacturers",
4254
+ publisher: "Legrand University",
4255
+ userGroup: "Legrand University",
4256
+ userId: "705019",
4257
+ username: "guinevere.thackeray47@ironhaven-systems.com",
4258
+ fullName: "Guinevere Thackeray",
4259
+ email: "guinevere.thackeray47@ironhaven-systems.com",
4260
+ hireDate: "Jan 15, 2025",
4261
+ lastLogin: "5 days ago",
4262
+ userStatus: "active",
4263
+ enrollmentType: "internal",
4264
+ progress: "complete",
4265
+ enrolledDate: "Feb 5, 2025 02:00 PM",
4266
+ completedDate: "Mar 1, 2025 11:00 AM",
4267
+ certificateDate: "Mar 1, 2025",
4268
+ score: 95,
4269
+ requiredCredits: 45,
4270
+ earnedCredits: 48,
4271
+ remainingCredits: 0
4272
+ },
4273
+ {
4274
+ id: 10175,
4275
+ courseId: "701020",
4276
+ courseName: "Practical Guide to Installing and Configuring Access Control Systems for Commercial Security Applications",
4277
+ publisher: "Legrand University",
4278
+ userGroup: "Specifier",
4279
+ userId: "705020",
4280
+ username: "bartholomew.winchester93@millbrook-industrial.net",
4281
+ fullName: "Bartholomew Winchester",
4282
+ email: "bartholomew.winchester93@millbrook-industrial.net",
4283
+ hireDate: "Feb 24, 2025",
4284
+ lastLogin: "3 days ago",
4285
+ userStatus: "active",
4286
+ enrollmentType: "external",
4287
+ progress: "on-schedule",
4288
+ enrolledDate: "Mar 30, 2025 03:00 PM",
4289
+ completedDate: null,
4290
+ certificateDate: null,
4291
+ score: null,
4292
+ requiredCredits: 60,
4293
+ earnedCredits: 30,
4294
+ remainingCredits: 30
3570
4295
  }
3571
4296
  ];
3572
4297
  var CATEGORY_COURSES = {
@@ -3583,30 +4308,67 @@ var CATEGORY_COURSES = {
3583
4308
  "412765",
3584
4309
  "467233"
3585
4310
  ],
3586
- "wiring-devices": ["35697", "43588", "111430", "118402", "163061", "412765"],
4311
+ "wiring-devices": ["35697", "43588", "111430", "118402", "163061", "412765", "701002"],
3587
4312
  "decorator-series": ["163061"],
3588
4313
  connectivity: ["223929", "230765", "467233"],
3589
4314
  // Audio/Visual includes all child category courses
3590
- "audio-visual": ["230818", "331980", "341235", "392536", "428390"],
3591
- "commercial-av": ["392536", "428390"],
3592
- "residential-av": ["331980", "341235"],
4315
+ "audio-visual": ["230818", "331980", "341235", "392536", "428390", "701011"],
4316
+ "commercial-av": ["392536", "428390", "701009", "701020"],
4317
+ "residential-av": ["331980", "341235", "701011"],
3593
4318
  // Networking includes all child category courses
3594
- networking: ["230765", "309214", "467233"],
3595
- "structured-cabling": ["230818", "309214"],
4319
+ networking: ["230765", "309214", "467233", "701005", "701009", "701018"],
4320
+ "structured-cabling": ["230818", "309214", "701005", "701011", "701018"],
3596
4321
  // Contractor Training
3597
- "contractor-training": ["142859"],
4322
+ "contractor-training": ["142859", "701004", "701007", "701016", "701019"],
3598
4323
  "field-technicians": ["142859"],
3599
4324
  // CET (courses with continuing education credits)
3600
- cet: ["163061", "230765", "230818", "412765", "467233"]
4325
+ cet: ["163061", "230765", "230818", "412765", "467233"],
4326
+ // Skill/topic tags — a course can carry several of these at once, on top
4327
+ // of (or instead of) a product-line placement above.
4328
+ "advanced-wiring-techniques": ["701001", "701006", "701011", "701014"],
4329
+ "essential-electrical-skills": [
4330
+ "701001",
4331
+ "701002",
4332
+ "701004",
4333
+ "701010",
4334
+ "701012",
4335
+ "701016",
4336
+ "701019"
4337
+ ],
4338
+ "circuit-analysis-basics": ["701001", "701003", "701012", "701013", "701017"],
4339
+ "energy-efficiency-solutions": ["701001", "701003", "701006", "701008", "701014"],
4340
+ "smart-lighting-strategies": ["701001", "701014"],
4341
+ "safety-compliance-guidelines": [
4342
+ "701001",
4343
+ "701002",
4344
+ "701004",
4345
+ "701007",
4346
+ "701008",
4347
+ "701010",
4348
+ "701012",
4349
+ "701015",
4350
+ "701019"
4351
+ ],
4352
+ "lightning-protection-measures": ["701001", "701015"],
4353
+ "practical-skills-enhancement": [
4354
+ "701001",
4355
+ "701002",
4356
+ "701005",
4357
+ "701013",
4358
+ "701016",
4359
+ "701018",
4360
+ "701020"
4361
+ ],
4362
+ "renewable-energy-systems": ["701006", "701008"],
4363
+ "industrial-automation": ["701003", "701009", "701013", "701017", "701020"],
4364
+ "fire-life-safety": ["701007"],
4365
+ "power-quality-management": ["701010", "701015", "701017"]
3601
4366
  };
3602
4367
  function getCategoryForCourse(courseId) {
3603
- let best = null;
3604
- for (const opt of CATEGORY_OPTIONS) {
3605
- if ((CATEGORY_COURSES[opt.value] ?? []).includes(courseId)) {
3606
- if (!best || (opt.depth ?? 0) > (best.depth ?? 0)) best = opt;
3607
- }
3608
- }
3609
- return (best == null ? void 0 : best.label) ?? "\u2014";
4368
+ const labels = CATEGORY_OPTIONS.filter(
4369
+ (opt) => (CATEGORY_COURSES[opt.value] ?? []).includes(courseId)
4370
+ ).map((opt) => opt.label);
4371
+ return labels.length > 0 ? labels.join(" \xB7 ") : "\u2014";
3610
4372
  }
3611
4373
  var GROUP_USERS = {
3612
4374
  ungrouped: ["1405823"],
@@ -3682,7 +4444,6 @@ export {
3682
4444
  CATEGORY_COURSES,
3683
4445
  CATEGORY_OPTIONS,
3684
4446
  COURSE_OPTIONS,
3685
- COURSE_SEAT_TIMES,
3686
4447
  ENROLLMENTS,
3687
4448
  ENROLLMENT_TYPE_BADGE,
3688
4449
  GROUP_OPTIONS,