اپ PWA فارسی برای مدیریت چارت درسی مهندسی برق (گرایش الکترونیک و قدرت) دانشگاه آزاد تهران شمال، مصوبه ۱۷۹ مورخ ۱۴۰۳/۰۴/۱۰.
بدون بیلد و بدون وابستگی: فقط HTML/CSS/JS ساده. روی GitHub Pages دیپلوی میشه (.github/workflows/static.yml).
index.html اسکلت صفحه + لود فایلها (ترتیب <script>ها مهمه)
manifest.json, sw.js PWA و کش آفلاین
css/styles.css همهی استایلها (رنگبندی گرایشها آخر فایل)
js/
data/ فقط داده (درسها و گروهها)
elec-courses.js همهی درسهای برق: مشترک + الکترونیک (e..) + قدرت (p..)
elec-groups.js گروهبندی چارت برق (ALL_ELEC_GROUPS)
islamic.js درسها و گروههای معارف
general.js درسها و گروههای عمومی
state.js ذخیره/بارگذاری state در localStorage
track.js منطق گرایشها: قفل گرایش، گرایش فعلی، گروههای هر نما
logic.js وضعیت درسها، پیشنیاز/همنیاز، پیشرفت گروهها، معدل
render-course.js ردیف درس + شیت روابط پیشنیازی
render-groups.js رندر گروهها و نوار پیشرفت هر بخش
render-dashboard.js داشبورد بالای صفحه
suggestions.js پیشنهاد هوشمند این ترم
render.js renderAll و یادداشت گرایش
chart-export.js خروجی PDF/چاپ کل چارت
ui-tabs.js تبها و زیرتبها
ui-settings.js مودال تنظیمات
ui-menu.js منوی همبرگری + صفحهی پیشنهاد واحد (#suggest)
actions.js ریست، خروجی/ورودی بکاپ JSON
main.js رندر اولیه + ثبت service worker
همهی فایلها اسکریپت معمولیان و یک scope سراسری مشترک دارن، پس ترتیب لود تو index.html و CORE_ASSETS تو sw.js باید یکی بمونه.
- درس جدید: تو
js/data/elec-courses.jsاضافه کن و idش رو تو گروه مناسبelec-groups.jsبذار.trk:'elec'یاtrk:'power'یعنی اختصاصی اون گرایش (و قفلکنندهی گرایش دیگه).noLock:trueیعنی تو تب همون گرایش بیاد ولی گذروندنش گرایش رو قفل نکنه.- بدون
trkیعنی مشترک (تو هر دو تب «الکترونیک» و «قدرت» نشون داده میشه).
- گروه مشترک فقط نمایشی:
virtual:true(تو آمار و پیشنهاد حساب نمیشه). - درسهای در حال گذراندن تو
state.currentذخیره میشن (وضعیتcurrent). - رنگ گرایشها: متغیرهای
--c-common/--c-elec/--c-power/--c-currentتو آخرcss/styles.css. - بعد از هر تغییر،
CACHE_NAMEرو توsw.jsعوض کن تا کش گوشیها آپدیت بشه. فایل جدید JS/CSS رو هم بهCORE_ASSETSاضافه کن.