Gitea: رسم بياني للمساهمين

تم إنشاؤها على ٥ فبراير ٢٠١٧  ·  30تعليقات  ·  مصدر: go-gitea/gitea

تنفيذ الرسوم البيانية للمساهمين: https://github.com/go-gitea/gitea/graphs/contributors

screenshot_20170205_131515


تريد أن تدعم هذه القضية؟ أضف مكافأة على ذلك! نقبل المنح عبر Bountysource .

kinfeature revieweconfirmed

التعليق الأكثر فائدة

حسنًا أيها الناس ، تحديث آخر. تمكنت من الوصول إلى هذه الحالة:

image


انقر فوق لتوسيع:

Gitea vs GitHub (مثال من الحياة الواقعية)

! [صورة] (https://user-images.githubusercontent.com/19366641/50791201-6f7d9500-12c1-11e9-9a3d-7612c63e6b4a.png)! [صورة] (https://user-images.githubusercontent.com/ 19366641 / 50791210-7c9a8400-12c1-11e9-985c-b0dffcbfae3a.png)

مظلم

! [صورة] (https://user-images.githubusercontent.com/19366641/50791412-0cd8c900-12c2-11e9-86e7-5fb4142a5bcc.png)



تفاصيل:

  • لا توجد بيانات مكشوفة عبر واجهة برمجة تطبيقات HTTP ، يتم تقديم الرسوم البيانية إلى SVG (باستخدام https://github.com/wcharczuk/go-chart) على الخادم. هذا فعال حقًا ويبقي الأمور بسيطة.
  • الفرز حسب عدد عمليات الإيداع والإضافات والحذف
  • تعتمد واجهة المستخدم "قليلاً" على GitHub 😄

الأعداد المتبقية:

  • لن يظهر المساهمون ، الذين ليسوا في gitea DB (على سبيل المثال ، لأنه تم استيراد الريبو).
  • مشاكل الأداء مع مستودعات أكبر. قد يكون مجرد أنا golang n00b.
  • إزالة عناصر AM / PM من المحور X (يمكن إجراؤها بسهولة عبر المنسق المخصص )
  • أصلح مقياس المحور الصادي للرسوم البيانية للمستخدم ، يجب أن يكون الالتزام الأول بنصف الارتفاع مثل 2 التزام ✅
  • دعم المظهر الداكن المناسب (تم تعديل CSS أعلاه في أدوات التطوير)

التحسينات الممكنة:

  • الإحصائيات خاصة بالفرع الرئيسي (مشفر بشكل ثابت) ، ويمكن تغيير هذا بسهولة وعرضه كعنصر تحكم في واجهة المستخدم

نرحب بأفكار التغييرات والتحسينات - لقد انتهيت حتى الآن! أخشى مراجعة الكود القادمة على الرغم من: ابتسم:

ال 30 كومينتر

هل هناك رسم بياني ليب جيد؟ في رأيي يمكن تقديم هذا وتخزينه مؤقتًا من جانب الخادم

أي تقدم؟

سيكون من الرائع أن يكون لديك

أود أن أبدأ العمل على هذه الميزة ، إذا لم يكن أحد يستخدمها بالفعل (نعم lafriks ، لقد تعلمت درسي ، +1 ليس بنّاء 😉).

ربما أحتاج إلى بعض المساعدة بين الحين والآخر ، على سبيل المثال حول كيفية اتخاذ قرار بشأن العرض من جانب الخادم أو العميل ، وما مكتبة الرسوم البيانية التي يجب استخدامها وما إلى ذلك.
أنا أيضًا لا أعرف بشكل أساسي أي Go ولكن لدي معرفة جيدة بالواجهة الأمامية لذا يجب أن تعمل ، وكل شيء له أول مرة ، كما أردت الغوص في القرصنة على Gitea منذ فترة

لنبدأ بتفكيك الحلول الحالية لتحديد البيانات المطلوبة وهيكل البيانات المحتمل.

جيثب

نقطة نهاية API لبيانات المساهمات هي https://github.com/<owner>/<repo>/graphs/contributors-data .

بيانات JSON التي تم إرجاعها هي في الأساس قائمة من العناصر (كل منها يمثل مساهمًا واحدًا) مرتبة أقل المساهمات أولاً ، ومعظم المساهمات أخيرًا:

[
  { ... }, // User with least contributions
    ...
  { ... }, // User with second most contributions
  { ... }  // User with most contributions
]

الهيكل مشابه تقريبًا للهيكل الموثق هنا ويبدو كالتالي:

{
  "author": {
    "id": 12345,
    "login": "octocat",
    "avatar": "https://avatars3.githubusercontent.com/u/12345?s=60&v=4",
    "path": "/octocat",
    "hovercard_url": "/hovercards?user_id=12345"
  },
  "total": 123,
  "weeks": [
    // First week in which the repo existed
    {
      "w": 1391904000,
      "a": 6898,
      "d": 77,
      "c": 10
    },
    // Second week in which the repo existed
    {
      "w": 1392508800,
      "a": 2437,
      "d": 439,
      "c": 6
    },
    ...
    // Current week
    {
      "w": 1538265600,
      "a": 0,
      "d": 0,
      "c": 0
    }
  ]
}

كل عضو في المصفوفة "weeks" متكون له السمات التالية:

  • w - بداية الأسبوع ، تُعطى كطابع زمني لـ Unix.
  • a - عدد الإضافات
  • d - عدد عمليات الحذف
  • c - عدد عمليات التنفيذ

يتم استخدام كل هذه المعلومات لبناء هذه البطاقات:

grafik

من الواضح أنه يمكن إنشاء الرسم البياني للمساهمات الكبيرة عن طريق جمع الإحصائيات من كل مستخدم في الأسبوع n ( 0 <= n <= weeks since the repo exists ) وتخطيط القيمة التراكمية لكل أسبوع.

جيت لاب

GitLab CE هو مفتوح المصدر ، لذلك لدينا الملفات ذات الصلة:

نقطة نهاية API هي https://gitlab.com/<owner>/<repo>/graphs/master?format=json .

بيانات JSON التي تم إرجاعها أبسط بكثير:

[
  { ... }, // Latest commit
  { ... }, // Second latest commit
    ...
  { ... }, // First commit
]

يمثل كل عضو في المصفوفة التزامًا واحدًا ، تم فرز آخر التزام أولاً ، التزام أولي أخيرًا. يبدو الهيكل على النحو التالي:

{
  "author_name": "Some User",
  "author_email": "[email protected]",
  "date": "2018-10-02"
}

إذا قام المستخدم بعدة التزامات في نفس اليوم ، فسيكون هناك ببساطة إدخالات مكررة بنفس معلومات المستخدم والتاريخ ، واحد لكل التزام.

ستحتوي المربعات لكل مستخدم على معلومات أقل من تلك الموجودة على GitHub ، ويتم التخطيط عن طريق أخذ عدد الالتزامات ليوم واحد ، X-Axis هو الوقت ، وعدد Y-Axis للالتزامات. يتم ذلك لكل من الريبو بالكامل (تجاهل اسم المستخدم) ولكل مستخدم (أخذ جميع إدخالات الالتزام لمستخدم معين في يوم محدد).


في كلتا الحالتين ، يتم التقديم من جانب العميل ، والذي يتمتع بميزة كبيرة تتمثل في القدرة على إنشاء مخططات ديناميكية باستخدام التكبير / التصغير.

إذا كان يعمل مع سير العمل العام الخاص بك هنا ، فسأكون على ما يرام مع تعييني لهذه المشكلة.


المزيد من الأفكار حول هذا. ردود الفعل البناءة هي بالطبع محل تقدير كبير!

وضع رابط الصفحة على واجهة المستخدم

image

يجب أن يعمل هذا بشكل جيد ، لا داعي لإعادة هيكلة أي شيء في الوقت الحالي.

عند الحديث عن الروابط ، من المحتمل أن تكون الصفحة موجودة على https://git.example.com/<owner>/<repo>/contributors ، هكذا تعمل جميع الروابط الأخرى الموجودة هناك.

هناك فكرة أخرى ، لا أفضلها ، وهي وضع الرسم البياني (الرسوم البيانية) للمساهمين في صفحة النشاط.

قمت ببعض تحرير DOM:

image

اخترت octicon-organization كرمز ، وقد يعمل octicon-graph أيضًا.

الآن بعض تعديلات CSS السريعة على مخطط المساهمين في GitHub لـ Gitea ودمج الصور:

image

هذه فكرة تقريبية للغاية عن الشكل الذي قد يبدو عليه ، دون مراعاة المخططات الفردية لكل مستخدم.

تبدو رائعة ^ - ^

linusg عظيم! إنطلق!

lunny أنا مرتبك كيندا الآن: من هو @ Morlinest وما هو الدور الذي سيلعبه في هذه القضية؟

ربما يكون هذا خطأ أو ربما لديه بعض الخطط السرية معي: د

linusgMorlinest :( آسف. خطأ مثل ما قاله Morlinest . أريد تعيين هذه المشكلة إلى linusg لكنني وجدت أنه لا يمكن تخصيصها لغير المشرفين وإصدار الملصق.

حسنًا ، شكرًا للتوضيح: ابتسم:

أوه ، لذلك سأفعل ذلك الآن: د

تنبيه قصير للمهتمين: كنت أرغب في العمل على هذا خلال عطلة عيد الميلاد ، لكن لم أجد الكثير من الوقت. لقد قمت بإنشاء العناصر الأساسية (الصفحة ، التوجيه ، إلخ) وأخطط لمواصلة العمل عليها!

شكرا جزيلا ^ - ^

حسنًا أيها الناس ، تحديث آخر. تمكنت من الوصول إلى هذه الحالة:

image


انقر فوق لتوسيع:

Gitea vs GitHub (مثال من الحياة الواقعية)

! [صورة] (https://user-images.githubusercontent.com/19366641/50791201-6f7d9500-12c1-11e9-9a3d-7612c63e6b4a.png)! [صورة] (https://user-images.githubusercontent.com/ 19366641 / 50791210-7c9a8400-12c1-11e9-985c-b0dffcbfae3a.png)

مظلم

! [صورة] (https://user-images.githubusercontent.com/19366641/50791412-0cd8c900-12c2-11e9-86e7-5fb4142a5bcc.png)



تفاصيل:

  • لا توجد بيانات مكشوفة عبر واجهة برمجة تطبيقات HTTP ، يتم تقديم الرسوم البيانية إلى SVG (باستخدام https://github.com/wcharczuk/go-chart) على الخادم. هذا فعال حقًا ويبقي الأمور بسيطة.
  • الفرز حسب عدد عمليات الإيداع والإضافات والحذف
  • تعتمد واجهة المستخدم "قليلاً" على GitHub 😄

الأعداد المتبقية:

  • لن يظهر المساهمون ، الذين ليسوا في gitea DB (على سبيل المثال ، لأنه تم استيراد الريبو).
  • مشاكل الأداء مع مستودعات أكبر. قد يكون مجرد أنا golang n00b.
  • إزالة عناصر AM / PM من المحور X (يمكن إجراؤها بسهولة عبر المنسق المخصص )
  • أصلح مقياس المحور الصادي للرسوم البيانية للمستخدم ، يجب أن يكون الالتزام الأول بنصف الارتفاع مثل 2 التزام ✅
  • دعم المظهر الداكن المناسب (تم تعديل CSS أعلاه في أدوات التطوير)

التحسينات الممكنة:

  • الإحصائيات خاصة بالفرع الرئيسي (مشفر بشكل ثابت) ، ويمكن تغيير هذا بسهولة وعرضه كعنصر تحكم في واجهة المستخدم

نرحب بأفكار التغييرات والتحسينات - لقد انتهيت حتى الآن! أخشى مراجعة الكود القادمة على الرغم من: ابتسم:

سوو ... ها نحن ذا! حان الوقت الآن لبعض المدخلات الخارجية ، لذا يرجى الاطلاع أدناه على الصور.

image

(gitea repo مأخوذ من GitHub)

image

دعني أوضح:

  • سيتم عرض المستخدمين الذين ليسوا في قاعدة بيانات مستخدمي gitea ، ولكن بدون رابط إلى الملف الشخصي ، obv. يتم حساب الإحصائيات من خلال اسم المستخدم (يتوفر فقط "الاسم" و "البريد الإلكتروني" لكل التزام) ، ولهذا السبب توجد "غير معروف" و "Unknwon" و "无 闻" مقابل "Unknwon" فقط في GitHub: المعلومات ، هذه هي يتم فقد كل نفس المستخدم عند استنساخ / استيراد الريبو. أعتقد أن هذا هو أفضل خيار متاح ، أفكار؟

  • يجمع GitHub الإحصائيات في الأسبوع ، وذهبت مع الإحصائيات اليومية. هل يجب تغيير هذا؟

    هذا هو سبب انتهاء المحور Y على GitHub عند 150 تقريبًا [التزامًا في الأسبوع] و Gitea عند 52 [التزامًا في اليوم]. كما أنه يجعل الرسم البياني على Gitea يظهر بمزيد من "المسامير". (الاستيفاء غير متوفر أيضًا)

  • يستبعد GitHub التزامات الدمج من الإحصائيات ، ولم أقم بتنفيذ أي شيء من هذا النوع (ولا أعرف مدى صعوبة التمييز بين الالتزام العادي). هل نريد هذه الميزة؟

  • هل ترغب في لون منفصل للرسوم البيانية لكل مستخدم؟

  • ما الذي تعتقد أنه يمكن تحسينه؟

أداء:

لقد أصلحت جميع المشكلات المذكورة في آخر مشاركة لي ، وأعود إلى بعض مشكلات الأداء. كل الإحصائيات من جهاز التطوير الخاص بي:

تستغرق صفحة المساهمين في Gitea blog repo 1.1 ثانية للتحميل ، وهو أمر جيد على الأرجح (_الصفحة: 1090 مللي ثانية ، القالب: 7 مللي ثانية_)

استغرق الأمر الخاص بـ gitea main repo دقيقة واحدة و 14 ثانية وتقارير _الصفحة: 74443ms قالب: 47ms_. لديها تسع سنوات من التاريخ وما يقرب من 7k تلتزم ، على الرغم من ذلك.

التحسينات الممكنة: تنتهي صفحة مساهم gitea repo بـ 602 بطاقة مستخدم ، وأعتقد أن GitHub يتوقف عند 100. راجع https://github.com/go-gitea/gitea/graphs/contributors.

ما رأيك في ذلك؟

image

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

اضطررت إلى مسح ذاكرة التخزين المؤقت لـ ServiceWorker حتى تظهر ملفات CSS التي تم تغييرها (لن يعمل تحديث ذاكرة التخزين المؤقت العادي). ماذا علي أن أفعل هنا حتى يعمل OOTB؟

المزيد من لقطات الشاشة ، انقر للتوسيع

! [صورة] (https://user-images.githubusercontent.com/19366641/50845620-95f90a00-136d-11e9-94a1-dfcdbdcf8908.png)! [صورة] (https://user-images.githubusercontent.com/ 19366641 / 50845863-28011280-136e-11e9-8a93-a194dde3115c.png)! [صورة] (https://user-images.githubusercontent.com/19366641/50846330-2be16480-136f-11e9-8aad-e814157d045f.png)! [صورة] (https://user-images.githubusercontent.com/19366641/50846507-9b575400-136f-11e9-9a6f-97f7a9ec28a1.png)

linusg عمل عظيم !!! ماذا عن السماح بالعمل كـ cronjob عندما يكون المستودع كبيرًا (أي أكثر من 1000 التزام)؟ يمكن تشغيله ليوم واحد أو أكثر حسب التكوين. أعتقد أن أفضل 100 أمر كافٍ ، وإلا فإن ترقيم الصفحات أفضل.

تضمين التغريدة

  • الإحصائيات خاصة بالفرع الرئيسي (مشفر بشكل ثابت) ، ويمكن تغيير هذا بسهولة وعرضه كعنصر تحكم في واجهة المستخدم

ربما يمكنك استخدام خيار الفرع الافتراضي بدلاً من إنشاء خيار آخر.

تم وضع علامة على هذه المشكلة تلقائيًا على أنها قديمة نظرًا لعدم وجود نشاط حديث لها. سيتم إغلاقه إذا لم يحدث أي نشاط آخر خلال الأسبوعين المقبلين. شكرا لمساهماتكم.

لا ، ما زلت أعمل على هذا - قد يزيل شخص ما التصنيف stale !

كلا ، ما زلت أعمل على هذا

هذه أخبار جيدة ، آمل أن نرى هذه الميزة قريبًا!
تم التنشيط لرؤية الرسوم البيانية وتمثيل البيانات الرسومية في كل مكان ...

هذه أخبار جيدة ، آمل أن نرى هذه الميزة قريبًا!

قريباً: tm:

الوقت بالتأكيد مشكلة بالنسبة لي ... بجانب معرفتي غير الموجودة في الأساس بـ golang ، هاها.

يسعدني أن أرى كل الإثارة (أنا متحمس أيضًا ، لن أعمل على هذا بخلاف ذلك!) ، ولكن إذا شعرت أن هذا لا يحرز تقدمًا بالسرعة الكافية (اللعنة ، لقد مر أكثر من نصف عام) ، يمكنني إجراء علاقات عامة مع كل التغييرات ويمكن لشخص آخر المساعدة؟

قريبا ™ ️

😅

ولكن إذا شعرت أن هذا لا يحرز تقدمًا بالسرعة الكافية

Naaah .. من يهتم بالوقت الذي تستغرقه في ميزة ما إذا كانت ميزة جيدة جدًا وعاملة؟

يمكنني إجراء علاقات عامة مع كل التغييرات ويمكن لشخص آخر المساعدة؟

IDK ، ربما يمكنك نشر الريبو الخاص بك علنًا هنا على GH حتى يتمكن الآخرون من نشر علاقات عامة مع الريبو الخاص بك وتشغيله حتى تتمكن من العلاقات العامة الرسمية والحصول على ذلك متكامل
أو يمكنك فتح علاقات عامة لفرع جديد في الريبو الرسمي حيث يمكن للأشخاص المهرة والراغبين بالوقت العمل والعلاقات العامة بدلاً من ذلك ، في انتظار دمج الفرع في سيد بالطبع ...

linusg برجاء إرسال رسالة علاقات عامة والتي ربما يمكن أن يساعدك أحدهم عندما تكون غائبًا.

نتطلع إلى هذه الميزة. هل هي قديمة الآن؟ .....شكرا

هل من أخبار أخرى هنا؟

هل تم تقديم علاقات عامة أو فرع هنا؟

لا أعتقد ذلك. تضمين التغريدة

لا أعتقد أنني دفعت تغييراتي. لست متأكدًا مما إذا كان لا يزال لديهما - آسف!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات