MCPcopy Create free account
hub / github.com/GCWing/BitFun / determinePath

Function determinePath

MiniApp/Demo/git-graph/source/ui.js:222–281  ·  view source on GitHub ↗
(vertices, branches, availableColours, commits, commitLookup, onlyFollowFirstParent)

Source from the content-addressed store, hash-verified

220 }
221
222 function determinePath(vertices, branches, availableColours, commits, commitLookup, onlyFollowFirstParent) {
223 function run(startAt) {
224 let i = startAt;
225 let vertex = vertices[i];
226 let parentVertex = vertex.getNextParent();
227 let lastPoint = vertex.isNotOnBranch() ? vertex.getNextPoint() : vertex.getPoint();
228
229 if (parentVertex !== null && parentVertex.id !== NULL_VERTEX_ID && vertex.isMerge() && !vertex.isNotOnBranch() && !parentVertex.isNotOnBranch()) {
230 var parentBranch = parentVertex.getBranch();
231 var foundPointToParent = false;
232 for (i = startAt + 1; i < vertices.length; i++) {
233 var curVertex = vertices[i];
234 var curPoint = curVertex.getPointConnectingTo(parentVertex, parentBranch);
235 if (curPoint === null) curPoint = curVertex.getNextPoint();
236 parentBranch.addLine(lastPoint, curPoint, vertex.getIsCommitted(), !foundPointToParent && curVertex !== parentVertex ? lastPoint.x < curPoint.x : true);
237 curVertex.registerUnavailablePoint(curPoint.x, parentVertex, parentBranch);
238 lastPoint = curPoint;
239 if (curVertex.getPointConnectingTo(parentVertex, parentBranch) !== null) foundPointToParent = true;
240 if (foundPointToParent) {
241 vertex.registerParentProcessed();
242 return;
243 }
244 }
245 } else {
246 var branch = new Branch(getAvailableColour(availableColours, startAt));
247 vertex.addToBranch(branch, lastPoint.x);
248 vertex.registerUnavailablePoint(lastPoint.x, vertex, branch);
249 for (i = startAt + 1; i < vertices.length; i++) {
250 var curVertex = vertices[i];
251 var curPoint = (parentVertex === curVertex && parentVertex && !parentVertex.isNotOnBranch()) ? curVertex.getPoint() : curVertex.getNextPoint();
252 branch.addLine(lastPoint, curPoint, vertex.getIsCommitted(), lastPoint.x < curPoint.x);
253 curVertex.registerUnavailablePoint(curPoint.x, parentVertex, branch);
254 lastPoint = curPoint;
255 if (parentVertex === curVertex) {
256 vertex.registerParentProcessed();
257 var parentVertexOnBranch = parentVertex && !parentVertex.isNotOnBranch();
258 parentVertex.addToBranch(branch, curPoint.x);
259 vertex = parentVertex;
260 parentVertex = vertex.getNextParent();
261 if (parentVertex === null || parentVertexOnBranch) return;
262 }
263 }
264 if (i === vertices.length && parentVertex !== null && parentVertex.id === NULL_VERTEX_ID) {
265 vertex.registerParentProcessed();
266 }
267 branches.push(branch);
268 availableColours[branch.getColour()] = i;
269 }
270 }
271
272 var idx = 0;
273 while (idx < vertices.length) {
274 var v = vertices[idx];
275 if (v.getNextParent() !== null || v.isNotOnBranch()) {
276 run(idx);
277 } else {
278 idx++;
279 }

Callers 1

ui.jsFile · 0.70

Calls 1

runFunction · 0.70

Tested by

no test coverage detected