@acorex-platform/module-help-desk-client 0.0.54 → 0.0.57

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.
Files changed (16) hide show
  1. package/fesm2022/{acorex-platform-module-help-desk-client-acorex-platform-module-help-desk-client-D7Xp9E-H.mjs → acorex-platform-module-help-desk-client-acorex-platform-module-help-desk-client-B2V-hrLC.mjs} +7 -7
  2. package/fesm2022/{acorex-platform-module-help-desk-client-acorex-platform-module-help-desk-client-D7Xp9E-H.mjs.map → acorex-platform-module-help-desk-client-acorex-platform-module-help-desk-client-B2V-hrLC.mjs.map} +1 -1
  3. package/fesm2022/{acorex-platform-module-help-desk-client-capture-screen.component-0i7GZgF-.mjs → acorex-platform-module-help-desk-client-capture-screen.component-D0U4x3Sr.mjs} +2 -2
  4. package/fesm2022/{acorex-platform-module-help-desk-client-capture-screen.component-0i7GZgF-.mjs.map → acorex-platform-module-help-desk-client-capture-screen.component-D0U4x3Sr.mjs.map} +1 -1
  5. package/fesm2022/{acorex-platform-module-help-desk-client-download-log-file.command-B55_ocKV.mjs → acorex-platform-module-help-desk-client-download-log-file.command-BKJTD_SO.mjs} +2 -2
  6. package/fesm2022/{acorex-platform-module-help-desk-client-download-log-file.command-B55_ocKV.mjs.map → acorex-platform-module-help-desk-client-download-log-file.command-BKJTD_SO.mjs.map} +1 -1
  7. package/fesm2022/{acorex-platform-module-help-desk-client-report-new-issue.component-D9hOZBs2.mjs → acorex-platform-module-help-desk-client-report-new-issue.component-BipXzfKc.mjs} +28 -31
  8. package/fesm2022/acorex-platform-module-help-desk-client-report-new-issue.component-BipXzfKc.mjs.map +1 -0
  9. package/fesm2022/{acorex-platform-module-help-desk-client-show-report-issue.command-CLu9ppK4.mjs → acorex-platform-module-help-desk-client-show-report-issue.command-DbpYb5sE.mjs} +2 -2
  10. package/fesm2022/{acorex-platform-module-help-desk-client-show-report-issue.command-CLu9ppK4.mjs.map → acorex-platform-module-help-desk-client-show-report-issue.command-DbpYb5sE.mjs.map} +1 -1
  11. package/fesm2022/acorex-platform-module-help-desk-client.mjs +1 -1
  12. package/i18n/en-AU/help-desk.json +226 -0
  13. package/i18n/en-US/help-desk.json +226 -0
  14. package/i18n/fa-IR/help-desk.json +226 -0
  15. package/package.json +1 -1
  16. package/fesm2022/acorex-platform-module-help-desk-client-report-new-issue.component-D9hOZBs2.mjs.map +0 -1
@@ -0,0 +1,226 @@
1
+ {
2
+ "module": {
3
+ "title": "میز کمک",
4
+ "description": "مدیریت مسائل میز کمک، انواع مسائل و ارائه منابع پشتیبانی",
5
+ "menus": {
6
+ "root": {
7
+ "title": "میز کمک",
8
+ "description": "دسترسی به تمامی قابلیت‌های میز کمک"
9
+ }
10
+ }
11
+ },
12
+ "reported-issues": {
13
+ "terms": {
14
+ "reported-issue": "مسئله گزارش‌شده",
15
+ "reported-issues": "مسائل گزارش‌شده"
16
+ },
17
+ "states": {
18
+ "new": "جدید",
19
+ "in-progress": "در حال انجام",
20
+ "pending": "در انتظار",
21
+ "resolved": "حل شده",
22
+ "closed": "بسته شده"
23
+ },
24
+ "entities": {
25
+ "reported-issue": {
26
+ "title": "مسئله گزارش‌شده",
27
+ "plural": "مسائل گزارش‌شده"
28
+ }
29
+ },
30
+ "components": {
31
+ "reported-issues-list": {
32
+ "title": "مسائل گزارش‌شده",
33
+ "groups": {
34
+ "main": "اصلی",
35
+ "details": "جزئیات",
36
+ "system": "سیستم",
37
+ "comments": "نظرات"
38
+ },
39
+ "fields": {
40
+ "user": "کاربر",
41
+ "issue-type": "نوع مسئله",
42
+ "priority": "اولویت",
43
+ "title": "عنوان",
44
+ "description": "توضیحات",
45
+ "attachments": "پیوست‌ها",
46
+ "status": "وضعیت",
47
+ "system-info": "اطلاعات سیستم",
48
+ "error-logs": "گزارش خطاها",
49
+ "created-at": "ایجاد شده در"
50
+ }
51
+ }
52
+ },
53
+ "actions": {
54
+ "download-log": {
55
+ "title": "دانلود گزارش"
56
+ }
57
+ },
58
+ "menus": {
59
+ "reported-issues": {
60
+ "title": "مسائل گزارش‌شده",
61
+ "description": "مدیریت تمام مسائل گزارش‌شده"
62
+ }
63
+ },
64
+ "permissions": {
65
+ "reported-issues": {
66
+ "title": "مسائل گزارش‌شده",
67
+ "actions": {
68
+ "manage": {
69
+ "title": "مدیریت مسائل گزارش‌شده",
70
+ "description": "دسترسی کامل به مدیریت مسائل گزارش‌شده"
71
+ },
72
+ "view": {
73
+ "title": "مشاهده مسائل گزارش‌شده",
74
+ "description": "مشاهده اطلاعات مسائل گزارش‌شده"
75
+ },
76
+ "create": {
77
+ "title": "ایجاد مسئله گزارش‌شده",
78
+ "description": "ایجاد مسائل گزارش‌شده جدید"
79
+ },
80
+ "edit": {
81
+ "title": "ویرایش مسئله گزارش‌شده",
82
+ "description": "ویرایش اطلاعات مسائل گزارش‌شده"
83
+ },
84
+ "delete": {
85
+ "title": "حذف مسائل گزارش‌شده",
86
+ "description": "حذف مسائل گزارش‌شده"
87
+ }
88
+ }
89
+ }
90
+ }
91
+ },
92
+ "issue-types": {
93
+ "terms": {
94
+ "issue-type": "نوع مسئله",
95
+ "issue-types": "انواع مسئله"
96
+ },
97
+ "entities": {
98
+ "issue-type": {
99
+ "title": "نوع مسئله",
100
+ "plural": "انواع مسئله",
101
+ "fields": {
102
+ "title": "عنوان",
103
+ "description": "توضیحات"
104
+ },
105
+ "groups": {
106
+ "main": "اصلی"
107
+ }
108
+ }
109
+ },
110
+ "menus": {
111
+ "issue-types": {
112
+ "title": "انواع مسئله",
113
+ "description": "مدیریت انواع مسئله"
114
+ }
115
+ }
116
+ },
117
+ "my-reported-issues": {
118
+ "terms": {
119
+ "my-reported-issue": "مسئله گزارش‌شده من",
120
+ "my-reported-issues": "مسائل گزارش‌شده من"
121
+ },
122
+ "entities": {
123
+ "my-reported-issue": {
124
+ "title": "مسئله گزارش‌شده من",
125
+ "plural": "مسائل گزارش‌شده من"
126
+ }
127
+ },
128
+ "menus": {
129
+ "my-reported-issues": {
130
+ "title": "درخواست‌ها و مسائل",
131
+ "description": "مشاهده مسائل گزارش‌شده شما"
132
+ }
133
+ },
134
+ "permissions": {
135
+ "my-reported-issues": {
136
+ "title": "مسائل گزارش‌شده من",
137
+ "actions": {
138
+ "manage": {
139
+ "title": "مدیریت مسائل گزارش‌شده من",
140
+ "description": "دسترسی کامل به مدیریت مسائل گزارش‌شده من"
141
+ },
142
+ "view": {
143
+ "title": "مشاهده مسائل گزارش‌شده من",
144
+ "description": "مشاهده اطلاعات مسائل گزارش‌شده من"
145
+ },
146
+ "create": {
147
+ "title": "ایجاد مسئله گزارش‌شده من",
148
+ "description": "ایجاد مسائل گزارش‌شده من جدید"
149
+ },
150
+ "edit": {
151
+ "title": "ویرایش مسئله گزارش‌شده من",
152
+ "description": "ویرایش اطلاعات مسائل گزارش‌شده من"
153
+ },
154
+ "delete": {
155
+ "title": "حذف مسائل گزارش‌شده من",
156
+ "description": "حذف مسائل گزارش‌شده من"
157
+ }
158
+ }
159
+ }
160
+ }
161
+ },
162
+ "report-new-issue": {
163
+ "terms": {
164
+ "report-new-issue": "گزارش یک مسئله",
165
+ "report-new-issues": "گزارش مسائل"
166
+ },
167
+ "entities": {
168
+ "report-new-issue": {
169
+ "title": "گزارش یک مسئله",
170
+ "plural": "گزارش مسائل"
171
+ }
172
+ },
173
+ "components": {
174
+ "report-new-issue-form": {
175
+ "title": "گزارش یک مسئله",
176
+ "fields": {
177
+ "issue-type": "نوع مسئله",
178
+ "priority": "اولویت",
179
+ "title": "عنوان",
180
+ "description": "توضیحات",
181
+ "attachments": "پیوست‌ها"
182
+ },
183
+ "attach-box-description": "می‌توانید صفحه خود را بارگذاری کنید",
184
+ "capture-screen": "گرفتن تصویر صفحه",
185
+ "capture-screen-error": "خطا در شروع ضبط صفحه. لطفاً مجوزها را بررسی کرده و دوباره تلاش کنید.",
186
+ "get-microphone-error": "دسترسی به میکروفون امکان‌پذیر نیست، ضبط بدون صدای میکروفون انجام می‌شود.",
187
+ "recording-time-limit": "محدودیت زمان ضبط (۵ دقیقه)",
188
+ "priorities": {
189
+ "low": "کم",
190
+ "medium": "متوسط",
191
+ "high": "زیاد",
192
+ "critical": "بحرانی"
193
+ }
194
+ }
195
+ },
196
+ "actions": {
197
+ "report-issue": {
198
+ "title": "گزارش یک مسئله"
199
+ }
200
+ }
201
+ },
202
+ "profile-page": {
203
+ "sections": {
204
+ "my-tickets": {
205
+ "title": "تیکت‌های من",
206
+ "description": "تیکت‌های پشتیبانی ارسالی خود را پیگیری کنید.",
207
+ "actions": {
208
+ "manage": "مشاهده تیکت‌های من"
209
+ }
210
+ }
211
+ },
212
+ "commands": {
213
+ "view-my-tickets": {
214
+ "coming-soon": "تیکت‌های من به‌زودی در دسترس خواهند بود."
215
+ }
216
+ }
217
+ },
218
+ "commands": {
219
+ "show-report-issue": {
220
+ "title": "نمایش پنجره گزارش مشکل"
221
+ },
222
+ "download-log-file": {
223
+ "title": "دانلود فایل گزارش"
224
+ }
225
+ }
226
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acorex-platform/module-help-desk-client",
3
- "version": "0.0.54",
3
+ "version": "0.0.57",
4
4
  "sideEffects": false,
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0 || ^22.0.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-platform-module-help-desk-client-report-new-issue.component-D9hOZBs2.mjs","sources":["../../../../libs/modules/help-desk/client/src/lib/features/report-issue/components/report-new-issue/report-new-issue.component.ts","../../../../libs/modules/help-desk/client/src/lib/features/report-issue/components/report-new-issue/report-new-issue.component.html"],"sourcesContent":["import { AXPFileListItem, type AXPFileStorageInfo, type AXPWidgetNode, AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormComponent, AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXComboBoxComponent, type AXComboBoxItem } from '@acorex/components/combo-box';\nimport { AXLookupComponent, type AXLookupSelectionChangedEvent } from '@acorex/components/lookup';\nimport { AXTextAreaModule } from '@acorex/components/text-area';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\n// import { RootConfig } from '@acorex-platform/module-issue-management-client/contracts';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\n\nimport { AXPFileStorageService } from '@acorex-platform/framework-client/common';\n\nimport { AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { Component, inject, ViewChild, ChangeDetectionStrategy } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RootConfig } from '@acorex-platform/module-help-desk-client/contracts';\nimport { AXMHelpDeskReportedIssuesEntityModel } from '@acorex-platform/module-help-desk-client/contracts';\nimport { AXMLogCaptureService } from '../../../console-monitor';\nimport { AXMReportNewIssueViewModel } from '../../services/report-new-issue.viewmodel';\n@Component({\n selector: 'axm-report-new-issue',\n templateUrl: './report-new-issue.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [\n CommonModule,\n FormsModule,\n //\n AXTranslationModule,\n AXFormModule,\n AXLabelModule,\n AXTextBoxModule,\n AXLookupComponent,\n AXComboBoxComponent,\n AXTextAreaModule,\n AXDecoratorModule,\n AXButtonModule,\n AXPWidgetCoreModule,\n ],\n})\nexport class AXMReportNewIssueComponent extends AXBasePageComponent {\n private readonly entityService = inject(AXPEntityService);\n constructor() {\n super();\n }\n\n @ViewChild(AXFormComponent)\n private form!: AXFormComponent;\n protected vm = inject(AXMReportNewIssueViewModel);\n protected logCaptureService = inject(AXMLogCaptureService);\n protected sessionService = inject(AXPSessionService);\n protected issueTypeService = this.entityService.withEntity(RootConfig.module.name, RootConfig.entities.issueType.name).data<any, any>();\n protected reportedIssuesService = this.entityService.withEntity(RootConfig.module.name, RootConfig.entities.reportedIssues.name).data<any, any>();\n protected fileStorageService = inject(AXPFileStorageService);\n protected issueTypeDataSource = new AXDataSource({\n load: async (_) => {\n const issueTypeList = await this.issueTypeService.query();\n return issueTypeList;\n },\n pageSize: 20,\n });\n protected priorityList = [\n {\n title: 'Low',\n id: '1',\n },\n {\n title: 'Medium',\n id: '2',\n },\n {\n title: 'High',\n id: '3',\n },\n {\n title: 'Critical',\n id: '4',\n },\n ];\n\n protected readonly priorityComboItems: AXComboBoxItem[] = this.priorityList.map((item) => ({\n id: String(item.id),\n text: item.title,\n value: item.id,\n }));\n attachNode: AXPWidgetNode = {\n type: AXPWidgetsCatalog.attachments,\n name: 'attach',\n path: 'attach',\n defaultValue: this.vm.media(),\n options: {\n multiple: true,\n entity: `${RootConfig.module.name}.${RootConfig.entities.reportedIssues.name}`,\n record: this.vm.id(),\n },\n };\n context = {};\n\n protected async handleSubmitClick() {\n const formResult = await this.form.validate();\n if (formResult.result) {\n const params: AXMHelpDeskReportedIssuesEntityModel = {\n id: this.vm.id(),\n createdAt: new Date(),\n description: this.vm.data().description,\n errorLogs: this.logCaptureService.logs(),\n issueType: this.vm.data().issueType,\n priority: this.vm.data().priority,\n status: 'new',\n systemInfo: navigator.userAgent,\n title: this.vm.data().title,\n user: this.sessionService.user,\n };\n const reportedIssue = await this.reportedIssuesService.create(params);\n if (reportedIssue && reportedIssue.length) {\n const attachments: AXPFileListItem[] = [];\n for (const res of this.vm.media()) {\n const file = await this.fileStorageSaver(reportedIssue, res);\n console.log(file);\n attachments.push(file);\n\n // const fileStorageInfo: AXPFileStorageInfo = await this.fileStorageService.save({\n // file: await this.convertURLToFile(res.url, res.name as string),\n // refId: reportedIssue,\n // refType: `${RootConfig.module.name}.${RootConfig.entities.reportedIssues.name}`,\n // category: '',\n // name: res.name,\n // });\n // await this.fileStorageService.commit(fileStorageInfo.fileId);\n // attachments.push({\n // name: res.name ?? '',\n // status: 'uploaded',\n // id: fileStorageInfo.fileId,\n // size: parseInt(res.size ?? '0'),\n // source: {\n // kind: 'fileId',\n // value: fileStorageInfo.fileId,\n // },\n // });\n }\n await this.reportedIssuesService.update(reportedIssue, { attachments });\n this.vm.resetState();\n this.close({ insertResult: true });\n }\n }\n }\n\n private async fileStorageSaver(reportedIssueId: string, file: AXPFileListItem): Promise<AXPFileListItem> {\n const sourceValue = file.source?.value;\n const resolvedUrl =\n typeof sourceValue === 'string'\n ? sourceValue\n : sourceValue instanceof Blob\n ? URL.createObjectURL(sourceValue)\n : '';\n const fileStorageInfo: AXPFileStorageInfo = await this.fileStorageService.save({\n file: await this.convertURLToFile(resolvedUrl, file.name as string),\n refId: reportedIssueId,\n refType: `${RootConfig.module.name}.${RootConfig.entities.reportedIssues.name}`,\n category: '',\n name: file.name,\n });\n await this.fileStorageService.commit(fileStorageInfo.fileId);\n return {\n name: file.name ?? '',\n status: 'uploaded',\n id: fileStorageInfo.fileId,\n size: typeof file.size === 'number' ? file.size : 0,\n source: {\n kind: 'fileId',\n value: fileStorageInfo.fileId,\n },\n };\n // attachments.push({\n // name: res.name ?? '',\n // status: 'uploaded',\n // id: fileStorageInfo.fileId,\n // size: parseInt(res.size ?? '0'),\n // source: {\n // kind: 'fileId',\n // value: fileStorageInfo.fileId,\n // },\n // });\n // await this.reportedIssuesService.updateOne(reportedIssueId, {\n // attachments: [\n // ...(this.vm.media() ?? []),\n // {\n // name: file.name ?? '',\n // status: 'uploaded',\n // id: fileStorageInfo.fileId,\n // size: parseInt(file.size ?? '0'),\n // source: {\n // kind: 'fileId',\n // value: fileStorageInfo.fileId,\n // },\n // },\n // ],\n // });\n }\n\n private async convertURLToFile(url: string, fileName: string): Promise<File> {\n const response = await fetch(url);\n const blob = await response.blob();\n const file = new File([blob], fileName);\n return file;\n }\n\n protected async handleStartRecordingClick() {\n await this.vm.startCapturing();\n this.close();\n }\n\n protected async onDeleteMediaClick(index: number) {\n this.vm.deleteCapturedItem(index);\n }\n\n protected async onCancelClick() {\n this.vm.resetState();\n this.close();\n }\n\n handleIssueTypeSelectionChanged(event: AXLookupSelectionChangedEvent) {\n const selected = (event.items ?? [])[0] as { title: string; id: string } | undefined;\n if (selected) {\n this.vm.data().issueType = selected;\n }\n }\n\n handleIssueTypeChange(event: { value?: unknown; isUserInteraction?: boolean }) {\n if (!event.isUserInteraction) {\n return;\n }\n if (!event.value) {\n this.vm.data().issueType = {} as { title: string; id: string };\n }\n }\n\n handlePriorityChange(event: { value?: unknown; isUserInteraction?: boolean }) {\n if (!event.isUserInteraction) {\n return;\n }\n const selected = this.priorityList.find((item) => item.id === event.value);\n if (selected) {\n this.vm.data().priority = selected;\n }\n }\n\n override ngOnDestroy(): void {\n if (this.vm.status() !== 'recording') {\n this.vm.resetState();\n }\n }\n}\n","<div class=\"p-6\">\n <ax-form #form>\n <div class=\"grid gap-2\">\n <ax-form-field>\n <ax-label>{{ '@help-desk:report-new-issue.components.report-new-issue-form.fields.title' | translate | async }}</ax-label>\n <ax-text-box [(ngModel)]=\"vm.data().title\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-text-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{ '@help-desk:report-new-issue.components.report-new-issue-form.fields.issue-type' | translate | async }}</ax-label>\n <ax-lookup\n mode=\"drop-down-list\"\n valueField=\"id\"\n textField=\"title\"\n [dataSource]=\"issueTypeDataSource\"\n [value]=\"vm.data().issueType?.id\"\n [searchable]=\"false\"\n (onValueChanged)=\"handleIssueTypeChange($event)\"\n (onSelectionChanged)=\"handleIssueTypeSelectionChanged($event)\"\n ></ax-lookup>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{ '@help-desk:report-new-issue.components.report-new-issue-form.fields.priority' | translate | async }}</ax-label>\n <ax-combo-box\n [items]=\"priorityComboItems\"\n [value]=\"vm.data().priority?.id\"\n [searchable]=\"false\"\n (onValueChanged)=\"handlePriorityChange($event)\"\n ></ax-combo-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{ '@help-desk:report-new-issue.components.report-new-issue-form.fields.description' | translate | async }}</ax-label>\n <ax-text-area [(ngModel)]=\"vm.data().description\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-text-area>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{ '@help-desk:report-new-issue.components.report-new-issue-form.fields.attachments' | translate | async }}</ax-label>\n <axp-widgets-container class=\"flex flex-col gap-2 p-4\" [context]=\"context\">\n <ng-container axp-widget-renderer [node]=\"attachNode\" [mode]=\"'edit'\"> </ng-container>\n </axp-widgets-container>\n </ax-form-field>\n </div>\n </ax-form>\n</div>\n<ax-footer>\n <ax-suffix>\n <ax-button\n look=\"solid\"\n color=\"default\"\n [text]=\"'@general:actions.cancel.title' | translate | async\"\n (onClick)=\"onCancelClick()\"\n ></ax-button>\n <ax-button\n look=\"solid\"\n color=\"primary\"\n [text]=\"'@general:actions.save.title' | translate | async\"\n (onClick)=\"handleSubmitClick()\"\n ></ax-button>\n </ax-suffix>\n</ax-footer>\n"],"names":["i6","i9"],"mappings":"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"}