Register
Process Type
Graphical expression
Mind Type
Structured expression
Note Type
Efficient expression

مخطط جانتالصيغة

مخطط جانت

مخطط جانت هو مخطط أعمدة يُستخدم لعرض تقدّم المشروع والوقت اللازم لإكمال مشروع معيّن. ويعرض مخطط جانت عدد الأيام بين تاريخَي البداية والإنجاز لعناصر المشروع النهائية وعناصر التجميع.

ملاحظات

يسجّل مخطط جانت كل مهمة مخطط لها كشريط متصل يمتد من اليسار إلى اليمين. ويمثّل المحور x الوقت، ويسجّل المحور y المهام المختلفة وترتيب إنجازها.

والأهم من ذلك، عندما يُستثنى تاريخ مهمة أو عدد أيامها أو مجموعة تواريخ محدّدة، فسيتكيّف مخطط جانت مع هذه التغييرات بتمديد المدة بعدد الأيام نفسه إلى اليمين، بدلًا من إنشاء فجوات داخل المهمة .

كود
                            
نسخ
تضمين
gantt title A Gantt Diagram dateFormat YYYY-MM-DD excludes 2026-03-16,2026-03-18,2026-03-19 section Section A task :a1, 2026-03-07, 7d Another task :after a1, 5d

ولكن إذا وقعت التواريخ المستثناة بين مهمتين متتاليتين في البداية، فسيُتخطّى التاريخ المستثنى على المخطط ويُترك فارغًا، ثم تبدأ المهمة بعد انتهاء التاريخ المستثنى. كما يلي:

كود
                            
نسخ
تضمين
gantt title A Gantt Diagram dateFormat YYYY-MM-DD excludes Sunday, Friday, Saturday section Section A task :a1, 2026-03-07, 5d Another task :after a1, 7d

يُعدّ مخطط جانت مفيدًا لتتبّع الوقت اللازم لإكمال المشروع، ومع بعض التعديلات يمكن استخدامه أيضًا لتمثيل "أيام عدم العمل" بصورة رسومية.

الصيغة

كود
                            
نسخ
تضمين
gantt dateFormat YYYY-MM-DD title Adding GANTT diagram functionality to mermaid excludes weekends %% (`excludes` accepts specific dates in YYYY-MM-DD format, days of the week ("sunday") or "weekends", but not the word "weekdays".) section A section Completed task :done, des1, 2026-01-06,2026-01-08 Active task :active, des2, 2026-01-09, 3d Future task : des3, after des2, 5d Future task2 : des4, after des3, 5d section Critical tasks Completed task in the critical line :crit, done, 2026-01-06,24h Implement parser and jison :crit, done, after des1, 2d Create tests for parser :crit, active, 3d Future task in critical line :crit, 5d Create tests for renderer :2d Add to mermaid :until isadded Functionality added :milestone, isadded, 2026-01-25, 0d section Documentation Describe gantt syntax :active, a1, after des1, 3d Add gantt diagram to demo page :after a1 , 20h Add another diagram to demo page :doc1, after a1 , 48h section Last section Describe gantt syntax :after doc1, 3d Add gantt diagram to demo page :20h Add another diagram to demo page :48h

تكون المهام متتالية افتراضيًا، ويكون تاريخ بداية المهمة التالية افتراضيًا هو تاريخ انتهاء المهمة السابقة.

