Gitea: Grafik kontributor

Dibuat pada 5 Feb 2017  ·  30Komentar  ·  Sumber: go-gitea/gitea

Terapkan grafik kontributor: https://github.com/go-gitea/gitea/graphs/contributors

screenshot_20170205_131515


Ingin mendukung masalah ini? Posting hadiah di atasnya! Kami menerima bounty melalui Bountysource .

kinfeature revieweconfirmed

Komentar yang paling membantu

Ok guys, update lagi. Saya berhasil mencapai status ini:

image


Klik untuk memperluas:

Gitea vs GitHub (contoh kehidupan nyata)

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

Gelap

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



Detail:

  • Tidak ada data yang diekspos melalui HTTP API, grafik dirender ke SVG (menggunakan https://github.com/wcharczuk/go-chart) di server. Ini benar-benar berkinerja dan membuat semuanya tetap sederhana.
  • Mengurutkan berdasarkan jumlah komit, penambahan, dan penghapusan
  • UI "sedikit" berdasarkan GitHub

Masalah tersisa:

  • Kontributor, yang tidak ada dalam DB gitea (misalnya karena repo diimpor) tidak akan muncul. ✅.
  • Masalah kinerja dengan repositori yang lebih besar. Mungkin hanya saya yang menjadi golang n00b.
  • Menghapus barang AM/PM dari X-Axis (dapat dengan mudah dilakukan melalui formatter khusus )
  • Perbaiki skala Y-Sumbu grafik pengguna, 1 komit harus setengah tingginya karena 2 komit
  • Dukungan tema gelap yang tepat (CSS untuk di atas telah di-tweak di alat dev)

Kemungkinan peningkatan:

  • Statistik untuk cabang master (hardcoded), ini dapat dengan mudah diubah dan diekspos sebagai kontrol UI

Ide untuk perubahan dan peningkatan diterima - sejauh ini saya sudah keluar! Saya takut akan tinjauan kode yang akan datang :smile:

Semua 30 komentar

Apakah ada lib grafik yang bagus? Menurut pendapat saya ini dapat dirender dan di-cache di sisi server

Adakah peningkatan?

akan menyenangkan untuk memiliki

Saya ingin mulai mengerjakan fitur ini, jika belum ada yang menggunakannya (ya @lafriks , saya belajar pelajaran saya, +1 tidak konstruktif ).

Saya mungkin memerlukan bantuan sesekali, misalnya tentang bagaimana memutuskan tentang rendering sisi server atau klien, pustaka grafik apa yang akan digunakan, dll.
Saya juga pada dasarnya tidak tahu Go tetapi memiliki pengetahuan frontend yang baik sehingga harus bekerja, dan semuanya memiliki pertama kalinya, saya juga ingin menyelami peretasan di Gitea beberapa waktu lalu

Mari kita mulai dengan membongkar solusi yang ada untuk mengidentifikasi data yang diperlukan dan kemungkinan struktur data.

GitHub

Titik akhir API untuk data kontribusi adalah https://github.com/<owner>/<repo>/graphs/contributors-data .

Data JSON yang dikembalikan pada dasarnya adalah daftar objek (masing-masing mewakili satu kontributor) mengurutkan kontribusi paling sedikit terlebih dahulu, sebagian besar kontribusi terakhir:

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

Strukturnya kira- kira mirip dengan yang didokumentasikan di sini dan terlihat seperti ini:

{
  "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
    }
  ]
}

Setiap anggota array "weeks" yang dibangun memiliki atribut sebagai berikut:

  • w - Awal minggu, diberikan sebagai stempel waktu Unix.
  • a - Jumlah tambahan
  • d - Jumlah penghapusan
  • c - Jumlah komitmen

Semua informasi itu digunakan untuk membuat kartu-kartu ini:

grafik

Grafik kontribusi besar jelas dapat dibuat dengan menambahkan statistik dari setiap pengguna dalam seminggu n ( 0 <= n <= weeks since the repo exists ) dan memplot nilai kumulatif untuk setiap minggu.

GitLab

GitLab CE adalah Open Source, jadi kami memiliki file yang relevan:

Titik akhir API adalah https://gitlab.com/<owner>/<repo>/graphs/master?format=json .

Data JSON yang dikembalikan jauh lebih sederhana:

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

Setiap anggota array mewakili satu komit, komit terbaru diurutkan terlebih dahulu, komit awal terakhir. Strukturnya terlihat sebagai berikut:

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

Jika pengguna membuat beberapa komit pada hari yang sama, hanya akan ada entri duplikat dengan informasi dan tanggal pengguna yang sama, satu untuk setiap komit.

Ubin per pengguna akan berisi lebih sedikit informasi daripada di GitHub, plot dilakukan dengan mengambil jumlah komit untuk satu hari, Sumbu X adalah waktu, Sumbu Y jumlah komit. Itu dilakukan untuk seluruh repo (mengabaikan nama pengguna) dan setiap pengguna (mengambil semua entri komit untuk pengguna tertentu pada hari tertentu).


