@baravak/risloo-profile-cli 3.1.1 → 3.1.2

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.
@@ -6,16 +6,16 @@ class JPFQ93 extends Profile {
6
6
 
7
7
  // Labels of the sample
8
8
  labels = {
9
- L1: { eng: "identity", fr: "هویت", fill:"#8B5CF6 ", background:"#EDE9FE", width: 69},
10
- L2: { eng: "intimacy", fr: "صمیمیت" , fill:"#8B5CF6 ", background:"#EDE9FE", width: 33},
11
- L3: { eng: "empathy", fr: "همدلی" , fill:"#8B5CF6 ", background:"#EDE9FE", width: 33},
12
- L4: { eng: "self_direction", fr: "خودراهبری" , fill:"#8B5CF6 ", background:"#EDE9FE", width: 30},
9
+ L1: { eng: "identity", fr: "هویت", fill:"#8B5CF6 ", background:"#EDE9FE", fontColor:"#7C3AED", width: 69},
10
+ L2: { eng: "intimacy", fr: "صمیمیت" , fill:"#8B5CF6 ", background:"#EDE9FE", fontColor:"#7C3AED", width: 33},
11
+ L3: { eng: "empathy", fr: "همدلی" , fill:"#8B5CF6 ", background:"#EDE9FE", fontColor:"#7C3AED", width: 33},
12
+ L4: { eng: "self_direction", fr: "خودراهبری" , fill:"#8B5CF6 ", background:"#EDE9FE", fontColor:"#7C3AED", width: 30},
13
13
 
14
- L5: { eng: "psychoticism", fr: "سایکوزگرایی", fill:"#EC4899 ", background:"#FCE7F3", width: 33},
15
- L6: { eng: "detachment", fr: "دل‌بریدگی", fill:"#EC4899 ", background:"#FCE7F3", width: 27},
16
- L7: { eng: "disinhibition", fr: "مهارگسیختگی", fill:"#EC4899 ", background:"#FCE7F3", width: 66},
17
- L8: { eng: "negative_affectivity", fr: "عاطفه‌پذیری منفی", fill:"#EC4899 ", background:"#FCE7F3", width: 45},
18
- L9: { eng: "antagonism", fr: "تضادورزی", fill:"#EC4899 ", background:"#FCE7F3", width: 42},
14
+ L5: { eng: "psychoticism", fr: "سایکوزگرایی", fill:"#EC4899 ", background:"#FCE7F3", fontColor:"#DB2777", width: 33},
15
+ L6: { eng: "detachment", fr: "دل‌بریدگی", fill:"#EC4899 ", background:"#FCE7F3", fontColor:"#DB2777", width: 27},
16
+ L7: { eng: "disinhibition", fr: "مهارگسیختگی", fill:"#EC4899 ", background:"#FCE7F3", fontColor:"#DB2777", width: 66},
17
+ L8: { eng: "negative_affectivity", fr: "عاطفه‌پذیری منفی", fill:"#EC4899 ", background:"#FCE7F3", fontColor:"#DB2777", width: 45},
18
+ L9: { eng: "antagonism", fr: "تضادورزی", fill:"#EC4899 ", background:"#FCE7F3", fontColor:"#DB2777", width: 42},
19
19
  };
20
20
 
21
21
  profileSpec = {
@@ -34,13 +34,13 @@ class JPFQ93 extends Profile {
34
34
  profile: {
35
35
  get dimensions() {
36
36
  return {
37
- width: 702 + 2 * this.padding.x,
38
- height: 450 + 2 * this.padding.y,
37
+ width: 735 + 2 * this.padding.x,
38
+ height: 456 + 2 * this.padding.y,
39
39
  };
40
40
  },
41
41
  padding: {
42
- x: 120.5,
43
- y: 152,
42
+ x: 84,
43
+ y: 89,
44
44
  },
45
45
  },
46
46
  /* "labels" part which has to be provided for each profile */
@@ -1,4 +1,7 @@
1
1
  const { Profile, FS } = require("../Profile");
2
+ const JPFQ93 = require("./JPFQ93");
3
+ const FACES93 = require("./FACES93");
4
+ const Handlebars = require("handlebars");
2
5
 
3
6
  class PMCIEF93 extends Profile {
4
7
  // Number of pages
@@ -6,9 +9,100 @@ class PMCIEF93 extends Profile {
6
9
 
7
10
  // Labels of the sample
8
11
  labels = {
9
- L1: { eng: "me_and_my_partner", fr: "رابطه با شریک جنسی / همسر" },
10
- L2: { eng: "me_and_my_children", fr: "رابطه با فرزندان" },
11
- L3: { eng: "me_and_my_parents", fr: "رابطه با والدین" },
12
+ L1 : {"eng" : "axis_2_raw", "fr" : ""},
13
+ L2 : {"eng" : "axis_2_percentage", "fr" : ""},
14
+
15
+ L3 : {"eng" : "axis_3_raw", "fr" : ""},
16
+ L4 : {"eng" : "axis_3_percentage", "fr" : ""},
17
+
18
+ L5 : {"eng" : "axis_3_selection_raw", "fr" : "", max:76},
19
+ L6 : {"eng" : "axis_3_selection_percentage", "fr" : ""},
20
+
21
+ L7 : {"eng" : "axis_3_selection_demographic_raw", "fr" : "جمعیت‌شناختی", max:14},
22
+ L8 : {"eng" : "axis_3_selection_demographic_percentage", "fr" : ""},
23
+ L9 : {"eng" : "axis_3_selection_partner_family_raw", "fr" : "خانواده مقابل", max:8},
24
+ L10 : {"eng" : "axis_3_selection_partner_family_percentage", "fr" : ""},
25
+ L11 : {"eng" : "axis_3_selection_belief_raw", "fr" : "شناختی - اعتقادی", max:8},
26
+ L12 : {"eng" : "axis_3_selection_belief_percentage", "fr" : ""},
27
+ L13 : {"eng" : "axis_3_selection_personality_raw", "fr" : "شخصیتی - اخلاقی", max:34},
28
+ L14 : {"eng" : "axis_3_selection_personality_percentage", "fr" : ""},
29
+ L15 : {"eng" : "axis_3_selection_negative_raw", "fr" : "سلبی", max:16},
30
+ L16 : {"eng" : "axis_3_selection_negative_percentage", "fr" : ""},
31
+
32
+ L17 : {"eng" : "axis_3_intention_raw", "fr" : ""},
33
+ L18 : {"eng" : "axis_3_intention_percentage", "fr" : ""},
34
+
35
+ L19 : {"eng" : "mibq_raw", "fr" : "", max:216},
36
+ L20 : {"eng" : "mibq_percentage", "fr" : ""},
37
+ L21 : {"eng" : "mibq_unrealistic_expectations", "fr" : "توقعات\nنامعقول", max:76, bg:'#EAB308', color: '#A16207'},
38
+ L22 : {"eng" : "mibq_negativity", "fr" : "منفی‌بافی", max:35, bg:'#6366F1', color: '#4F46E5'},
39
+ L23 : {"eng" : "mibq_extreme_optimism", "fr" : "خوش‌بینی\nافراطی", max:52, bg:'#14B8A6', color: '#0D9488'},
40
+ L24 : {"eng" : "mibq_perfectionism", "fr" : "کامل\nخواهی", max:36, bg:'#A855F7', color: '#9333EA'},
41
+ L25 : {"eng" : "mibq_negative_self_belief", "fr" : "خودباوری\nمنفی", max:20, bg:'#F43F5E', color: '#E11D48'},
42
+
43
+ L26 : {"eng" : "axis_5_raw", "fr" : ""},
44
+ L27 : {"eng" : "axis_5_percentage", "fr" : ""},
45
+ L28 : {"eng" : "axis_5_spirituality", "fr" : "معنویت", color:"#007BA4"},
46
+ L29 : {"eng" : "axis_5_control", "fr" : "کنترل", color:"#F59E0B"},
47
+ L30 : {"eng" : "axis_5_pleasure", "fr" : "لذت", color:"#EC4899"},
48
+ L31 : {"eng" : "axis_5_safety", "fr" : "امنیت", color:"#10B981"},
49
+ L32 : {"eng" : "axis_5_social_status", "fr" : "منزلت اجتماعی", color:"#A78BFA"},
50
+
51
+ L33 : {"eng" : "faces_a", "fr" : ""},
52
+ L34 : {"eng" : "faces_b", "fr" : ""},
53
+ L35 : {"eng" : "faces_c", "fr" : ""},
54
+ L36 : {"eng" : "faces_d", "fr" : ""},
55
+ L37 : {"eng" : "faces_e", "fr" : ""},
56
+ L38 : {"eng" : "faces_f", "fr" : ""},
57
+ L39 : {"eng" : "faces_communication", "fr" : ""},
58
+ L40 : {"eng" : "faces_satisfaction", "fr" : ""},
59
+ L41 : {"eng" : "faces_cohesion", "fr" : ""},
60
+ L42 : {"eng" : "faces_flexibility", "fr" : ""},
61
+ L43 : {"eng" : "faces_interpretation", "fr" : ""},
62
+
63
+ L44 : {"eng" : "pastq_raw", "fr" : "", max:140},
64
+ L45 : {"eng" : "pastq_authoritarian_family", "fr" : "خانواده سخت‌گیر", max:32},
65
+ L46 : {"eng" : "pastq_authoritative_family", "fr" : "خانواده مقتدر", max:44},
66
+ L47 : {"eng" : "pastq_permissive_family", "fr" : "سهل‌گیر", max:12},
67
+ L48 : {"eng" : "pastq_neglectful_family", "fr" : "بی‌تفاوت", max:12},
68
+ L49 : {"eng" : "pastq_family_structure", "fr" : "شاخص ساخت خانوادگی", max:28},
69
+
70
+ L50 : {"eng" : "jpfq_identity", "fr" : ""},
71
+ L51 : {"eng" : "jpfq_self_direction", "fr" : ""},
72
+ L52 : {"eng" : "jpfq_empathy", "fr" : ""},
73
+ L53 : {"eng" : "jpfq_intimacy", "fr" : ""},
74
+ L54 : {"eng" : "jpfq_psychoticism", "fr" : ""},
75
+ L55 : {"eng" : "jpfq_detachment", "fr" : ""},
76
+ L56 : {"eng" : "jpfq_disinhibition", "fr" : ""},
77
+ L57 : {"eng" : "jpfq_negative_affectivity", "fr" : ""},
78
+ L58 : {"eng" : "jpfq_antagonism", "fr" : ""},
79
+
80
+ L59 : {"eng" : "axis_7_axis7_2_raw", "fr" : ""},
81
+ L60 : {"eng" : "axis_7_axis7_2_percentage", "fr" : ""},
82
+ L61 : {"eng" : "axis_7_axis7_2_hope", "fr" : "امید", max:24},
83
+ L62 : {"eng" : "axis_7_axis7_2_foresight", "fr" : "آینده‌نگری", max:16},
84
+ L63 : {"eng" : "axis_7_axis7_2_proposing", "fr" : "نقشه زندگی", max:28},
85
+ L64 : {"eng" : "axis_7_axis7_2_competency", "fr" : "شایستگی", max:24},
86
+ L65 : {"eng" : "axis_7_axis7_2_identity", "fr" : "هویت", max: 48},
87
+ L66 : {"eng" : "axis_7_axis7_2_intimacy", "fr" : "صمیمت", max: 36},
88
+
89
+ L67 : {"eng" : "dswls_raw", "fr" : ""},
90
+ L68 : {"eng" : "dswls_percentage", "fr" : ""},
91
+
92
+ L69 : {"eng" : "axis_8_axis8_1_raw", "fr" : ""},
93
+ L70 : {"eng" : "axis_8_axis8_1_percentage", "fr" : ""},
94
+ L71 : {"eng" : "axis_8_axis8_1_physical_problem", "fr" : "مشکل جسمانی", max:28},
95
+ L72 : {"eng" : "axis_8_axis8_1_neurotic_problem", "fr" : "مشکل نوروتیک", max:28},
96
+ L73 : {"eng" : "axis_8_axis8_1_personality_disorder", "fr" : "اختلال شخصیت", max:24},
97
+
98
+ L74 : {"eng" : "alvvct_raw", "fr" : ""},
99
+ L75 : {"eng" : "alvvct_percentage", "fr" : ""},
100
+ L76 : {"eng" : "alvvct_theoretical", "fr" : "نظری"},
101
+ L77 : {"eng" : "alvvct_economic", "fr" : "اقتصادی"},
102
+ L78 : {"eng" : "alvvct_aesthetic", "fr" : "هنری"},
103
+ L79 : {"eng" : "alvvct_social", "fr" : "اجتماعی"},
104
+ L80 : {"eng" : "alvvct_political", "fr" : "سیاسی"},
105
+ L81 : {"eng" : "alvvct_religious", "fr" : "مذهبی"},
12
106
  };
13
107
 
14
108
  profileSpec = {
@@ -18,7 +112,7 @@ class PMCIEF93 extends Profile {
18
112
  sample: {
19
113
  name: "پرسشنامه ارزیابی مشاوره پیش از ازدواج فرم الف" /* Name of the sample */,
20
114
  multiProfile: false /* Whether the sample has multiple profiles or not */,
21
- questions: false /* Determines whether to get questions from inital dataset or not */,
115
+ questions: true /* Determines whether to get questions from inital dataset or not */,
22
116
  defaultFields: true /* Determines whether to have default prerequisites in the profile or not */,
23
117
  fields: ["family_role"] /* In case you want to get some additional fields and show in the profile */,
24
118
  },
@@ -32,8 +126,8 @@ class PMCIEF93 extends Profile {
32
126
  };
33
127
  },
34
128
  padding: {
35
- x: 20,
36
- y: 20,
129
+ x: 0,
130
+ y: 0,
37
131
  },
38
132
  },
39
133
  /* "labels" part which has to be provided for each profile */
@@ -47,17 +141,127 @@ class PMCIEF93 extends Profile {
47
141
 
48
142
  _calcContext() {
49
143
  const { dataset } = this;
144
+ const [JPFQ93_Context] = new JPFQ93(
145
+ {
146
+ score: Object.fromEntries(dataset.score.slice(49, 58).map((s) =>[s.label.eng, s.mark])),
147
+ fields: dataset.info.fields,
148
+ },
149
+ {},
150
+ {
151
+ items: {
152
+ offsetY: 19,
153
+ widthCoeff: 9,
154
+ label: {
155
+ offsetX: 9,
156
+ },
157
+ },
158
+ gaugeItems: {
159
+ offsetX: 46,
160
+ circle: {
161
+ R: 16.5,
162
+ r: 12,
163
+ },
164
+ },
165
+ labelsPrefix: "jpfq",
166
+ }
167
+ ).getTemplateEngineParams();
168
+ const axis_7_2_items = dataset.score.slice(58, 66)
169
+ const axis_7_2 = {
170
+ raw: axis_7_2_items[0],
171
+ percentage: axis_7_2_items[1],
172
+ items: axis_7_2_items.slice(2).map(i => {i.mark = i.mark || 0; return i})
173
+ }
174
+
175
+ const axis_8_1_items = dataset.score.slice(68, 73)
176
+ const axis_8_1 = {
177
+ raw: axis_8_1_items[0],
178
+ percentage: axis_8_1_items[1],
179
+ items: axis_8_1_items.slice(2).map(i => {i.mark = i.mark || 0; return i}),
180
+ rStart:FS.toRadians(-90),
181
+ rEnd:FS.toRadians(-90)
182
+ }
183
+ const dswls= {
184
+ raw: dataset.score[66],
185
+ percentage: dataset.score[67]
186
+ }
187
+
188
+ const alvvct_items = dataset.score.slice(73, 81)
189
+ const alvvct = {
190
+ raw: alvvct_items[0],
191
+ percentage: alvvct_items[1],
192
+ items:alvvct_items.slice(2)
193
+ }
194
+
195
+ const axis_3= {
196
+ raw:dataset.score[2],
197
+ percentage:dataset.score[3],
50
198
 
51
- // const items = dataset.score.map((data) => ({
52
- // label: data.label,
53
- // mark: data.mark,
54
- // coordinates: {
55
- // x: (data.mark.interaction - 6) * 25,
56
- // y: (data.mark.structure - 6) * 25,
57
- // },
58
- // }));
199
+ selection: {
200
+ raw:dataset.score[4],
201
+ percentage:dataset.score[5],
202
+ items: [dataset.score[6], dataset.score[8], dataset.score[10], dataset.score[12], dataset.score[14]]
203
+ }
204
+ }
205
+ dataset.questions.slice(26, 30).map(q => {
206
+ if(q.user_answered != '' && q.user_answered){
207
+ axis_3.selection.items[1].label.max += 2
208
+ axis_3.selection.raw.label.max += 2
209
+ }
210
+ })
211
+ const axis_3_intention = {
212
+ raw:dataset.score[16],
213
+ percentage:dataset.score[17],
214
+ }
59
215
 
60
- return [{ }];
216
+ const mibq_items = dataset.score.slice(18, 25)
217
+ const mibq = {
218
+ raw: mibq_items[0],
219
+ percentage: mibq_items[1],
220
+ items:mibq_items.slice(2)
221
+ }
222
+ const axis_5_items = dataset.score.slice(25, 32)
223
+ const axis_5 = {
224
+ raw: axis_5_items[0],
225
+ percentage: axis_5_items[1],
226
+ items:axis_5_items.slice(2)
227
+ }
228
+
229
+ const pastq_items = dataset.score.slice(43, 49)
230
+ const pastq = {
231
+ raw: pastq_items[0],
232
+ items:pastq_items.slice(1)
233
+ }
234
+
235
+
236
+ const [FACES93_Context_page1, FACES93_Context_page2] = new FACES93(
237
+ {
238
+ score: Object.fromEntries(dataset.score.slice(32, 43).map((s) =>[s.label.eng, s.mark])),
239
+ fields: dataset.info.fields,
240
+ },
241
+ {},
242
+ {
243
+ items: {
244
+ offsetY: 19,
245
+ widthCoeff: 9,
246
+ label: {
247
+ offsetX: 9,
248
+ },
249
+ },
250
+ gaugeItems: {
251
+ offsetX: 46,
252
+ circle: {
253
+ R: 16.5,
254
+ r: 12,
255
+ },
256
+ },
257
+ labelsPrefix: "faces",
258
+ }
259
+ ).getTemplateEngineParams();
260
+ const axis_2 = {
261
+ raw: dataset.score[0],
262
+ percentage: dataset.score[1]
263
+ }
264
+ return [{ axis_2, pastq, FACES93_Context_page2, FACES93_Context_page1, axis_5, mibq, axis_3_intention, axis_3, alvvct, dswls, axis_8_1, axis_7_2, JPFQ93_Context }];
61
265
  }
62
266
  }
63
267
 
@@ -15,93 +15,6 @@
15
15
  </defs>
16
16
 
17
17
  <g transform="translate({{spec.profile.padding.[0].x}}, {{spec.profile.padding.[0].y}})">
18
- <g transform="translate(0, 320)">
19
- <text x="0" y="12.5" font-size="16" font-weight="600" fill="#3F3F46" text-anchor="middle" transform="rotate(-90)" xml:space="preserve">انعطاف‌پذیری: {{item.marks.flexibility}}</text>
20
- <g transform="translate(0, -170)">
21
- <text x="0" y="35" font-size="14" font-weight="400" fill="#71717A" text-anchor="start" transform="rotate(-90)">آشفته</text>
22
- </g>
23
- <g transform="translate(0, 160)">
24
- <text x="0" y="35" font-size="14" font-weight="400" fill="#71717A" text-anchor="start" transform="rotate(-90)">خشک</text>
25
- </g>
26
- <line x1="50" y1="206" x2="50" y2="-192" stroke="#3F3F46" stroke-width="2" marker-end="url(#marker1)" />
27
- </g>
28
- <g transform="translate(427.5, 0)">
29
- <text x="0" y="12.5" font-size="16" font-weight="600" fill="#3F3F46" text-anchor="middle" xml:space="preserve">انسجام: {{item.marks.cohesion}}</text>
30
- <text x="-215" y="35" font-size="14" font-weight="400" fill="#71717A" text-anchor="start">از هم گسسته</text>
31
- <text x="285" y="35" font-size="14" font-weight="400" fill="#71717A" text-anchor="start">در هم تنیده</text>
32
- <line x1="-295" y1="50" x2="305" y2="50" stroke="#3F3F46" stroke-width="2" marker-end="url(#marker2)" />
33
- </g>
34
- <g transform="translate(132, 126)">
35
- {{setVar "row1" (array "#FECACA" "#FEF9C3" "#FEF9C3" "#FEF9C3" "#FECACA")}}
36
- {{setVar "row2" (array "#FEF9C3" "#D1FAE5" "#D1FAE5" "#D1FAE5" "#FEF9C3")}}
37
- {{setVar "stops" (array 0 15 35 65 85 100)}}
38
- {{setVar "fills" (array row1 row2 row2 row2 row1)}}
39
- {{#forLoop 0 5 1}}
40
- {{#with i as | j |}}
41
- {{#forLoop 0 5 1}}
42
- <rect x="{{math j '*' 120}}" y="{{math i '*' 80}}" width="120" height="80" fill="{{lookup (lookup @root.fills j) i}}" />
43
- {{#if (boolean j '===' 4)}}
44
- <text x="-20" y="{{math (math i '*' 80) '+' 10}}" font-size="12" font-weight="400" text-anchor="start" fill="#71717A">{{lookup (reverse @root.stops) i}}</text>
45
- {{#if (boolean i '===' 4)}}
46
- <text x="-20" y="{{math (math i '+' 1) '*' 80}}" font-size="12" font-weight="400" text-anchor="start" fill="#71717A">{{lookup (reverse @root.stops) (math i '+' 1)}}</text>
47
- {{/if}}
48
- {{#unless @first}}
49
- <line x1="0" y1="{{math i '*' 80}}" x2="600" y2="{{math i '*' 80}}" stroke="#FFFFFF" />
50
- {{/unless}}
51
- {{/if}}
52
- {{#if (boolean (boolean i '===' 2) '&&' (boolean j '===' 2))}}
53
- <text x="{{math (math j '*' 120) '+' 60}}" y="{{math (math i '*' 80) '+' 40}}" font-size="14" font-weight="400" text-anchor="middle" fill="#A1A1AA" fill-opacity="0.6" dy="5">دمکراتیک</text>
54
- {{/if}}
55
- {{/forLoop}}
56
- {{#if (boolean j '!==' 0)}}
57
- <line x1="{{math j '*' 120}}" y1="0" x2="{{math j '*' 120}}" y2="400" stroke="#FFFFFF" />
58
- {{/if}}
59
- <text x="{{math j '*' 120}}" y="-20" font-size="12" font-weight="400" text-anchor="start" fill="#71717A">{{lookup @root.stops j}}</text>
60
- {{#if (boolean j '===' 4)}}
61
- <text x="{{math (math j '+' 1) '*' 120}}" y="-20" font-size="12" font-weight="400" text-anchor="start" fill="#71717A">{{lookup @root.stops (math j '+' 1)}}</text>
62
- {{/if}}
63
- {{/with}}
64
- {{/forLoop}}
65
- <rect x="240" y="160" width="120" height="80" fill="none" stroke="#000000" stroke-opacity="0.15" stroke-dasharray="4" />
66
-
67
- <line x1="240" y1="160" x2="-30" y2="-20" stroke="#000000" stroke-opacity="0.15" stroke-dasharray="5" marker-end="url(#pointer1)" />
68
- <line x1="240" y1="240" x2="-30" y2="420" stroke="#000000" stroke-opacity="0.15" stroke-dasharray="4" marker-end="url(#pointer2)" />
69
- <line x1="360" y1="160" x2="630" y2="-20" stroke="#000000" stroke-opacity="0.15" stroke-dasharray="4" marker-end="url(#pointer3)" />
70
- <line x1="360" y1="240" x2="630" y2="420" stroke="#000000" stroke-opacity="0.15" stroke-dasharray="4" marker-end="url(#pointer4)"/>
71
-
72
- <g transform="translate(-50, -33.35)">
73
- <text x="0" y="0" font-size="14" font-weight="400" text-anchor="start" fill="#A1A1AA" transform="rotate({{math (lookup angles 0) '+' 180}})" dy="3.5">بی‌خیال</text>
74
- </g>
75
- <g transform="translate(-50, 433.35)">
76
- <text x="0" y="0" font-size="14" font-weight="400" text-anchor="start" fill="#A1A1AA" transform="rotate({{math (lookup angles 1) '+' 180}})" dy="3.5">طردکننده</text>
77
- </g>
78
- <g transform="translate(650, -33.35)">
79
- <text x="0" y="0" font-size="14" font-weight="400" text-anchor="end" fill="#A1A1AA" transform="rotate({{lookup angles 2}})" dy="3.5">سهل‌گیر</text>
80
- </g>
81
- <g transform="translate(650, 433.35)">
82
- <text x="0" y="0" font-size="14" font-weight="400" text-anchor="end" fill="#A1A1AA" transform="rotate({{lookup angles 3}})" dy="3.5">مستبد</text>
83
- </g>
84
-
85
- <g transform="translate(0, 400)">
86
- <g transform="translate({{item.coords.x}}, -{{item.coords.y}})">
87
- <circle cx="0" cy="0" r="2.5" fill="black" />
88
- <circle cx="0" cy="0" r="7.5" fill="black" fill-opacity="0.3" />
89
- </g>
90
- </g>
91
- </g>
92
- <g transform="translate(578.5, 586)">
93
- <g transform="translate(0, 0)">
94
- <rect x="0" y="0" width="24" height="16" fill="#FECACA" />
95
- <text x="-10" y="8" font-size="14" font-weight="400" fill="#71717A" text-anchor="start" dy="3">نامتعادل</text>
96
- </g>
97
- <g transform="translate(-124, 0)">
98
- <rect x="0" y="0" width="24" height="16" fill="#FEF9C3" />
99
- <text x="-10" y="8" font-size="14" font-weight="400" fill="#71717A" text-anchor="start" dy="3">نیمه متعادل</text>
100
- </g>
101
- <g transform="translate(-268, 0)">
102
- <rect x="0" y="0" width="24" height="16" fill="#D1FAE5" />
103
- <text x="-10" y="8" font-size="14" font-weight="400" fill="#71717A" text-anchor="start" dy="3">متعادل</text>
104
- </g>
105
- </g>
18
+ {{> FACES93_1_partial}}
106
19
  </g>
107
20
  {{/layout}}
@@ -0,0 +1,89 @@
1
+ {{setVar "angles" (array -146.3 146.3 -33.7 33.7)}}
2
+ <g transform="translate(0, 320)">
3
+ <text x="0" y="12.5" font-size="16" font-weight="600" fill="#3F3F46" text-anchor="middle" transform="rotate(-90)" xml:space="preserve">انعطاف‌پذیری: {{item.marks.flexibility}}</text>
4
+ <g transform="translate(0, -170)">
5
+ <text x="0" y="35" font-size="14" font-weight="400" fill="#71717A" text-anchor="start" transform="rotate(-90)">آشفته</text>
6
+ </g>
7
+ <g transform="translate(0, 160)">
8
+ <text x="0" y="35" font-size="14" font-weight="400" fill="#71717A" text-anchor="start" transform="rotate(-90)">خشک</text>
9
+ </g>
10
+ <line x1="50" y1="206" x2="50" y2="-192" stroke="#3F3F46" stroke-width="2" marker-end="url(#marker1)" />
11
+ </g>
12
+ <g transform="translate(427.5, 0)">
13
+ <text x="0" y="12.5" font-size="16" font-weight="600" fill="#3F3F46" text-anchor="middle" xml:space="preserve">انسجام: {{item.marks.cohesion}}</text>
14
+ <text x="-215" y="35" font-size="14" font-weight="400" fill="#71717A" text-anchor="start">از هم گسسته</text>
15
+ <text x="285" y="35" font-size="14" font-weight="400" fill="#71717A" text-anchor="start">در هم تنیده</text>
16
+ <line x1="-295" y1="50" x2="305" y2="50" stroke="#3F3F46" stroke-width="2" marker-end="url(#marker2)" />
17
+ </g>
18
+ <g transform="translate(132, 126)">
19
+ {{setVar "row1" (array "#FECACA" "#FEF9C3" "#FEF9C3" "#FEF9C3" "#FECACA")}}
20
+ {{setVar "row2" (array "#FEF9C3" "#D1FAE5" "#D1FAE5" "#D1FAE5" "#FEF9C3")}}
21
+ {{setVar "stops" (array 0 15 35 65 85 100)}}
22
+ {{setVar "fills" (array row1 row2 row2 row2 row1)}}
23
+ {{#forLoop 0 5 1}}
24
+ {{#with i as | j |}}
25
+ {{#forLoop 0 5 1}}
26
+ <rect x="{{math j '*' 120}}" y="{{math i '*' 80}}" width="120" height="80" fill="{{lookup (lookup @root.fills j) i}}" />
27
+ {{#if (boolean j '===' 4)}}
28
+ <text x="-20" y="{{math (math i '*' 80) '+' 10}}" font-size="12" font-weight="400" text-anchor="start" fill="#71717A">{{lookup (reverse @root.stops) i}}</text>
29
+ {{#if (boolean i '===' 4)}}
30
+ <text x="-20" y="{{math (math i '+' 1) '*' 80}}" font-size="12" font-weight="400" text-anchor="start" fill="#71717A">{{lookup (reverse @root.stops) (math i '+' 1)}}</text>
31
+ {{/if}}
32
+ {{#unless @first}}
33
+ <line x1="0" y1="{{math i '*' 80}}" x2="600" y2="{{math i '*' 80}}" stroke="#FFFFFF" />
34
+ {{/unless}}
35
+ {{/if}}
36
+ {{#if (boolean (boolean i '===' 2) '&&' (boolean j '===' 2))}}
37
+ <text x="{{math (math j '*' 120) '+' 60}}" y="{{math (math i '*' 80) '+' 40}}" font-size="14" font-weight="400" text-anchor="middle" fill="#A1A1AA" fill-opacity="0.6" dy="5">دمکراتیک</text>
38
+ {{/if}}
39
+ {{/forLoop}}
40
+ {{#if (boolean j '!==' 0)}}
41
+ <line x1="{{math j '*' 120}}" y1="0" x2="{{math j '*' 120}}" y2="400" stroke="#FFFFFF" />
42
+ {{/if}}
43
+ <text x="{{math j '*' 120}}" y="-20" font-size="12" font-weight="400" text-anchor="start" fill="#71717A">{{lookup @root.stops j}}</text>
44
+ {{#if (boolean j '===' 4)}}
45
+ <text x="{{math (math j '+' 1) '*' 120}}" y="-20" font-size="12" font-weight="400" text-anchor="start" fill="#71717A">{{lookup @root.stops (math j '+' 1)}}</text>
46
+ {{/if}}
47
+ {{/with}}
48
+ {{/forLoop}}
49
+ <rect x="240" y="160" width="120" height="80" fill="none" stroke="#000000" stroke-opacity="0.15" stroke-dasharray="4" />
50
+
51
+ <line x1="240" y1="160" x2="-30" y2="-20" stroke="#000000" stroke-opacity="0.15" stroke-dasharray="5" marker-end="url(#pointer1)" />
52
+ <line x1="240" y1="240" x2="-30" y2="420" stroke="#000000" stroke-opacity="0.15" stroke-dasharray="4" marker-end="url(#pointer2)" />
53
+ <line x1="360" y1="160" x2="630" y2="-20" stroke="#000000" stroke-opacity="0.15" stroke-dasharray="4" marker-end="url(#pointer3)" />
54
+ <line x1="360" y1="240" x2="630" y2="420" stroke="#000000" stroke-opacity="0.15" stroke-dasharray="4" marker-end="url(#pointer4)"/>
55
+
56
+ <g transform="translate(-50, -33.35)">
57
+ <text x="0" y="0" font-size="14" font-weight="400" text-anchor="start" fill="#A1A1AA" transform="rotate({{math (lookup angles 0) '+' 180}})" dy="3.5">بی‌خیال</text>
58
+ </g>
59
+ <g transform="translate(-50, 433.35)">
60
+ <text x="0" y="0" font-size="14" font-weight="400" text-anchor="start" fill="#A1A1AA" transform="rotate({{math (lookup angles 1) '+' 180}})" dy="3.5">طردکننده</text>
61
+ </g>
62
+ <g transform="translate(650, -33.35)">
63
+ <text x="0" y="0" font-size="14" font-weight="400" text-anchor="end" fill="#A1A1AA" transform="rotate({{lookup angles 2}})" dy="3.5">سهل‌گیر</text>
64
+ </g>
65
+ <g transform="translate(650, 433.35)">
66
+ <text x="0" y="0" font-size="14" font-weight="400" text-anchor="end" fill="#A1A1AA" transform="rotate({{lookup angles 3}})" dy="3.5">مستبد</text>
67
+ </g>
68
+
69
+ <g transform="translate(0, 400)">
70
+ <g transform="translate({{item.coords.x}}, -{{item.coords.y}})">
71
+ <circle cx="0" cy="0" r="2.5" fill="black" />
72
+ <circle cx="0" cy="0" r="7.5" fill="black" fill-opacity="0.3" />
73
+ </g>
74
+ </g>
75
+ </g>
76
+ <g transform="translate(578.5, 586)">
77
+ <g transform="translate(0, 0)">
78
+ <rect x="0" y="0" width="24" height="16" fill="#FECACA" />
79
+ <text x="-10" y="8" font-size="14" font-weight="400" fill="#71717A" text-anchor="start" dy="3">نامتعادل</text>
80
+ </g>
81
+ <g transform="translate(-124, 0)">
82
+ <rect x="0" y="0" width="24" height="16" fill="#FEF9C3" />
83
+ <text x="-10" y="8" font-size="14" font-weight="400" fill="#71717A" text-anchor="start" dy="3">نیمه متعادل</text>
84
+ </g>
85
+ <g transform="translate(-268, 0)">
86
+ <rect x="0" y="0" width="24" height="16" fill="#D1FAE5" />
87
+ <text x="-10" y="8" font-size="14" font-weight="400" fill="#71717A" text-anchor="start" dy="3">متعادل</text>
88
+ </g>
89
+ </g>
@@ -9,42 +9,11 @@
9
9
 
10
10
  <g transform="translate({{spec.profile.padding.[1].x}}, {{spec.profile.padding.[1].y}})">
11
11
  <g transform="translate({{math spec.page2.items.top.baseline.width '/' 2}}, {{spec.page2.items.top.topPos}})">
12
- {{#each items.top as | item index |}}
13
- {{#with @root.spec.page2.items.top as | itemsSpec |}}
14
- <g transform="translate({{lookup (array -320 -210 -100 100 210 320) index}}, 0)">
15
- <g transform="translate(-{{math itemsSpec.rect.base.width '/' 2}}, 0)">
16
- {{bar item.height.base itemsSpec.rect.base.width (object tl=0 tr=itemsSpec.rect.base.br br=itemsSpec.rect.base.br bl=0) (toRad -90) fill=itemsSpec.rect.base.color}}
17
- </g>
18
- <text x="0" y="-{{math item.height.base '+' 12}}" font-size="12" font-weight="400" text-anchor="middle" fill="#D4D4D8" dy="3">{{item.maxValue}}</text>
19
- <g fill="{{item.fill}}">
20
- <g transform="translate(-{{math itemsSpec.rect.body.width '/' 2}}, 0)">
21
- {{#forLoop 0 item.mark 1}}
22
- <rect x="0" y="-{{math (math i '+' 1) '*' itemsSpec.rect.body.distanceY}}" width="{{itemsSpec.rect.body.width}}" height="{{itemsSpec.rect.body.height}}" rx="{{itemsSpec.rect.body.br}}"/>
23
- {{/forLoop}}
24
- </g>
25
- <text x="{{math (math itemsSpec.rect.body.width '/' 2) '+' 16}}" y="-{{math item.mark '*' itemsSpec.rect.body.distanceY}}" font-size="16" font-weight="500" text-anchor="middle" dy="4">{{item.mark}}</text>
26
- <text x="0" y="20" font-size="14" font-weight="400" text-anchor="middle" dy="5">{{item.label.fr}}</text>
27
- </g>
28
- </g>
29
- {{/with}}
30
- {{/each}}
31
- <line x1="-{{math spec.page2.items.top.baseline.width '/' 2}}" y1="0" x2="{{math spec.page2.items.top.baseline.width '/' 2}}" y2="0" stroke="#A1A1AA" stroke-width="2"/>
12
+ {{> FACES93_2_1_partial}}
32
13
  </g>
33
14
 
34
15
  <g transform="translate(0, {{math spec.page2.items.top.topPos '+' spec.page2.items.bottom.offsetY}})">
35
- {{#each items.bottom as | item index |}}
36
- {{#with @root.spec.page2.items.bottom as | itemsSpec |}}
37
- <g transform="translate(0, {{math index '*' (math itemsSpec.rect.body.height '+' 20)}})">
38
- <text x="150" y="{{math itemsSpec.rect.body.height '/' 2}}" font-size="16" font-weight="400" text-anchor="start" fill="#52525B" dy="4">{{item.label.fr}}</text>
39
- <g transform="translate(168, 0)">
40
- <rect x="0" y="{{math (math itemsSpec.rect.body.height '-' itemsSpec.rect.base.height) '/' 2}}" width="{{itemsSpec.rect.base.width}}" height="{{itemsSpec.rect.base.height}}" rx="{{itemsSpec.rect.base.br}}" fill="#F4F4F5"/>
41
- <text x="{{math itemsSpec.rect.base.width '+' 27}}" y="{{math itemsSpec.rect.body.height '/' 2}}" font-size="12" font-weight="400" text-anchor="middle" fill="#A1A1AA" dy="3">{{itemsSpec.maxValue}}</text>
42
- <rect x="0" y="0" width="{{item.width}}" height="{{itemsSpec.rect.body.height}}" rx="{{itemsSpec.rect.body.br}}" fill="url(#bg)"/>
43
- <text x="{{math item.width '-' 18}}" y="{{math itemsSpec.rect.body.height '/' 2}}" font-size="16" font-weight="600" text-anchor="middle" fill="white" dy="4">{{item.mark}}</text>
44
- </g>
45
- </g>
46
- {{/with}}
47
- {{/each}}
16
+ {{> FACES93_2_2_partial}}
48
17
  </g>
49
18
  </g>
50
19
 
@@ -0,0 +1,20 @@
1
+ {{#each items.top as | item index |}}
2
+ {{#with ../spec.page2.items.top as | itemsSpec |}}
3
+ <g transform="translate({{lookup (array -320 -210 -100 100 210 320) index}}, 0)">
4
+ <g transform="translate(-{{math itemsSpec.rect.base.width '/' 2}}, 0)">
5
+ {{bar item.height.base itemsSpec.rect.base.width (object tl=0 tr=itemsSpec.rect.base.br br=itemsSpec.rect.base.br bl=0) (toRad -90) fill=itemsSpec.rect.base.color}}
6
+ </g>
7
+ <text x="0" y="-{{math item.height.base '+' 12}}" font-size="12" font-weight="400" text-anchor="middle" fill="#D4D4D8" dy="3">{{item.maxValue}}</text>
8
+ <g fill="{{item.fill}}">
9
+ <g transform="translate(-{{math itemsSpec.rect.body.width '/' 2}}, 0)">
10
+ {{#forLoop 0 item.mark 1}}
11
+ <rect x="0" y="-{{math (math i '+' 1) '*' itemsSpec.rect.body.distanceY}}" width="{{itemsSpec.rect.body.width}}" height="{{itemsSpec.rect.body.height}}" rx="{{itemsSpec.rect.body.br}}"/>
12
+ {{/forLoop}}
13
+ </g>
14
+ <text x="{{math (math itemsSpec.rect.body.width '/' 2) '+' 16}}" y="-{{math item.mark '*' itemsSpec.rect.body.distanceY}}" font-size="16" font-weight="500" text-anchor="middle" dy="4">{{item.mark}}</text>
15
+ <text x="0" y="20" font-size="14" font-weight="400" text-anchor="middle" dy="5">{{item.label.fr}}</text>
16
+ </g>
17
+ </g>
18
+ {{/with}}
19
+ {{/each}}
20
+ <line x1="-{{math spec.page2.items.top.baseline.width '/' 2}}" y1="0" x2="{{math spec.page2.items.top.baseline.width '/' 2}}" y2="0" stroke="#A1A1AA" stroke-width="2"/>
@@ -0,0 +1,13 @@
1
+ {{#each items.bottom as | item index |}}
2
+ {{#with ../spec.page2.items.bottom as | itemsSpec |}}
3
+ <g transform="translate(0, {{math index '*' (math itemsSpec.rect.body.height '+' 20)}})">
4
+ <text x="150" y="{{math itemsSpec.rect.body.height '/' 2}}" font-size="16" font-weight="400" text-anchor="start" fill="#52525B" dy="4">{{item.label.fr}}</text>
5
+ <g transform="translate(168, 0)">
6
+ <rect x="0" y="{{math (math itemsSpec.rect.body.height '-' itemsSpec.rect.base.height) '/' 2}}" width="{{itemsSpec.rect.base.width}}" height="{{itemsSpec.rect.base.height}}" rx="{{itemsSpec.rect.base.br}}" fill="#F4F4F5"/>
7
+ <text x="{{math itemsSpec.rect.base.width '+' 27}}" y="{{math itemsSpec.rect.body.height '/' 2}}" font-size="12" font-weight="400" text-anchor="middle" fill="#A1A1AA" dy="3">{{itemsSpec.maxValue}}</text>
8
+ <rect x="0" y="0" width="{{item.width}}" height="{{itemsSpec.rect.body.height}}" rx="{{itemsSpec.rect.body.br}}" fill="url(#bg)"/>
9
+ <text x="{{math item.width '-' 18}}" y="{{math itemsSpec.rect.body.height '/' 2}}" font-size="16" font-weight="600" text-anchor="middle" fill="white" dy="4">{{item.mark}}</text>
10
+ </g>
11
+ </g>
12
+ {{/with}}
13
+ {{/each}}
@@ -1,44 +1,5 @@
1
1
  {{#> layout}}
2
-
3
- <defs>
4
- <linearGradient id="horizontal-shadow">
5
- <stop offset="0%" stop-color="black" />
6
- <stop offset="100%" stop-color="transparent" />
7
- </linearGradient>
8
- <linearGradient id="vertical-shadow" gradientTransform="rotate(90)">
9
- <stop offset="0%" stop-color="transparent" />
10
- <stop offset="100%" stop-color="black" />
11
- </linearGradient>
12
- </defs>
13
-
14
2
  <g transform="translate({{spec.profile.padding.x}}, {{spec.profile.padding.y}})">
15
- {{!-- <rect x="0" y="0" width="702" height="450" fill="#E2E8F0"/> --}}
16
- {{#each dataset.score}}
17
- <g transform="translate(0, {{math 5 '+' ( math 51 '*' @key )}})">
18
- <text y="0" x="129" text-anchor="start" font-size="18px" font-weight="400" dy="18px">{{label.fr}}</text>
19
- <g transform="translate(147, 0)">
20
- {{bar (math label.width '*' 4.5) 30 (object tl=0 tr=15 bl=0 br=15) (toRad 0) fill=label.background opacity='.8'}}
21
- {{bar (math mark '*' 4.5) 30 (object tl=0 tr=15 bl=0 br=15) (toRad 0) fill=label.fill opacity='.8'}}
22
- <text y="17" x="{{math (math label.width '*' 4.5) '+' 7.5 }}" dy="6px" text-anchor="start" font-size="24px" fill="{{label.fill}}" font-weight="500" direction="ltr">
23
- {{mark}}
24
- <tspan font-size="18px" fill="#D4D4D8" font-weight="400">/ {{label.width}}</tspan>
25
- </text>
26
- </g>
27
- </g>
28
- {{/each}}
29
- <g transform="translate(642.5, 428)">
30
- <g transform="translate(9, 0)">
31
- {{bar 9 378 (object tl=0 tr=0 bl=4.5 br=4.5) (toRad 180) fill='#E4E4E7'}}
32
- {{bar 9 markSum (object tl=0 tr=0 bl=4.5 br=4.5) (toRad 180) fill='#52525B'}}
33
- </g>
34
- <text x="4.5" y="-387" dominant-baseline="auto" text-anchor="middle" fill="#A1A1AA" font-size="18px" font-weight="400">378</text>
35
- <text x="21" y="{{math markSum '*' -1}}" dy="6" text-anchor="start" font-size="24px" fill="#3F3F46" font-weight="500" direction="ltr">{{markSum}}</text>
36
- <text transform="rotate(-90, 0, 0)" x="-3" y="-28" dy="14" text-anchor="end" font-size="18px" font-weight="400">نمره کل</text>
37
-
38
- <rect x="-3" y="0" width="15" height="3" fill="#FFFFFF" style="filter: drop-shadow(0 -3px 5px rgba(0,0,0, .5));"/>
39
- </g>
40
- <g transform="translate(144.5, 0)">
41
- <rect x="0" y="0" width="3" height="450" rx="1" fill="#FFFFFF" style="filter: drop-shadow(3px 0 5px rgba(0,0,0, .5));"/>
42
- </g>
3
+ {{> JPFQ93_partial}}
43
4
  </g>
44
5
  {{/ layout}}