يُفصل عنوان المهمة عن بياناته الوصفية بنقطتين (:)، وتُفصل عناصر البيانات الوصفية عن بعضها بفواصل (,). وتشمل التسميات الصالحة active و done و crit و milestone. والتسميات اختيارية، لكن إذا استُخدمت فيجب وضعها في المقدمة. وبعد معالجة التسميات، تُفسَّر عناصر البيانات الوصفية المتبقية كما يلي:

  • إذا حُدِّد عنصر واحد، فسيحدّد متى تنتهي المهمة. ويمكن أن يكون تاريخًا أو وقتًا محدّدًا، أو مدة زمنية. وإذا حُدِّدت مدة، فستُضاف إلى تاريخ بداية المهمة لتحديد تاريخ انتهائها، مع مراعاة أي حالات استثناء.
  • إذا حُدِّد عنصران، فيُفسَّر العنصر الأخير بالطريقة نفسها كما في الحالة السابقة. ويمكن للعنصر الأول تحديد تاريخ أو وقت بداية صريح (بالتنسيق المحدّد بواسطة dateFormat)، أو الرجوع إلى مهمة أخرى عبر after <otherTaskID> [[otherTaskID2 [otherTaskID3]]...]. وفي الحالة الأخيرة، سيُعيّن تاريخ بداية المهمة بناءً على آخر تاريخ انتهاء للمهام المشار إليها.
  • إذا حُدِّدت ثلاثة عناصر، فيُفسَّر العنصران الأخيران وفق الحالة السابقة. وسيمثّل العنصر الأول معرّف ID المهمة، ويمكن الرجوع إليه بصيغة later <taskID>.
صيغة البيانات الوصفية تاريخ البداية تاريخ النهاية ID
<taskID>, <startDate>, <endDate> startdate المُفسَّر باستخدام dateformat endDate المُفسَّر باستخدام dateformat taskID
<taskID>, <startDate>, <length> startdate المُفسَّر باستخدام dateformat تاريخ البداية + length taskID
<taskID>, after <otherTaskId>, <endDate> تاريخ انتهاء المهمة المحدّدة سابقًا otherTaskID endDate المُفسَّر باستخدام dateformat taskID
<taskID>, after <otherTaskId>, <length> تاريخ انتهاء المهمة المحدّدة سابقًا otherTaskID تاريخ البداية + length taskID
<taskID>, <startDate>, until <otherTaskId> startdate المُفسَّر باستخدام dateformat تاريخ بداية المهمة المحدّدة سابقًا otherTaskID taskID
<taskID>, after <otherTaskId>, until <otherTaskId> تاريخ انتهاء المهمة المحدّدة سابقًا otherTaskID تاريخ بداية المهمة المحدّدة سابقًا otherTaskID taskID
<startDate>, <endDate> startdate المُفسَّر باستخدام dateformat 使用 dateformat 解释的 enddate غير قابل للتطبيق
<startDate>, <length> startdate المُفسَّر باستخدام dateformat تاريخ البداية + length غير قابل للتطبيق
after <otherTaskID>, <endDate> تاريخ انتهاء المهمة المحدّدة سابقًا otherTaskID 使用 dateformat 解释的 enddate غير قابل للتطبيق
after <otherTaskID>, <length> تاريخ انتهاء المهمة المحدّدة سابقًا otherTaskID تاريخ البداية + length غير قابل للتطبيق
<startDate>, until <otherTaskId> startdate المُفسَّر باستخدام dateformat تاريخ بداية المهمة المحدّدة سابقًا otherTaskID غير قابل للتطبيق
after <otherTaskId>, until <otherTaskId> تاريخ انتهاء المهمة المحدّدة سابقًا otherTaskID تاريخ بداية المهمة المحدّدة سابقًا otherTaskID غير قابل للتطبيق
<endDate> تاريخ انتهاء المهمة السابقة 使用 dateformat 解释的 enddate غير قابل للتطبيق
<length> تاريخ انتهاء المهمة السابقة تاريخ البداية + length غير قابل للتطبيق
until <otherTaskId> تاريخ انتهاء المهمة السابقة تاريخ بداية المهمة المحدّدة سابقًا otherTaskID غير قابل للتطبيق

تنسيق المدة

عند تحديد <length>، استخدم رقمًا متبوعًا بأحد لاحقات الوحدات التالية:

