{"content": "\n<div class=\"djDebugPanelTitle\">\n  <button type=\"button\" class=\"djDebugClose\">\u00bb</button>\n  <h3>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0448\u0430\u0431\u043b\u043e\u043d\u0430: <code>main/resumes_list.html</code></h3>\n</div>\n<div class=\"djDebugPanelContent\">\n  <div class=\"djdt-scroll\">\n    \n      <code>{% extends &#x27;base.html&#x27; %}\n{% load static %}\n{% load mptt_tags %}\n{% load thumbnail %}\n\n{% block meta %}\n&lt;title&gt;\u0420\u0435\u0437\u044e\u043c\u0435 - anvendo.ru&lt;/title&gt;\n&lt;meta property=&quot;og:type&quot; content=&quot;website&quot;&gt;\n&lt;meta property=&quot;og:title&quot; content=&quot;\u0420\u0435\u0437\u044e\u043c\u0435 - anvendo.ru&quot;&gt;\n&lt;meta property=&quot;og:image&quot; content=&quot;https://anvendo.ru{% static &#x27;img/blank.jpg&#x27; %}&quot;&gt;\n{% endblock meta %} \n\n{% block content %}\n&lt;div class=&quot;container&quot;&gt;\n    &lt;!-- \u0445\u043b\u0435\u0431\u043d\u044b\u0435 \u043a\u0440\u043e\u0448\u043a\u0438 --&gt;\n    &lt;div class=&#x27; mt-3 mb-3&#x27;&gt;\n        &lt;nav aria-label=&quot;breadcrumb&quot;&gt;\n          &lt;ol class=&quot;breadcrumb&quot;&gt;\n            &lt;li class=&quot;breadcrumb-item&quot;&gt;&lt;a href=&quot;/&quot;&gt;\u0413\u043b\u0430\u0432\u043d\u0430\u044f&lt;/a&gt;&lt;/li&gt;\n            &lt;li class=&quot;breadcrumb-item active&quot; aria-current=&quot;page&quot;&gt;\u0420\u0435\u0437\u044e\u043c\u0435&lt;/li&gt;\n          &lt;/ol&gt;\n        &lt;/nav&gt;\n    &lt;/div&gt;\n    &lt;!-- \u0445\u043b\u0435\u0431\u043d\u044b\u0435 \u043a\u0440\u043e\u0448\u043a\u0438 --&gt;\n\n    &lt;div class=&quot;row p-2&quot;&gt;\n        &lt;h1 style=&quot;font-weight: 700;&quot; id=&quot;title_page&quot;&gt;&lt;/h1&gt;\n        &lt;p&gt;Anvendo.ru \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u0440\u0435\u0437\u044e\u043c\u0435 \u043e\u0442 \u0442\u0430\u043b\u0430\u043d\u0442\u043b\u0438\u0432\u044b\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u043f\u043e \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u043c, \u0442\u0438\u043f\u0430\u043c \u0437\u0430\u043d\u044f\u0442\u043e\u0441\u0442\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c \u0434\u043b\u044f \u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432.&lt;/p&gt; \n    &lt;/div&gt;\n    \n    &lt;div class=&quot;row p-3&quot; id=&quot;root&quot;&gt;\n    &lt;/div&gt;\n&lt;/div&gt;\n\n\n&lt;script&gt;\n    const currentUrl = window.location.href;\n    const title = document.getElementById(&#x27;title_page&#x27;)\n    if(currentUrl == &#x27;https://anvendo.ru/resumes_list/&#x27;){title.innerHTML = &#x27;\u0420\u0435\u0437\u044e\u043c\u0435{% if city_user.name %}, {{city_user.name}}{% endif %}&#x27;}\n    else{title.innerHTML = &#x27;\u0420\u0435\u0437\u044e\u043c\u0435 \u0441\u0430\u043c\u043e\u0437\u0430\u043d\u044f\u0442\u044b\u0445{% if city_user.name %}, {{city_user.name}}{% endif %}&#x27;}\n&lt;/script&gt;\n\n&lt;!-- \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043f\u0440\u0438 \u0434\u0435\u043f\u043b\u043e\u0435 \u043d\u0430 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435 \u00abdevelopment.js\u00bb \u043d\u0430 \u00abproduction.min.js\u00bb. --&gt;\n&lt;script src=&quot;https://unpkg.com/react@18/umd/react.development.js&quot; crossorigin&gt;&lt;/script&gt;\n&lt;script src=&quot;https://unpkg.com/react-dom@18/umd/react-dom.development.js&quot; crossorigin&gt;&lt;/script&gt;\n&lt;script src=&quot;https://unpkg.com/babel-standalone@6/babel.min.js&quot;&gt;&lt;/script&gt;\n\n&lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.5/font/bootstrap-icons.css&quot;&gt;\n\n\n\n{{ posts|json_script:&quot;posts&quot; }}\n{{ professionals|json_script:&quot;professionals&quot; }}\n&lt;script id=&quot;cityId&quot; type=&quot;application/json&quot;&gt; \n    {%if city_user%}\n    {&quot;name&quot;: &quot;{{city_user.name}}&quot;, &quot;id&quot;: {{city_user.id}}}\n    {%else%}\n    {&quot;name&quot;: &quot;0&quot;, &quot;id&quot;: 0}\n    {%endif%}\n&lt;/script&gt; \n\n&lt;script type=&quot;text/babel&quot;&gt;\n&#x27;use strict&#x27;;\n\nconst {useState, useCallback, useEffect, useRef} = React;\n\n// \u041a\u043b\u044e\u0447\u0438\nlet filterKeys = []\n\nfunction splitToNChunks(array, n) {\n\nif (array.length&lt;10){\n    n=1\n}\n\nlet result = [];\nfor (let i = n; i &gt; 0; i--) {\n    result.push(array.splice(0, Math.ceil(array.length / i)));\n}\nreturn result;\n}\n\nconst PostListAll = ({ posts, setPosts, handlePost }) =&gt; {\n    const newposts = splitToNChunks([...posts], 2)\n\n    return (\n        &lt;div className=&quot;row&quot;&gt;\n            {newposts.map((item, index) =&gt;\n                &lt;div key={index} className=&quot;col-6&quot;&gt;\n                    {\n                        item.map((p) =&gt;\n                            &lt;label key={p.pk} className=&quot;linkProf&quot;&gt;\n                                &lt;input name=&quot;post&quot; type=&quot;radio&quot; className=&quot;circleProf&quot; onChange={() =&gt; handlePost(p.pk, p.fields.name)} /&gt;\n                                &lt;span className=&quot;spanLinkProf&quot;&gt;{p.fields.name}&lt;/span&gt;\n                            &lt;/label&gt;\n                        )\n                    }\n                &lt;/div&gt;\n            )}\n        &lt;/div&gt;\n    )\n}\nconst ProfessionalsListAll = ({ profs, setProfs, handleProf }) =&gt; {\n    const newprofs = splitToNChunks([...profs], 2)\n    return (\n        &lt;div className=&quot;row&quot;&gt;\n            {newprofs.map((item, index) =&gt;\n                &lt;div key={index} className=&quot;col-12 col-lg-6&quot;&gt;\n                    {\n                        item.map((p) =&gt;\n                            &lt;label key={p.pk} className=&quot;linkProf&quot;&gt;\n                                &lt;input  name=&quot;prof&quot; type=&quot;radio&quot; className=&quot;circleProf&quot; onChange={() =&gt; handleProf(p.pk, p.fields.name)}/&gt;\n                                &lt;span className=&quot;spanLinkProf&quot;&gt;{p.fields.name}&lt;/span&gt; \n                            &lt;/label&gt;\n                        )\n                    }\n                &lt;/div&gt;\n            )}\n        &lt;/div&gt;\n    )\n}\n\nconst SearchPosts = ({ posts, setPosts, handlePost }) =&gt; {\n        const dataPosts = JSON.parse(document.getElementById(&#x27;posts&#x27;).textContent)\n        const handleChange = event =&gt; {\n        handlePost(event.target.value, event.target.options[event.target.selectedIndex].text)\n        };\n\n        return (\n            &lt;div className=&quot;row mb-3&quot;&gt;\n            &lt;div className=&quot;col-12&quot;&gt;\n                    &lt;select  title=&quot;\u0414\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u044c...&quot; className=&quot;selectpicker rounded-3 mainSearchCat&quot; data-live-search=&quot;true&quot; data-width=&quot;100%&quot; onChange={handleChange} data-style=&quot;btn-light&quot; id=&quot;SearchPosts&quot;&gt;\n                        {\n                            dataPosts.map(p =&gt; (\n                                &lt;option key={p.pk} value={p.pk}&gt;{p.fields.name}&lt;/option&gt;\n                            ))\n                        }\n                        \n                    &lt;/select&gt;\n            &lt;/div&gt;\n            &lt;/div&gt;\n        )\n    }\n\n\nconst NavTabs = () =&gt; {\n    return(\n    &lt;div&gt;\n        &lt;ul className=&quot;nav nav-tabs&quot; id=&quot;myTab&quot; role=&quot;tablist&quot;&gt;\n            &lt;li className=&quot;nav-item &quot; role=&quot;presentation&quot;&gt;\n                &lt;button className=&quot;nav-link active&quot; id=&quot;contact-tab&quot; data-bs-toggle=&quot;tab&quot; data-bs-target=&quot;#prof1&quot; type=&quot;button&quot; role=&quot;tab&quot;  aria-selected=&quot;false&quot;&gt;\n                    &lt;i className=&quot;bi bi-person-vcard-fill&quot;&gt;&lt;/i&gt; \u0414\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u044c\n                &lt;/button&gt;\n            &lt;/li&gt;\n            &lt;li className=&quot;nav-item &quot; role=&quot;presentation&quot;&gt;\n                &lt;button className=&quot;nav-link&quot; id=&quot;contact-tab&quot; data-bs-toggle=&quot;tab&quot; data-bs-target=&quot;#oblast1&quot; type=&quot;button&quot; role=&quot;tab&quot;  aria-selected=&quot;false&quot;&gt;\n                    &lt;i className=&quot;bi bi-briefcase-fill&quot;&gt;&lt;/i&gt; \u041f\u0440\u043e\u0444. \u043e\u0431\u043b\u0430\u0441\u0442\u044c\n                &lt;/button&gt;\n            &lt;/li&gt;\n            &lt;li className=&quot;nav-item &quot; role=&quot;presentation&quot;&gt;\n                &lt;button className=&quot;nav-link&quot; id=&quot;contact-tab&quot; data-bs-toggle=&quot;tab&quot; data-bs-target=&quot;#salary1&quot; type=&quot;button&quot; role=&quot;tab&quot;  aria-selected=&quot;false&quot;&gt;\n                    &lt;i className=&quot;bi bi-wallet-fill&quot;&gt;&lt;/i&gt; \u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0434\u043e\u0445\u043e\u0434\u0430\n                &lt;/button&gt;\n            &lt;/li&gt;\n            &lt;li className=&quot;nav-item &quot; role=&quot;presentation&quot;&gt;\n                &lt;button className=&quot;nav-link&quot; id=&quot;contact-tab&quot; data-bs-toggle=&quot;tab&quot; data-bs-target=&quot;#employment&quot; type=&quot;button&quot; role=&quot;tab&quot;  aria-selected=&quot;false&quot;&gt;\n                    &lt;i className=&quot;bi bi-stopwatch-fill&quot;&gt;&lt;/i&gt; \u0417\u0430\u043d\u044f\u0442\u043e\u0441\u0442\u044c\n                &lt;/button&gt;\n            &lt;/li&gt;\n            &lt;li className=&quot;nav-item &quot; role=&quot;presentation&quot;&gt;\n                &lt;button className=&quot;nav-link&quot; id=&quot;contact-tab&quot; data-bs-toggle=&quot;tab&quot; data-bs-target=&quot;#additionally1&quot; type=&quot;button&quot; role=&quot;tab&quot;  aria-selected=&quot;false&quot;&gt;\n                    &lt;i className=&quot;bi bi-layers-fill&quot;&gt;&lt;/i&gt; \u041e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435\n                &lt;/button&gt;\n            &lt;/li&gt;\n            &lt;li className=&quot;nav-item &quot; role=&quot;presentation&quot;&gt;\n                &lt;button className=&quot;nav-link&quot; id=&quot;contact-tab&quot; data-bs-toggle=&quot;tab&quot; data-bs-target=&quot;#experience1&quot; type=&quot;button&quot; role=&quot;tab&quot;  aria-selected=&quot;false&quot;&gt;\n                    &lt;i className=&quot;bi bi-calendar2-fill&quot;&gt;&lt;/i&gt; \u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f \u043f\u0440\u0430\u0432\n                &lt;/button&gt;\n            &lt;/li&gt;\n            &lt;li className=&quot;nav-item &quot; role=&quot;presentation&quot;&gt;\n                &lt;button className=&quot;nav-link&quot; id=&quot;contact-tab&quot; data-bs-toggle=&quot;tab&quot; data-bs-target=&quot;#company1&quot; type=&quot;button&quot; role=&quot;tab&quot;  aria-selected=&quot;false&quot;&gt;\n                    &lt;i className=&quot;bi bi-bookmarks-fill&quot;&gt;&lt;/i&gt; \u0414\u0440\u0443\u0433\u043e\u0435\n                &lt;/button&gt;\n            &lt;/li&gt;\n        &lt;/ul&gt; \n        \n    &lt;/div&gt;\n    )\n}\n\n\nconst FilterBusy = ({setItems, setIsLoaded, setError, countAdvert, setCountAdvert}) =&gt; {\n\n    const [check, setCheck] = useState(false) \n    const initialState = [];\n    const [filterButtons, setfilterButtons] = useState(initialState);\n    \n    const [butAll, setButAll] = useState(false)\n    \n    \n    \n\n    const dataPosts = JSON.parse(document.getElementById(&#x27;posts&#x27;).textContent)\n    const dataProfessionals = JSON.parse(document.getElementById(&#x27;professionals&#x27;).textContent)\n    \n    const [prof, setProf] = useState(&#x27;&#x27;)\n    const [profs, setProfs] = useState(dataProfessionals)\n\n    const [post, setPost] = useState(&#x27;&#x27;)\n    const [posts, setPosts] = useState(dataPosts.filter(post =&gt; post.fields.parent == null))\n\n    const [gender, setGender] = useState(&#x27;&#x27;)\n    const [car, setCar] = useState(&#x27;&#x27;)\n    \n    const [minSalary, setMinSalary] = useState(1)\n    const [agefrom, setAgeFrom] = useState(&#x27;&#x27;)\n    const [ageto, setAgeTo] = useState(&#x27;&#x27;)\n\n\n    let city_user = JSON.parse(document.getElementById(&#x27;cityId&#x27;).textContent)\n    let city = &#x27;&#x27;\n    if (city_user.id == 0){\n        city = &#x27;&#x27;\n    }\n    else {\n        city = &#x27;&amp;city=&#x27;+city_user.id\n    }\n\n    const currentUrl = window.location.href;\n    let samoz = &#x27;&#x27;\n    if(currentUrl == &#x27;https://anvendo.ru/resumes_list/&#x27;){samoz = &#x27;&#x27;}\n    else{samoz = &#x27;&amp;additional=4&#x27;}\n\n\n    // \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 Url\n    let Url = `https://anvendo.ru/api/resumes/?format=json${prof}&amp;salary__gt=${minSalary}${post}${gender}${car}${agefrom}${ageto}${city}${samoz}`\n\n    // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a Api\n    const apiReq = async () =&gt; {\n        \n        document.body.style.height = 2000+&#x27;px&#x27;\n        \n        let tabContent = document.getElementById(&#x27;myTabContent&#x27;)\n        \n        tabContent.classList.add(&quot;ApiStyle&quot;);\n        \n        setIsLoaded(false)\n        setCountAdvert(&#x27;\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430...&#x27;)\n        fetch(Url+filterKeys.join(&#x27;&#x27;))\n        .then(res =&gt; res.json())\n        .then(\n            (result) =&gt; {\n\n            tabContent.classList.remove(&quot;ApiStyle&quot;);\n            \n            setIsLoaded(true);\n            setItems(result[&#x27;results&#x27;]);\n            setCountAdvert(result[&#x27;count&#x27;])\n            },\n            (error) =&gt; {\n            setIsLoaded(true);\n            setError(error);\n            }\n        )\n        console.log(Url+filterKeys.join(&#x27;&#x27;))        \n    }\n    \n    // \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043e\u043a \u0441\u043d\u0438\u0437\u0443\n    const handleClick = (title, id) =&gt; {\n    \n    if (id==&#x27;post&#x27;) {\n        setfilterButtons(filterButtons.filter((a) =&gt; a.id !== &#x27;post&#x27;));\n        setfilterButtons(current =&gt; [...current, {id: id, name: title}]);\n    }\n    else if (id==&#x27;prof&#x27;) {\n        setfilterButtons(filterButtons.filter((a) =&gt; a.id !== &#x27;prof&#x27;));\n        setfilterButtons(current =&gt; [...current, {id: id, name: title}]);\n    }\n    else {\n        setfilterButtons(current =&gt; [...current, {id: id, name: title}]);\n    }\n    };\n\n    // \u041e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0440\u043f\u043b\u0430\u0442\u044b \u0438 \u043f\u0430\u0443\u0437\u0430\n    useEffect(() =&gt; {\n    const delayDebounceFn = setTimeout(() =&gt; {\n      if (minSalary == 0) {\n          setfilterButtons(filterButtons.filter((a) =&gt; a.id !== &#x27;minsalary&#x27;));\n          apiReq()\n      }\n      else if (minSalary &gt; 1){\n          setfilterButtons(filterButtons.filter((a) =&gt; a.id !== &#x27;minsalary&#x27;));\n          handleClick(minSalary, &#x27;minsalary&#x27;)\n          apiReq()\n      }\n    }, 700)\n    return () =&gt; clearTimeout(delayDebounceFn)\n    }, [minSalary])\n    \n    useEffect(() =&gt; {\n        apiReq()\n    }, [post, prof, gender, car, agefrom, ageto])\n\n\n\n    // \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043e\u043a \u0441\u043d\u0438\u0437\u0443\n    const delHandleClick = (id) =&gt; {\n    setfilterButtons(filterButtons.filter((a) =&gt; a.id !== id));\n    if (id==&#x27;minsalary&#x27;) {\n      setMinSalary(0)\n      document.getElementById(&#x27;minSalary&#x27;).value = &#x27;&#x27;\n    }\n    else if (id==&#x27;agefrom&#x27;) {\n        setAgeFrom(&#x27;&#x27;)\n        document.getElementById(&#x27;ageFrom&#x27;).value = &#x27;&#x27;\n    }\n    else if (id==&#x27;ageto&#x27;) {\n        setAgeTo(&#x27;&#x27;)\n        document.getElementById(&#x27;ageTo&#x27;).value = &#x27;&#x27;\n    }\n    else if (id==&#x27;post&#x27;) {\n        setPost(&#x27;&#x27;)\n        setPosts(dataPosts.filter(post =&gt; post.fields.parent == null))\n        filterKeys = filterKeys.filter((key) =&gt; key !== post)\n        setButAll(false) \n        setProfs(dataProfessionals)\n        $(&quot;#SearchPosts&quot;).val(&#x27;default&#x27;);\n        $(&quot;#SearchPosts&quot;).selectpicker(&quot;refresh&quot;);\n    }\n    else if (id==&#x27;gender&#x27;) {\n        var ele = document.getElementsByName(&quot;gender&quot;);\n        for(var i=0;i&lt;ele.length;i++)\n            ele[i].checked = false;\n        setGender(&#x27;&#x27;)\n    }\n    else if (id==&#x27;car&#x27;) {\n        console.log(1)\n        let el1 = document.querySelector(`[data-id=&quot;car&quot;]`)\n        el1.checked = false\n        setCar(&#x27;&#x27;)\n    }\n    else if (id==&#x27;prof&#x27;) {\n        setProf(&#x27;&#x27;)\n        setPosts(dataPosts.filter(post =&gt; post.fields.parent == null))\n        setButAll(false) \n        setProfs(dataProfessionals)\n\n        filterKeys = filterKeys.filter((key) =&gt; key !== prof)\n\n        var ele = document.getElementsByName(&quot;prof&quot;);\n        for(var i=0;i&lt;ele.length;i++)\n            ele[i].checked = false;\n    }\n    else{\n      filterKeys = filterKeys.filter((key) =&gt; key !== id);\n      const el1 = document.querySelector(`[data-id=&quot;${id}&quot;]`)\n      el1.checked = false\n      apiReq()\n    }\n    };\n    \n    // \u041f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0440\u043f\u043b\u0430\u0442\u044b\n    const minSalaryChange = (event) =&gt; {\n        setMinSalary(event.target.value)\n    }\n\n    \n    \n    // \u0412\u043e\u0437\u0440\u0430\u0441\u0442\n    const [inputAge, setInputAge] = useState(&quot;&quot;);\n    const [inputAgeTo, setInputAgeTo] = useState(&quot;&quot;);\n\n    useEffect(() =&gt; {\n    const timeoutId = setTimeout(() =&gt; {\n        if (inputAge !== agefrom) {\n            setAgeFrom(&#x27;&amp;age_gte=&#x27; + inputAge);\n            setfilterButtons(filterButtons.filter((a) =&gt; a.id !== &#x27;agefrom&#x27;));\n            handleClick(&#x27;\u043e\u0442 &#x27;+inputAge+&#x27; \u043b\u0435\u0442&#x27;, &#x27;agefrom&#x27;)\n        }\n    }, 700);\n        return () =&gt; clearTimeout(timeoutId);\n    }, [inputAge]);\n\n    const ageFrom = (event) =&gt; {\n        if (event.target.value == &#x27;&#x27;) {\n            setAgeFrom(&#x27;&#x27;)\n            setfilterButtons(filterButtons.filter((a) =&gt; a.id !== &#x27;agefrom&#x27;));\n        }\n        setInputAge(event.target.value);\n    }\n\n    useEffect(() =&gt; {\n    const timeoutId = setTimeout(() =&gt; {\n        if (inputAgeTo !== ageto) {\n            setAgeTo(&#x27;&amp;age_lte=&#x27; + inputAgeTo);\n            setfilterButtons(filterButtons.filter((a) =&gt; a.id !== &#x27;ageto&#x27;));\n            handleClick(&#x27;\u0434\u043e &#x27;+inputAgeTo+&#x27; \u043b\u0435\u0442&#x27;, &#x27;ageto&#x27;)\n        }\n    }, 700);\n        return () =&gt; clearTimeout(timeoutId);\n    }, [inputAgeTo])\n\n    //const [ageto, setAgeTo] = useState(&#x27;&#x27;)\n    const ageTo = (event) =&gt; {\n        if (event.target.value == &#x27;&#x27;) {\n            setAgeTo(&#x27;&#x27;)\n            setfilterButtons(filterButtons.filter((a) =&gt; a.id !== &#x27;ageto&#x27;));\n        }\n        setInputAgeTo(event.target.value);\n    }\n    \n\n\n    const handlePost = (id, name) =&gt; {\n        handleClick(name, &#x27;post&#x27;)\n        setPost(&#x27;&amp;post=&#x27;+id)\n\n        setButAll(true) \n        let newPosts = dataPosts.filter(post =&gt; post.fields.parent == id)\n        if (newPosts.length &lt; 1) {\n        }\n        else{\n            setPosts(newPosts)\n            const ids = (dataPosts.find(post =&gt; post.fields.name == name)).fields.professional\n            let test2 = dataProfessionals.filter(post =&gt; ids.includes(post.pk))\n            setProfs(test2)\n        }\n    }\n    \n    const handleProf = (id, name) =&gt; {\n        handleClick(name, &#x27;prof&#x27;)\n        const ids = dataProfessionals.find(post =&gt; post.fields.name == name).pk\n        let test2 = dataPosts.filter(post =&gt; post.fields.professional.includes(ids))\n        setPosts(test2)\n        setProf(&#x27;&amp;professional=&#x27;+id)\n    }\n\n    const handlerList= (event) =&gt; {\n    if (event.target.checked) {\n      handleClick(event.target.getAttribute(&#x27;data-name&#x27;), event.target.getAttribute(&#x27;data-id&#x27;))  \n      filterKeys.push(event.target.getAttribute(&#x27;data-id&#x27;));\n      apiReq()\n    } else {\n      delHandleClick(event.target.getAttribute(&#x27;data-id&#x27;))\n      filterKeys = filterKeys.filter((key) =&gt; key !== event.target.getAttribute(&#x27;data-id&#x27;));\n    }\n    }\n\n    const handleGender = (event) =&gt; {\n        setGender(&#x27;&amp;gender=&#x27;+event.target.getAttribute(&#x27;data-id&#x27;))\n        setfilterButtons(filterButtons.filter((a) =&gt; a.id !== &#x27;gender&#x27;));\n        setfilterButtons(current =&gt; [...current, {id: &#x27;gender&#x27;, name: event.target.getAttribute(&#x27;data-name&#x27;)}]);\n    }\n\n    const handleCar = (event) =&gt; {\n        if (event.target.checked) {\n            setCar(&#x27;&amp;car=true&#x27;)\n            setfilterButtons(current =&gt; [...current, {id: &#x27;car&#x27;, name: event.target.getAttribute(&#x27;data-name&#x27;)}]);\n        }\n        else{\n            delHandleClick(event.target.getAttribute(&#x27;data-id&#x27;))\n        }\n    }\n\n    \n\n    \n    \n    return (\n        &lt;div&gt;\n        &lt;SearchPosts posts={posts} setPosts={setPosts} handlePost={handlePost}/&gt;\n        &lt;NavTabs /&gt;\n        &lt;div className=&quot;tab-content mt-2&quot; id=&quot;myTabContent&quot;&gt;\n            &lt;div className=&quot;tab-pane fade show active pt-3 pb-3 &quot; id=&quot;prof1&quot; role=&quot;tabpanel&quot; aria-labelledby=&quot;contact-tab&quot;&gt;\n            {butAll? &lt;button type=&quot;button&quot; className=&quot;btn btn-secondary btn-sm mb-3&quot; onClick={()=&gt;delHandleClick(&#x27;post&#x27;)}&gt;&lt;i className=&quot;bi bi-arrow-left&quot;&gt;&lt;/i&gt; \u0412\u0441\u0435&lt;/button&gt;: &#x27;&#x27;}\n            &lt;PostListAll posts={posts} setPosts={setPosts} handlePost={handlePost}/&gt;\n            &lt;/div&gt;\n            &lt;div className=&quot;tab-pane fade pt-3 pb-3 &quot; id=&quot;oblast1&quot; role=&quot;tabpanel&quot; aria-labelledby=&quot;contact-tab&quot;&gt;\n            &lt;ProfessionalsListAll profs={profs} setProfs={setProfs} handleProf={handleProf}/&gt;\n            &lt;/div&gt;\n            &lt;div className=&quot;tab-pane fade  pt-3 pb-3&quot; id=&quot;employment&quot; role=&quot;tabpanel&quot; aria-labelledby=&quot;contact-tab&quot;&gt;\n            \n            &lt;div className=&quot;row&quot;&gt;\n            &lt;div className=&quot;col-12 col-lg-4 mt-2&quot;&gt;\n            {% for p in employment|slice:&quot;0:6&quot; %}\n            &lt;label className=&quot;linkBusy&quot;&gt;&lt;input className=&quot;cb1&quot; type=&quot;checkbox&quot;   data-pk=&quot;{{p.pk}}&quot; data-id=&quot;&amp;busy={{p.pk}}&quot; data-name=&quot;{{p.name}}&quot; onChange={handlerList} /&gt; {{p.name}}&lt;/label&gt;&lt;br/&gt;\n            {% endfor %}\n            &lt;/div&gt;\n            &lt;div className=&quot;col-12 col-lg-4 mt-2&quot;&gt;\n            {% for p in employment|slice:&quot;6:20&quot; %}\n            &lt;label className=&quot;linkBusy&quot;&gt;&lt;input className=&quot;cb1&quot; type=&quot;checkbox&quot;  data-pk=&quot;{{p.pk}}&quot; data-id=&quot;&amp;busy={{p.pk}}&quot; data-name=&quot;{{p.name}}&quot; onChange={handlerList}/&gt; {{p.name}}&lt;/label&gt;&lt;br/&gt;\n            {% endfor %}\n            &lt;/div&gt;\n                &lt;/div&gt;\n            &lt;/div&gt;\n            &lt;div className=&quot;tab-pane fade pt-3 pb-3&quot; id=&quot;additionally1&quot; role=&quot;tabpanel&quot; aria-labelledby=&quot;contact-tab&quot;&gt;\n            \n            &lt;div className=&quot;row&quot;&gt;\n                &lt;div className=&quot;col-4 mt-2&quot;&gt;\n                    {% for p in educations %}\n                    &lt;label className=&quot;linkBusy&quot;&gt;&lt;input className=&quot;cb1&quot; type=&quot;checkbox&quot;  data-pk=&quot;{{p.pk}}&quot; data-id=&quot;&amp;education={{p.pk}}&quot; data-name=&quot;{{p.name}}&quot; onChange={handlerList}/&gt; {{p.name}}&lt;/label&gt;&lt;br/&gt;\n                    {% endfor %}\n                &lt;/div&gt;\n            &lt;/div&gt;\n            &lt;/div&gt;\n            &lt;div className=&quot;tab-pane fade pt-3 pb-3&quot; id=&quot;experience1&quot; role=&quot;tabpanel&quot; aria-labelledby=&quot;contact-tab&quot;&gt;\n            \n            &lt;div className=&quot;row&quot;&gt;\n                &lt;div className=&quot;col-12 mt-2&quot;&gt;\n                    {% for p in driver_licenses %}\n                    &lt;label className=&quot;linkBusy&quot;&gt;&lt;input className=&quot;cb1&quot; type=&quot;checkbox&quot;  data-pk=&quot;{{p.pk}}&quot; data-id=&quot;&amp;driver_license={{p.pk}}&quot; data-name=&quot;{{p.name}}&quot; onChange={handlerList}/&gt; {{p.name}}&lt;/label&gt;&lt;br/&gt;\n                    {% endfor %}\n                &lt;/div&gt;\n            &lt;/div&gt;\n            &lt;/div&gt;\n            &lt;div className=&quot;tab-pane fade  pt-3 pb-3&quot; id=&quot;salary1&quot; role=&quot;tabpanel&quot; aria-labelledby=&quot;contact-tab&quot;&gt;\n            \n            &lt;div className=&quot;row&quot;&gt;\n                &lt;div className=&quot;col-12 mt-2&quot;&gt;\n                  &lt;div className=&quot;row&quot;&gt;\n                    &lt;p&gt;\u043e\u0442 &lt;input id=&quot;minSalary&quot; type=&quot;number&quot; className=&quot;form-control&quot; min=&quot;100&quot; step=&quot;100&quot; onChange={minSalaryChange} /&gt; \u20bd&lt;/p&gt;\n                  &lt;/div&gt;\n                &lt;/div&gt;\n            &lt;/div&gt;\n            &lt;/div&gt;\n            &lt;div className=&quot;tab-pane fade pt-3 pb-3&quot; id=&quot;company1&quot; role=&quot;tabpanel&quot; aria-labelledby=&quot;contact-tab&quot;&gt;\n            \n            &lt;div className=&quot;row&quot;&gt;\n                &lt;div className=&quot;col-12 col-lg-4 mt-2&quot;&gt;\n                    &lt;p className=&quot;subTitleCat&quot;&gt;\u0412\u043e\u0437\u0440\u0430\u0441\u0442&lt;/p&gt;\n                    &lt;p&gt;\u043e\u0442 &lt;input id=&quot;ageFrom&quot; type=&quot;number&quot; className=&quot;form-control&quot; min=&quot;16&quot; step=&quot;1&quot; max=&quot;100&quot; onChange={ageFrom} /&gt; \u043b\u0435\u0442&lt;/p&gt;\n                    &lt;p&gt;\u0434\u043e &lt;input id=&quot;ageTo&quot; type=&quot;number&quot; className=&quot;form-control&quot; min=&quot;16&quot; step=&quot;1&quot; max=&quot;100&quot; onChange={ageTo} /&gt; \u043b\u0435\u0442&lt;/p&gt;\n                &lt;/div&gt;\n                &lt;div className=&quot;col-12 col-lg-4 mt-2&quot;&gt;\n                    &lt;p className=&quot;subTitleCat&quot;&gt;\u041f\u043e\u043b&lt;/p&gt;\n                    {%for p in gender%}\n                    &lt;label className=&quot;form-check-label&quot;&gt;&lt;input className=&quot;form-check-input&quot; type=&quot;radio&quot; value=&quot;{{p.pk}}&quot; id=&quot;gender&quot; name=&quot;gender&quot; data-id=&quot;{{p.pk}}&quot; data-name=&quot;{{p.name}}&quot; onChange={handleGender}/&gt; {{p.name}}&lt;/label&gt;&lt;br/&gt;\n                    {%endfor%}\n                &lt;/div&gt;\n                &lt;div className=&quot;col-12 col-lg-4 mt-2&quot;&gt;\n                    &lt;p className=&quot;subTitleCat&quot;&gt;\u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f&lt;/p&gt;\n                    &lt;label className=&quot;form-check-label&quot;&gt;&lt;input className=&quot;form-check-input&quot; type=&quot;checkbox&quot; id=&quot;car&quot; name=&quot;car&quot; data-id=&quot;car&quot; data-name=&quot;\u0415\u0441\u0442\u044c \u0430\u0432\u0442\u043e&quot; onChange={handleCar}/&gt; \u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u0430\u0432\u0442\u043e&lt;/label&gt;&lt;br/&gt;\n                &lt;/div&gt;\n            &lt;/div&gt;\n            &lt;/div&gt;\n            &lt;p className=&quot;totalAdverCount&quot;&gt;\u0412\u0441\u0435\u0433\u043e \u0440\u0435\u0437\u044e\u043c\u0435: {countAdvert}&lt;/p&gt;\n            {filterButtons.map((element, index, id) =&gt; {\n            return (\n                &lt;button className=&quot;checkFalse&quot; key={index} onClick={()=&gt;delHandleClick(element.id)}&gt;{element.name} &lt;i className=&quot;bi bi-x-lg&quot;&gt;&lt;/i&gt;&lt;/button&gt;\n                );\n            })}\n            \n        &lt;/div&gt;\n        &lt;/div&gt;\n        \n    )\n}\n\nconst ListAdvert = ({isLoaded, items, setItems, error}) =&gt; {\n    if (error) {\n    return &lt;div&gt;\u041e\u0448\u0438\u0431\u043a\u0430: {error.message}&lt;/div&gt;;\n  } else if (!isLoaded) {\n    return (\n        &lt;div className=&quot;text-center&quot;&gt;\n        &lt;svg id=&quot;indicator&quot; viewBox=&quot;0 0 100 100&quot;&gt;\n        &lt;circle id=&quot;circle&quot; cx=&quot;50&quot; cy=&quot;50&quot; r=&quot;45&quot;&gt;&lt;/circle&gt;\n        &lt;/svg&gt;&lt;br/&gt;\n        \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430&lt;/div&gt;\n    );\n  } else {\n    return (\n        &lt;div&gt;\n          {items.map(item =&gt; (\n            &lt;div className=&quot;col-12 mb-2&quot; key={item.id}&gt;\n            &lt;a href={&#x27;/resume/&#x27;+item.slug} className=&quot;link_advert_in_category&quot;&gt;\n                &lt;div className=&quot;row advert_in_category shadow rounded-3&quot;&gt;\n                    &lt;div className=&quot;col-12 col-lg-2 advert_in_category_img text-center text-lg-start mb-2 mb-lg-0&quot;&gt;\n                        &lt;img height=&#x27;140px&#x27; src={item.main_photo} alt=&quot;&quot; /&gt;\n                    &lt;/div&gt;\n                    &lt;div className=&quot;col-12 col-lg-10 text-center text-lg-start&quot;&gt;\n                        &lt;p className=&quot;advert_in_category_title&quot;&gt;{ item.post.map((x) =&gt; `${x}, `)}&lt;/p&gt;\n                        &lt;p className=&quot;advert_company&quot;&gt;\n                            {item.education} \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435,  {item.total_experience? &#x27;\u043e\u043f\u044b\u0442 \u0440\u0430\u0431\u043e\u0442\u044b &#x27;+item.total_experience : &#x27;\u0411\u0435\u0437 \u043e\u043f\u044b\u0442\u0430&#x27;}\n                        &lt;/p&gt;\n                        &lt;p className=&quot;dateViewList&quot;&gt;&lt;span className=&quot;viewTotalCard&quot;&gt;&lt;i className=&quot;bi bi-eye-fill&quot;&gt;&lt;/i&gt; \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u0432: {item.total_views}&lt;/span&gt; &lt;span className=&quot;viewTotalCard&quot;&gt;&lt;i className=&quot;bi bi-calendar&quot;&gt;&lt;/i&gt; \u0414\u0430\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438: {item.published_date}&lt;/span&gt;&lt;/p&gt;\n                        &lt;p className=&quot;advert_in_cat_salar&quot;&gt;\u043e\u0442 {item.salary} \u20bd&lt;/p&gt;\n                    &lt;/div&gt;\n                &lt;/div&gt;\n            &lt;/a&gt;\n        &lt;/div&gt;\n          ))}\n        &lt;/div&gt;\n    );\n}\n}\n\nfunction MyComponent() {\n\n  const [error, setError] = useState(null);\n  const [isLoaded, setIsLoaded] = useState(false);\n  const [items, setItems] = useState([]);\n  const [countAdvert, setCountAdvert] = useState(&#x27;\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430...&#x27;)\n  \n\n  return (\n    &lt;div&gt;\n    &lt;div className=&quot;shadow row p-3 mb-3 rounded-3&quot;&gt;\n    &lt;FilterBusy isLoaded={isLoaded} items={items} setItems={setItems} error={error} setIsLoaded={setIsLoaded} setError={setError} countAdvert={countAdvert} setCountAdvert={setCountAdvert}/&gt;\n    &lt;/div&gt;\n    &lt;ListAdvert isLoaded={isLoaded} items={items} setItems={setItems} error={error} /&gt;\n    &lt;/div&gt;\n  )\n}\n\nconst root = ReactDOM.createRoot(document.getElementById(&#x27;root&#x27;));\nroot.render(\n&lt;div&gt;\n&lt;MyComponent /&gt;\n&lt;/div&gt;\n);\n&lt;/script&gt;\n{% endblock content %}</code>\n    \n  </div>\n</div>\n"}