2011-01-21 35 views
18

Có bất kỳ dự án mã nguồn mở trên mạng hoặc jQuery plugin mà tôi có thể sử dụng để tái tạo GitHub Network Graph?Làm thế nào để tái tạo GitHub Mạng Graph

Tôi muốn tạo ra một cái gì đó với chức năng tương tự.

+3

đăng nhập, truy cập repo github của bạn, nhấp vào 'mạng' – zack

+0

@zack, điều đó tốt hơn những gì tôi sắp nói, "xem nguồn" =) – Incognito

+0

không có gì giống như cảm giác hài hước của nhà phát triển tốt. - Tôi đã kiểm tra nguồn trước khi tôi đăng ở đây, nhưng nó rất độc quyền nên tôi không thể đảo ngược kỹ sư đó. thats lý do tại sao tôi đã hy vọng có một số giải pháp os ra khỏi đó. - Cảm ơn các mẹo mặc dù. – Ward

Trả lời

8

Bạn có thể muốn dựa vào Github's Network API xử lý:

Bảng liệt kê tất cả các dữ liệu cần thiết để vẽ đồ thị mạng, người đứng đầu của tất cả các ngã ba với những thay đổi mới và tất cả các cam kết liên quan.

Để hiển thị, Github sử dụng canvas để hiển thị biểu đồ mạng của nó. Bạn có thể muốn có một cái nhìn tại RaphaelJS library làm một công việc tốt render đồ thị tác động của Github: http://raphaeljs.com/github/impact.html

+0

Liên kết cho tài liệu cho API mạng hiện là trang 404. Đây có phải là lỗi thời không? hoặc có một liên kết mới cho điều này? –

+0

@MichaelT Tôi cho rằng điều này bây giờ sẽ là http://developer.github.com/v3/activity/events/? –

22

Những quan điểm mạng Github dường như rất khó khăn để đảo ngược kỹ sư lúc đầu. Tuy nhiên, đoạn mã trở nên khá dễ hiểu sau khi rút ngắn nó với http://jsbeautifier.org/. Vì vậy, hãy chạy bundle_github.jsbundle_common.js thông qua và lấy nguồn jQuery 1.4.2. Sau đó, bạn đã sẵn sàng để bắt đầu đọc nguồn/gỡ lỗi trang.

Trong trang Github Network, nếu vải đang làm việc, mạng được tạo ra đơn giản bằng cách:

var ng = new Network("#ng", 920, 600) 

mà tiếp tục sử dụng một đối tượng được tạo ra bởi defineNetwork(window.jQuery), mà (trong số rất nhiều những thứ khác)

  1. nhận dữ liệu từ the Github Network API
  2. tạo ra trường hợp của d.KeyDriverd.MouseDriver để xử lý đầu vào
  3. sử dụng d.Chrome để vẽ timeline, header và footer
  4. sử dụng d.Graph để viết đồ thị mạng

(mỗi d.ClassName là một lớp bên trong của đối tượng Network, do đó nguồn của họ được tìm thấy bên trong mã defineNetwork nguồn)

Tôi không dành thời gian để thực sự nghiên cứu mã và tìm tất cả chi tiết về cách hoạt động, nhưng có thể đọc được. Bây giờ tùy thuộc vào những gì bạn muốn làm, bạn có thể ví dụ:

  • (có lẽ) làm rất nhỏ sửa đổi để lấy mã để render dữ liệu Github ngoài github.com
  • làm cho dữ liệu của bạn có sẵn trong định dạng the Github Network API, và hình dung rằng
  • thích nghi chỉ là lớp d.Graph để làm việc với dữ liệu của riêng bạn
  • chỉ đọc mã và học hỏi

Chú ý: Bạn có thể không thể sử dụng hợp pháp mã như-cũng không được sửa đổi, vì vậy tôi khuyên bạn nên làm điều này chỉ cho mục đích học tập (mặc dù IANAL).

+0

Điều này dường như bây giờ là một liên kết bị hỏng: http://develop.github.com/p/network.html Github có xóa tùy chọn đó không? – GuySoft

+1

@GuySoft API Github đã được cập nhật trong hai năm qua và chi tiết của câu trả lời này hiện đã lỗi thời. Tôi đoán đồ thị mạng ngày nay sử dụng các nhánh và nhánh API. Dù sao, nó vẫn dễ dàng để chỉ lấy mã, làm đẹp nó và xem những gì nó làm. – dancek

Các vấn đề liên quan