Dalam kedua kasus, rendering dilakukan di sisi klien, yang memiliki keuntungan besar karena dapat membuat bagan dinamis dengan zoom.

Jika bekerja dengan alur kerja umum Anda di sini, saya akan baik-baik saja dengan ditugaskan untuk masalah ini.


Beberapa pemikiran lagi tentang ini. Umpan balik yang membangun tentu sangat kami hargai!

Menempatkan tautan halaman di UI

image

Itu seharusnya berfungsi dengan baik, tidak perlu merestrukturisasi apa pun untuk saat ini.

Berbicara tentang tautan, halaman mungkin harus hidup di https://git.example.com/<owner>/<repo>/contributors , begitulah cara kerja semua tautan lain di sana.

Ide lain, yang tidak saya sukai , adalah meletakkan grafik kontributor di halaman Aktivitas.

Saya melakukan beberapa pengeditan DOM:

image

Saya memilih octicon-organization sebagai ikon, octicon-graph mungkin berfungsi juga.

Sekarang beberapa pengeditan CSS cepat pada bagan kontributor GitHub untuk Gitea dan menggabungkan gambar:

image

Itu ide yang sangat kasar tentang bagaimana tampilannya, tidak memperhitungkan grafik per pengguna individu.

Tampak luar biasa ^-^

@linusg hebat! Lanjutkan!

@lunny Saya agak bingung sekarang: Siapa @Morlinest dan peran apa yang akan dia mainkan dalam masalah ini?

Ini mungkin kesalahan atau mungkin dia punya rencana rahasia dengan saya :D

