@baravak/risloo-profile-cli 4.19.1 → 4.22.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@baravak/risloo-profile-cli",
3
- "version": "4.19.1",
3
+ "version": "4.22.0",
4
4
  "description": "**Risloo Profile CLI** is a library for creating profiles, reports and sheets for *psychological* samples.",
5
5
  "main": "bin/risloo.js",
6
6
  "publishConfig": {
@@ -0,0 +1,15 @@
1
+ function angleABS(_angle) {
2
+ let angle = _angle;
3
+ if (typeof _angle === "string") {
4
+ angle = parseInt(_angle);
5
+ } else if (typeof _angle !== "number") {
6
+ angle = 0;
7
+ }
8
+ const quotient = angle % 360;
9
+ if (angle >= 0 || quotient === 0) {
10
+ return Math.abs(quotient);
11
+ }
12
+ return Math.abs(360 + quotient);
13
+ }
14
+
15
+ module.exports = angleABS;
@@ -0,0 +1,22 @@
1
+ const { FS } = require("../Profile");
2
+
3
+ function gauge(data) {
4
+ data.mark = data.mark ?? 0;
5
+ const circleData = {
6
+ angles: {
7
+ start: FS.toRadians(-90),
8
+ end: FS.toRadians(180),
9
+ },
10
+ direction: false,
11
+ get totalAngle() {
12
+ return this.direction ? 2 * Math.PI - (this.angles.end - this.angles.start) : this.angles.end - this.angles.start;
13
+ },
14
+ };
15
+ return {
16
+ details: data,
17
+ circle: circleData,
18
+ zeta: (data.mark / data.label.max) * circleData.totalAngle + circleData.angles.start,
19
+ };
20
+ }
21
+
22
+ module.exports = gauge;
@@ -0,0 +1,9 @@
1
+ const angleABS = require("./angleABS");
2
+
3
+ function polarXY(cx, cy, radius, angle, radian = false) {
4
+ const angleInRadian = radian ? angle : angleABS(angle) * (Math.PI / 180);
5
+ const x = cx + (radius * Math.cos(angleInRadian));
6
+ const y = cy + (radius * Math.sin(angleInRadian));
7
+ return [x, y];
8
+ }
9
+ module.exports = polarXY;
@@ -0,0 +1,25 @@
1
+ const angleABS = require("./angleABS");
2
+
3
+ function polygonDefaultStart(points, defaultAngle) {
4
+ if(defaultAngle) return angleABS(defaultAngle)
5
+ let angle = 0;
6
+ switch (points) {
7
+ case 3:
8
+ angle = -90;
9
+ break;
10
+ case 4:
11
+ angle = -45;
12
+ break;
13
+ case 5:
14
+ angle = -90;
15
+ break;
16
+ case 6:
17
+ angle = -60;
18
+ break;
19
+ case 7:
20
+ angle = -90;
21
+ break;
22
+ }
23
+ return angleABS(angle);
24
+ }
25
+ module.exports = polygonDefaultStart;
@@ -0,0 +1,15 @@
1
+ const angleABS = require("./angleABS");
2
+ const polarXY = require("./polarXY");
3
+
4
+ function polygonXY(cx, cy, points, angle = 0) {
5
+ const xyPoints = [];
6
+ const angleSeperation = 360 / points.length;
7
+ for (let i = 0; i < points.length; i++) {
8
+ const currentAngle = (Math.PI / 180) * angleABS(angle + angleSeperation * i);
9
+ const point = points[i];
10
+ xyPoints.push(polarXY(cx, cy, point, currentAngle, true));
11
+ }
12
+ return xyPoints;
13
+ }
14
+
15
+ module.exports = polygonXY;
@@ -0,0 +1,254 @@
1
+ {
2
+ "id": "$X1HEDT78U",
3
+ "scale": {
4
+ "id": "$AAI-93",
5
+ "title": "پرسشنامه سبک‌های دلبستگی بزرگسالان هازن و شیور"
6
+ },
7
+ "chain": null,
8
+ "version": "1",
9
+ "edition": "",
10
+ "edition_version": null,
11
+ "client": {
12
+ "id": "GH96XXYY",
13
+ "name": "مراجع",
14
+ "user_id": "IR96XXYY"
15
+ },
16
+ "room": {
17
+ "id": "RS96XXYY",
18
+ "manager": {
19
+ "id": "GH96XXYY",
20
+ "name": "درمانگر",
21
+ "user_id": "IR96XXYY"
22
+ },
23
+ "center": {
24
+ "id": "RS96XXYY",
25
+ "acceptation": null,
26
+ "status": "active",
27
+ "type": "counseling_center",
28
+ "detail": {
29
+ "title": "مرکز"
30
+ }
31
+ },
32
+ "acceptation": null,
33
+ "status": "active",
34
+ "type": "room"
35
+ },
36
+ "case": null,
37
+ "code": null,
38
+ "created_at": 1748455601,
39
+ "started_at": 1748455611,
40
+ "scored_at": 1748455641,
41
+ "closed_at": 1748455611,
42
+ "total_amount": null,
43
+ "prepayment": false,
44
+ "purchased": true,
45
+ "amount": null,
46
+ "billing": null,
47
+ "description": "پاسخگوی گرامی، این پرسشنامه نوع رابطه و دلبستگی‌های شما را به دیگران (افراد نزدیک مثل مادر، پدر، همسر و دوستان) توصیف می‌کند. هر عبارت را با دقت بخوانید و با در نظر گرفتن وضعیت کلی و عمومی روابط و دلبستگی‌هایتان، پاسخی را که بیش از همه با وضعیت شما مطابقت می‌کند، علامت بزنید.\n\nدر این مقیاس هیچ‌یک از پاسخ‌ها صحیح یا غلط نیستند. ممکن است بعضی از عبارت‌ها کاملاً با ویژگی‌های شما مطابقت نکند اما سعی کنید در این موارد هم گزینه‌ای را که به طور نسبی با خصوصیات شما مطابقت می‌کند علامت بزنید.\n\nاز همکاری شما صمیمانه سپاسگزاریم.",
48
+ "psychologist_description": null,
49
+ "items": [
50
+ {
51
+ "type": "text",
52
+ "text": "نزدیک شدن به دیگران و برقراری روابط صمیمی با آن‌ها برایم آسان است.",
53
+ "answer": {
54
+ "type": "optional",
55
+ "options": ["خیلی زیاد", "زیاد", "متوسط", "کم", "خیلی کم"]
56
+ },
57
+ "user_answered": "5"
58
+ },
59
+ {
60
+ "type": "text",
61
+ "text": "نزدیک شدن به دیگران تا حدودی برایم مشکل و ناراحت کننده است.",
62
+ "answer": {
63
+ "type": "optional",
64
+ "options": ["خیلی زیاد", "زیاد", "متوسط", "کم", "خیلی کم"]
65
+ },
66
+ "user_answered": "3"
67
+ },
68
+ {
69
+ "type": "text",
70
+ "text": "وقتی با کسی دوست می‌شوم، می‌خواهم خودم را کاملاً به او بسپارم و با او یکی شوم.",
71
+ "answer": {
72
+ "type": "optional",
73
+ "options": ["خیلی زیاد", "زیاد", "متوسط", "کم", "خیلی کم"]
74
+ },
75
+ "user_answered": "1"
76
+ },
77
+ {
78
+ "type": "text",
79
+ "text": "تصور می‌کنم به هنگام نیاز، دیگران به من کمک خواهند کرد.",
80
+ "answer": {
81
+ "type": "optional",
82
+ "options": ["خیلی زیاد", "زیاد", "متوسط", "کم", "خیلی کم"]
83
+ },
84
+ "user_answered": "1"
85
+ },
86
+ {
87
+ "type": "text",
88
+ "text": "تصور می‌کنم به هنگام نیاز، کسی به من کمک نخواهد کرد.",
89
+ "answer": {
90
+ "type": "optional",
91
+ "options": ["خیلی زیاد", "زیاد", "متوسط", "کم", "خیلی کم"]
92
+ },
93
+ "user_answered": "5"
94
+ },
95
+ {
96
+ "type": "text",
97
+ "text": "نمی‌توانم با اطمینان روی کمک دیگران حساب کنم.",
98
+ "answer": {
99
+ "type": "optional",
100
+ "options": ["خیلی زیاد", "زیاد", "متوسط", "کم", "خیلی کم"]
101
+ },
102
+ "user_answered": "4"
103
+ },
104
+ {
105
+ "type": "text",
106
+ "text": "اتکای به دیگران برایم آسان است.",
107
+ "answer": {
108
+ "type": "optional",
109
+ "options": ["خیلی زیاد", "زیاد", "متوسط", "کم", "خیلی کم"]
110
+ },
111
+ "user_answered": "4"
112
+ },
113
+ {
114
+ "type": "text",
115
+ "text": "اتکای به دیگران برایم دشوار است.",
116
+ "answer": {
117
+ "type": "optional",
118
+ "options": ["خیلی زیاد", "زیاد", "متوسط", "کم", "خیلی کم"]
119
+ },
120
+ "user_answered": "3"
121
+ },
122
+ {
123
+ "type": "text",
124
+ "text": "غالباً نگرانم که نکند دیگران واقعاً مرا دوست نداشته باشند.",
125
+ "answer": {
126
+ "type": "optional",
127
+ "options": ["خیلی زیاد", "زیاد", "متوسط", "کم", "خیلی کم"]
128
+ },
129
+ "user_answered": "3"
130
+ },
131
+ {
132
+ "type": "text",
133
+ "text": "اگر دیگران مرا ترک کنند و تنها بمانم ناراحت نمی‌شوم.",
134
+ "answer": {
135
+ "type": "optional",
136
+ "options": ["خیلی زیاد", "زیاد", "متوسط", "کم", "خیلی کم"]
137
+ },
138
+ "user_answered": "1"
139
+ },
140
+ {
141
+ "type": "text",
142
+ "text": "دوست ندارم دیگران زیاد به من نزدیک و با من صمیمی شوند.",
143
+ "answer": {
144
+ "type": "optional",
145
+ "options": ["خیلی زیاد", "زیاد", "متوسط", "کم", "خیلی کم"]
146
+ },
147
+ "user_answered": "5"
148
+ },
149
+ {
150
+ "type": "text",
151
+ "text": "دوست دارم دیگران خیلی به من نزدیک شوند، اما آن‌ها اجتناب می‌کنند. ",
152
+ "answer": {
153
+ "type": "optional",
154
+ "options": ["خیلی زیاد", "زیاد", "متوسط", "کم", "خیلی کم"]
155
+ },
156
+ "user_answered": "4"
157
+ },
158
+ {
159
+ "type": "text",
160
+ "text": "اعتماد به دیگران برایم آسان است.",
161
+ "answer": {
162
+ "type": "optional",
163
+ "options": ["خیلی زیاد", "زیاد", "متوسط", "کم", "خیلی کم"]
164
+ },
165
+ "user_answered": "3"
166
+ },
167
+ {
168
+ "type": "text",
169
+ "text": "اعتماد به دیگران برایم دشوار است.",
170
+ "answer": {
171
+ "type": "optional",
172
+ "options": ["خیلی زیاد", "زیاد", "متوسط", "کم", "خیلی کم"]
173
+ },
174
+ "user_answered": "1"
175
+ },
176
+ {
177
+ "type": "text",
178
+ "text": "غالباً نگرانم که نکند دیگران به همان اندازه که من برایشان ارزش قائل هستم برایم ارزش قائل نباشند.",
179
+ "answer": {
180
+ "type": "optional",
181
+ "options": ["خیلی زیاد", "زیاد", "متوسط", "کم", "خیلی کم"]
182
+ },
183
+ "user_answered": "5"
184
+ }
185
+ ],
186
+ "prerequisites": [
187
+ {
188
+ "type": "text",
189
+ "label": "gender",
190
+ "text": "جنسیت",
191
+ "answer": { "type": "select", "options": ["زن", "مرد"] },
192
+ "alias": "gender",
193
+ "force": true,
194
+ "user_answered": "1"
195
+ },
196
+ {
197
+ "type": "text",
198
+ "label": "age",
199
+ "text": "سن",
200
+ "answer": { "type": "number" },
201
+ "alias": "age",
202
+ "force": true,
203
+ "user_answered": "28"
204
+ },
205
+ {
206
+ "type": "text",
207
+ "label": "education",
208
+ "text": "تحصیلات",
209
+ "answer": {
210
+ "type": "select",
211
+ "options": [
212
+ "ابتدایی اول",
213
+ "ابتدایی دوم",
214
+ "متوسطه اول",
215
+ "متوسطه دوم",
216
+ "دیپلم",
217
+ "کارشناسی",
218
+ "کارشناسی ارشد",
219
+ "پزشکی عمومی",
220
+ "متخصص",
221
+ "دکتری تخصصی",
222
+ "حوزوی مقدمات",
223
+ "حوزوی سطح۱",
224
+ "حوزوی سطح۲",
225
+ "حوزوی سطح۳",
226
+ "حوزوی سطح۴"
227
+ ]
228
+ },
229
+ "alias": "education",
230
+ "force": true,
231
+ "user_answered": "6"
232
+ },
233
+ {
234
+ "type": "text",
235
+ "label": "marital_status",
236
+ "text": "وضعیت تأهل",
237
+ "answer": { "type": "select", "options": ["مجرد", "متأهل"] },
238
+ "alias": "marital_status",
239
+ "force": true,
240
+ "user_answered": "2"
241
+ }
242
+ ],
243
+ "cornometer": 0,
244
+ "score": {
245
+ "secure_raw": 16,
246
+ "secure_percentage": 0.64,
247
+ "avoidant_raw": 13,
248
+ "avoidant_percentage": 0.52,
249
+ "ambivalence_raw": 13,
250
+ "ambivalence_percentage": 0.52
251
+ },
252
+ "score_current_version": "1.0.0",
253
+ "score_last_version": "1.0.0"
254
+ }
@@ -9,75 +9,30 @@
9
9
  "edition": "",
10
10
  "edition_version": null,
11
11
  "client": {
12
- "id": "GH96664GE",
13
- "name": "مرضیه کلهری"
12
+ "id": "GH96XXXXX",
13
+ "name": "مراجع"
14
14
  },
15
15
  "room": {
16
- "id": "RS96662E5",
16
+ "id": "RS96XXXXX",
17
17
  "manager": {
18
- "id": "GH96664AN",
19
- "name": "دکتر همتی",
20
- "user_id": "IR963XPP",
18
+ "id": "GH96XXXXX",
19
+ "name": "درمانگر",
20
+ "user_id": "IR96XXXXX",
21
21
  "avatar": null
22
22
  },
23
23
  "center": {
24
- "id": "RS96662EV",
24
+ "id": "RS96XXXXX",
25
25
  "acceptation": null,
26
26
  "status": "active",
27
27
  "type": "counseling_center",
28
28
  "detail": {
29
- "title": "مرکز مشاوره و خدمات روان‌شناسی روشنان",
30
- "avatar": [
31
- {
32
- "id": "F96DUMD",
33
- "file_name": "P9666FW9_large.png",
34
- "slug": "storage/public/Files_1000/P9666FW9_large.png",
35
- "mode": "large",
36
- "url": "https://api.risloo.ir/storage/public/Files_1000/P9666FW9_large.png",
37
- "type": "image",
38
- "mime": "image/png",
39
- "exec": "png"
40
- },
41
- {
42
- "id": "F96DUM3",
43
- "file_name": "P9666FW9_medium.png",
44
- "slug": "storage/public/Files_1000/P9666FW9_medium.png",
45
- "mode": "medium",
46
- "url": "https://api.risloo.ir/storage/public/Files_1000/P9666FW9_medium.png",
47
- "type": "image",
48
- "mime": "image/png",
49
- "exec": "png"
50
- },
51
- {
52
- "id": "F96DUM9",
53
- "file_name": "P9666FW9_original.png",
54
- "slug": "storage/public/Files_1000/P9666FW9_original.png",
55
- "mode": "original",
56
- "url": "https://api.risloo.ir/storage/public/Files_1000/P9666FW9_original.png",
57
- "type": "image",
58
- "mime": "image/png",
59
- "exec": "png"
60
- },
61
- {
62
- "id": "F96DUMT",
63
- "file_name": "P9666FW9_small.png",
64
- "slug": "storage/public/Files_1000/P9666FW9_small.png",
65
- "mode": "small",
66
- "url": "https://api.risloo.ir/storage/public/Files_1000/P9666FW9_small.png",
67
- "type": "image",
68
- "mime": "image/png",
69
- "exec": "png"
70
- }
71
- ]
29
+ "title": "مرکز"
72
30
  }
73
31
  },
74
32
  "acceptation": null,
75
33
  "status": "active",
76
34
  "type": "room"
77
35
  },
78
- "case": {
79
- "id": "CS9666N3T"
80
- },
81
36
  "code": null,
82
37
  "created_at": 1673193951,
83
38
  "started_at": 1673194339,
@@ -86,33 +41,6 @@
86
41
  "total_amount": 110000,
87
42
  "prepayment": true,
88
43
  "purchased": true,
89
- "amount": 110000,
90
- "billing": {
91
- "id": "BL969FG8",
92
- "creditor": {
93
- "id": "TE96TWH9",
94
- "symbol": "rs96662ev",
95
- "title": "کیف پول مرکز RS96662EV",
96
- "creditable": true,
97
- "chargeable": true,
98
- "my_treasury": false
99
- },
100
- "debtor": {
101
- "id": "TE96TQ66",
102
- "symbol": "wallet",
103
- "title": "کیف پول",
104
- "creditable": true,
105
- "chargeable": true,
106
- "my_treasury": false
107
- },
108
- "amount": 110000,
109
- "type": "final",
110
- "action": "samples",
111
- "action_serial": "$X1HHV2QBJ",
112
- "title": "انجام نمونه",
113
- "created_at": 1673194149,
114
- "updated_at": 1673194149
115
- },
116
44
  "description": "## دستور اجرای آزمون\n\nلطفا عبارت‌های زیر را با دقت بخوانید و پاسخ خود را از بین گزینه‌های مطرح مشخص کنید.",
117
45
  "psychologist_description": null,
118
46
  "items": [
@@ -1563,27 +1491,5 @@
1563
1491
  "stress_management": 25
1564
1492
  },
1565
1493
  "score_current_version": "1.0.0",
1566
- "score_last_version": "1.0.0",
1567
- "profiles": [
1568
- {
1569
- "id": "F96DSSS",
1570
- "file_name": "X1HHV2QBJ.json",
1571
- "slug": "storage/profiles/X1HHV2QBJVdVgNUkTdcjvwiQKDxBJB1p5xejSHYKDXdN4CqYxuzH7S0JL5znS2Qe55UG5bT4cvcvKCLI1d2ABUl9P8eGHyvz3eTRrid4LcCrgQzgVQBdOnuXtyJfDVSBu/X1HHV2QBJ.json",
1572
- "mode": "profile_json",
1573
- "url": "https://api.risloo.ir/storage/profiles/X1HHV2QBJVdVgNUkTdcjvwiQKDxBJB1p5xejSHYKDXdN4CqYxuzH7S0JL5znS2Qe55UG5bT4cvcvKCLI1d2ABUl9P8eGHyvz3eTRrid4LcCrgQzgVQBdOnuXtyJfDVSBu/X1HHV2QBJ.json",
1574
- "type": "data",
1575
- "mime": "application/json",
1576
- "exec": "json"
1577
- },
1578
- {
1579
- "id": "F96DSSX",
1580
- "file_name": "X1HHV2QBJ.xlsx",
1581
- "slug": "storage/profiles/X1HHV2QBJVdVgNUkTdcjvwiQKDxBJB1p5xejSHYKDXdN4CqYxuzH7S0JL5znS2Qe55UG5bT4cvcvKCLI1d2ABUl9P8eGHyvz3eTRrid4LcCrgQzgVQBdOnuXtyJfDVSBu/X1HHV2QBJ.xlsx",
1582
- "mode": "profile_xlsx",
1583
- "url": "https://api.risloo.ir/storage/profiles/X1HHV2QBJVdVgNUkTdcjvwiQKDxBJB1p5xejSHYKDXdN4CqYxuzH7S0JL5znS2Qe55UG5bT4cvcvKCLI1d2ABUl9P8eGHyvz3eTRrid4LcCrgQzgVQBdOnuXtyJfDVSBu/X1HHV2QBJ.xlsx",
1584
- "type": "document",
1585
- "mime": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
1586
- "exec": "xlsx"
1587
- }
1588
- ]
1494
+ "score_last_version": "1.0.0"
1589
1495
  }
