BikeControl (SwiftControl)
使用 Zwift Click、Zwift Play、Shimano Di2 或任何藍牙控制器,搭配 MyWhoosh、Rouvy、Zwift 等。iOS、Android、Windows、macOS 均可免費試用。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗אתר נגיש ומודרני שמציג בזמן אמת את המידע מאתר איגוד הניווט הישראלי. אין באתר נתונים שמורים: הכול נקרא מאתר האיגוד.
#event/<id>, קישור שאפשר לשתף):
#ranking) – ליגת ניווט רגלי (כולל ליגת מאוץ – הקטגוריות שמסתיימות ב-S, בקבוצה משלהן ברשימת הקטגוריות ועם תג "ליגת מאוץ") וניווט רכוב, לפי עונה וקטגוריה, מעמוד הדירוג של האיגוד. גרף עמודות של הדירוג המשוקלל, כל עמודה מחולקת לפי אירועים: מקטע בצבע האירוע לכל תוצאה שנספרה (לפי סדר העונה, מקרא צבעים מעל), חלק מקווקו לתוספת מקדם הגיל, ותוצאות שלא נספרו כעיגולים חלולים אחרי העמודה. ריחוף על מקטע – האירוע, הנקודות והמקום בו; ריחוף על אירוע במקרא (או על מקטע) מבליט אותו בכל העמודות. האנשים שלי מודגשים במסגרת ובכוכב. מתחרה שעוד אין לו מספיק תוצאות (פחות מ־N) מסומן בתג "2/4 תוצאות" ובמשבצות מקווקוות ריקות לתוצאות החסרות, ותוצאה מעל 1000 נקודות מסומנת ב־★ (גם בטבלה המלאה). בעונות שבהן הניקוד הוא מתוך 100 (הניקוד הגבוה ביותר בדירוג עד 200) הסף הוא 100. מעל הגרף כרטיס לכל אחד מהאנשים שלי – מקום מתוך כמה, נקודות, והפער מהראשון ומהמקום שמעליו. מתחתיו כרטיס תובנות: לכל אחד מהאנשים שלי – התוצאה הטובה ביותר (ומקומו בה), כמה פעמים היה מעל חציון המתחרים, התוצאה שלא נספרה ובכמה, וכמה תוצאות יש לו מתוך N; בעונה הנוכחית בלבד גם "מה הלאה" – איזו תוצאה בתחרות הבאה תעלה אותו מקום / למקום הראשון ואם מי שמתחת יכול לעקוף (בהנחה ששאר המתחרים לא משתפרים). לכל ליגה – המוביל והפער (או מרוץ צמוד), מספר התחרויות והמשתתפים, התחרות עם הניקוד הנמוך והגבוה ביותר, הכי הרבה ניצחונות, הכי הרבה תוצאות מעל 1000 (או 100), והמועדון החזק בעשירייה. עונה שאינה האחרונה ברשימה נחשבת עונה שהסתיימה. בנייד שתי תובנות לאדם עד "עוד תובנות". הבחירה למעלה: ניווט יער / מאוץ / אופניים – יער ומאוץ הם הליגה הרגלית: דף של קטגוריה מציג לפעמים גם טבלת "ליגת מאוץ" לצד הליגה – ביער היא מוסתרת ובמאוץ רק היא מוצגת (כולל בכרטיסים ובתובנות); קטגוריות שמסתיימות ב-S, וקטגוריות שנמצאה בהן טבלת מאוץ, מוצעות תחת מאוץ. ליגת המאוץ קיימת החל מעונת 2022-2023: בעונות קודמות הכפתור מושבת, ומעבר לעונה כזו במאוץ עובר לניווט יער. כשיש אנשים שלי ברשימה ארוכה מוצגים הראשונים והסביבה שלהם (אפשר לעבור ל"כולם"), ומתחת טבלה מלאה. הבחירה נשמרת בדפדפן. מיקום אחרי כל תחרות: גרף מיקומים (1 למעלה) – המיקום בדירוג כפי שהיה אחרי כל תחרות, בהנחה שהתחרויות התקיימו לפי סדר הטבלה (N התוצאות הטובות עד אותה תחרות, כפול מקדם הגיל); האנשים שלי (או שלושת הראשונים) בצבע עם שם ומיקום בסוף הקו, שאר העשירייה בקווים אפורים, ריחוף על נקודה – מקום ונקודות. פירוט לפי תחרות: עמודה לכל תחרות בעונה (הראשונה מימין), בצבע של אותו אירוע בעמודות הדירוג; האנשים שלי מובחנים בצורה (עיגול, ריבוע, מעוין), קו מקווקו ב־1000 נקודות (או 100) ו־★ מעל נקודה שעברה אותו – כל המתחרים כנקודות אפורות, חציון השדה כקו, והאנשים שלי (עד שלושה בצבעים שונים; בלעדיהם – שלושת הראשונים) כנקודות גדולות: מלאה = נספרה בדירוג (מ־N הטובות), חלולה = לא נספרה. ריחוף/הקשה: נקודות, מקום בתחרות ואם נספרה. קטגוריות שהאנשים שלי נמצאו בהן מסומנות ב־★ ונזכרות.#results/<אירוע>/<קובץ>) – קובצי התוצאות והניתוח שמצורפים לאירוע (קובצי HTML ב-cdn.nivut.org.il) נפתחים אצלנו במקום בקובץ הגולמי: לשונית לכל מסלול/קטגוריה (★ כשהאנשים שלי בה; כשיש קטגוריות D ו-H, מתג קטן נשים / גברים / כללי ומתחתיו רק הכפתורים של הקבוצה – של הקטגוריה המוצגת כברירת מחדל; בנייד שורה אחת שגוללים), טבלת תוצאות עם חיפוש והאנשים שלי מודגשים, ובקבצים עם זמני ביניים – גרף פערים בסגנון SplitsBrowser עם שתי תצורות (הבחירה נשמרת): "מול המהיר בכל מקטע" – קו הייחוס הוא סכום הזמנים המהירים בכל מקטע, כך שהמהיר במקטע מצויר בו כקו שטוח; "מול המנצח" – המנצח הוא הקו השטוח ( עד 6 מתחרים, ברירת מחדל: האנשים שלי והמנצח) וטבלת זמני מקטעים עם דירוג בכל מקטע. פורמטים: SI-Droid Results ו-Split times, ניתוח זמני ביניים מוטה (עמודה לכל מתחרה), PDF תוצאות שהומר ל-HTML (pdf2htmlEX), וגם קובץ PDF עצמו – קורא טקסט PDF קטן בלי תלויות (lib/pdftext.js: פענוח Flate, מיפוי ToUnicode ומיקום התאים), העברית מוחזרת לסדר קריאה ושם האירוע והתאריך נלקחים מכותרת העמוד. בריחוף על נקודה בגרף: טבלת השוואה – זמן, מקום ופער כלליים עד הנקודה, וזמן, מקום ופער במקטע. בטבלת המקטעים שתי שורות לכל מתחרה: כללי ומקטע (זמן · פער · מקום). המקום הכללי נספר רק מול מסיימים תקינים. ניתוח מקטעים (מקופל, ובשורת הסיכום שלו: המקטעים הקשים, מי היה הכי מהיר בהכי הרבה מקטעים ובאילו מקטעים האנשים שלי היו הכי מהירים): לכל מקטע שלושת המהירים, זמן ממוצע (בלי זמנים בלתי אפשריים – טעויות מדידה), חציון, בכמה המהיר הקדים את החציון, כמה עם זמן, כמה פספסו את הנקודה, ובקובצי LapCombat גם זמן הטעות הממוצע; מעל הטבלה מספר המתחרים, המסיימים והפסולים לפי סוג. המקטעים הקשים (⚠, עם הסבר ליד כל אחד): בקובצי LapCombat – זמן הטעות הממוצע הגבוה ביותר; בשאר – היחס הגבוה ביותר בין החציון לזמן המהיר ("החציון פי 2.2 מהזמן המהיר"). בקובצי ניתוח LapCombat נקראים גם מדד המהירות (Leg speed index) וזמן הטעות (Leg mistake time) בכל מקטע, וסיכומים (ממוצע, מהירות שיוט, סה״כ טעויות, יחס טעויות וזמן אידיאלי): הם מוצגים בטבלת הריחוף, ובטבלת המקטעים אפשר לבחור כמה נתונים יחד – זמן כללי, זמן מקטע, מדד מהירות וזמן טעות (שורה לכל נתון אצל כל מתחרה, הבחירה נשמרת), עם צבע לפי רמה, מקום במקטע ועמודת סיכום. קובץ שלא מזוהה – קישור לקובץ המקורי. השרת קורא קבצים רק מאתרי האיגוד (api/resultfile). קבוצת קבצים באותו שם עם קטגוריות שונות (למשל LapCombat-Long, LapCombat-MediumA…) מוצגת כשורה אחת "LapCombat · 8 קטגוריות" שפותחת עמוד עם כפתור לכל קטגוריה (הבחירה האחרונה נזכרת); קובץ שאנחנו קוראים מוצג בצפייה שלנו, וניתוח חיצוני (LapCombat וכדומה) מוטמע בעמוד עם כפתור לפתיחה בחלון חדש. בגרף מסומנים מראש האנשים שלי (בצבעים הראשונים) והמנצח./Club/{מספר}, למשל images/clubs/modiin.jpg) ונשמר במטמון ליום. בגיבוי: הלוגו שבדף האירוע, טבלת לוגואים ידועים, club-logos/club{מספר}.png, ובסוף האות הראשונה של שם המועדון.nivut_club. אירועי המועדון מסומנים "⚑ המועדון שלי", ובחיפוש יש "רק אירועים של המועדון שלי".nivut_disc לשנה, וחלה על הניווטים הקרובים, הרשימה והתוכנית השנתית.| עמוד באתר האיגוד | מה נקרא ממנו | מצב |
|---|---|---|
| דף הבית | אירועים מפורסמים, שטחים סגורים, חדשות | מפענח לפי המבנה האמיתי ✅ |
דף אירוע (/{id}/Info) | כל פרטי האירוע | מפענח לפי המבנה האמיתי ✅ |
פורום (/forums/) | נושאים, הודעות ותגובות | מפענח לפי המבנה האמיתי ✅ |
results/ranking.aspx | דירוג הליגות לפי עונה וקטגוריה (בחירה בתפריטי Telerik מדומה בשרת) | מפענח לפי המבנה האמיתי; החלפת עונה/קטגוריה טרם נבדקה מול האתר החי ⚠️ |
calendar.aspx | לוח האירועים המלא | עמודות תאריך / יום / שם-מקום / תאור / מועדון / סוג ארוע; שם האירוע = המקום + התיאור, והתיאור קובע "אליפות" ו"אירוע סגור". נבדק מול עמוד שמור ✓ |
רשימת משתתפים (/{id}/Start, ובגיבוי הכפתור בדף האירוע) | שמות, מועדון, קטגוריה (מעמודה או מכותרת קבוצה), מסלול, שעת זינוק | פענוח לפי כותרות הטבלה, טרם נבדק מול העמוד האמיתי ⚠️ |
דפדפן ──► api/*.js (Vercel) ──► nivut.org.il
│ lib/nivut.js: הורדה, פענוח קידוד (UTF-8 / windows-1255), חילוץ ומיזוג
└► /api/events /api/event?id= /api/participants?id= /api/forum /api/news /api/links /api/ranking?league=&season=&category= (מטמון 10 דק')
דפדפן לא יכול לקרוא ישירות מ-nivut.org.il מדומיין אחר (CORS), לכן יש שרת Node קטן שמשמש כמתווך.
אם אתר האיגוד לא זמין, מוצג המידע האחרון שנקרא, עם הודעה על כך.
/api/event מקבל רק מזהה מספרי של אירוע, כך שהשרת אינו פרוקסי פתוח.
נדרש Node 18 ומעלה, ללא תלויות.
npm start # http://localhost:8080
npm run inspect # בדיקה מול האתר החי: מה נקרא מכל עמוד
npm test # בדיקות יחידה למפענחים
| משתנה סביבה | ברירת מחדל |
|---|---|
PORT | 8080 |
NIVUT_BASE | https://nivut.org.il/ |
NIVUT_FORUM_URL | {NIVUT_BASE}forums/ |
CACHE_SECONDS | 600 |
הפרויקט מוכן ל-Vercel, ללא שלב build:
public/ – האתר (HTML, CSS ו-JS).api/*.js – פונקציות serverless: /api/events, /api/event, /api/forum, /api/news, /api/links.vercel.json – תיקיית הפלט public וזמן ריצה מרבי של 30 שניות לפונקציה.s-maxage=600), ובמשך יום מוגשת הגרסה הקודמת בזמן הרענון. כך אתר האיגוד לא מקבל עומס.חיבור חד-פעמי: ב-vercel.com/new מייבאים את המאגר liorhal/nivut.org מ-GitHub ולוחצים Deploy, בלי לשנות הגדרות.
מכאן כל push לענף הראשי מתפרסם אוטומטית, וכל ענף אחר מקבל כתובת Preview.
npm start מריץ מקומית את אותן פונקציות בדיוק.
קבצי test/fixtures משחזרים את מבנה ה-HTML האמיתי של דף הבית, דף אירוע והפורום, עם שמות לדוגמה.