@hed-hog/operations 0.0.303 → 0.0.304
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.
- package/README.md +200 -43
- package/dist/controllers/operations-approvals.controller.d.ts +9 -0
- package/dist/controllers/operations-approvals.controller.d.ts.map +1 -0
- package/dist/controllers/operations-approvals.controller.js +64 -0
- package/dist/controllers/operations-approvals.controller.js.map +1 -0
- package/dist/controllers/operations-collaborators.controller.d.ts +223 -0
- package/dist/controllers/operations-collaborators.controller.d.ts.map +1 -0
- package/dist/controllers/operations-collaborators.controller.js +96 -0
- package/dist/controllers/operations-collaborators.controller.js.map +1 -0
- package/dist/controllers/operations-contracts.controller.d.ts +683 -0
- package/dist/controllers/operations-contracts.controller.d.ts.map +1 -0
- package/dist/controllers/operations-contracts.controller.js +198 -0
- package/dist/controllers/operations-contracts.controller.js.map +1 -0
- package/dist/controllers/operations-org-structure.controller.d.ts +108 -0
- package/dist/controllers/operations-org-structure.controller.d.ts.map +1 -0
- package/dist/controllers/operations-org-structure.controller.js +143 -0
- package/dist/controllers/operations-org-structure.controller.js.map +1 -0
- package/dist/controllers/operations-projects.controller.d.ts +169 -0
- package/dist/controllers/operations-projects.controller.d.ts.map +1 -0
- package/dist/controllers/operations-projects.controller.js +87 -0
- package/dist/controllers/operations-projects.controller.js.map +1 -0
- package/dist/controllers/operations-tasks.controller.d.ts +54 -0
- package/dist/controllers/operations-tasks.controller.d.ts.map +1 -0
- package/dist/controllers/operations-tasks.controller.js +79 -0
- package/dist/controllers/operations-tasks.controller.js.map +1 -0
- package/dist/controllers/operations-timesheets.controller.d.ts +99 -0
- package/dist/controllers/operations-timesheets.controller.d.ts.map +1 -0
- package/dist/controllers/operations-timesheets.controller.js +154 -0
- package/dist/controllers/operations-timesheets.controller.js.map +1 -0
- package/dist/dto/create-collaborator-type.dto.d.ts +10 -0
- package/dist/dto/create-collaborator-type.dto.d.ts.map +1 -0
- package/dist/dto/create-collaborator-type.dto.js +56 -0
- package/dist/dto/create-collaborator-type.dto.js.map +1 -0
- package/dist/dto/create-collaborator.dto.d.ts +42 -0
- package/dist/dto/create-collaborator.dto.d.ts.map +1 -0
- package/dist/dto/create-collaborator.dto.js +228 -0
- package/dist/dto/create-collaborator.dto.js.map +1 -0
- package/dist/dto/create-schedule-adjustment-request.dto.d.ts +17 -0
- package/dist/dto/create-schedule-adjustment-request.dto.d.ts.map +1 -0
- package/dist/dto/create-schedule-adjustment-request.dto.js +89 -0
- package/dist/dto/create-schedule-adjustment-request.dto.js.map +1 -0
- package/dist/dto/create-task.dto.d.ts +8 -0
- package/dist/dto/create-task.dto.d.ts.map +1 -0
- package/dist/dto/create-task.dto.js +50 -0
- package/dist/dto/create-task.dto.js.map +1 -0
- package/dist/dto/create-time-off-request.dto.d.ts +9 -0
- package/dist/dto/create-time-off-request.dto.d.ts.map +1 -0
- package/dist/dto/create-time-off-request.dto.js +54 -0
- package/dist/dto/create-time-off-request.dto.js.map +1 -0
- package/dist/dto/create-timesheet-entry.dto.d.ts +12 -0
- package/dist/dto/create-timesheet-entry.dto.d.ts.map +1 -0
- package/dist/dto/create-timesheet-entry.dto.js +75 -0
- package/dist/dto/create-timesheet-entry.dto.js.map +1 -0
- package/dist/dto/list-collaborator-types.dto.d.ts +4 -0
- package/dist/dto/list-collaborator-types.dto.d.ts.map +1 -0
- package/dist/dto/list-collaborator-types.dto.js +29 -0
- package/dist/dto/list-collaborator-types.dto.js.map +1 -0
- package/dist/dto/list-collaborators.dto.d.ts +8 -0
- package/dist/dto/list-collaborators.dto.d.ts.map +1 -0
- package/dist/dto/list-collaborators.dto.js +42 -0
- package/dist/dto/list-collaborators.dto.js.map +1 -0
- package/dist/dto/list-project-options.dto.d.ts +4 -0
- package/dist/dto/list-project-options.dto.d.ts.map +1 -0
- package/dist/dto/list-project-options.dto.js +8 -0
- package/dist/dto/list-project-options.dto.js.map +1 -0
- package/dist/dto/list-tasks.dto.d.ts +7 -0
- package/dist/dto/list-tasks.dto.d.ts.map +1 -0
- package/dist/dto/list-tasks.dto.js +38 -0
- package/dist/dto/list-tasks.dto.js.map +1 -0
- package/dist/dto/list-timesheet-entries.dto.d.ts +10 -0
- package/dist/dto/list-timesheet-entries.dto.d.ts.map +1 -0
- package/dist/dto/list-timesheet-entries.dto.js +54 -0
- package/dist/dto/list-timesheet-entries.dto.js.map +1 -0
- package/dist/dto/update-collaborator-type.dto.d.ts +4 -0
- package/dist/dto/update-collaborator-type.dto.d.ts.map +1 -0
- package/dist/dto/update-collaborator-type.dto.js +8 -0
- package/dist/dto/update-collaborator-type.dto.js.map +1 -0
- package/dist/dto/update-collaborator.dto.d.ts +4 -0
- package/dist/dto/update-collaborator.dto.d.ts.map +1 -0
- package/dist/dto/update-collaborator.dto.js +8 -0
- package/dist/dto/update-collaborator.dto.js.map +1 -0
- package/dist/dto/update-task.dto.d.ts +8 -0
- package/dist/dto/update-task.dto.d.ts.map +1 -0
- package/dist/dto/update-task.dto.js +51 -0
- package/dist/dto/update-task.dto.js.map +1 -0
- package/dist/operations.controller.d.ts +0 -1045
- package/dist/operations.controller.d.ts.map +1 -1
- package/dist/operations.controller.js +0 -429
- package/dist/operations.controller.js.map +1 -1
- package/dist/operations.module.d.ts.map +1 -1
- package/dist/operations.module.js +23 -2
- package/dist/operations.module.js.map +1 -1
- package/dist/operations.service.d.ts +373 -8
- package/dist/operations.service.d.ts.map +1 -1
- package/dist/operations.service.js +1598 -111
- package/dist/operations.service.js.map +1 -1
- package/dist/operations.service.spec.js +315 -1
- package/dist/operations.service.spec.js.map +1 -1
- package/dist/services/shared/operations-access.service.d.ts +16 -0
- package/dist/services/shared/operations-access.service.d.ts.map +1 -0
- package/dist/services/shared/operations-access.service.js +48 -0
- package/dist/services/shared/operations-access.service.js.map +1 -0
- package/hedhog/data/dashboard.yaml +20 -0
- package/hedhog/data/dashboard_component.yaml +274 -0
- package/hedhog/data/dashboard_component_role.yaml +174 -0
- package/hedhog/data/dashboard_item.yaml +299 -0
- package/hedhog/data/dashboard_role.yaml +20 -0
- package/hedhog/data/menu.yaml +30 -13
- package/hedhog/data/operations_collaborator_type.yaml +76 -0
- package/hedhog/data/route.yaml +183 -0
- package/hedhog/frontend/app/_components/async-options-combobox.tsx.ejs +231 -0
- package/hedhog/frontend/app/_components/collaborator-details-screen.tsx.ejs +134 -49
- package/hedhog/frontend/app/_components/collaborator-form-screen.tsx.ejs +772 -93
- package/hedhog/frontend/app/_components/department-select-with-create.tsx.ejs +38 -16
- package/hedhog/frontend/app/_components/project-form-screen.tsx.ejs +875 -632
- package/hedhog/frontend/app/_components/timesheet-task-create-sheet.tsx.ejs +213 -0
- package/hedhog/frontend/app/_lib/api.ts.ejs +30 -1
- package/hedhog/frontend/app/_lib/types.ts.ejs +142 -39
- package/hedhog/frontend/app/_lib/utils/format.ts.ejs +33 -2
- package/hedhog/frontend/app/approvals/page.tsx.ejs +116 -98
- package/hedhog/frontend/app/collaborator-types/page.tsx.ejs +502 -0
- package/hedhog/frontend/app/collaborators/page.tsx.ejs +109 -68
- package/hedhog/frontend/app/contracts/templates/page.tsx.ejs +11 -9
- package/hedhog/frontend/app/departments/page.tsx.ejs +1 -1
- package/hedhog/frontend/app/projects/page.tsx.ejs +5 -1
- package/hedhog/frontend/app/schedule-adjustments/page.tsx.ejs +244 -120
- package/hedhog/frontend/app/team/page.tsx.ejs +15 -2
- package/hedhog/frontend/app/time-off/page.tsx.ejs +158 -82
- package/hedhog/frontend/app/timesheets/page.tsx.ejs +814 -357
- package/hedhog/frontend/messages/en.json +243 -51
- package/hedhog/frontend/messages/pt.json +458 -268
- package/hedhog/table/operations_collaborator.yaml +26 -13
- package/hedhog/table/operations_collaborator_equity_participation.yaml +43 -0
- package/hedhog/table/operations_collaborator_type.yaml +33 -0
- package/hedhog/table/operations_job_title.yaml +24 -0
- package/hedhog/table/operations_project_assignment.yaml +9 -0
- package/hedhog/table/operations_project_role.yaml +39 -0
- package/hedhog/table/operations_task.yaml +30 -0
- package/hedhog/table/operations_timesheet_entry.yaml +12 -0
- package/package.json +6 -6
- package/src/controllers/operations-approvals.controller.ts +24 -0
- package/src/controllers/operations-collaborators.controller.ts +60 -0
- package/src/controllers/operations-contracts.controller.ts +138 -0
- package/src/controllers/operations-org-structure.controller.ts +92 -0
- package/src/controllers/operations-projects.controller.ts +50 -0
- package/src/controllers/operations-tasks.controller.ts +52 -0
- package/src/controllers/operations-timesheets.controller.ts +100 -0
- package/src/dto/create-collaborator-type.dto.ts +43 -0
- package/src/dto/create-collaborator.dto.ts +223 -0
- package/src/dto/create-schedule-adjustment-request.dto.ts +91 -0
- package/src/dto/create-task.dto.ts +35 -0
- package/src/dto/create-time-off-request.dto.ts +53 -0
- package/src/dto/create-timesheet-entry.dto.ts +67 -0
- package/src/dto/list-collaborator-types.dto.ts +15 -0
- package/src/dto/list-collaborators.dto.ts +30 -0
- package/src/dto/list-project-options.dto.ts +3 -0
- package/src/dto/list-tasks.dto.ts +25 -0
- package/src/dto/list-timesheet-entries.dto.ts +40 -0
- package/src/dto/update-collaborator-type.dto.ts +3 -0
- package/src/dto/update-collaborator.dto.ts +3 -0
- package/src/dto/update-task.dto.ts +36 -0
- package/src/operations.controller.ts +1 -278
- package/src/operations.module.ts +23 -2
- package/src/operations.service.spec.ts +450 -0
- package/src/operations.service.ts +4641 -2163
- package/src/services/shared/operations-access.service.ts +52 -0
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"activate": "Activate",
|
|
10
10
|
"deactivate": "Deactivate",
|
|
11
11
|
"save": "Save",
|
|
12
|
+
"delete": "Delete",
|
|
12
13
|
"addLine": "Add line",
|
|
13
14
|
"approve": "Approve",
|
|
14
15
|
"reject": "Reject",
|
|
@@ -16,6 +17,7 @@
|
|
|
16
17
|
"loadMore": "Load more",
|
|
17
18
|
"clearSelection": "Clear selection",
|
|
18
19
|
"manageDepartments": "Manage departments",
|
|
20
|
+
"manageCollaboratorTypes": "Manage relationship types",
|
|
19
21
|
"manageTemplates": "Manage templates",
|
|
20
22
|
"useTemplate": "Use template"
|
|
21
23
|
},
|
|
@@ -27,7 +29,7 @@
|
|
|
27
29
|
"notAvailable": "Not available",
|
|
28
30
|
"notAssigned": "Not assigned",
|
|
29
31
|
"collaborator": "Collaborator",
|
|
30
|
-
"collaboratorType": "
|
|
32
|
+
"collaboratorType": "Relationship type",
|
|
31
33
|
"department": "Department",
|
|
32
34
|
"supervisor": "Supervisor",
|
|
33
35
|
"weeklyCapacity": "Weekly capacity",
|
|
@@ -52,6 +54,7 @@
|
|
|
52
54
|
"totalHours": "Total hours",
|
|
53
55
|
"approver": "Approver",
|
|
54
56
|
"noNotes": "No notes",
|
|
57
|
+
"decisionNote": "Decision note",
|
|
55
58
|
"lines": "lines",
|
|
56
59
|
"unassigned": "Unassigned",
|
|
57
60
|
"viewOnly": "View only",
|
|
@@ -84,7 +87,9 @@
|
|
|
84
87
|
"role": "Role",
|
|
85
88
|
"total": "Total",
|
|
86
89
|
"pending": "Pending",
|
|
87
|
-
"approved": "Approved"
|
|
90
|
+
"approved": "Approved",
|
|
91
|
+
"equityParticipation": "Equity participation",
|
|
92
|
+
"votingPower": "Voting power"
|
|
88
93
|
},
|
|
89
94
|
"states": {
|
|
90
95
|
"emptyTitle": "No records found",
|
|
@@ -153,9 +158,13 @@
|
|
|
153
158
|
"viewModeCards": "Grid",
|
|
154
159
|
"cards": {
|
|
155
160
|
"total": "Total collaborators",
|
|
156
|
-
"
|
|
161
|
+
"totalDescription": "All operational collaborators registered in the system.",
|
|
162
|
+
"active": "Active",
|
|
163
|
+
"activeDescription": "Currently working with an active operational status.",
|
|
157
164
|
"onLeave": "On leave",
|
|
158
|
-
"
|
|
165
|
+
"onLeaveDescription": "Temporarily away — included in capacity but not deployable.",
|
|
166
|
+
"withContracts": "With contract",
|
|
167
|
+
"withContractsDescription": "Collaborators linked to at least one contract."
|
|
159
168
|
},
|
|
160
169
|
"sheet": {
|
|
161
170
|
"createTitle": "Create collaborator",
|
|
@@ -235,8 +244,10 @@
|
|
|
235
244
|
"sections": {
|
|
236
245
|
"basicInfo": "Basic info",
|
|
237
246
|
"basicInfoDescription": "Core identity and profile data used across operations.",
|
|
238
|
-
"employmentInfo": "
|
|
239
|
-
"employmentInfoDescription": "Choose the
|
|
247
|
+
"employmentInfo": "Relationship details",
|
|
248
|
+
"employmentInfoDescription": "Choose the nature of the relationship with the company, lifecycle status, and key dates.",
|
|
249
|
+
"equity": "Equity details",
|
|
250
|
+
"equityDescription": "Fill this section only when the selected relationship requires ownership or governance data.",
|
|
240
251
|
"supervisor": "Supervisor assignment",
|
|
241
252
|
"supervisorDescription": "Link the direct supervisor used for team visibility and approvals.",
|
|
242
253
|
"contract": "Compensation and contract draft",
|
|
@@ -248,26 +259,32 @@
|
|
|
248
259
|
"person": "Person",
|
|
249
260
|
"personEntityLabel": "person",
|
|
250
261
|
"personDescription": "Select an existing person or register a new one without leaving this screen.",
|
|
251
|
-
"userId": "
|
|
252
|
-
"userIdOptional": "
|
|
253
|
-
"userIdDescription": "
|
|
262
|
+
"userId": "System user",
|
|
263
|
+
"userIdOptional": "System user (optional)",
|
|
264
|
+
"userIdDescription": "Link the platform account this collaborator will use for sign-in, timesheets, and self-service actions.",
|
|
254
265
|
"code": "Code",
|
|
255
266
|
"displayName": "Display name",
|
|
256
267
|
"department": "Department",
|
|
257
268
|
"departmentDescription": "Select an existing department or create a new one for this collaborator.",
|
|
258
269
|
"title": "Role / position",
|
|
270
|
+
"titleDescription": "Select an existing role or create a new one to reuse across collaborators.",
|
|
259
271
|
"levelLabel": "Level",
|
|
260
272
|
"notes": "Notes",
|
|
261
|
-
"collaboratorType": "
|
|
273
|
+
"collaboratorType": "Relationship type",
|
|
274
|
+
"collaboratorTypeDescription": "Select the nature of the relationship with the company. Role and equity participation stay separate.",
|
|
262
275
|
"weeklyCapacityHours": "Weekly workload",
|
|
263
276
|
"compensationAmount": "Compensation amount",
|
|
264
277
|
"contractDescription": "Contract draft notes",
|
|
278
|
+
"equityParticipationType": "Participation type",
|
|
279
|
+
"equityPercentage": "Ownership percentage",
|
|
280
|
+
"votingPower": "Voting power (%)",
|
|
281
|
+
"equityNotes": "Equity notes",
|
|
265
282
|
"startTime": "Start",
|
|
266
283
|
"endTime": "End",
|
|
267
284
|
"breakMinutes": "Break (min)",
|
|
268
285
|
"breakMinutesDescription": "The last numeric field defines the daily break in minutes. Example: 60 = a 1-hour lunch break.",
|
|
269
286
|
"autoGenerateContractDraft": "Generate contract draft automatically",
|
|
270
|
-
"autoGenerateContractDraftDescription": "Creates a related draft contract classified from the
|
|
287
|
+
"autoGenerateContractDraftDescription": "Creates a related draft contract classified from the relationship type and linked to the hiring origin."
|
|
271
288
|
},
|
|
272
289
|
"options": {
|
|
273
290
|
"collaboratorTypes": {
|
|
@@ -277,6 +294,20 @@
|
|
|
277
294
|
"intern": "Intern",
|
|
278
295
|
"other": "Other"
|
|
279
296
|
},
|
|
297
|
+
"levels": {
|
|
298
|
+
"junior": "Junior",
|
|
299
|
+
"mid": "Mid-level",
|
|
300
|
+
"senior": "Senior",
|
|
301
|
+
"coordinator": "Coordinator",
|
|
302
|
+
"manager": "Manager"
|
|
303
|
+
},
|
|
304
|
+
"equityParticipationTypes": {
|
|
305
|
+
"partner_quota_holder": "Quota holder partner",
|
|
306
|
+
"common_shareholder": "Common shareholder",
|
|
307
|
+
"preferred_shareholder": "Preferred shareholder",
|
|
308
|
+
"administrator": "Administrator",
|
|
309
|
+
"other": "Other"
|
|
310
|
+
},
|
|
280
311
|
"statuses": {
|
|
281
312
|
"active": "Active",
|
|
282
313
|
"on_leave": "On Leave",
|
|
@@ -288,12 +319,23 @@
|
|
|
288
319
|
"person": "Select or create a person",
|
|
289
320
|
"department": "Select or create a department",
|
|
290
321
|
"departmentCreate": "Department name",
|
|
322
|
+
"title": "Select or create a role / position",
|
|
323
|
+
"titleCreate": "Role / position name",
|
|
324
|
+
"collaboratorType": "Select the relationship type",
|
|
325
|
+
"equityPercentage": "Ex.: 25",
|
|
326
|
+
"votingPower": "Ex.: 50",
|
|
327
|
+
"equityNotes": "Notes about quotas, shares, term, or powers",
|
|
328
|
+
"levelLabel": "Select a level",
|
|
291
329
|
"supervisor": "Search a collaborator",
|
|
292
|
-
"userIdOptional": "
|
|
330
|
+
"userIdOptional": "Select a system user"
|
|
331
|
+
},
|
|
332
|
+
"states": {
|
|
333
|
+
"loadingCollaboratorTypes": "Loading relationship types..."
|
|
293
334
|
},
|
|
294
335
|
"messages": {
|
|
295
336
|
"userRequired": "The user binding can be completed after the initial collaborator setup.",
|
|
296
337
|
"personRequired": "Select or create a person for the collaborator.",
|
|
338
|
+
"collaboratorTypeRequired": "Select a relationship type.",
|
|
297
339
|
"requiredFields": "The collaborator code is required.",
|
|
298
340
|
"createSuccess": "Collaborator created successfully.",
|
|
299
341
|
"createError": "Unable to create the collaborator.",
|
|
@@ -301,6 +343,48 @@
|
|
|
301
343
|
"updateError": "Unable to update the collaborator."
|
|
302
344
|
}
|
|
303
345
|
},
|
|
346
|
+
"CollaboratorTypesPage": {
|
|
347
|
+
"title": "Relationship Types",
|
|
348
|
+
"description": "Manage the relationship catalog used by collaborator records and operational rules.",
|
|
349
|
+
"breadcrumb": "Relationship Types",
|
|
350
|
+
"searchPlaceholder": "Search relationship type, slug, category, or description...",
|
|
351
|
+
"emptyDescription": "No relationship types match the current filters.",
|
|
352
|
+
"noAccessDescription": "Director permissions are required to manage relationship types.",
|
|
353
|
+
"cards": {
|
|
354
|
+
"total": "Total types",
|
|
355
|
+
"active": "Active types",
|
|
356
|
+
"linkedCollaborators": "Linked collaborators",
|
|
357
|
+
"inactive": "Inactive types"
|
|
358
|
+
},
|
|
359
|
+
"columns": {
|
|
360
|
+
"name": "Name",
|
|
361
|
+
"slug": "Slug",
|
|
362
|
+
"category": "Category",
|
|
363
|
+
"description": "Description",
|
|
364
|
+
"sortOrder": "Order",
|
|
365
|
+
"collaborators": "Collaborators"
|
|
366
|
+
},
|
|
367
|
+
"sheet": {
|
|
368
|
+
"createTitle": "Create relationship type",
|
|
369
|
+
"editTitle": "Edit relationship type",
|
|
370
|
+
"description": "Keep the relationship catalog organized for collaborator records and operational rules."
|
|
371
|
+
},
|
|
372
|
+
"form": {
|
|
373
|
+
"name": "Name",
|
|
374
|
+
"slug": "Slug",
|
|
375
|
+
"category": "Category",
|
|
376
|
+
"description": "Description",
|
|
377
|
+
"sortOrder": "Display order",
|
|
378
|
+
"status": "Status"
|
|
379
|
+
},
|
|
380
|
+
"messages": {
|
|
381
|
+
"requiredFields": "Relationship type name is required.",
|
|
382
|
+
"saveSuccess": "Relationship type saved successfully.",
|
|
383
|
+
"saveError": "Unable to save the relationship type.",
|
|
384
|
+
"statusSuccess": "Relationship type status updated successfully.",
|
|
385
|
+
"statusError": "Unable to update the relationship type status."
|
|
386
|
+
}
|
|
387
|
+
},
|
|
304
388
|
"CollaboratorDetailsPage": {
|
|
305
389
|
"title": "Collaborator Details",
|
|
306
390
|
"breadcrumb": "Collaborator Details",
|
|
@@ -340,9 +424,13 @@
|
|
|
340
424
|
"emptyDescription": "No projects match the current filters.",
|
|
341
425
|
"cards": {
|
|
342
426
|
"total": "Projects",
|
|
427
|
+
"totalDescription": "All delivery projects visible to your access scope.",
|
|
343
428
|
"active": "Active",
|
|
429
|
+
"activeDescription": "Open for timesheet entries and ongoing team work.",
|
|
344
430
|
"atRisk": "At risk",
|
|
345
|
-
"
|
|
431
|
+
"atRiskDescription": "Flagged for delivery, staffing, or budget issues.",
|
|
432
|
+
"upcomingDeliveries": "With deadline",
|
|
433
|
+
"upcomingDeliveriesDescription": "Projects that have an end date defined."
|
|
346
434
|
},
|
|
347
435
|
"actions": {
|
|
348
436
|
"archive": "Archive"
|
|
@@ -371,20 +459,24 @@
|
|
|
371
459
|
"newTitle": "New Project",
|
|
372
460
|
"editTitle": "Edit Project",
|
|
373
461
|
"breadcrumb": "Project Form",
|
|
374
|
-
"description": "
|
|
462
|
+
"description": "Create the project with the essential client and delivery info first. Staffing, contracts, and controls can be completed after saving.",
|
|
375
463
|
"noAccessDescription": "Director permissions are required to manage projects.",
|
|
376
464
|
"loading": "Loading project data...",
|
|
377
465
|
"sections": {
|
|
378
466
|
"basicInfo": "Basic project info",
|
|
379
467
|
"basicInfoDescription": "Define the client-facing engagement and operational summary.",
|
|
468
|
+
"basicInfoCreateDescription": "Start with the essentials needed to open the project and continue setup after saving.",
|
|
380
469
|
"governance": "Responsible and dates",
|
|
381
470
|
"governanceDescription": "Set the project owner, lifecycle status, and date range.",
|
|
471
|
+
"governanceCreateDescription": "Optionally assign the manager and the start date now. Progress and lifecycle controls can be refined later.",
|
|
382
472
|
"team": "Team assignment",
|
|
383
|
-
"teamDescription": "{count} collaborators selected for the initial team.",
|
|
473
|
+
"teamDescription": "{count} collaborators selected for the initial team. You can refine assignments after saving.",
|
|
384
474
|
"financials": "Financial and contract basis",
|
|
385
|
-
"financialsDescription": "
|
|
475
|
+
"financialsDescription": "Financial, billing, and contract settings can be completed after the project is saved.",
|
|
386
476
|
"contract": "Contract generation settings",
|
|
387
|
-
"contractDescription": "
|
|
477
|
+
"contractDescription": "Link an existing contract or configure draft generation after the initial project save.",
|
|
478
|
+
"nextSteps": "Continue after saving",
|
|
479
|
+
"nextStepsDescription": "Once the project is created, you can add the team, connect a contract or template, and track detailed delivery controls from the project screen."
|
|
388
480
|
},
|
|
389
481
|
"fields": {
|
|
390
482
|
"code": "Project code",
|
|
@@ -424,7 +516,7 @@
|
|
|
424
516
|
"placeholders": {
|
|
425
517
|
"code": "Ex: PRJ-2026-001",
|
|
426
518
|
"name": "Enter the project name",
|
|
427
|
-
"clientName": "
|
|
519
|
+
"clientName": "Select or create the client company/account",
|
|
428
520
|
"summary": "Describe scope, goals, and relevant delivery context",
|
|
429
521
|
"progressPercent": "0 to 100",
|
|
430
522
|
"managerSearch": "Search manager...",
|
|
@@ -458,7 +550,8 @@
|
|
|
458
550
|
}
|
|
459
551
|
},
|
|
460
552
|
"messages": {
|
|
461
|
-
"requiredFields": "
|
|
553
|
+
"requiredFields": "Only the project code, name, and client name are required to create the project.",
|
|
554
|
+
"roleRequired": "Select or type a role for each assigned collaborator.",
|
|
462
555
|
"createSuccess": "Project created successfully.",
|
|
463
556
|
"createError": "Unable to create the project.",
|
|
464
557
|
"updateSuccess": "Project updated successfully.",
|
|
@@ -922,33 +1015,93 @@
|
|
|
922
1015
|
},
|
|
923
1016
|
"TimesheetsPage": {
|
|
924
1017
|
"title": "Timesheets",
|
|
925
|
-
"description": "
|
|
1018
|
+
"description": "Log project work in seconds, keep weekly drafts organized, and submit them when ready.",
|
|
926
1019
|
"breadcrumb": "Timesheets",
|
|
927
|
-
"searchPlaceholder": "Search collaborator, project, approver, or notes...",
|
|
928
|
-
"emptyDescription": "No timesheets
|
|
1020
|
+
"searchPlaceholder": "Search collaborator, project, task, approver, or notes...",
|
|
1021
|
+
"emptyDescription": "No timesheets match the current filters.",
|
|
929
1022
|
"sheet": {
|
|
930
|
-
"createTitle": "
|
|
931
|
-
"editTitle": "Edit
|
|
932
|
-
"description": "
|
|
1023
|
+
"createTitle": "Quick entry",
|
|
1024
|
+
"editTitle": "Edit entry",
|
|
1025
|
+
"description": "Choose the project, task, date, and duration to log work with minimal friction.",
|
|
1026
|
+
"fields": {
|
|
1027
|
+
"project": "Project",
|
|
1028
|
+
"task": "Task",
|
|
1029
|
+
"duration": "Duration",
|
|
1030
|
+
"unit": "Unit",
|
|
1031
|
+
"hours": "Hours",
|
|
1032
|
+
"minutes": "Minutes"
|
|
1033
|
+
},
|
|
1034
|
+
"placeholders": {
|
|
1035
|
+
"project": "Search by project or client...",
|
|
1036
|
+
"projectSearch": "Type to search projects...",
|
|
1037
|
+
"task": "Search or select a task",
|
|
1038
|
+
"taskSearch": "Type to search tasks...",
|
|
1039
|
+
"duration": "Example: 1.5",
|
|
1040
|
+
"description": "Optional context for this work log"
|
|
1041
|
+
},
|
|
1042
|
+
"helper": {
|
|
1043
|
+
"task": "Only tasks from the selected project assignment appear here.",
|
|
1044
|
+
"selectProjectFirst": "Select a project first to load or create tasks.",
|
|
1045
|
+
"keepContext": "Keep project, task, and date after saving",
|
|
1046
|
+
"keepContextDescription": "Best for logging several entries in sequence."
|
|
1047
|
+
},
|
|
1048
|
+
"validation": {
|
|
1049
|
+
"descriptionMaxLength": "The description can have at most 500 characters."
|
|
1050
|
+
},
|
|
1051
|
+
"task": {
|
|
1052
|
+
"title": "Quick task",
|
|
1053
|
+
"description": "Create a task for the current project assignment without leaving the timesheet flow.",
|
|
1054
|
+
"projectLabel": "Selected project",
|
|
1055
|
+
"name": "Task name",
|
|
1056
|
+
"descriptionLabel": "Task description",
|
|
1057
|
+
"createAction": "New task",
|
|
1058
|
+
"submit": "Create task",
|
|
1059
|
+
"placeholders": {
|
|
1060
|
+
"name": "Example: Client review, bug fix, deployment",
|
|
1061
|
+
"description": "Optional details about this task"
|
|
1062
|
+
},
|
|
1063
|
+
"validation": {
|
|
1064
|
+
"nameMinLength": "Enter at least 2 characters for the task name.",
|
|
1065
|
+
"descriptionMaxLength": "The task description can have at most 500 characters."
|
|
1066
|
+
}
|
|
1067
|
+
}
|
|
933
1068
|
},
|
|
934
1069
|
"entries": {
|
|
935
|
-
"title": "
|
|
936
|
-
"description": "Attach work
|
|
1070
|
+
"title": "Entry details",
|
|
1071
|
+
"description": "Attach each work log to an active project assignment while keeping the description optional.",
|
|
937
1072
|
"projectHint": "Projects with active assignments appear here automatically.",
|
|
938
1073
|
"activityPlaceholder": "Example: Standup, implementation, QA, client sync"
|
|
939
1074
|
},
|
|
1075
|
+
"recentEntries": {
|
|
1076
|
+
"title": "Recent entries",
|
|
1077
|
+
"description": "Your newest work logs appear here right after saving.",
|
|
1078
|
+
"empty": "Your recent entries will appear here.",
|
|
1079
|
+
"loading": "Loading recent entries..."
|
|
1080
|
+
},
|
|
940
1081
|
"cards": {
|
|
941
1082
|
"visible": "Visible timesheets",
|
|
1083
|
+
"visibleDescription": "Weekly records visible to your role scope.",
|
|
942
1084
|
"pending": "Pending review",
|
|
943
|
-
"
|
|
1085
|
+
"pendingDescription": "Submitted and waiting for a supervisor decision.",
|
|
1086
|
+
"hours": "Logged hours",
|
|
1087
|
+
"hoursDescription": "Total work hours across all visible timesheets."
|
|
944
1088
|
},
|
|
945
1089
|
"messages": {
|
|
946
|
-
"requiredFields": "
|
|
947
|
-
"entryValidation": "
|
|
948
|
-
"
|
|
949
|
-
"
|
|
1090
|
+
"requiredFields": "Project, task, date, and duration are required.",
|
|
1091
|
+
"entryValidation": "Enter a valid duration greater than zero.",
|
|
1092
|
+
"selectProjectRequired": "Select a project assignment first.",
|
|
1093
|
+
"selectTaskRequired": "Select or create a task first.",
|
|
1094
|
+
"selectProjectFirst": "Select a project before creating a task.",
|
|
1095
|
+
"saveSuccess": "Entry saved successfully.",
|
|
1096
|
+
"saveError": "Unable to save the entry.",
|
|
1097
|
+
"deleteSuccess": "Entry deleted successfully.",
|
|
1098
|
+
"deleteError": "Unable to delete the entry.",
|
|
1099
|
+
"confirmDeleteTitle": "Delete entry?",
|
|
1100
|
+
"confirmDeleteDescription": "This will remove the entry for \"{name}\" from the current weekly draft.",
|
|
950
1101
|
"submitSuccess": "Timesheet submitted successfully.",
|
|
951
|
-
"submitError": "Unable to submit the timesheet."
|
|
1102
|
+
"submitError": "Unable to submit the timesheet.",
|
|
1103
|
+
"taskCreateSuccess": "Task created successfully.",
|
|
1104
|
+
"taskCreateError": "Unable to create the task."
|
|
952
1105
|
}
|
|
953
1106
|
},
|
|
954
1107
|
"ApprovalsPage": {
|
|
@@ -960,13 +1113,17 @@
|
|
|
960
1113
|
"emptyDescription": "No approvals match the current filters.",
|
|
961
1114
|
"cards": {
|
|
962
1115
|
"pending": "Pending",
|
|
1116
|
+
"pendingDescription": "Submitted requests waiting for a supervisor decision.",
|
|
963
1117
|
"approved": "Approved",
|
|
964
|
-
"
|
|
1118
|
+
"approvedDescription": "Requests that received a positive decision.",
|
|
1119
|
+
"rejected": "Rejected",
|
|
1120
|
+
"rejectedDescription": "Requests that were not approved by the supervisor."
|
|
965
1121
|
},
|
|
966
1122
|
"dialog": {
|
|
967
1123
|
"approveTitle": "Approve request",
|
|
968
1124
|
"rejectTitle": "Reject request",
|
|
969
|
-
"description": "Add an optional note for {requester}'s request: {target}."
|
|
1125
|
+
"description": "Add an optional note for {requester}'s request: {target}.",
|
|
1126
|
+
"notePlaceholder": "e.g. Approved for the requested period. Check your calendar for team coverage."
|
|
970
1127
|
},
|
|
971
1128
|
"options": {
|
|
972
1129
|
"statuses": {
|
|
@@ -1001,18 +1158,24 @@
|
|
|
1001
1158
|
},
|
|
1002
1159
|
"TimeOffPage": {
|
|
1003
1160
|
"title": "Time Off",
|
|
1004
|
-
"description": "
|
|
1161
|
+
"description": "Request vacation or other leave and track what is awaiting review, approved, or not approved.",
|
|
1005
1162
|
"breadcrumb": "Time Off",
|
|
1006
1163
|
"searchPlaceholder": "Search collaborator, approver, reason, or request type...",
|
|
1007
1164
|
"emptyDescription": "No time-off requests match the current filters.",
|
|
1008
1165
|
"sheet": {
|
|
1009
1166
|
"title": "Create time-off request",
|
|
1010
|
-
"description": "
|
|
1167
|
+
"description": "Vacation stays in this same flow. Choose the dates, add context if needed, and your supervisor will review it.",
|
|
1168
|
+
"helperTitle": "Use this same form for vacation",
|
|
1169
|
+
"helperDescription": "Keep vacation, sick leave, personal time, and other absences in one place so the status history stays easy to follow.",
|
|
1170
|
+
"reasonPlaceholder": "Add any context that will help your supervisor review this request."
|
|
1011
1171
|
},
|
|
1012
1172
|
"cards": {
|
|
1013
|
-
"submitted": "
|
|
1173
|
+
"submitted": "Awaiting review",
|
|
1174
|
+
"submittedDescription": "Requests sent and pending a supervisor decision.",
|
|
1014
1175
|
"approved": "Approved requests",
|
|
1015
|
-
"
|
|
1176
|
+
"approvedDescription": "Requests that were approved and counted in capacity.",
|
|
1177
|
+
"days": "Requested days",
|
|
1178
|
+
"daysDescription": "Total calendar days across all submitted requests."
|
|
1016
1179
|
},
|
|
1017
1180
|
"options": {
|
|
1018
1181
|
"requestTypes": {
|
|
@@ -1024,12 +1187,17 @@
|
|
|
1024
1187
|
},
|
|
1025
1188
|
"statuses": {
|
|
1026
1189
|
"draft": "Draft",
|
|
1027
|
-
"submitted": "
|
|
1190
|
+
"submitted": "Awaiting review",
|
|
1028
1191
|
"approved": "Approved",
|
|
1029
|
-
"rejected": "
|
|
1192
|
+
"rejected": "Not approved",
|
|
1030
1193
|
"cancelled": "Cancelled"
|
|
1031
1194
|
}
|
|
1032
1195
|
},
|
|
1196
|
+
"statusHelp": {
|
|
1197
|
+
"submitted": "Waiting for supervisor review.",
|
|
1198
|
+
"approved": "Approved and kept in your history.",
|
|
1199
|
+
"rejected": "Check the manager notes for next steps."
|
|
1200
|
+
},
|
|
1033
1201
|
"messages": {
|
|
1034
1202
|
"requiredFields": "Start date and end date are required.",
|
|
1035
1203
|
"saveSuccess": "Time-off request submitted successfully.",
|
|
@@ -1038,34 +1206,52 @@
|
|
|
1038
1206
|
},
|
|
1039
1207
|
"ScheduleAdjustmentsPage": {
|
|
1040
1208
|
"title": "Schedule Adjustments",
|
|
1041
|
-
"description": "Request temporary or permanent weekly schedule changes.",
|
|
1209
|
+
"description": "Request temporary or permanent weekly schedule changes and compare the current vs requested schedule clearly.",
|
|
1042
1210
|
"breadcrumb": "Schedule Adjustments",
|
|
1043
1211
|
"searchPlaceholder": "Search collaborator, approver, scope, or reason...",
|
|
1044
1212
|
"emptyDescription": "No schedule adjustment requests match the current filters.",
|
|
1045
1213
|
"sheet": {
|
|
1046
1214
|
"title": "Create schedule adjustment",
|
|
1047
|
-
"description": "
|
|
1215
|
+
"description": "Share the days and hours you want to change. Your supervisor will compare this request with your current weekly schedule.",
|
|
1216
|
+
"reasonPlaceholder": "Briefly explain why this schedule change is needed."
|
|
1048
1217
|
},
|
|
1049
1218
|
"cards": {
|
|
1050
|
-
"submitted": "
|
|
1219
|
+
"submitted": "Awaiting review",
|
|
1220
|
+
"submittedDescription": "Adjustment requests sent and waiting for approval.",
|
|
1051
1221
|
"approved": "Approved requests",
|
|
1052
|
-
"
|
|
1222
|
+
"approvedDescription": "Adjustments that were accepted and applied.",
|
|
1223
|
+
"permanent": "Permanent requests",
|
|
1224
|
+
"permanentDescription": "Requests for a lasting schedule change (not just one period)."
|
|
1053
1225
|
},
|
|
1054
1226
|
"options": {
|
|
1055
1227
|
"requestScopes": {
|
|
1056
|
-
"temporary": "Temporary",
|
|
1057
|
-
"permanent": "Permanent"
|
|
1228
|
+
"temporary": "Temporary change",
|
|
1229
|
+
"permanent": "Permanent update"
|
|
1058
1230
|
},
|
|
1059
1231
|
"statuses": {
|
|
1060
1232
|
"draft": "Draft",
|
|
1061
|
-
"submitted": "
|
|
1233
|
+
"submitted": "Awaiting review",
|
|
1062
1234
|
"approved": "Approved",
|
|
1063
|
-
"rejected": "
|
|
1235
|
+
"rejected": "Not approved",
|
|
1064
1236
|
"cancelled": "Cancelled"
|
|
1065
1237
|
}
|
|
1066
1238
|
},
|
|
1067
1239
|
"table": {
|
|
1068
|
-
"currentSchedule": "Current schedule"
|
|
1240
|
+
"currentSchedule": "Current schedule",
|
|
1241
|
+
"requestedSchedule": "Requested schedule"
|
|
1242
|
+
},
|
|
1243
|
+
"scheduleEditor": {
|
|
1244
|
+
"summaryLabel": "Requested weekly summary",
|
|
1245
|
+
"daysPerWeek": "{count} working day(s) selected",
|
|
1246
|
+
"helper": "Turn a day off if you will not work it. Start, end, and break values are only used for enabled working days.",
|
|
1247
|
+
"startTime": "Start",
|
|
1248
|
+
"endTime": "End",
|
|
1249
|
+
"breakMinutes": "Break (min)"
|
|
1250
|
+
},
|
|
1251
|
+
"statusHelp": {
|
|
1252
|
+
"submitted": "Waiting for supervisor review.",
|
|
1253
|
+
"approved": "Approved and kept in your history.",
|
|
1254
|
+
"rejected": "Check the manager notes for next steps."
|
|
1069
1255
|
},
|
|
1070
1256
|
"messages": {
|
|
1071
1257
|
"requiredFields": "An effective start date is required.",
|
|
@@ -1081,11 +1267,17 @@
|
|
|
1081
1267
|
"emptyDescription": "No direct reports are linked to this supervisor yet.",
|
|
1082
1268
|
"cards": {
|
|
1083
1269
|
"members": "Team members",
|
|
1270
|
+
"membersDescription": "Direct reports linked to this supervisor.",
|
|
1084
1271
|
"projects": "Visible projects",
|
|
1272
|
+
"projectsDescription": "Active projects linked to at least one team member.",
|
|
1085
1273
|
"pendingApprovals": "Pending approvals",
|
|
1274
|
+
"pendingApprovalsDescription": "Requests waiting for supervisor action.",
|
|
1086
1275
|
"timeOff": "Time-off queue",
|
|
1276
|
+
"timeOffDescription": "Time-off requests pending review.",
|
|
1087
1277
|
"scheduleAdjustments": "Schedule queue",
|
|
1088
|
-
"
|
|
1278
|
+
"scheduleAdjustmentsDescription": "Schedule change requests pending review.",
|
|
1279
|
+
"timesheets": "Timesheets queue",
|
|
1280
|
+
"timesheetsDescription": "Timesheets submitted and waiting for decision."
|
|
1089
1281
|
},
|
|
1090
1282
|
"sections": {
|
|
1091
1283
|
"requests": "Open requests",
|