@@ -0,0 +1,434 @@
1
+ {
2
+ "id": "$X1HED93S7",
3
+ "scale": { "id": "$BNQ-93", "title": "پرسشنامه نیازهای اساسی گلاسر (BNQ)" },
4
+ "chain": null,
5
+ "version": "1",
6
+ "edition": "صاحبی",
7
+ "edition_version": null,
8
+ "client": {
9
+ "id": "GH96XXXXX",
10
+ "name": "مراجع"
11
+ },
12
+ "room": {
13
+ "id": "RS96XXXXX",
14
+ "manager": {
15
+ "id": "GH96XXXXX",
16
+ "name": "درمانگر",
17
+ "user_id": "IR96XXXXX"
18
+ },
19
+ "center": {
20
+ "id": "RS96XXXXX",
21
+ "acceptation": null,
22
+ "status": "active",
23
+ "type": "counseling_center",
24
+ "detail": {
25
+ "title": "مرکز مشاوره"
26
+ }
27
+ },
28
+ "acceptation": null,
29
+ "status": "active",
30
+ "type": "room"
31
+ },
32
+ "case": null,
33
+ "code": null,
34
+ "created_at": 1748453740,
35
+ "started_at": 1748453770,
36
+ "scored_at": 1748454467,
37
+ "closed_at": 1748453772,
38
+ "total_amount": null,
39
+ "prepayment": false,
40
+ "purchased": true,
41
+ "amount": null,
42
+ "billing": null,
43
+ "description": "## دستور اجرای آزمون\n\nپاسخگوی گرامی، این پرسشنامه جهت سنجش نیازهای شما تهیه شده است. لطفاً به سؤال‌ها همانگونه که وجود دارد پاسخ دهید نه به صورتی که دوست دارید باشد. جواب صحیح و غلط در این ابزار سنجش وجود ندارد. در پاسخگویی به سوالات صادق بوده و وقت زیادی را صرف یک عبارت نکنید.",
44
+ "psychologist_description": null,
45
+ "items": [
46
+ {
47
+ "type": "text",
48
+ "text": "مسائلی مثل پس‌انداز، مخارج زندگی، مسکن، آینده شغلی و … تا چه اندازه ذهن شما را به خود مشغول می‌دارد؟",
49
+ "answer": {
50
+ "type": "optional",
51
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
52
+ },
53
+ "user_answered": "5"
54
+ },
55
+ {
56
+ "type": "text",
57
+ "text": "تا چه اندازه به سلامت جسمانی، بهداشت و احتمال ابتلا به بیماری فکر می کنید؟",
58
+ "answer": {
59
+ "type": "optional",
60
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
61
+ },
62
+ "user_answered": "2"
63
+ },
64
+ {
65
+ "type": "text",
66
+ "text": "شدت میل جنسی خود را چگونه ارزیابی می‌کنید؟",
67
+ "answer": {
68
+ "type": "optional",
69
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
70
+ },
71
+ "user_answered": "4"
72
+ },
73
+ {
74
+ "type": "text",
75
+ "text": "در انجام کارها و اقدامات مخاطره‌آمیز تا چه اندازه محتاطانه عمل می‌کنید؟",
76
+ "answer": {
77
+ "type": "optional",
78
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
79
+ },
80
+ "user_answered": "3"
81
+ },
82
+ {
83
+ "type": "text",
84
+ "text": "از روبرویی با تجارب جدید و شروع راه‌های ناشناخته تا چه اندازه اجتناب می‌کنید؟",
85
+ "answer": {
86
+ "type": "optional",
87
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
88
+ },
89
+ "user_answered": "3"
90
+ },
91
+ {
92
+ "type": "text",
93
+ "text": "از نظر دوستان و همکاران خود تا چه اندازه محتاطانه عمل می کنید؟",
94
+ "answer": {
95
+ "type": "optional",
96
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
97
+ },
98
+ "user_answered": "1"
99
+ },
100
+ {
101
+ "type": "text",
102
+ "text": "تا چه اندازه امنیت شغلی و داشتن شغل و درآمد ثابت برایتان اهمیت دارد؟",
103
+ "answer": {
104
+ "type": "optional",
105
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
106
+ },
107
+ "user_answered": "4"
108
+ },
109
+ {
110
+ "type": "text",
111
+ "text": "احساس می کنید به چه میزان عشق، صمیمیت و مهرورزی نیاز دارید؟",
112
+ "answer": {
113
+ "type": "optional",
114
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
115
+ },
116
+ "user_answered": "2"
117
+ },
118
+ {
119
+ "type": "text",
120
+ "text": "تا چه اندازه رفاه و سعادت انسانهای دیگر برایتان مهم است؟",
121
+ "answer": {
122
+ "type": "optional",
123
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
124
+ },
125
+ "user_answered": "2"
126
+ },
127
+ {
128
+ "type": "text",
129
+ "text": "چه مقدار نیاز دارید که دیگران شما را پذیرفته و دوستتان بدارند؟",
130
+ "answer": {
131
+ "type": "optional",
132
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
133
+ },
134
+ "user_answered": "2"
135
+ },
136
+ {
137
+ "type": "text",
138
+ "text": "چه مقدار نیاز دارید که دیگران شما را مورد لطف و مهر و محبت قرارداده و شما نیز متقابلا به آن ها محبت کنید و به آن ها احساس تعلق خاطر نمایید؟",
139
+ "answer": {
140
+ "type": "optional",
141
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
142
+ },
143
+ "user_answered": "1"
144
+ },
145
+ {
146
+ "type": "text",
147
+ "text": "چه اندازه دوست دارید که با دیگران مراوده داشته باشید و در مجالس، مراسم و فعالیت های گروهی فعالانه شرکت کنید؟",
148
+ "answer": {
149
+ "type": "optional",
150
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
151
+ },
152
+ "user_answered": "4"
153
+ },
154
+ {
155
+ "type": "text",
156
+ "text": "از نظر دوستان و همکاران خود تا چه اندازه گرم، صمیمی، دلسوز و مهربان هستید؟",
157
+ "answer": {
158
+ "type": "optional",
159
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
160
+ },
161
+ "user_answered": "1"
162
+ },
163
+ {
164
+ "type": "text",
165
+ "text": "داشتن روابطه خوب با عزیزان و اطرافیان تا چه اندازه برایتان مهم است و برای آن وقت و انرژی می گذارید؟",
166
+ "answer": {
167
+ "type": "optional",
168
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
169
+ },
170
+ "user_answered": "1"
171
+ },
172
+ {
173
+ "type": "text",
174
+ "text": "تا چه اندازه نیاز دارید که تمام چیزهایی را که انجام می دهید خودتان انتخاب کنید؟",
175
+ "answer": {
176
+ "type": "optional",
177
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
178
+ },
179
+ "user_answered": "5"
180
+ },
181
+ {
182
+ "type": "text",
183
+ "text": "تا چه میزان اعتقاد دارید که هیچ کس نباید به شما بگوید که چگونه زندگی خود را اداره کنید (بگوید چه بکنید و چه نکنید)؟",
184
+ "answer": {
185
+ "type": "optional",
186
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
187
+ },
188
+ "user_answered": "2"
189
+ },
190
+ {
191
+ "type": "text",
192
+ "text": "تا چه میزان تمایل دارید آن چه را که می خواهید بدون توجه به دخالت ها و فشارهای همسرتان / شریکتان حتما انجام رسانید؟",
193
+ "answer": {
194
+ "type": "optional",
195
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
196
+ },
197
+ "user_answered": "1"
198
+ },
199
+ {
200
+ "type": "text",
201
+ "text": "تا چه میزان اصرار دارید در تصمیم گیری های بزرگ و کوچک زندگی استقلال رای داشته باشید و بر وفق مراد خود عمل کنید؟",
202
+ "answer": {
203
+ "type": "optional",
204
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
205
+ },
206
+ "user_answered": "3"
207
+ },
208
+ {
209
+ "type": "text",
210
+ "text": "تا چه اندازه نیاز دارید که زمان هایی را برای خودتان در اختیار داشته باشید که هر گونه دلتان می خواهد از آن استفاده کنید؟",
211
+ "answer": {
212
+ "type": "optional",
213
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
214
+ },
215
+ "user_answered": "3"
216
+ },
217
+ {
218
+ "type": "text",
219
+ "text": "تا چه اندازه تمایل دارید که به مکان های جدید سفر کنید؟",
220
+ "answer": {
221
+ "type": "optional",
222
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
223
+ },
224
+ "user_answered": "5"
225
+ },
226
+ {
227
+ "type": "text",
228
+ "text": "تا چه میزان به دنبال تغییر و چیزهای نو هستید و از محیط های کاری ثابت و یکسان که تغییر نمی کنند احساس کسالت می کنید؟",
229
+ "answer": {
230
+ "type": "optional",
231
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
232
+ },
233
+ "user_answered": "4"
234
+ },
235
+ {
236
+ "type": "text",
237
+ "text": "تا چه اندازه تلاش می کنید در زمینه کار خود به عنوان یک فرد توانمند و با لیاقت خود را نشان داده و شناخته شوید؟",
238
+ "answer": {
239
+ "type": "optional",
240
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
241
+ },
242
+ "user_answered": "4"
243
+ },
244
+ {
245
+ "type": "text",
246
+ "text": "تا چه اندازه دوست دارید که به دیگران دستور بدهید؟ ( فرمان بدهید تا این که فرمان ببرید)",
247
+ "answer": {
248
+ "type": "optional",
249
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
250
+ },
251
+ "user_answered": "5"
252
+ },
253
+ {
254
+ "type": "text",
255
+ "text": "فکر می کنید تا چه اندازه اهل پیشرفت و رقابت هستید؟",
256
+ "answer": {
257
+ "type": "optional",
258
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
259
+ },
260
+ "user_answered": "5"
261
+ },
262
+ {
263
+ "type": "text",
264
+ "text": "تا چه اندازه دوست دارید که دیگران (اعم از فرزند، همسر یا دوستانتان) به حرف شما گوش دهند و از آن پیروی کنند؟",
265
+ "answer": {
266
+ "type": "optional",
267
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
268
+ },
269
+ "user_answered": "1"
270
+ },
271
+ {
272
+ "type": "text",
273
+ "text": "تا چه اندازه تلاش می کنید تا ثابت کنید ایده، فکر یا راه شما درست است و اصرار دارید که دیگران را متقاعد کنید که آن را قبول کنند؟",
274
+ "answer": {
275
+ "type": "optional",
276
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
277
+ },
278
+ "user_answered": "5"
279
+ },
280
+ {
281
+ "type": "text",
282
+ "text": "تا چه اندازه دغدغه رشد و پیشرفت دارید و در زندگی شخصی و حرفه ای تان به دنبال شکوفایی توانمندی های خود هستید؟",
283
+ "answer": {
284
+ "type": "optional",
285
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
286
+ },
287
+ "user_answered": "1"
288
+ },
289
+ {
290
+ "type": "text",
291
+ "text": "تا چه اندازه زمان تان را صرف یادگیری چیزهای جدید در زمینه های مختلف می کنید؟",
292
+ "answer": {
293
+ "type": "optional",
294
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
295
+ },
296
+ "user_answered": "1"
297
+ },
298
+ {
299
+ "type": "text",
300
+ "text": "چقدر به شوخی، مزاح و لطیفه گویی نیازمندید؟",
301
+ "answer": {
302
+ "type": "optional",
303
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
304
+ },
305
+ "user_answered": "5"
306
+ },
307
+ {
308
+ "type": "text",
309
+ "text": "تا چه میزان به اوقات فراغت و سرگرمی های مخصوص به خودتان نیاز دارید؟",
310
+ "answer": {
311
+ "type": "optional",
312
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
313
+ },
314
+ "user_answered": "3"
315
+ },
316
+ {
317
+ "type": "text",
318
+ "text": "میزان شوخ طبعی و خوش مشربی خود را چگونه ارزیابی می کنید؟",
319
+ "answer": {
320
+ "type": "optional",
321
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
322
+ },
323
+ "user_answered": "2"
324
+ },
325
+ {
326
+ "type": "text",
327
+ "text": "تا چه میزان احساس می کنید که نیاز دارید به کارهای غیر جدی و غیر رسمی از قبیل دوچرخه سواری، ماهی گیری، تماشای فیلم و دیگر سرگرمی های لذت بخش بپردازید؟",
328
+ "answer": {
329
+ "type": "optional",
330
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
331
+ },
332
+ "user_answered": "2"
333
+ },
334
+ {
335
+ "type": "text",
336
+ "text": "تا چه اندازه به دنبال اوقات سرگرم کننده و موقعیت های شادی بخش از قبیل جشن ها، مهمانی ها، مراسم سرگرم کننده و بازی و … هستید؟",
337
+ "answer": {
338
+ "type": "optional",
339
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
340
+ },
341
+ "user_answered": "4"
342
+ },
343
+ {
344
+ "type": "text",
345
+ "text": "خندیدن و خنداندن تا چه میزان در زندگی شما مهم است؟",
346
+ "answer": {
347
+ "type": "optional",
348
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
349
+ },
350
+ "user_answered": "3"
351
+ },
352
+ {
353
+ "type": "text",
354
+ "text": "از نظر شما تفریح، بازی و شادی کردن تا چه اندازه جزء مهمی از زندگی محسوب می شود؟",
355
+ "answer": {
356
+ "type": "optional",
357
+ "options": ["بسیار کم", "کم", "متوسط", "زیاد", "بسیار زیاد"]
358
+ },
359
+ "user_answered": "1"
360
+ }
361
+ ],
362
+ "prerequisites": [
363
+ {
364
+ "type": "text",
365
+ "label": "gender",
366
+ "text": "جنسیت",
367
+ "answer": { "type": "select", "options": ["زن", "مرد"] },
368
+ "alias": "gender",
369
+ "force": true,
370
+ "user_answered": "2"
371
+ },
372
+ {
373
+ "type": "text",
374
+ "label": "age",
375
+ "text": "سن",
376
+ "answer": { "type": "number" },
377
+ "alias": "age",
378
+ "force": true,
379
+ "user_answered": "51"
380
+ },
381
+ {
382
+ "type": "text",
383
+ "label": "education",
384
+ "text": "تحصیلات",
385
+ "answer": {
386
+ "type": "select",
387
+ "options": [
388
+ "ابتدایی اول",
389
+ "ابتدایی دوم",
390
+ "متوسطه اول",
391
+ "متوسطه دوم",
392
+ "دیپلم",
393
+ "کارشناسی",
394
+ "کارشناسی ارشد",
395
+ "پزشکی عمومی",
396
+ "متخصص",
397
+ "دکتری تخصصی",
398
+ "حوزوی مقدمات",
399
+ "حوزوی سطح۱",
400
+ "حوزوی سطح۲",
401
+ "حوزوی سطح۳",
402
+ "حوزوی سطح۴"
403
+ ]
404
+ },
405
+ "alias": "education",
406
+ "force": true,
407
+ "user_answered": "10"
408
+ },
409
+ {
410
+ "type": "text",
411
+ "label": "marital_status",
412
+ "text": "وضعیت تأهل",
413
+ "answer": { "type": "select", "options": ["مجرد", "متأهل"] },
414
+ "alias": "marital_status",
415
+ "force": true,
416
+ "user_answered": "1"
417
+ }
418
+ ],
419
+ "cornometer": 0,
420
+ "score": {
421
+ "survival_raw": 22,
422
+ "survival_percentage": 0.63,
423
+ "love_belonging_raw": 13,
424
+ "love_belonging_percentage": 0.37,
425
+ "power_raw": 23,
426
+ "power_percentage": 0.66,
427
+ "freedom_raw": 22,
428
+ "freedom_percentage": 0.63,
429
+ "fun_raw": 20,
430
+ "fun_percentage": 0.57
431
+ },
432
+ "score_current_version": "1.0.0",
433
+ "score_last_version": "1.0.0"
434
+ }
@@ -0,0 +1,70 @@
1
+ const { Profile, FS } = require("../Profile");
2
+ const polygonXY = require("../helpers/polygonXY");
3
+ const polygonDefaultStart = require("../helpers/polygonDefaultStart");
4
+ const round = require("../handlebars/helpers/round");
5
+ const gauge = require("../helpers/gauge");
6
+
7
+ class AAI93 extends Profile {
8
+ // Number of pages
9
+ static pages = 1;
10
+
11
+ // Labels of the sample
12
+ labels = {
13
+ L1_1: {eng: 'secure_raw', fa: 'دلبستگی ایمن', primary: '#65A30D', secondary: '#A3E635', max: 25},
14
+ L1_2: {eng: 'secure_percentage'},
15
+ L2_1: {eng: 'ambivalence_raw', fa: 'دلبستگی دوسوگرا', primary: '#EA580C', secondary: '#FB923C', max: 25},
16
+ L2_2: {eng: 'ambivalence_percentage'},
17
+ L3_1: {eng: 'avoidant_raw', fa: 'دلبستگی اجتنابی', primary: '#E11D48', secondary: '#FB7185', max: 25},
18
+ L3_2: {eng: 'avoidant_percentage'},
19
+ };
20
+
21
+ profileSpec = {
22
+ /* "sample" determines some important info about the sample and profile */
23
+ /* Default prerequisites: 1. gender, 2. age, 3. education */
24
+ /* "prerequisites" is synonym to "fields" in our program */
25
+ sample: {
26
+ name: "پرسشنامه سبک‌های دلبستگی بزرگسالان هازن و شیور" /* Name of the sample */,
27
+ multiProfile: false /* Whether the sample has multiple profiles or not */,
28
+ questions: false /* Determines whether to get questions from inital dataset or not */,
29
+ defaultFields: true /* Determines whether to have default prerequisites in the profile or not */,
30
+ fields: [] /* In case you want to get some additional fields and show in the profile */,
31
+ },
32
+ /* "profile" determines the dimensions of the drawn profile (to be used in svg tag viewbox) */
33
+ /* calculating its dimensions carefully is of great importance */
34
+ profile: {
35
+ get dimensions() {
36
+ return {
37
+ width: 599 + 2 * this.padding.x,
38
+ height: 179 + 2 * this.padding.y,
39
+ }
40
+ },
41
+ padding: {
42
+ x: 152,
43
+ y: 267.5,
44
+ },
45
+ },
46
+ /* "raw" is the general term used for total data element in the profile */
47
+ /* "labels" part which has to be provided for each profile */
48
+ labels: Object.values(this.labels),
49
+ };
50
+
51
+ constructor(dataset, options, config = {}) {
52
+ super();
53
+ this._init(dataset, options, config);
54
+ }
55
+
56
+ _calcContext() {
57
+ const {
58
+ spec: { parameters: spec },
59
+ dataset,
60
+ } = this;
61
+
62
+ const scores = dataset.score.filter(score => score.label.eng.includes('_raw')).map((score, index) => ({
63
+ ...gauge(score),
64
+ fill: `url(#${score.label.eng}_gradient)`,
65
+ percentage: Math.round(dataset.score[(index * 2) + 1].mark * 100),
66
+ }))
67
+ return [{ scores }];
68
+ }
69
+ }
70
+ module.exports = AAI93;
@@ -0,0 +1,83 @@
1
+ const { Profile, FS } = require("../Profile");
2
+ const polygonXY = require("../helpers/polygonXY");
3
+ const polygonDefaultStart = require("../helpers/polygonDefaultStart");
4
+ const round = require("../handlebars/helpers/round");
5
+
6
+ class BNQ93 extends Profile {
7
+ // Number of pages
8
+ static pages = 1;
9
+
10
+ // Labels of the sample
11
+ labels = {
12
+ L1_1: {eng: 'survival_raw', fa: 'نیاز به بقاء'},
13
+ L1_2: {eng: 'survival_percentage'},
14
+ L2_1: {eng: 'love_belonging_raw', fa: 'نیاز به عشق و تعلق'},
15
+ L2_2: {eng: 'love_belonging_percentage'},
16
+ L3_1: {eng: 'power_raw', fa: 'نیاز به قدرت'},
17
+ L3_2: {eng: 'power_percentage'},
18
+ L4_1: {eng: 'freedom_raw', fa: 'نیاز به آزادی'},
19
+ L4_2: {eng: 'freedom_percentage'},
20
+ L5_1: {eng: 'fun_raw', fa: 'نیاز به تفریح'},
21
+ L5_2: {eng: 'fun_percentage'},
22
+ };
23
+
24
+ profileSpec = {
25
+ /* "sample" determines some important info about the sample and profile */
26
+ /* Default prerequisites: 1. gender, 2. age, 3. education */
27
+ /* "prerequisites" is synonym to "fields" in our program */
28
+ sample: {
29
+ name: "پرسشنامه نیازهای اساسی گلاسر (BNQ)" /* Name of the sample */,
30
+ multiProfile: false /* Whether the sample has multiple profiles or not */,
31
+ questions: false /* Determines whether to get questions from inital dataset or not */,
32
+ defaultFields: true /* Determines whether to have default prerequisites in the profile or not */,
33
+ fields: [] /* In case you want to get some additional fields and show in the profile */,
34
+ },
35
+ /* "profile" determines the dimensions of the drawn profile (to be used in svg tag viewbox) */
36
+ /* calculating its dimensions carefully is of great importance */
37
+ profile: {
38
+ get dimensions() {
39
+ return {
40
+ width: 468 + 2 * this.padding.x,
41
+ height: 391 + 2 * this.padding.y,
42
+ }
43
+ },
44
+ padding: {
45
+ x: 218,
46
+ y: 162,
47
+ },
48
+ },
49
+ /* "raw" is the general term used for total data element in the profile */
50
+ /* "labels" part which has to be provided for each profile */
51
+ labels: Object.values(this.labels),
52
+ };
53
+
54
+ constructor(dataset, options, config = {}) {
55
+ super();
56
+ this._init(dataset, options, config);
57
+ }
58
+
59
+ _calcContext() {
60
+ const {
61
+ spec: { parameters: spec },
62
+ dataset,
63
+ } = this;
64
+ const startAngle = polygonDefaultStart(5)
65
+ const rs = [
66
+ {r: 157.5, points: polygonXY(0, 0, Array(5).fill(157.5), startAngle)},
67
+ {r: 112.5, points: polygonXY(0, 0, Array(5).fill(112.5), startAngle)},
68
+ {r: 67.5, points: polygonXY(0, 0, Array(5).fill(67.5), startAngle)},
69
+ ]
70
+ const points = []
71
+ const scores = {}
72
+ dataset.score.forEach((score, index) => {
73
+ if(index % 2 !== 0) return
74
+ points.push(157.5 * score.mark / 35)
75
+ scores[score.label.eng.replace('_raw', '')] = {mark: score.mark, label: score.label.fa, percentage: Math.round(dataset.score[index + 1].mark * 100)}
76
+ })
77
+ const polygonDots = polygonXY(0,0, points, startAngle)
78
+ const polygonArea = polygonDots.map(points => `${round(points[0], 6)},${round(points[1], 6)}`).join(' ')
79
+ return [{ rs, polygonDots, polygonArea, scores }];
80
+ }
81
+ }
82
+
83
+ module.exports = BNQ93;
@@ -7,31 +7,31 @@ class MMAFD9A extends Profile {
7
7
 
8
8
  // Labels of the sample
9
9
  labels = {
10
- L1: { eng: "problem_solving_raw", fr: "حل مسأله", CoP: 2.2},
10
+ L1: { eng: "problem_solving_raw", fr: "حل مسأله", CoP: 2.2, max: 24},
11
11
  L1_2 : {eng: "problem_solving_avg"},
12
12
  L1_3 : {eng: "problem_solving_report"},
13
13
 
14
- L2: { eng: "roles_raw", fr: "نقش‌ها", CoP: 2.3},
14
+ L2: { eng: "roles_raw", fr: "نقش‌ها", CoP: 2.3, max: 44},
15
15
  L2_2 : {eng: "roles_avg"},
16
16
  L2_3 : {eng: "roles_report"},
17
17
 
18
- L3: { eng: "affective_responsiveness_raw", fr: "پاسخ‌دهی عاطفی", CoP: 2.2},
18
+ L3: { eng: "affective_responsiveness_raw", fr: "پاسخ‌دهی عاطفی", CoP: 2.2, max: 24},
19
19
  L3_2 : {eng: "affective_responsiveness_avg"},
20
20
  L3_3 : {eng: "affective_responsiveness_report"},
21
21
 
22
- L4: { eng: "communication_raw", fr: "ارتباط", CoP: 2.2},
22
+ L4: { eng: "communication_raw", fr: "ارتباط", CoP: 2.2, max: 36},
23
23
  L4_2 : {eng: "communication_avg"},
24
24
  L4_3 : {eng: "communication_report"},
25
25
 
26
- L5: { eng: "affective_involvement_raw", fr: "مشارکت عاطفی", CoP: 2.1},
26
+ L5: { eng: "affective_involvement_raw", fr: "مشارکت عاطفی", CoP: 2.1, max: 28},
27
27
  L5_2 : {eng: "affective_involvement_avg"},
28
28
  L5_3 : {eng: "affective_involvement_report"},
29
29
 
30
- L6: { eng: "behaviour_control_raw", fr: "کنترل رفتار", CoP: 1.9},
30
+ L6: { eng: "behaviour_control_raw", fr: "کنترل رفتار", CoP: 1.9, max: 36},
31
31
  L6_2 : {eng: "behaviour_control_avg"},
32
32
  L6_3 : {eng: "behaviour_control_report"},
33
33
 
34
- L7: { eng: "overall_performance_raw", fr: "کارکرد عمومی", CoP: 2},
34
+ L7: { eng: "overall_performance_raw", fr: "کارکرد عمومی", CoP: 2, max: 48},
35
35
  L7_2 : {eng: "overall_performance_avg"},
36
36
  L7_3 : {eng: "overall_performance_report"},
37
37
  };
@@ -0,0 +1,25 @@
1
+ {{#> layout}}
2
+ <defs>
3
+ {{#each scores as |score|}}
4
+ <linearGradient id="{{details.label.eng}}_gradient" x1="140" y1="0" x2="0" y2="140" gradientUnits="userSpaceOnUse">
5
+ <stop stop-color="{{details.label.secondary}}" />
6
+ <stop offset="0.5" stop-color="{{details.label.primary}}" />
7
+ <stop offset="1" stop-color="{{details.label.primary}}" />
8
+ </linearGradient>
9
+ {{/each}}
10
+ </defs>
11
+ <g transform="translate({{spec.profile.padding.x}}, {{spec.profile.padding.y}})">
12
+ {{#each scores as |score|}}
13
+ <g transform="translate({{math 70 '+' (math 228.5 '*' @index)}}, 70)">
14
+ {{gauge 70 (math 70 '*' 0.7) (object tl=6 tr=6 bl=6 br=6) (object start=circle.angles.start end=circle.angles.end) direction fill='#F1F5F9'}}
15
+ {{gauge 70 (math 70 '*' 0.7) (object tl=6 tr=0 bl=6 br=0) (object start=circle.angles.start end=zeta) direction fill=fill}}
16
+ <text y="-10" text-anchor="middle" dy=".3em" font-size="28" font-weight="500" fill="{{details.label.primary}}">٪{{percentage}}</text>
17
+ <text y="20" text-anchor="middle" dy=".3em" font-size="18" font-weight="500" fill="{{details.label.primary}}">{{details.mark}}</text>
18
+ <text y="-68" x="-12" text-anchor="middle" dy=".75em" font-size="14" font-weight="500" fill="#64748B">0</text>
19
+ <text y="-14" x="-60" text-anchor="middle" dy=".3em" font-size="14" font-weight="500" fill="#64748B">25</text>
20
+ <text y="86" x="0" text-anchor="middle" dy="1em" font-size="16" font-weight="500" fill="{{details.label.primary}}">{{details.label.fa}}</text>
21
+ </g>
22
+ {{/each}}
23
+ </g>
24
+
25
+ {{/layout}}
@@ -0,0 +1,73 @@
1
+ {{#> layout}}
2
+
3
+ <g transform="translate({{spec.profile.padding.x}}, {{spec.profile.padding.y}})">
4
+ <g transform="translate(236.5, 211.5)">
5
+ {{#each rs as | item index |}}
6
+ {{#if (boolean index '===' 0)}}
7
+ <g>
8
+ {{#each item.points as | point index |}}
9
+ <line x1="0" y1="0" x2="{{point.[0]}}" y2="{{point.[1]}}" stroke="#E2E8F0" stroke-width="1" />
10
+ {{/each}}
11
+ </g>
12
+ {{/if}}
13
+ <g>
14
+ <circle cx="0" cy="0" r="{{item.r}}" stroke="#E2E8F0" stroke-width="1" fill="none" />
15
+ {{#each item.points as | point index |}}
16
+ <circle cx="{{point.[0]}}" cy="{{point.[1]}}" r="2.5" fill="#E2E8F0" />
17
+ {{/each}}
18
+ </g>
19
+ {{/each}}
20
+ <circle cx="0" cy="0" r="22.5" stroke="#E2E8F0" stroke-width="1" fill="none" />
21
+ <circle cx="0" cy="0" r="2.5" fill="#E2E8F0" />
22
+ <g>
23
+ {{#each polygonDots as | point index |}}
24
+ <circle cx="{{point.[0]}}" cy="{{point.[1]}}" r="3.5" fill="#4F46E5" />
25
+ {{/each}}
26
+ </g>
27
+ <polygon points="{{polygonArea}}" fill="#4F46E533" stroke="#4F46E5" stroke-width="3" />
28
+ <text x="0" y="169" dy=".35em" text-anchor="middle" font-size="10" font-weight="400" fill="#94A3B8">35</text>
29
+ <g transform="translate(-30, -210.5)">
30
+ <g transform="translate(30, 0)">
31
+ <rect x="0" y="0" width="32" height="18" fill="#F1F5F9" rx="4" stroke="#E2E8F0" stroke-width="1" />
32
+ <text x="16" y="0" dy="1.1em" text-anchor="middle" font-size="12" font-weight="400" fill="#64748B">٪{{scores.survival.percentage}}</text>
33
+ <text x="-6" y="0" dy="0.9em" text-anchor="start" font-size="16" font-weight="700" fill="#4F46E5">{{scores.survival.mark}}</text>
34
+ </g>
35
+ <text x="30" y="17" dy="1em" text-anchor="middle" font-size="14" font-weight="500" fill="#475569">{{scores.survival.label}}</text>
36
+ </g>
37
+ <g transform="translate(165.5, -107.5)">
38
+ <g transform="translate(0, 0)">
39
+ <rect x="0" y="0" width="32" height="18" fill="#F1F5F9" rx="4" stroke="#E2E8F0" stroke-width="1" />
40
+ <text x="16" y="0" dy="1.1em" text-anchor="middle" font-size="12" font-weight="400" fill="#64748B">٪{{scores.love_belonging.percentage}}</text>
41
+ <text x="38" y="0" dy="0.9em" text-anchor="end" font-size="16" font-weight="700" fill="#4F46E5">{{scores.love_belonging.mark}}</text>
42
+ </g>
43
+ <text x="0" y="17" dy="1em" text-anchor="end" font-size="14" font-weight="500" fill="#475569">نیاز به عشق</text>
44
+ <text x="0" y="17" dy="2.5em" text-anchor="end" font-size="14" font-weight="500" fill="#475569">و تعلق</text>
45
+ </g>
46
+ <g transform="translate(96.5, 141.5)">
47
+ <g transform="translate(0, 17)">
48
+ <rect x="0" y="0" width="32" height="18" fill="#F1F5F9" rx="4" stroke="#E2E8F0" stroke-width="1" />
49
+ <text x="16" y="0" dy="1.1em" text-anchor="middle" font-size="12" font-weight="400" fill="#64748B">٪{{scores.power.percentage}}</text>
50
+ <text x="38" y="0" dy="0.9em" text-anchor="end" font-size="16" font-weight="700" fill="#4F46E5">{{scores.power.mark}}</text>
51
+ </g>
52
+ <text x="0" y="0" dy=".7em" text-anchor="end" font-size="14" font-weight="500" fill="#475569">نیاز به قدرت</text>
53
+ </g>
54
+ <g transform="translate(-101.5, 141.5)">
55
+ <g transform="translate(-32, 17)">
56
+ <rect x="0" y="0" width="32" height="18" fill="#F1F5F9" rx="4" stroke="#E2E8F0" stroke-width="1" />
57
+ <text x="16" y="0" dy="1.1em" text-anchor="middle" font-size="12" font-weight="400" fill="#64748B">٪{{scores.freedom.percentage}}</text>
58
+ <text x="-6" y="0" dy="0.9em" text-anchor="start" font-size="16" font-weight="700" fill="#4F46E5">{{scores.freedom.mark}}</text>
59
+ </g>
60
+ <text x="0" y="0" dy=".7em" text-anchor="start" font-size="14" font-weight="500" fill="#475569">نیاز به آزادی</text>
61
+ </g>
62
+ <g transform="translate(-165.5, -87.5)">
63
+ <g transform="translate(-32, 0)">
64
+ <rect x="0" y="0" width="32" height="18" fill="#F1F5F9" rx="4" stroke="#E2E8F0" stroke-width="1" />
65
+ <text x="16" y="0" dy="1.1em" text-anchor="middle" font-size="12" font-weight="400" fill="#64748B">٪{{scores.fun.percentage}}</text>
66
+ <text x="-6" y="0" dy="0.9em" text-anchor="start" font-size="16" font-weight="700" fill="#4F46E5">{{scores.fun.mark}}</text>
67
+ </g>
68
+ <text x="0" y="17" dy="1em" text-anchor="start" font-size="14" font-weight="500" fill="#475569">نیاز به تفریح</text>
69
+ </g>
70
+ </g>
71
+ </g>
72
+
73
+ {{/layout}}