@linusg @Morlinest :( maaf. Kesalahan seperti apa yang dikatakan @Morlinest . Saya ingin menetapkan masalah ini ke @linusg tapi saya menemukan itu tidak dapat ditugaskan ke non-pengelola dan pembuat poster.

Oke makasih pencerahannya :smile:

Oh, jadi saya harus melakukannya sekarang :D

Peringatan singkat bagi mereka yang tertarik: Saya ingin mengerjakan ini selama liburan Natal, tetapi tidak dapat menemukan banyak waktu. Saya telah membuat hal-hal dasar (halaman, perutean, dll.) dan berencana untuk terus mengerjakannya!

Terima kasih banyak ^-^

Ok guys, update lagi. Saya berhasil mencapai status ini:

image


Klik untuk memperluas:

Gitea vs GitHub (contoh kehidupan nyata)

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

Gelap

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



Detail:

  • Tidak ada data yang diekspos melalui HTTP API, grafik dirender ke SVG (menggunakan https://github.com/wcharczuk/go-chart) di server. Ini benar-benar berkinerja dan membuat semuanya tetap sederhana.
  • Mengurutkan berdasarkan jumlah komit, penambahan, dan penghapusan
  • UI "sedikit" berdasarkan GitHub

Masalah tersisa:

  • Kontributor, yang tidak ada dalam DB gitea (misalnya karena repo diimpor) tidak akan muncul. ✅.
  • Masalah kinerja dengan repositori yang lebih besar. Mungkin hanya saya yang menjadi golang n00b.
  • Menghapus barang AM/PM dari X-Axis (dapat dengan mudah dilakukan melalui formatter khusus )
  • Perbaiki skala Y-Sumbu grafik pengguna, 1 komit harus setengah tingginya karena 2 komit
  • Dukungan tema gelap yang tepat (CSS untuk di atas telah di-tweak di alat dev)

Kemungkinan peningkatan:

  • Statistik untuk cabang master (hardcoded), ini dapat dengan mudah diubah dan diekspos sebagai kontrol UI

Ide untuk perubahan dan peningkatan diterima - sejauh ini saya sudah keluar! Saya takut akan tinjauan kode yang akan datang :smile:

Sooo... ini dia! Sekarang saatnya untuk beberapa input eksternal, jadi silakan lihat gambar di bawah.

image

(gitea repo diambil dari GitHub)

image

Mari saya jelaskan:

  • Pengguna yang tidak ada dalam DB pengguna gitea akan ditampilkan, tetapi tanpa tautan ke profil, obv. Statistik dihitung berdasarkan Nama Pengguna (hanya tersedia "nama" dan "email" per setiap komit), itu sebabnya ada "Tidak Diketahui", "Tidak Dikenal" dan "无闻" vs hanya "Tidak Dimiliki" di GitHub: Informasi, bahwa ini adalah semua pengguna yang sama hilang saat mengkloning/mengimpor repo. Saya kira itu pilihan terbaik yang tersedia, pikiran?

  • GitHub mengkompilasi statistik per minggu, saya menggunakan statistik harian. Apakah ini harus diubah?

    Itulah alasan mengapa Y-Axis di GitHub berakhir pada ~150 [commit per minggu] dan Gitea pada 52 [commit per hari]. Juga membuat grafik di Gitea muncul dengan lebih banyak "paku". (interpolasi juga tidak tersedia)

  • GitHub mengecualikan gabungan komit dari statistik, saya tidak mengimplementasikan hal semacam ini (dan tidak tahu seberapa sulit membedakan satu dari komit normal). Apakah kita menginginkan fitur ini?

  • Apakah Anda menginginkan warna terpisah untuk bagan per pengguna?

  • Apa lagi yang menurut Anda dapat ditingkatkan?

Pertunjukan:

Saya memperbaiki semua masalah yang dicatat dalam posting terakhir saya, dan saya kembali ke beberapa masalah kinerja. Semua statistik dari mesin dev saya:

Halaman kontributor repo blog Gitea membutuhkan waktu 1.1 detik untuk dimuat, yang mungkin baik-baik saja (_Halaman: 1090ms Template: 7ms_)

Yang untuk repo utama gitea membutuhkan waktu 1 menit 14 detik dan melaporkan _Halaman: 74443ms Template: 47ms_. Ini memiliki sembilan tahun sejarah dan hampir 7k komit.

Kemungkinan peningkatan: halaman kontributor repo gitea berakhir dengan 602 kartu pengguna, saya yakin GitHub memotong 100. Lihat https://github.com/go-gitea/gitea/graphs/contributors.

Apa pendapatmu tentang itu?

image

Karena seluruh riwayat komit akan dilalui setiap kali halaman dikunjungi, kami mungkin dapat memperbaiki situasi dengan menyimpan statistik. Tidak ada petunjuk apakah itu masuk akal dan seperti apa implementasinya.

Saya harus menghapus cache ServiceWorker agar file CSS yang diubah muncul (penyegaran cache normal tidak akan berfungsi). Apa yang harus saya lakukan di sini agar berfungsi OOTB?

Tangkapan layar lainnya, klik untuk meluaskan

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

@linusg Kerja bagus !!! Bagaimana membiarkan pekerjaan sebagai cronjob ketika repositori besar (yaitu lebih dari 1000 komit)? Itu dapat dijalankan satu hari atau lebih sesuai dengan konfigurasi. Saya pikir 100 teratas sudah cukup, jika tidak, pagination lebih baik.

@linusg

  • Statistik untuk cabang master (hardcoded), ini dapat dengan mudah diubah dan diekspos sebagai kontrol UI

Mungkin Anda dapat menggunakan opsi cabang default alih-alih membuat opsi lain.

Masalah ini secara otomatis ditandai sebagai basi karena tidak ada aktivitas terbaru. Akan ditutup jika tidak ada aktivitas lebih lanjut selama 2 minggu ke depan. Terima kasih atas kontribusi Anda.

Tidak, masih mengerjakan ini - seseorang mungkin menghapus label stale !

Tidak, masih mengerjakan ini

Itu kabar baik, berharap untuk melihat fitur ini segera hadir!
Terpesona untuk melihat grafik dan representasi data grafik di mana-mana...

Itu kabar baik, berharap untuk melihat fitur ini segera hadir!

segera :tm:

Waktu jelas menjadi masalah bagi saya... di samping pengetahuan saya tentang golang yang pada dasarnya tidak ada, haha.

Saya senang melihat semua kegembiraan (saya juga senang, tidak akan mengerjakan ini jika tidak!), tetapi jika Anda merasa ini tidak membuat kemajuan cukup cepat (sial, sudah lebih dari setengah tahun), Saya dapat membuat PR dengan semua perubahan dan orang lain dapat membantu?

Segera ™️

😅.

tetapi jika kalian merasa seperti ini tidak membuat kemajuan cukup cepat

Naaah.. siapa pun yang peduli dengan waktu yang Anda ambil untuk sebuah fitur, apakah itu fitur yang sangat bagus dan berfungsi?

Saya dapat membuat PR dengan semua perubahan dan orang lain dapat membantu?

IDK, mungkin Anda dapat memposting repo Anda secara publik di sini di GH sehingga orang lain dapat melakukan PR repo Anda dan membuatnya berfungsi daripada Anda dapat melakukan PR yang resmi dan terintegrasi
ATAU Anda dapat membuka PR untuk cabang baru di repo resmi dari mana orang-orang yang terampil dan bersedia waktu dapat membayar dan bekerja dan sebagai gantinya, menunggu cabang untuk digabungkan menjadi master tentu saja ...

@linusg Tolong kirimkan PR yang mungkin ada yang bisa membantu Anda saat Anda tidak hadir.

menantikan fitur ini. Apakah sekarang sudah basi? .....Terima kasih

Ada berita lebih lanjut di sini?

Apakah PR atau cabang pernah diajukan di sini?

Saya pikir tidak. @linusg

Saya tidak berpikir saya pernah mendorong perubahan saya. Bahkan tidak yakin apakah saya masih memilikinya - maaf!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat