From facd974814aa2115bad60e69a8ca46d69e88c39b Mon Sep 17 00:00:00 2001
From: Zhora Shalyapin <mr.imagine84@gmail.com>
Date: Tue, 1 Apr 2025 07:37:00 +0000
Subject: [PATCH] paint cp list on route edit page

---
 main.js | 26 +++++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

diff --git a/main.js b/main.js
index 0e7c2dc..5229d56 100644
--- a/main.js
+++ b/main.js
@@ -84,6 +84,8 @@
   const ZOOM = 17
   const METERS = 510
 
+  const stageColors = ["#ff8080", "#ffc680", "#ffff80", "#80ff80", "#80ffff", "#8080ff", "#ff80ff"]
+
   let removedFilesLinks = []
 
   class Tag {
@@ -2307,9 +2309,13 @@
     showUnknownPoints()
   }
 
+  function getCpNumberFromOption(option) {
+    return option.textContent.match(/(?<=^\s*#)\d+/g)?.[0]
+  }
+
   function matchNumberFromSelect(select) {
     return [...document.querySelector(select).options].reduce(
-      (res, el) => ({ ...res, [el.textContent.match(/(?<=^\s*#)\d+/g)?.[0]]: el.value }),
+      (res, el) => ({ ...res, [getCpNumberFromOption(el)]: el.value }),
       {}
     )
   }
@@ -2434,9 +2440,27 @@
       document.querySelectorAll(`table tr:is(:nth-child(3), :nth-child(4), :nth-child(5))`).forEach(el => el.classList.add("hidden"))
     }
 
+    function paintCpList() {
+      let options = [...document.querySelectorAll(`#cps_in option`)]
+
+      ;(async () => {
+        let points = await getPointsByField("number", options.map(option => getCpNumberFromOption(option)))
+        let catId = urlParams().get("cat_id")
+
+        for (const option of options) {
+          let category = points[getCpNumberFromOption(option)].categories.find(category => category.cat_id === catId)
+          if (category && category.pivot.bonus_time == "0") {
+            let stage = parseInt(category.pivot.stage)
+            option.style['background-color'] = stageColors[stage % stageColors.length]
+          } 
+        }
+      })()
+    }
+
     makeTextareasOneRow()
     hideRedundantRows()
     createPointsInpit()
+    paintCpList()
   }
 
   function toggleStagePageRows(rows) {