@baravak/risloo-profile-cli 3.2.0 → 3.4.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 +1 -1
- package/src/publish/json/profiles/FMPS93.json +1 -0
- package/src/publish/json/profiles/RAS93.json +1 -0
- package/src/samples/FMPS93.js +115 -0
- package/src/samples/RAS93.js +129 -0
- package/views/profiles/samples/FMPS93.hbs +66 -0
- package/views/profiles/samples/RAS93.hbs +26 -0
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"$X1H6UGU1X","scale":{"id":"$FMPS-93","title":"مقیاس کمالگرایی چند بعدی فراست"},"version":"1","edition":"","edition_version":null,"client":{"id":"GH96XXXX","name":"مراجع","user_id":"IR96XXX"},"room":{"id":"RS96XXXX","manager":{"id":"GH966XXXX","name":"درمانگر","user_id":"IR96XXXX"},"center":{"id":"RS966XXXX","acceptation":null,"status":"active","type":"counseling_center","detail":{"title":"مرکز مشاوره"}},"acceptation":null,"status":"active","type":"room"},"case":null,"code":null,"created_at":1674877621,"started_at":1674877679,"scored_at":1677946721,"closed_at":1674879321,"total_amount":0,"prepayment":false,"purchased":true,"amount":null,"billing":null,"description":"## دستور اجرای آزمون\n\nلطفا هر یک از جملات زیر را به دقت بخوانید و مشخص کنید که هر جمله تا چه اندازه در مورد شما صدق میکند و یکی از پنج گزینه را انتخاب کنید","psychologist_description":null,"items":[{"type":"text","text":"والدینم معیارهای بالایی را برای من قرار دادهاند.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"3"},{"type":"text","text":"نظم و سازماندهی برای من بسیار مهم است.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"4"},{"type":"text","text":"وقتی بچه بودم اگر کارها را کامل انجام نمیدادم تنبیه می شدم.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"1"},{"type":"text","text":"اگر بالاترین استانداردها را برای خودم قرار ندهم یک فرد سطح پایین خواهم بود.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"4"},{"type":"text","text":"والدینم هیچ وقت سعی نکردند اشتباهاتم را درک کنند.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"2"},{"type":"text","text":"واقعا برایم مهم است که در هر کاری که انجام میدهم کاملا شایسته باشم.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"4"},{"type":"text","text":"من فرد مرتبی هستم.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"4"},{"type":"text","text":"سعی میکنم که فرد با نظم و برنامهای باشم.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"4"},{"type":"text","text":"اگر در کار یا تحصیل موفق نشوم فرد شگست خوردهای هستم.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"4"},{"type":"text","text":"اگر اشتباه کنم باید ناراحت شوم.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"4"},{"type":"text","text":"والدینم از من میخواستند که در همه چیز بهترین باشم.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"2"},{"type":"text","text":"اهداف من از بیشتر مردم بالاتر است.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"4"},{"type":"text","text":"اگر فردی در کارش بهتر از من باشد ، احساس میکنم در آن کار شکست خوردهام.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"3"},{"type":"text","text":"اگر تاحدودی موفق نشوم انگار که کاملا شکست خوردهام.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"2"},{"type":"text","text":"فقط عملکردهای عالی در خانواده من خوب ارزیابی می شوند.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"2"},{"type":"text","text":"من تمرکز خوبی برای رسیدن به هدفم دارم.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"3"},{"type":"text","text":"حتی وقتی که چیزی را خیلی به دقت انجام میدهم اغلب حس میکنم به اندازه کافی خوب نیست.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"4"},{"type":"text","text":"از اینکه در هر چیزی بهترین نباشم، بیزارم.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"3"},{"type":"text","text":"اهداف من بسیار بالا هستند.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"4"},{"type":"text","text":"والدینم از من توقع داشتند که عالی باشند.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"2"},{"type":"text","text":"اگر اشتباه کنم ممکن است سایرین مرا دست کم بگیرند.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"4"},{"type":"text","text":"هیچ وقت احساس نکردم که بتوانم انتظارات والدینم را برآورده کنم.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"2"},{"type":"text","text":"اگر در حد دیگران کارها را انجام ندهم، فرد بیارزشی هستم.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"2"},{"type":"text","text":"به نظر میرسد که در مقایسه با من، دیگران استانداردهای پایینتری دارند.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"4"},{"type":"text","text":"اگر همیشه کارها را خوب انجام ندهم، دیگران به من احترام نمیگذارند.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"3"},{"type":"text","text":"انتظارات والدینم برای آیندهام بیشتر از انتظارات خودم بود.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"2"},{"type":"text","text":"تلاش میکنم فرد منظمی باشم.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"4"},{"type":"text","text":"معمولا در مورد چیزهای سادهای که هر روز انجام میدهم تردید دارم.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"5"},{"type":"text","text":"مرتب بودن خیلی برای من مهم است.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"4"},{"type":"text","text":"در مقایسه با دیگران انتظار عملکرد بالاتری را از خودم دارم.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"4"},{"type":"text","text":"من فرد با برنامهای هستم.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"3"},{"type":"text","text":"من همیشه از کارها عقب هستم چون آنها را تکرار میکنم.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"3"},{"type":"text","text":"برای انجام دادن کارهایم زمان زیادی صرف میکنم.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"4"},{"type":"text","text":"هر چقدر کمتر اشتباه کنم دیگران بیشتر مرا دوست دارند.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"2"},{"type":"text","text":"هیچ وقت احساس نکردم که بتوانم استانداردهای والدینم را برآورده کنم.","answer":{"type":"optional","options":["کاملا مخالفم","مخالفم","نظری ندارم","موافقم","کاملا موافقم"]},"user_answered":"2"}],"prerequisites":[{"type":"text","label":"gender","text":"جنسیت","answer":{"type":"select","options":["زن","مرد"]},"alias":"gender","force":true,"user_answered":"1"},{"type":"text","label":"age","text":"سن","answer":{"type":"number"},"alias":"age","force":true,"user_answered":"44"},{"type":"text","label":"education","text":"تحصیلات","answer":{"type":"select","options":["ابتدایی اول","ابتدایی دوم","متوسطه اول","متوسطه دوم","دیپلم","کارشناسی","کارشناسی ارشد","پزشکی عمومی","متخصص","دکتری تخصصی","حوزوی مقدمات","حوزوی سطح۱","حوزوی سطح۲","حوزوی سطح۳","حوزوی سطح۴"]},"alias":"education","force":true,"user_answered":"7"},{"type":"text","label":"marital_status","text":"وضعیت تأهل","answer":{"type":"select","options":["مجرد","متأهل"]},"alias":"marital_status","force":true,"user_answered":"1"}],"cornometer":27,"score":{"raw":88,"concern_over_mistakes":27,"parental_criticism":7,"parental_expectations":11,"doubt_about_actions":16,"organization":23,"personal_standards":27,"positive_perfectionism":50,"negative_perfectionism":61},"score_current_version":"1.0.0","score_last_version":"1.0.0","profiles":[{"id":"F963HMW","file_name":"X1H6UGU1X.json","slug":"storage/profiles/X1H6UGU1XaA1rAiVD2vmSaeUSYvFwMK5PCPSxQvloUmvz57WFxC9BPi0W7tNiWdkCThEdMMzanR6tIVcSltjCq5HbZmMiiDW7Bok2mbFmAzs9IQB3NEBuvMwgakwahXfe/X1H6UGU1X.json","mode":"profile_json","url":"https://api.risloo.local/storage/profiles/X1H6UGU1XaA1rAiVD2vmSaeUSYvFwMK5PCPSxQvloUmvz57WFxC9BPi0W7tNiWdkCThEdMMzanR6tIVcSltjCq5HbZmMiiDW7Bok2mbFmAzs9IQB3NEBuvMwgakwahXfe/X1H6UGU1X.json","type":"data","mime":"application/json","exec":"json"},{"id":"F963HMF","file_name":"X1H6UGU1X.xlsx","slug":"storage/profiles/X1H6UGU1XaA1rAiVD2vmSaeUSYvFwMK5PCPSxQvloUmvz57WFxC9BPi0W7tNiWdkCThEdMMzanR6tIVcSltjCq5HbZmMiiDW7Bok2mbFmAzs9IQB3NEBuvMwgakwahXfe/X1H6UGU1X.xlsx","mode":"profile_xlsx","url":"https://api.risloo.local/storage/profiles/X1H6UGU1XaA1rAiVD2vmSaeUSYvFwMK5PCPSxQvloUmvz57WFxC9BPi0W7tNiWdkCThEdMMzanR6tIVcSltjCq5HbZmMiiDW7Bok2mbFmAzs9IQB3NEBuvMwgakwahXfe/X1H6UGU1X.xlsx","type":"document","mime":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","exec":"xlsx"}]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"$X1H6UQGD3","scale":{"id":"$RAS-93","title":"مقیاس نگرش مسئولیتپذیری"},"version":"1","edition":"","edition_version":null,"client":{"id":"GH96XX","name":"مراجع","user_id":"IR96XXX"},"room":{"id":"RS96XXXX","manager":{"id":"GH966XXXX","name":"درمانگر","user_id":"IR96XXXX"},"center":{"id":"RS96XXXX","acceptation":null,"status":"active","type":"counseling_center","detail":{"title":"مرکز درمانی"}},"acceptation":null,"status":"active","type":"room"},"case":null,"code":null,"created_at":1674877621,"started_at":1674879347,"scored_at":1677943803,"closed_at":1674879799,"total_amount":0,"prepayment":false,"purchased":true,"amount":null,"billing":null,"description":"## دستور اجرای آزمون\n\nدر این پرسشنامه فهرستی از نگرشها و رویکردها یا عقاید مختلفی که مردم بعضی اوقات از خود نشان می دهند، ارائه شده است. هر جمله را به دقت بخوانید و مشخص کنید که چقدر با آن موافق یا مخالف هستید. برای هر مورد، 7 گزینه پاسخی وجود دارد . گزینهای را که مناسب می دانید مشخص کنید و بر روی آن شماره که نشان دهنده گزینه انتخابی شما است علامت بزنید . دقت کنید که فقط یک پاسخ برای هر رویکرد را انتخاب کنید از آنجائی که مردم با یکدیگر متفاوتند ، پاسخ درست یا نادرست وجود ندارد. برای تصمیمگیری در مورد اینکه گزینه ارائه شده تا چه حد نگرش شما را نشان میدهد گزینهای را که اکثریت اوقات در مورد شما صدق میکند، در نظر بگیرید. گزینهها از گزینه کاملا موافقم تا کاملا مخالفم در هفت درجه تقسیم شده است.","psychologist_description":null,"items":[{"type":"text","text":" من اغلب برای حوادث ناگواری که اتفاق میافتد،احساس مسئولیت میکنم.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"3"},{"type":"text","text":" اگر موقعی که خطری را پیشبینی کردم، دست به عملی نزنم، خودم را درمورد هرگونه پیامدی، مستحق سرزنش میدانم.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"3"},{"type":"text","text":" من در قبال احساس مسئولیت در مورد حوادث ناگوار بسیار حساس هستم.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"3"},{"type":"text","text":"فکر در مورد چیزهای بد درست مانند انجام دادن عمل بد است.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"3"},{"type":"text","text":" من در مورد عواقب کارهایی که انجام میدهم یا انجام نمی دهم، دچار نگرانی زیادی میشوم.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"2"},{"type":"text","text":" از نظر من، عدم اقدام برای جلوگیری از وقوع یک فاجعه، درست مانند این است که خودم فاجعهای را به بار بیاورم.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"3"},{"type":"text","text":" اگر من بدانم احتمال آسیبی وجود دارد،هرچند که به نظر غیر محتمل بیاید، باید همیشه سعی کنم از به وقوع پیوستن آن پیشگیری کنم. هر چند به نظر غیر محتمل باشد.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"3"},{"type":"text","text":" من باید همیشه عواقب و نتایج کوچکترین اعمال و رفتارهایم را مورد توجه قرار دهم و از قبل به آنها فکر کنم.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"2"},{"type":"text","text":" من اغلب مسئولیت چیزهایی را بر عهده میگیرم که دیگران فکر میکنند اصلا تقصیر من نیست.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"3"},{"type":"text","text":" هر چیزی را که من انجام دهم میتواند باعث به وجود آمدن مشکلات جدی شود. ","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"3"},{"type":"text","text":" من اغلب فاصله زیادی با آسیب رساندن به دیگران ندارم.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"3"},{"type":"text","text":" من باید دیگران را از صدمه و آسیب دیدن محافظت کنم.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"3"},{"type":"text","text":"من نباید موجب ایجاد حتی کوچکترین صدمه به دیگران شوم.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"2"},{"type":"text","text":" من به خاطر اعمال و رفتارهایم محکوم خواهم بود.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"3"},{"type":"text","text":" اگر من بتوانم حتی کوچکترین تاثیری در وقوع حوادث ناگوار داشته باشم، باید کاری کنم که جلوی آن حوادث گرفته شود.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"2"},{"type":"text","text":" از نظر من عدم جلوگیری از فاجعهای که حتی احتمال بسیار کمی برای وقوع آن وجود دارد، مانند این است که خودم آن فاجعه را به وجود بیاورم.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"4"},{"type":"text","text":" برای من حتی کوچکترین بیدقتی و غفلت که ممکن است خطری برای دیگران ایجاد کند، غیر قابل بخشش است.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"3"},{"type":"text","text":" در تمام موقعیتهای زندگی،غیر فعال بودن من میتواند به همان اندازه نیت عمدی نادرست،آسیب زا و مضر باشد. ","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"2"},{"type":"text","text":" حتی اگر احتمال وقوع آسیب و صدمه خیلی کم هم باشد، من باید همیشه به هر قیمتی که شده از وقوع آن جلوگیری کنم. ","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"4"},{"type":"text","text":" حتی اگر یک بار هم فکر کنم که ممکن است از من آسیبی به کسی برسد نمیتوانم خودم را ببخشم.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"3"},{"type":"text","text":" بسیاری از اعمال گذشته من به قصد جلوگیری از رسیدن صدمه و آسیب به دیگران بوده است.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"5"},{"type":"text","text":" من باید مطمئن شوم که مردم دیگر از تمامی عواقب اعمالی که من انجام میدهم در امان باشند.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"3"},{"type":"text","text":" دیگران نباید بر قضاوت من تکیه و اعتماد کنند.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"5"},{"type":"text","text":" اگر من اطمینان حاصل نکنم که مستحق سرزنش نیستم،احساس میکنم که باید سرزنش شوم.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"5"},{"type":"text","text":" اگر دقت کافی اعمال کنم، میتوانم جلوی حوادث خطرناک را بگیرم.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"4"},{"type":"text","text":" من اغلب فکر میکنم اگر به اندازه کافی دقت نکنم، اتفاقات ناگوار رخ خواهد داد.","answer":{"type":"optional","options":["کاملا موافقم","بسیار موافقم","تا حدودی موافقم","نظری ندارم","تا حدودی مخالفم","بسیار مخالفم","کاملا مخالفم"]},"user_answered":"4"}],"prerequisites":[{"type":"text","label":"gender","text":"جنسیت","answer":{"type":"select","options":["زن","مرد"]},"alias":"gender","force":true,"user_answered":"1"},{"type":"text","label":"age","text":"سن","answer":{"type":"number"},"alias":"age","force":true,"user_answered":"44"},{"type":"text","label":"education","text":"تحصیلات","answer":{"type":"select","options":["ابتدایی اول","ابتدایی دوم","متوسطه اول","متوسطه دوم","دیپلم","کارشناسی","کارشناسی ارشد","پزشکی عمومی","متخصص","دکتری تخصصی","حوزوی مقدمات","حوزوی سطح۱","حوزوی سطح۲","حوزوی سطح۳","حوزوی سطح۴"]},"alias":"education","force":true,"user_answered":"7"},{"type":"text","label":"marital_status","text":"وضعیت تأهل","answer":{"type":"select","options":["مجرد","متأهل"]},"alias":"marital_status","force":true,"user_answered":"1"}],"cornometer":8,"score":{"raw":125,"conflicting_thoughts_of_self":null,"dichotomous_view_of_self":null,"fear_of_others_judgment":null,"preoccupation_with_self_worth":null,"interpretation_level":null,"percentage_interpretation":null},"score_current_version":"1.0.0","score_last_version":"1.0.0","profiles":[{"id":"F963HQ7","file_name":"X1H6UQGD3.json","slug":"storage/profiles/X1H6UQGD3e16zDL4Rm9ckXWFT8u1cKgUPuKYKFWo8t40czt5tlcnBWju49S5VOINq49a9umQVfd2Evb0ZWQwQ7dYQXLD0mK0MV8bFPRy19dLUGNikUKbCQOgFFUFVr8yo/X1H6UQGD3.json","mode":"profile_json","url":"https://api.risloo.local/storage/profiles/X1H6UQGD3e16zDL4Rm9ckXWFT8u1cKgUPuKYKFWo8t40czt5tlcnBWju49S5VOINq49a9umQVfd2Evb0ZWQwQ7dYQXLD0mK0MV8bFPRy19dLUGNikUKbCQOgFFUFVr8yo/X1H6UQGD3.json","type":"data","mime":"application/json","exec":"json"},{"id":"F963HQY","file_name":"X1H6UQGD3.xlsx","slug":"storage/profiles/X1H6UQGD3e16zDL4Rm9ckXWFT8u1cKgUPuKYKFWo8t40czt5tlcnBWju49S5VOINq49a9umQVfd2Evb0ZWQwQ7dYQXLD0mK0MV8bFPRy19dLUGNikUKbCQOgFFUFVr8yo/X1H6UQGD3.xlsx","mode":"profile_xlsx","url":"https://api.risloo.local/storage/profiles/X1H6UQGD3e16zDL4Rm9ckXWFT8u1cKgUPuKYKFWo8t40czt5tlcnBWju49S5VOINq49a9umQVfd2Evb0ZWQwQ7dYQXLD0mK0MV8bFPRy19dLUGNikUKbCQOgFFUFVr8yo/X1H6UQGD3.xlsx","type":"document","mime":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","exec":"xlsx"}]}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
const { Profile, FS, Mappings } = require("../Profile");
|
|
2
|
+
|
|
3
|
+
class FMPS93 extends Profile {
|
|
4
|
+
// Number of pages
|
|
5
|
+
static pages = 1;
|
|
6
|
+
|
|
7
|
+
// Labels of the sample
|
|
8
|
+
labels = {
|
|
9
|
+
L1: { eng: "raw", fr: "نمره کل", max: 145},
|
|
10
|
+
|
|
11
|
+
L2: { eng: "concern_over_mistakes", fr: "نگرانی درباره اشتباهات", fill: "#DB2777", bg:"#FDF2F8", max: 45},
|
|
12
|
+
L3: { eng: "parental_criticism", fr: "انتقادگری والدین", fill: "#DB2777", bg:"#FDF2F8", max: 20},
|
|
13
|
+
L4: { eng: "parental_expectations", fr: "انتظارات والدینی", fill: "#DB2777", bg:"#FDF2F8", max: 25},
|
|
14
|
+
L5: { eng: "doubt_about_actions", fr: "تردید درباره کارها", fill: "#DB2777", bg:"#FDF2F8", max: 20},
|
|
15
|
+
L6: { eng: "organization", fr: "نظم و سازماندهی", fill: "#16A34A", bg: "#F0FDF4", max: 30},
|
|
16
|
+
L7: { eng: "personal_standards", fr: "معیارهای شخصی", fill: "#16A34A", bg: "#F0FDF4", max: 35},
|
|
17
|
+
|
|
18
|
+
L8: { eng: "positive_perfectionism", fr: "کمالگرایی مثبت" , desc : "نظم و سازماندهی، معیارهای شخصی"},
|
|
19
|
+
L9: { eng: "negative_perfectionism", fr: "کمالگرایی منفی" , desc : "نگرانی درباره اشتباهات، انتقادگری والدینی،\nانتظارات والدینی، تردید درباره کارها"},
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
profileSpec = {
|
|
23
|
+
/* "sample" determines some important info about the sample and profile */
|
|
24
|
+
/* Default prerequisites: 1. gender, 2. age, 3. education */
|
|
25
|
+
/* "prerequisites" is synonym to "fields" in our program */
|
|
26
|
+
sample: {
|
|
27
|
+
name: "پرسشنامه هوش هیجانی بار-آن" /* Name of the sample */,
|
|
28
|
+
multiProfile: false /* Whether the sample has multiple profiles or not */,
|
|
29
|
+
questions: false /* Determines whether to get questions from inital dataset or not */,
|
|
30
|
+
defaultFields: true /* Determines whether to have default prerequisites in the profile or not */,
|
|
31
|
+
fields: [] /* In case you want to get some additional fields and show in the profile */,
|
|
32
|
+
},
|
|
33
|
+
/* "profile" determines the dimensions of the drawn profile (to be used in svg tag viewbox) */
|
|
34
|
+
/* calculating its dimensions carefully is of great importance */
|
|
35
|
+
profile: {
|
|
36
|
+
get dimensions() {
|
|
37
|
+
return {
|
|
38
|
+
width: 761 + 2 * this.padding.x,
|
|
39
|
+
height: 556 + 2 * this.padding.y,
|
|
40
|
+
};
|
|
41
|
+
},
|
|
42
|
+
padding: {
|
|
43
|
+
x: 79,
|
|
44
|
+
y: 71,
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
gaugeItems: {
|
|
48
|
+
offsetX: 40.5 /* Horizontal offset between two top items */,
|
|
49
|
+
get distanceX() {
|
|
50
|
+
return this.offsetX + this.circle.R * 2;
|
|
51
|
+
} /* Horizontal distance between two top items */,
|
|
52
|
+
maxValues: {
|
|
53
|
+
[this.labels.L8.eng]: 65,
|
|
54
|
+
[this.labels.L9.eng]: 110,
|
|
55
|
+
} /* Maximum value of items */,
|
|
56
|
+
fills: {
|
|
57
|
+
[this.labels.L8.eng]: "#16A34A",
|
|
58
|
+
[this.labels.L9.eng]: "#DB2777",
|
|
59
|
+
} /* Color used in items */,
|
|
60
|
+
circle: {
|
|
61
|
+
R: 60 /* Radius of the outer circle of the items element */,
|
|
62
|
+
r: 36 /* Radius of the inner circle of the items element */,
|
|
63
|
+
brs: {
|
|
64
|
+
tl: 4 /* Top left border radius */,
|
|
65
|
+
bl: 4 /* Bottom left border radius */,
|
|
66
|
+
tr: 4 /* Top right border radius */,
|
|
67
|
+
br: 4 /* Bottom right border radius */,
|
|
68
|
+
} /* Border radiuses at each end of the gauge of the items element */,
|
|
69
|
+
angles: {
|
|
70
|
+
start: FS.toRadians(-90),
|
|
71
|
+
end: FS.toRadians(180),
|
|
72
|
+
} /* Angles of each end of the items element */,
|
|
73
|
+
direction: false /* Clockwise direction for the items gauge element */,
|
|
74
|
+
get totalAngle() {
|
|
75
|
+
return this.direction
|
|
76
|
+
? 2 * Math.PI - (this.angles.end - this.angles.start)
|
|
77
|
+
: this.angles.end - this.angles.start;
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
/* "labels" part which has to be provided for each profile */
|
|
82
|
+
labels: Object.values(this.labels),
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
constructor(dataset, options, config = {}) {
|
|
86
|
+
super();
|
|
87
|
+
this._init(dataset, options, config);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
_calcContext() {
|
|
91
|
+
const {
|
|
92
|
+
spec: { parameters: spec },
|
|
93
|
+
dataset,
|
|
94
|
+
} = this;
|
|
95
|
+
|
|
96
|
+
// Deconstructing the Spec of the Profile
|
|
97
|
+
const { raw: rawSpec, gaugeItems: gaugeItemsSpec } = spec;
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
let gaugeItems = dataset.score.slice(7,9).map((data) => ({
|
|
101
|
+
label: data.label,
|
|
102
|
+
mark: data.mark,
|
|
103
|
+
zeta:
|
|
104
|
+
(data.mark / gaugeItemsSpec.maxValues[data.label.eng]) * gaugeItemsSpec.circle.totalAngle +
|
|
105
|
+
gaugeItemsSpec.circle.angles.start,
|
|
106
|
+
fill: gaugeItemsSpec.fills[data.label.eng],
|
|
107
|
+
}));
|
|
108
|
+
|
|
109
|
+
const raw = dataset.score[0]
|
|
110
|
+
const items = dataset.score.slice(1, 7)
|
|
111
|
+
return [{ raw, items, gaugeItems }];
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
module.exports = FMPS93;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
const { Profile, FS } = require("../Profile");
|
|
2
|
+
|
|
3
|
+
class RAS93 extends Profile {
|
|
4
|
+
// Number of pages
|
|
5
|
+
static pages = 1;
|
|
6
|
+
|
|
7
|
+
// Labels of the sample
|
|
8
|
+
labels = {
|
|
9
|
+
L1: { eng: "raw", fr: "کل" },
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
profileSpec = {
|
|
13
|
+
/* "sample" determines some important info about the sample and profile */
|
|
14
|
+
/* Default prerequisites: 1. gender, 2. age, 3. education */
|
|
15
|
+
/* "prerequisites" is synonym to "fields" in our program */
|
|
16
|
+
sample: {
|
|
17
|
+
name: "مقیاس نگرش مسئولیتپذیری" /* Name of the sample */,
|
|
18
|
+
multiProfile: false /* Whether the sample has multiple profiles or not */,
|
|
19
|
+
questions: false /* Determines whether to get questions from inital dataset or not */,
|
|
20
|
+
defaultFields: true /* Determines whether to have default prerequisites in the profile or not */,
|
|
21
|
+
fields: [] /* In case you want to get some additional fields and show in the profile */,
|
|
22
|
+
},
|
|
23
|
+
/* "profile" determines the dimensions of the drawn profile (to be used in svg tag viewbox) */
|
|
24
|
+
/* calculating its dimensions carefully is of great importance */
|
|
25
|
+
profile: {
|
|
26
|
+
get dimensions() {
|
|
27
|
+
return {
|
|
28
|
+
width: 730 + 2 * this.padding.x,
|
|
29
|
+
height: 404.5 + 2 * this.padding.y,
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
padding: {
|
|
33
|
+
x: 80,
|
|
34
|
+
y: 0,
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
/* "item" is the general term used for independent data element to be drawn in the profile */
|
|
38
|
+
item: {
|
|
39
|
+
minValue: 0 /* Minimum value of the item mark */,
|
|
40
|
+
maxValue: 182 /* Maximum value of the item mark */,
|
|
41
|
+
stops: [0, 182] /* Stops array of the item mark */,
|
|
42
|
+
circle: {
|
|
43
|
+
center: {
|
|
44
|
+
radius: 42.5 /* Radius of the central circle */,
|
|
45
|
+
},
|
|
46
|
+
main: {
|
|
47
|
+
R: 340 /* Radius of the outer circle of the item element */,
|
|
48
|
+
r: 290 /* Radius of the inner circle of the item element */,
|
|
49
|
+
brs: {
|
|
50
|
+
tl: 0 /* Top left border radius */,
|
|
51
|
+
bl: 0 /* Bottom left border radius */,
|
|
52
|
+
tr: 0 /* Top right border radius */,
|
|
53
|
+
br: 0 /* Bottom right border radius */,
|
|
54
|
+
} /* Border radiuses at each end of the gauge of the item element */,
|
|
55
|
+
angles: {
|
|
56
|
+
start: FS.toRadians(-180),
|
|
57
|
+
end: FS.toRadians(0),
|
|
58
|
+
} /* Angles of each end of the item element */,
|
|
59
|
+
direction: false /* Clockwise direction for the item gauge element */,
|
|
60
|
+
base: {
|
|
61
|
+
fill: "#F4F4F5" /* Fill of the base part of the item gauge */,
|
|
62
|
+
stroke: "#E4E4E7" /* Stroke of the base part of the item gauge */,
|
|
63
|
+
},
|
|
64
|
+
body: {
|
|
65
|
+
fill: "#DB2777" /* Fill of the body part of the item gauge */,
|
|
66
|
+
stroke: "#9D174D" /* Stroke of the base part of the item gauge */,
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
/* "labels" part which has to be provided for each profile */
|
|
72
|
+
labels: Object.values(this.labels)
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
constructor(dataset, options, config = {}) {
|
|
76
|
+
super();
|
|
77
|
+
this._init(dataset, options, config);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
_calcContext() {
|
|
81
|
+
const {
|
|
82
|
+
spec: { parameters: spec },
|
|
83
|
+
dataset,
|
|
84
|
+
} = this;
|
|
85
|
+
|
|
86
|
+
const { item: itemSpec } = spec;
|
|
87
|
+
|
|
88
|
+
const itemData = dataset.score[0];
|
|
89
|
+
const item = {
|
|
90
|
+
label: itemData.label,
|
|
91
|
+
mark: itemData.mark,
|
|
92
|
+
angle: this._markToAngle(
|
|
93
|
+
itemData.mark,
|
|
94
|
+
itemSpec.minValue,
|
|
95
|
+
itemSpec.maxValue,
|
|
96
|
+
itemSpec.circle.main.angles,
|
|
97
|
+
itemSpec.circle.main.direction
|
|
98
|
+
),
|
|
99
|
+
stops: itemSpec.stops.map((stop) => ({
|
|
100
|
+
mark: stop,
|
|
101
|
+
angle: this._markToAngle(
|
|
102
|
+
stop,
|
|
103
|
+
itemSpec.minValue,
|
|
104
|
+
itemSpec.maxValue,
|
|
105
|
+
itemSpec.circle.main.angles,
|
|
106
|
+
itemSpec.circle.main.direction
|
|
107
|
+
),
|
|
108
|
+
})),
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
return [{ item }];
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
_markToAngle(mark, min, max, angles, direction) {
|
|
115
|
+
const totalAngle = this._calcDiffAngle(angles.end, angles.start, direction);
|
|
116
|
+
const deltaTheta = ((mark - min) / (max - min)) * totalAngle;
|
|
117
|
+
return this._calcDistAngle(deltaTheta, angles.start, direction);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
_calcDiffAngle(theta, theta0, direction) {
|
|
121
|
+
return direction ? 2 * Math.PI - (theta - theta0) : theta - theta0;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
_calcDistAngle(deltaTheta, theta0, direction) {
|
|
125
|
+
return direction ? 2 * Math.PI - deltaTheta + theta0 : deltaTheta + theta0;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
module.exports = RAS93;
|
|
@@ -0,0 +1,66 @@
|
|
|
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
|
+
{{#with spec.gaugeItems.circle}}
|
|
9
|
+
<clipPath id="items-circle-roll">
|
|
10
|
+
{{gauge R r brs (object start=angles.start end=angles.end) false}}
|
|
11
|
+
</clipPath>
|
|
12
|
+
{{/with}}
|
|
13
|
+
</defs>
|
|
14
|
+
|
|
15
|
+
<g transform="translate({{spec.profile.padding.x}}, {{spec.profile.padding.y}})">
|
|
16
|
+
<g transform="translate(0.5, 3)">
|
|
17
|
+
{{!-- <rect width="760" height="310" fill="red" opacity="0.1" /> --}}
|
|
18
|
+
{{#each items}}
|
|
19
|
+
<g transform="translate(0, {{math 12 '+' (math @key '*' 52)}})">
|
|
20
|
+
{{bar (math 8 '*' label.max) 28 (object tl=0 tr=14 bl=0 br=14) (toRad 0) fill=label.bg transform="translate(139,0)"}}
|
|
21
|
+
{{bar (math 8 '*' mark) 28 (object tl=0 tr=14 bl=0 br=14) (toRad 0) fill=label.fill transform="translate(139,0)"}}
|
|
22
|
+
<text fill="#52525B" font-size="14px" font-weight="400" transform="translate(123,0)" text-anchor="start" y="18">{{label.fr}}</text>
|
|
23
|
+
<text transform="translate({{math 147 '+' (math 8 '*' label.max)}},0)" text-anchor="start" y="24" direction="ltr">
|
|
24
|
+
<tspan fill="{{label.fill}}" font-size="28px" font-weight="500" >{{mark}}</tspan>
|
|
25
|
+
<tspan fill="#71717A" font-size="20px" font-weight="400" > / {{label.max}}</tspan>
|
|
26
|
+
</text>
|
|
27
|
+
</g>
|
|
28
|
+
{{/each}}
|
|
29
|
+
<rect x="138" y="0" width="1" height="310" rx="1" fill="#FFFFFF" style="filter: drop-shadow(1px 0 2px rgba(0,0,0, .5));"/>
|
|
30
|
+
<g transform="translate(679, 0)">
|
|
31
|
+
<text x="82" y="24" fill="#A1A1AA" font-size="14px" font-weight="400" text-anchor="start">145</text>
|
|
32
|
+
<line x1="43" x2="59" y1="20" y2="20" stroke="#E4E4E7" stroke-dasharray="4 4" />
|
|
33
|
+
{{bar 40 290 (object tr=20 tl=20 br=0 bl=0) (toRad 0) transform="translate(0, 20)" fill="#F4F4F5"}}
|
|
34
|
+
{{bar 40 (math 2 '*' raw.mark) (object tr=20 tl=20 br=0 bl=0) (toRad 0) transform=(concat "translate(0," (concat (math 20 '+' (math 290 '-' (math 2 '*' raw.mark))) ")")) fill="#52525B"}}
|
|
35
|
+
<text x="20" y="{{math 50 '+' (math 290 '-' (math 2 '*' raw.mark))}}" fill="#FFFFFF" font-size="20px" font-weight="500" text-anchor="middle">{{raw.mark}}</text>
|
|
36
|
+
|
|
37
|
+
<text x="60" y="261" fill="#A1A1AA" font-size="14px" font-weight="400" text-anchor="end">29</text>
|
|
38
|
+
<line x1="43" x2="59" y1="257" y2="257" stroke="#E4E4E7" stroke-dasharray="4 4" />
|
|
39
|
+
|
|
40
|
+
<rect x="-2" y="310" width="44" height="1" rx="1" fill="#FFFFFF" style="filter: drop-shadow(1px 0 2px rgba(0,0,0, .5));"/>
|
|
41
|
+
<text transform="translate(-14, 247) rotate(270, 8, 8)" fill="#71717A" font-size="16px" font-weight="500" text-anchor="start">نمره کل</text>
|
|
42
|
+
</g>
|
|
43
|
+
</g>
|
|
44
|
+
<g transform="translate(123.5, 369)">
|
|
45
|
+
{{#each gaugeItems as |item index|}}
|
|
46
|
+
<g transform="translate({{math 100 '+' (math index '*' 246)}}, 60)">
|
|
47
|
+
{{#with @root.spec.gaugeItems.circle}}
|
|
48
|
+
{{gauge R r (object tl=0 tr=0 bl=0 br=0) (object start=angles.start end=angles.end) direction clip-path="url(#items-circle-roll)" fill="#F4F4F5"}}
|
|
49
|
+
{{gauge R r (object tl=0 tr=0 bl=0 br=0) (object start=angles.start end=item.zeta) direction clip-path="url(#items-circle-roll)" fill=item.fill fill-opacity=item.opacity}}
|
|
50
|
+
{{/with}}
|
|
51
|
+
<text x="0" y="0" text-anchor="middle" font-size="28" font-weight="600" fill="{{item.fill}}" dy="5">{{item.mark}}</text>
|
|
52
|
+
<text x="-8" y="-40" font-size="14" font-weight="500" fill="#71717A">0</text>
|
|
53
|
+
<text x="-42" y="-8" font-size="14" font-weight="500" fill="#71717A" text-anchor="middle">{{lookup @root.spec.gaugeItems.maxValues item.label.eng}}</text>
|
|
54
|
+
<g transform="translate(0, 80)">
|
|
55
|
+
<text x="0" y="0" font-size="14" font-weight="500" fill="{{item.fill}}" text-anchor="middle">{{item.label.fr}}</text>
|
|
56
|
+
{{#each (wrapOnNewline item.label.desc) as | line index |}}
|
|
57
|
+
<text x="0" y="{{math 15 '+' (math index '*' 15)}}" font-size="12" font-weight="400" fill="#A1A1AA" text-anchor="middle" dy="5">{{line}}</text>
|
|
58
|
+
{{/each}}
|
|
59
|
+
</g>
|
|
60
|
+
</g>
|
|
61
|
+
{{/each}}
|
|
62
|
+
</g>
|
|
63
|
+
|
|
64
|
+
</g>
|
|
65
|
+
|
|
66
|
+
{{/layout}}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{{#> layout}}
|
|
2
|
+
|
|
3
|
+
<g transform="translate({{spec.profile.padding.x}}, {{spec.profile.padding.y}})">
|
|
4
|
+
<g transform="translate({{math (math spec.item.circle.main.R '+' 10) '+' 8}}, {{math (math spec.item.circle.main.R '+' 10) '+' 12}})">
|
|
5
|
+
<text x="0" y="0" font-size="32" font-weight="500" fill="#DB2777" text-anchor="middle" dy="8">{{item.mark}}</text>
|
|
6
|
+
{{#with spec.item.circle as | circleSpec |}}
|
|
7
|
+
<circle cx="0" cy="0" r="{{circleSpec.center.radius}}" stroke="#A1A1AA" fill="none" stroke-dasharray="3"/>
|
|
8
|
+
{{gauge circleSpec.main.R circleSpec.main.r circleSpec.main.brs circleSpec.main.angles circleSpec.main.direction fill=circleSpec.main.base.fill stroke=circleSpec.main.base.stroke}}
|
|
9
|
+
{{gauge circleSpec.main.R circleSpec.main.r circleSpec.main.brs (object start=circleSpec.main.angles.start end=../item.angle) circleSpec.main.direction fill=circleSpec.main.body.fill stroke=circleSpec.main.body.stroke}}
|
|
10
|
+
{{setVar "p1" (polarToCartesian circleSpec.center.radius ../item.angle)}}
|
|
11
|
+
{{setVar "p2" (polarToCartesian circleSpec.main.R ../item.angle)}}
|
|
12
|
+
<line x1="{{p1.x}}" y1="{{p1.y}}" x2="{{p2.x}}" y2="{{p2.y}}" stroke="#71717A"/>
|
|
13
|
+
{{/with}}
|
|
14
|
+
<g font-size="16" font-weight="400" fill="#A1A1AA">
|
|
15
|
+
{{#each item.stops as | stop index |}}
|
|
16
|
+
{{#with @root.spec.item as | itemSpec |}}
|
|
17
|
+
{{setVar "p" (polarToCartesian (math itemSpec.circle.main.R '+' 10) stop.angle)}}
|
|
18
|
+
{{setVar "betMinus90And90" (boolean (boolean stop.angle '>' (toRad -90)) '&&' (boolean stop.angle '<' (toRad 90)))}}
|
|
19
|
+
<text x="{{p.x}}" y="{{p.y}}" text-anchor="{{ternary betMinus90And90 'end' 'start'}}" dy="0">{{stop.mark}}</text>
|
|
20
|
+
{{/with}}
|
|
21
|
+
{{/each}}
|
|
22
|
+
</g>
|
|
23
|
+
</g>
|
|
24
|
+
</g>
|
|
25
|
+
|
|
26
|
+
{{/layout}}
|