# BabylonJS Repository Viewer

**URL:** <https://forum.babylonjs.com/t/babylonjs-repository-viewer/50974>\
**Category:** Demos and projects\
**Tags:** gui, github\
**Created:** [May 31, 2024, 4:08pm UTC](https://forum.babylonjs.com/t/babylonjs-repository-viewer/50974 "2024-05-31T16:08:55Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tricotou](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/tricotou/32/5844_2.png) [@Tricotou](https://forum.babylonjs.com/u/Tricotou)\
**Post date:** [May 31, 2024, 4:08pm UTC](https://forum.babylonjs.com/t/babylonjs-repository-viewer/50974/1 "2024-05-31T16:08:55Z")

</div>

Hello all 🙂

When a question is asked on this forum, it’s very common that a member of the team forwards to the expert of the considered topic, commenting something like cc @sebavan , cc @RaananW or cc @Deltakosh etc… And that had me curious about who has worked on which part of the repo 😁

* * *

Yesterday night, playing with parsing the whole git repository with a Python script, I ended up with some funny stats based on the `git blame` of each file of the source !

So, here it is, have fun ! ➡ [BabylonJS Repository Viewer](https://babylonjs.tricotools.com/) ⬅

It’s 100% using BabylonJS of course, GUI included 🙂

* * *

A few comments about the structure :

- It’s based on the `HEAD` of `master` on the [official repo](https://github.com/BabylonJS/Babylon.js)
- It’s using only the files inside `/src/` folder of each subfodler. Any other file is not considered (for now…)
- It’s computed using the `git blame` of each file :
  - Considering that `git blame` gives commit hash and user of each line of a file, it means that if `commit B` replaces a line of `commit A`, then `commit A` doesn’t exist anymore for this line.
  - To make it simple, any code from the past which as been deleted is not considered, which is why the total ammount of commits is arround `16k` while the official repos claims about `43k` commits
  - It’s the same on a user stat : commit count is only referring to existing lines in the current state of the `master` `HEAD`
  - To sum it up, it’s not perfect, the last commit to edit a line (ex : linting) takes the line for the stat regardless of the past
  - The profile pictures are directly loaded from Github at run time (my python script retrieved the Github user and avatar direct URL using the commit hash and some Github API requests)

* * *

I Already like the tool 😁  
For example : issue with XR, and wonder who are the bosses of XR ? Just click the XR folder, and BOOM :

 ![Screenshot from 2024-05-31 18-01-11](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/6/b/6b1ccc9eafebbcc2a9228f83274be1ab62d00585.png)

You have the list of the 29 contributors 😛  
Also, a click on a user opens its commit history on the Github official repo

* * *

I hope you will like this little tribute to this awesome team and it’s impressive work ! 🙂  
++  
Tricotou

---

<div class="post-metadata">

**Author:** ![sebavan](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sebavan/32/57_2.png) [@sebavan](https://forum.babylonjs.com/u/sebavan)\
**Post date:** [May 31, 2024, 8:55pm UTC](https://forum.babylonjs.com/t/babylonjs-repository-viewer/50974/2 "2024-05-31T20:55:41Z")

</div>

Ahah that is a nice view !!! but please refrain on ever tagging us as we prefer to do it within the team. It can help us to be mindful of vacations and such 🙂

---

<div class="post-metadata">

**Author:** ![Tricotou](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/tricotou/32/5844_2.png) [@Tricotou](https://forum.babylonjs.com/u/Tricotou)\
**Post date:** [May 31, 2024, 9:40pm UTC](https://forum.babylonjs.com/t/babylonjs-repository-viewer/50974/3 "2024-05-31T21:40:29Z")

</div>

Ah yes, no worries, the goal of this project was to have a look on contributions per project, but it was not meant to ping the right person each time we have a question 🙂 I let you guys do this within the team !

(Ahah and sorry for this ping which is indeed a ping, I should have let a space between the @ and the name to give my example without actually pinging 😁)

++  
Tricotou

---

<div class="post-metadata">

**Author:** ![sebavan](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sebavan/32/57_2.png) [@sebavan](https://forum.babylonjs.com/u/sebavan)\
**Post date:** [May 31, 2024, 11:25pm UTC](https://forum.babylonjs.com/t/babylonjs-repository-viewer/50974/4 "2024-05-31T23:25:29Z")

</div>

ahahah, no worries I was glad to be pinged on it 🙂

---

<div class="post-metadata">

**Author:** ![roland](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/roland/32/38940_2.png) [@roland](https://forum.babylonjs.com/u/roland)\
**Post date:** [June 1, 2024, 6:36am UTC](https://forum.babylonjs.com/t/babylonjs-repository-viewer/50974/5 "2024-06-01T06:36:03Z")

</div>

Dude, this absolutely amazing!! I love it! 😻

One thing which needs to be fixed is when I scroll any of the lists the camera zooms as well.

---

<div class="post-metadata">

**Author:** ![qq2315137135](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/qq2315137135/32/32219_2.png) [@qq2315137135](https://forum.babylonjs.com/u/qq2315137135)\
**Post date:** [June 2, 2024, 12:15am UTC](https://forum.babylonjs.com/t/babylonjs-repository-viewer/50974/6 "2024-06-02T00:15:57Z")

</div>

You can use `isPointerBlocker = true` to get around this.

I don’t know what your code looks like, but I can inject this code into the console to fix the problem.

```javascript
scene.layers[0].texture.rootContainer.children[0].isPointerBlocker = true

```

---

<div class="post-metadata">

**Author:** ![CodingCrusader](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/codingcrusader/32/29857_2.png) [@CodingCrusader](https://forum.babylonjs.com/u/CodingCrusader)\
**Post date:** [June 2, 2024, 4:43pm UTC](https://forum.babylonjs.com/t/babylonjs-repository-viewer/50974/7 "2024-06-02T16:43:02Z")

</div>

> [@qq2315137135](#):
>
> I don’t know what your code looks like, but I can inject this code into the console to fix the problem.

one extra point for creativity! 😃

---

<div class="post-metadata">

**Author:** ![Tricotou](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/tricotou/32/5844_2.png) [@Tricotou](https://forum.babylonjs.com/u/Tricotou)\
**Post date:** [June 3, 2024, 7:18am UTC](https://forum.babylonjs.com/t/babylonjs-repository-viewer/50974/8 "2024-06-03T07:18:25Z")

</div>

> [@roland](#):
>
> Dude, this absolutely amazing!! I love it! 😻

Thanks ☺

> [@roland](#):
>
> One thing which needs to be fixed is when I scroll any of the lists the camera zooms as well.

Yeah I had figured out this issue without the time to fix the double trigger UI scroll + Camera Zoom

> [@qq2315137135](#):
>
> You can use `isPointerBlocker = true` to get around this.

Perfect ! Thanks a lot for the time save 😁 solved and pushed ✔

---

<div class="post-metadata">

**Author:** ![Deltakosh](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/deltakosh/32/26635_2.png) [@Deltakosh](https://forum.babylonjs.com/u/Deltakosh)\
**Post date:** [June 3, 2024, 5:12pm UTC](https://forum.babylonjs.com/t/babylonjs-repository-viewer/50974/9 "2024-06-03T17:12:11Z")

</div>

Dude! I love it! this is excellent!!!  
All using GUI! nice work man!

@PirateJC / @PatrickRyan : can we mention it on our doc? Maybe forum template?

---

<div class="post-metadata">

**Author:** ![PatrickRyan](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/patrickryan/32/3417_2.png) [@PatrickRyan](https://forum.babylonjs.com/u/PatrickRyan)\
**Post date:** [June 4, 2024, 7:16pm UTC](https://forum.babylonjs.com/t/babylonjs-repository-viewer/50974/10 "2024-06-04T19:16:31Z")

</div>

I can add it as an example in the GUI sections.

---

<div class="post-metadata">

**Author:** ![Tricotou](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/tricotou/32/5844_2.png) [@Tricotou](https://forum.babylonjs.com/u/Tricotou)\
**Post date:** [June 4, 2024, 7:47pm UTC](https://forum.babylonjs.com/t/babylonjs-repository-viewer/50974/11 "2024-06-04T19:47:41Z")

</div>

Wow ! It would be an honor 😌 Thanks  
Maybe I’ll rework and clean a bit the code then, because here all is in a single `index.js` file since it was (again ^^) just a test for fun, which ended up in a bigger project 😁

---

<div class="post-metadata">

**Author:** ![PatrickRyan](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/patrickryan/32/3417_2.png) [@PatrickRyan](https://forum.babylonjs.com/u/PatrickRyan)\
**Post date:** [June 6, 2024, 9:10pm UTC](https://forum.babylonjs.com/t/babylonjs-repository-viewer/50974/12 "2024-06-06T21:10:40Z")

</div>

@Tricotou, I can certainly link to your project in the docs for GUI, but it would be good if there were a playground or code sample on GitHub that users can follow. Do you have anything like that? If not, we can still highlight the project on our community demos page of our web site. And if you want to rework it before we post it, I can certainly wait until you are ready. Thanks!

---

<div class="post-metadata">

**Author:** ![Tricotou](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/tricotou/32/5844_2.png) [@Tricotou](https://forum.babylonjs.com/u/Tricotou)\
**Post date:** [June 6, 2024, 9:26pm UTC](https://forum.babylonjs.com/t/babylonjs-repository-viewer/50974/13 "2024-06-06T21:26:48Z")

</div>

@PatrickRyan what I would propose is :

- I rework a bit the code on my side so that it’s neat & clean if someone has a look
- I provide a playground which just creates the Top N contributors (bottom right of my site) based on a lighter version of the JSON data, which would be included as a single line in the PG.

What do you think ?

---

<div class="post-metadata">

**Author:** ![PatrickRyan](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/patrickryan/32/3417_2.png) [@PatrickRyan](https://forum.babylonjs.com/u/PatrickRyan)\
**Post date:** [June 7, 2024, 5:30pm UTC](https://forum.babylonjs.com/t/babylonjs-repository-viewer/50974/14 "2024-06-07T17:30:15Z")

</div>

@Tricotou, this sounds great. We really want to show usable examples of code in the docs and this is a great use of Babylon GUI so would be a great learning tool for the docs. Thanks for your work in prepping it for us!

---

<div class="post-metadata">

**Author:** ![brianzinn](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/brianzinn/32/28013_2.png) [@brianzinn](https://forum.babylonjs.com/u/brianzinn)\
**Post date:** [June 8, 2024, 3:55pm UTC](https://forum.babylonjs.com/t/babylonjs-repository-viewer/50974/15 "2024-06-08T15:55:10Z")

</div>

wow @Tricotou this is an impressive visualization! It’s interesting to see the commits by regions of code. Looks like some renamed files didn’t carry history over to new folders, but it’s not something really likely worthwhile focusing on - it’s the graphical breakdown and that alone is really interesting!! cheers.

good use of GUI. I like your registerBeforeRender for text rotation with ArcRotate. I’m going to borrow that on some of my sample code!! 😄

---

<div class="post-metadata">

**Author:** ![Tricotou](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/tricotou/32/5844_2.png) [@Tricotou](https://forum.babylonjs.com/u/Tricotou)\
**Post date:** [June 10, 2024, 12:52pm UTC](https://forum.babylonjs.com/t/babylonjs-repository-viewer/50974/16 "2024-06-10T12:52:39Z")

</div>

Hello all 🙂

@PatrickRyan :

- I’m done with refactoring the code (same [link](https://babylonjs.tricotools.com/)) so you can share the link in the doc
- Here is a [Playground](https://playground.babylonjs.com/#4U4QH9#35) with a light version :
  - Data from embedded one-lined JSON (line 34)
  - Toggle sort method
  - Scrollviewer
  - Profile pics from Github

++  
Tricotou

---

<div class="post-metadata">

**Author:** ![PatrickRyan](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/patrickryan/32/3417_2.png) [@PatrickRyan](https://forum.babylonjs.com/u/PatrickRyan)\
**Post date:** [June 10, 2024, 9:20pm UTC](https://forum.babylonjs.com/t/babylonjs-repository-viewer/50974/17 "2024-06-10T21:20:26Z")

</div>

PR is up… [Adding example to GUI page by PatrickRyanMS · Pull Request #1148 · BabylonJS/Documentation (github.com)](https://github.com/BabylonJS/Documentation/pull/1148)
