PageSourceSearch

https://peterjconway.com/apps/tasks/assets/ranking.js?v=2

js peterjconway.com collected 2026-09-24 13:47:15 UTC 1,937 bytes, 48 lines download raw bytes

1(function (global) {
2  function computeScore(task, settings) {
3    var importance = (task.importance || 0) * (settings.importanceFactor || 0);
4    var urgency = (task.urgency || 0) * (settings.urgencyFactor || 0);
5    var timeToCompletion = (task.timeToCompletion != null ? task.timeToCompletion : 5) * (settings.timeToCompletionFactor || 0);
6    var costOfDelivery = (task.costOfDelivery != null ? task.costOfDelivery : 5) * (settings.costOfDeliveryFactor || 0);
7    var costOfDelay = (task.costOfDelay != null ? task.costOfDelay : 5) * (settings.costOfDelayFactor || 0);
8    return importance + urgency + timeToCompletion + costOfDelivery + costOfDelay;
9  }
10
11  function compareDeadline(a, b) {
12    if (!a.deadline && !b.deadline) return 0;
13    if (!a.deadline) return 1;
14    if (!b.deadline) return -1;
15    return new Date(a.deadline) - new Date(b.deadline);
16  }
17
18  function sortTasks(tasks, settings) {
19    return tasks.slice().sort(function (a, b) {
20      var diff = computeScore(b, settings) - computeScore(a, settings);
21      if (diff) return diff;
22      var d = compareDeadline(a, b);
23      if (d) return d;
24      var ea = a.estimatedMinutes || 0;
25      var eb = b.estimatedMinutes || 0;
26      if (eb !== ea) return eb - ea;
27      return String(a.createdAt || "").localeCompare(String(b.createdAt || ""));
28    });
29  }
30
31  function priorityBand(task, settings) {
32    var score = computeScore(task, settings);
33    var maxScore = 10 * (settings.importanceFactor + settings.urgencyFactor +
34                         settings.timeToCompletionFactor + settings.costOfDeliveryFactor +
35                         settings.costOfDelayFactor);
36    var green = maxScore * 2 / 3;
37    var yellow = maxScore * 1 / 3;
38    if (score >= green) return "high";
39    if (score >= yellow) return "medium";
40    return "low";
41  }
42
43  global.Ranking = {
44    computeScore: computeScore,
45    sortTasks: sortTasks,
46    priorityBand: priorityBand
47  };
48})(window);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.