الوحدة اللاحقة مثال
ميلي ثانية ms 50ms
ثانية s 30s
دقيقة m 30m
ساعة h 4h
يوم d 7d
أسبوع w 3w
شهر m 2m
سنة y 1y

كما تُدعَم القيم العشرية (مثل 2.5d). وتُتجاهل علامات المدة غير الصالحة (مثل 3dX)، وستكون المدة الافتراضية للمهمة صفرًا.

للإيجاز، لا يعرض الجدول المهام المتعددة المسرودة باستخدام صيغة after. وفيما يلي مثال:

كود
                            
نسخ
تضمين
gantt apple :a, 2026-07-20, 1w banana :crit, b, 2026-07-23, 1d cherry :active, c, after b a, 1d kiwi :d, 2026-07-20, until b c

العنوان

title سلسلة نصية اختيارية تُعرض في أعلى مخطط جانت، وتُستخدم لوصف المخطط بأكمله.

استثناء

excludes خاصية اختيارية تقبل تاريخًا محدّدًا (بتنسيق YYYY-MM-DD) أو أيام أسبوع (مثل "sunday") أو "weekends"، لكن لا يمكن استخدام كلمة "weekdays". وستُوسَم هذه التواريخ على المخطط وتُستثنى من حساب مدة المهمة. وهذا يعني أنه إذا تضمّنت مدة المهمة تواريخ مستثناة، فسيُضاف عدد الأيام المستثناة إلى وقت انتهاء المهمة، لضمان اتساق مدة المهمة مع ما هو محدّد في الكود.

عطلة نهاية الأسبوع

عند استثناء عطلة نهاية الأسبوع، يمكن تعيين عطلة نهاية الأسبوع إلى الجمعة والسبت، أو السبت والأحد. وافتراضيًا، تكون عطلة نهاية الأسبوع يومَي السبت والأحد. ولمعرفة يوم بداية عطلة نهاية الأسبوع، يمكن إضافة خاصية اختيارية weekend في سطر جديد متبوعة بـ friday أو saturday.

كود
                            
نسخ
تضمين
gantt title A Gantt Diagram Excluding Fri - Sat weekends dateFormat Букмекерлар-MM-DD excludes weekends weekend friday section Section A task :a1, 2026-01-01, 30d Another task :after a1, 20d

إعلان الجزء

يمكنك تقسيم المخطط إلى أجزاء تفصل بين أجزاء المشروع المختلفة (مثل التطوير والتوثيق).

ولهذا الغرض، استخدم صيغة section في بداية سطر وامنحه اسمًا. يرجى ملاحظة أنه على عكس عنوان المخطط بأكمله، فإن هذا الاسم إلزامي.

معلم

يمكنك إضافة معالم إلى المخطط. وتختلف المعالم عن المهام لأنها تمثّل وقتًا محدّدًا، وتُعرَّف بصيغة milestone. وفيما يلي مثال على استخدام المعالم: يُحدَّد الموضع الدقيق للمعلم بتاريخ بداية المعلم ومدة المهمة، كما يلي:

كود
                            
نسخ
تضمين
gantt dateFormat HH:mm axisFormat %H:%M Initial milestone : milestone, m1, 17:49, 2m Task A : 10m Task B : 5m Final milestone : milestone, m2, 18:08, 4m

علامة رأسية

يمثّل vert إضافة خط رأسي في مخطط جانت لإبراز تواريخ مهمة بسهولة، مثل المواعيد النهائية أو الأحداث المهمة أو نقاط التفتيش. وتمتد هذه العلامات عبر المخطط بأكمله، وتُحدَّد مواقعها وفق التاريخ الذي توفّره. وعلى عكس المعالم، لا تشغل العلامات الرأسية سطرًا. وهي نقاط مرجعية بصرية بحتة، تُساعد على تقسيم الخط الزمني لتسهيل التعرّف على اللحظات المهمة.

كود
                            
