UserScript crm

для зачеркивание выполненых задач

2021-03-12 या दिनांकाला. सर्वात नवीन आवृत्ती पाहा.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey, Greasemonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्क्रिप्ट व्यवस्थापक एक्स्टेंशन इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्क्रिप्ट व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्टाईल व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

// ==UserScript==
// @name         UserScript crm
// @namespace    http://crm.red-promo.ru/
// @version      1.4
// @description  для зачеркивание выполненых задач
// @author       none
// @match        http://crm.red-promo.ru/*
// @grant        none
// ==/UserScript==

(function () {
    "use strict";
    console.log("start");

    const getItems = () => JSON.parse(window.localStorage.getItem("task")) ?? [];

    function lineThrough() {
        if (document.getSelection().baseNode && !document.getSelection().baseOffset) {
            const elem = document.getSelection().baseNode.parentElement;
            if (elem && elem.closest("tr").textContent.includes("Контент") && elem.closest("td")) {
                elem.classList.add("line");
                document.getSelection().removeAllRanges();
                updateStorage();
            }
        }
    }

    function addslashes(str) {
        return (str + "").replace(/[\\"']/g, "\\$&").replace(/\u0000/g, "\\0");
    }

    function updateStorage() {
        let res = getItems();
        document.querySelectorAll(".line").forEach((item) => {
            if (!res.includes(item.textContent)) {
                res.push(item.textContent);
            }
        });
        window.localStorage.setItem("task", JSON.stringify(res));
    }

    function clearStorageTask() {
        window.localStorage.clear();
    }

    function start() {
        getItems().forEach((item) => $('p:contains("' + addslashes(item) + '")').addClass("line"));
        $(document.head).append("<style>.line{text-decoration:line-through}</style>");
        $(".nav.navbar-nav").first().append('<li><a href="#" onclick="clearStorageTask()">Очистить</a></li>');
        document.addEventListener("selectionchange", lineThrough);
    }

    window.onload = start;
})();