نسخ
تضمين
gantt dateFormat HH:mm axisFormat %H:%M Initial vert : vert, v1, 17:30, 2m Task A : 3m Task B : 8m Final vert : vert, v2, 17:58, 4m

تعيين التاريخ

يحدّد dateFormat تنسيق إدخال التاريخ لعناصر مخطط جانت، ويحدّد axisFormat تنسيق إخراج التاريخ عند تصيير المخطط.

تنسيق تاريخ الإدخال

تنسيق تاريخ الإدخال الافتراضي هو YYYY-MM-DD، ويمكنك تخصيص dateFormat.

                            
نسخ
تضمين
dateFormat YYYY-MM-DD

تُدعَم خيارات التنسيق التالية:

输入 مثال الوصف
YYYY 2026 سنة من 4 أرقام
YY 26 سنة من رقمين
Q 1..4 رقم الربع
M MM 1..12 رقم الشهر
D DD 1..31 يوم من الشهر
Do 1st..31st يوم من الشهر برقم ترتيبي
DDD DDDD 1..365 يوم من السنة
X 1410715640.579 الطابع الزمني Unix
x 1410715640579 الطابع الزمني Unix بالميلي ثانية
H HH 0..23 الوقت بنظام 24 ساعة
h hh 1..12 الوقت بنظام 12 ساعة، يُستخدم مع a A
a A am pm صباحًا أو مساءً
m mm 0..59 دقيقة
s ss 0..59 عدد الثواني
S 0..9 عُشر الثانية
SS 0..99 جُزء من مئة من الثانية
SSS 0..999 جُزء من ألف من الثانية
Z ZZ +12:00 الإزاحة عن UTC، بالتنسيق +-HH:mm أو +-HHmm أو Z

تنسيق تاريخ إخراج المحور

تنسيق تاريخ الإخراج الافتراضي هو YYYY-MM-DD. ويمكنك تخصيص axisFormat، مثل 2026-Q1 للدلالة على الربع الأول من عام 2026.

                            
نسخ
تضمين
axisFormat %Y-%m-%d

تُدعَم سلاسل التنسيق التالية:

التنسيق,التعريف
%a الاسم المختصر ليوم الأسبوع
%A الاسم الكامل ليوم الأسبوع
%b الاسم المختصر للشهر
%B الاسم الكامل للشهر
%c التاريخ والوقت المحليان
%d التاريخ، رقم عشري [01,31]
%e التاريخ، رقم عشري [1,31] مبطّن بمسافات، يكافئ %_d
%H الساعة (بنظام 24 ساعة)، رقم عشري [00,23]
%I الساعة (بنظام 12 ساعة)، رقم عشري [01,12]
%j اليوم من السنة، رقم عشري [001,366]
%m الشهر، رقم عشري [01,12]
%M الدقيقة، رقم عشري [00,59]
%L الميلي ثانية، رقم عشري [000, 999]
%p صباحًا أو مساءً
%S الثانية، رقم عشري [00,59]
%U أسبوع السنة (مع اعتبار الأحد أول يوم في الأسبوع)، رقم عشري [00,53]
%w يوم الأسبوع، رقم عشري [0,6] مبطّن بمسافات، حيث يمثّل 0 يوم الأحد
%W أسبوع السنة (مع اعتبار الاثنين أول يوم في الأسبوع)، رقم عشري [00,53]
%x تمثيل التاريخ المحلي، مثل: 2026-09-18
%X تمثيل الوقت المحلي، مثل: 14:30:00
%y السنة دون قرن، رقم عشري [00,99]، على سبيل المثال 26 يمثّل سنة 2026
%Y السنة مع القرن، رقم عشري
%Z اختصار اسم المنطقة الزمنية، مثل "-0700"
%% حرف الإفلات، يُستخدم لعرض علامة النسبة المئوية % نفسها

علامة المحور

الإخراج الافتراضي للعلامات تلقائي. ويمكنك تخصيص tickInterval، مثل 1day أو 1week.

                            
نسخ
تضمين
tickInterval 1day

النمط هو

                            
نسخ
تضمين
/^([1-9][0-9]*)(millisecond|second|minute|hour|day|week|month)$/;

يبدأ tickInterval المعتمد على الأسبوع افتراضيًا من يوم الأحد. وإذا أردت تحديد يوم آخر لبداية tickInterval، فاستخدم خيار weekday، كما في الكود التالي:

كود
                            
نسخ
تضمين
gantt tickInterval 1week weekday monday

إخراج الوضع المضغوط

يتيح لك الوضع المضغوط عرض عدة مهام في السطر نفسه. ويتم التحكم في وضع عرض المخطط من خلال إعداد YAML السابق، لتمكين الوضع المضغوط لمخطط جانت.

كود
                            
نسخ
تضمين
--- displayMode: compact --- gantt title A Gantt Diagram dateFormat YYYY-MM-DD section Section A task :a1, 2026-01-01, 30d Another task :a2, 2026-01-20, 25d Another one :a3, 2026-02-10, 20d

يمكن إدخال تعليقات في مخطط جانت، وسيتجاهلها المحلّل. يجب أن يشغل التعليق سطرًا مستقلًا، ويجب أن يبدأ بـ %% (علامتي النسبة المئوية المزدوجة). ويُعدّ أي نص بعد بداية التعليق حتى حرف السطر الجديد التالي تعليقًا، بما في ذلك أي صيغة مخطط.

كود
                            
نسخ
تضمين
gantt title A Gantt Diagram %% This is a comment dateFormat YYYY-MM-DD section Section A task :a1, 2014-01-01, 30d Another task :after a1, 20d section Another Task in Another :2014-01-12, 12d another task :24d

علامة اليوم

يمكنك تعيين تنسيق لعلامة التاريخ الحالي أو إخفاء هذه العلامة. ولتعيين التنسيق، أضف قيمة إلى مفتاح todayMarker.

                            
نسخ
تضمين
todayMarker stroke-width:5px,stroke:#0f0,opacity:0.5

لإخفاء العلامة، عيّن todayMarker إلى off.

                            
نسخ
تضمين
todayMarker off

مثال

مخطط جانت العمودي

كود
                            
نسخ
تضمين
gantt title Git Issues - days since last update dateFormat X axisFormat %s section Issue19062 71 : 0, 71 section Issue19401 36 : 0, 36 section Issue193 34 : 0, 34 section Issue7441 9 : 0, 9 section Issue1300 5 : 0, 5

الخط الزمني (يتضمّن التعليقات وCSS والتكوين المسبق)

كود
                            
نسخ
تضمين
--- # Frontmatter config, YAML comments title: Ignored if specified in chart displayMode: compact #gantt specific setting but works at this level too config: # theme: forest # themeCSS: " #item36 { fill: CadetBlue } " themeCSS: " // YAML supports multiline strings using a newline markers: #item36 { fill: CadetBlue } // Custom marker workaround CSS from forum (below) rect[id^=workaround] { height: calc(100% - 50px) ; transform: translate(9px, 25px); y: 0; width: 1.5px; stroke: none; fill: red; } text[id^=workaround] { fill: red; y: 100%; font-size: 15px;} " gantt: useWidth: 400 rightPadding: 0 topAxis: true #false numberSectionStyles: 2 --- gantt title Timeline - Gantt Sampler dateFormat YYYY axisFormat %y %% this next line doesn't recognise 'decade' or 'year', but will silently ignore tickInterval 1decade section Issue19062 71 : item71, 1900, 1930 section Issue19401 36 : item36, 1913, 1935 section Issue1300 94 : item94, 1910, 1915 5 : item5, 1920, 1925 0 : milestone, item0, 1918, 1s 9 : vert, 1906, 1s %% not yet official 64 : workaround, 1923, 1s %% custom CSS object https://github.com/mermaid-js/mermaid/issues/3250