From c279d03028f0c8a7fe94efc45aff019a2fc45a08 Mon Sep 17 00:00:00 2001 From: zvevqx Date: Wed, 26 Mar 2025 10:37:12 +0100 Subject: [PATCH] toggle open class fix --- __pycache__/app.cpython-313.pyc | Bin 8913 -> 6400 bytes app.py | 41 ++------------ static/main.bak | 91 ++++++++++++++++++++++++++++++++ static/main.js | 64 ++++++++-------------- static/style.css | 2 +- templates/index.html | 2 +- 6 files changed, 119 insertions(+), 81 deletions(-) create mode 100644 static/main.bak diff --git a/__pycache__/app.cpython-313.pyc b/__pycache__/app.cpython-313.pyc index 53dcb83ba213c9e39cfc6bb7f1e7110a82f3b193..0ab4170cd9672e2ba81e9dbbf8b3ed23676ed262 100644 GIT binary patch delta 835 zcmYjP&rcIk5Pt8qyFl43wP5WJY`3Lg7ZYh3YQz`?!jD=@HEc;5A;ba|Vx;KX;K2*U zlOBxG7ZWcgdQuWKNcErapkO?hdND>19yBCy;ONZO66Wyj_kA<-_U+7W4VM$n9aVJ@ zi0Jzt^F7K#r0)mI9)bZgOKZr(qlGe0w^gwmTlwt%= z=Lspe2!YP?2Yde4hYYQcYGj_yQ$73}&8%*(N+Xq3+owjS&a&JM9&ZKE#k6wDYpOuY zTDS8c+8Kl{ghm8RnGB%bmPI!!Bv+p(dTvRVK#qy;o{anj z*t8@zWlfaaa&%Fe#1~qTlj^h6$b{5O4dy4;8YgA3?r3X|lMP-`D z+#&WHp@!c4fW?E&Ar%K>g<;Fn%El2vsV+u*$7xQ){T^}G7o~ae+IPp&ao`32>PkO! z@Bsk5f#aR3_Nz;Lkq@D5ee+3V-3a*2y39L}4x0a_j7SHZ-d#I!U1m>{I|QHQ)K|5oJo-&NEN-e{muFWdO5n+v z_1IQ(X49S#kApeb^PgZunuDWeMO!HD?&Lb~s>58Kxxtrai>6t*7;@7@3f$Tf+W2yb&xlu=*Kr#({?O+A%15o8itdPhsELlz9UEb>ZH9C^ JC>}-5{R836rThQ@ delta 3008 zcmdT`O>7&-6`t8${)nVVNz^YRMbwXF(LqUz4Q)wf6)W(M5{as#H60}~EU(BFDVcws zrD$1oMJfppB>`$110jN&078HQ(V;*L9n#)v^w6}Il28M?YZd7sJ@iILJ)|xA^Je)Y zxpC26JH)Z;a!Kqd&O=C zB1gm?kbThgd({qAMeMDnb>vXb{!13IZ+IFZsSY9NDONjF74fJ=>>t8T6u}Yfa_#(q zQ;pVbZjv-W2(g3Mrk|My@jk_t=8kPnH4r%?6Gc|}tMZM%nidjadD$IJ$73$~yyY}L zLvL8zczow$%NVYGiH-3x8-pVO`uAF|E5IzhOjLb}4nCc%kyhr=LIQN!`bY01e7gkl zEHkrJlRhSlOfZ+ifv9wQg;`&rN!yUk>Iq3{j~_%ripwL^sc)VOgZnbtKtc387O?{@ z8fU;#YWC{3C-4kku?DfoiM#`e!VsU}W>}V5t3V{d&loB;Q8(Q~e{Je)xC@pM+=HCj zRCY9WiYA4APQ>(|rcUlCqW>_pWJSydyTGxX3Bwu!euRQJgEn+d6nGIKGjxw|C;55o z;!FF`0r8XCZh)m3K1d4))lgod!jg76bEN{dF_!~e=cS13_Q#STDW;6L{Si4KFQ>>z zn3Yl)1@ZNtP!8p7i+6purLFN#20lG;??j<@h~l5hKfm_N%>B&Ik`(8s#0OK;g{kTM zYnKaCvw106n2NrS@8G+>zw9@`C~r27n(>dUAbwI0;yzacl4i}{$r4yt2}I<(Y)*F2 z%DX%Qs@nF=Bx6#1E-Z~`yLk#?$WbO(vg9-f08$UrdzoHF##v^lA_MSpff*nyi^y0d zSP?+GQURG(IaVIRP{0tUctL!fLtok!KlJU|7IR~Jwf5U%TjAfe`X2MxdNOzROKZz} zS99m~%#Ka}Cw&ETATI>8^i~=@(o#B_Bp!e1t-&sYX}7-d{~LI!zO>=#Bj*8v!HW-qGlk$x{!+LQl=G2mh2XU^ z1j$8u(>(HDq1OJig#2Z+y#|?(Q%pRGHljIR2M3^PmiaaCJq1+f8Fi`UnrOfZfguRb z0k9MXEaiU$7X8R}Qzt|J%e1F%!m!RXZiB}4omWcq5kEvp7q|-jJJA6tRf!4(IUqew zBRxi*T6==@%oVH1PuJ~?)>DkP>E{j4;RTBA!+4SU?Qdv$GyUA|fbXJxEz8cMRw0+3 zFhWy>`6P*xbIhzAM~%1Hgg{#Cz?Q1F09qL_r!>M+^@=Q!P?TiA6J}mU8|*Av?6)S~ znb>S8Sh{j&_Jo@CBX3RYl}_QGg=47hb?!soK4NdEs&*{<3+9QuFi|>|M$dJ5E}BeU zrK^0ij*YApuvNs`o!AanK9@i<0ywlrub3LM-ALp`A&5NuK}{pN2y*Es$vlLuJQq!; zQ^Ow5z>wEHaAMFsaB|S?9T@)h@#DumD;YU+ZP}9!!_OUANUJ;(LTV`%Td9Awl#G+e zA$cJqhr0k&THW+<8Q3GNnv|uvY>Fg9vZAOwSxUIDT0`ViayBKUqleg2HIx@dRw1J# zJc=6xRLo#~dv$Gfvw7Fh`LJt5Jwu zp_Rsxp|^Nl%UhsqAQ6jb93|lLf;Ud^LAut^Bn0u4fvy_bTc`P{DwrxGAmrm|oxwrB zs5fSNVc#bSn_xw^l%D_Api8d`(YO>+4N*yn#unyOJ|SOM^>QMV49ft6sO0sXP-~*{ za(E#kD`}UY3SlWNF@%JOoF+LKjI4ps=p5L*bepL4p=3O@l$K|eg-Ak5FAgOHo>DD3}24i)uC zS3}P=T@YAj`ax5-?uX!bgZ`rFxcL}yflj^;Vn^59fV1Q5Q~OV(-HGhJA}lk)$U!?Y z8VCqu2yG_SA`_A%Q7I9QfyRa=Z1#W8)aZ{V!%H!FgnR^Ewm#)=Ad5W4_z|jkgzCRQ zqq{plXfffF&+Ov%$D9sN;(Z=*9YswoS`nvvyKSv4Z|>T~-3R`jvcHb5wt8RC') -def catPage(catname): - articles = (p for p in pages if 'published' in p.meta and 'cat' in p.meta and p.meta['cat']==catname ) - latest = sorted(articles, reverse=True, - key=lambda p: p.meta['published']) - catList = Liste_cat() - return render_template('index.html', articles=latest , catList=catList ) - -@app.route('/author/') -def authorPage(authorname): - articles = (p for p in pages if 'published' in p.meta and 'author' in p.meta and p.meta['author']==authorname ) - latest = sorted(articles, reverse=True, - key=lambda p: p.meta['published']) - catList = Liste_cat() - return render_template('index.html', articles=latest , catList=catList ) - - @app.route('/pages/') def serve_pages(path): return send_from_directory('pages', path) @@ -101,30 +84,16 @@ def serve_pages(path): def search(): query = request.form['query'] print(query) - catList = Liste_cat() # articles = (p for p in pages if 'published' in p.meta and query.lower() in metastr= lambda m : [item.lower() for item in list(p.meta.values())]) articles = (p for p in pages if 'published' in p.meta and any(isinstance(value,str) and query.lower() in value.lower() for value in p.meta.values())) - return render_template('index.html', articles=articles ,catList=catList) - - - -@app.route('/webhook', methods=['POST']) -def webhook(): - if request.method == 'POST': - repo_path = "http://192.168.178.21:3000/zvevqx/tdtdt.git" # Replace with the actual path - subprocess.run(['git', 'pull', repo_path]) - return "Webhook received!" + imgDict ={} + for a in articles: + g_path, imgs = imagelist(a.path) + imgDict[a.path]=imgs + return render_template('index.html', articles=articles ,imgDict=imgDict) -def compute_signature(data, secret): - import hmac - import hashlib - return hmac.new(secret.encode('utf-8'), data, hashlib.sha256).hexdigest() -def restart_flask_app(): - # Customize this function to restart your Flask app (e.g., using gunicorn, systemd, etc.) - # Example: subprocess.run(['systemctl', 'restart', 'your-flask-app.service']) - pass @app.errorhandler(404) diff --git a/static/main.bak b/static/main.bak new file mode 100644 index 0000000..d3d469e --- /dev/null +++ b/static/main.bak @@ -0,0 +1,91 @@ +$(document).ready(function(){ + + //$(".alist li").click(function(){ + //console.log("lolololol"); + //var ctnt = $(this).find('.content-wrapper') + //$(ctnt).toggleClass("open") + //}); + + + const sortState = {}; + + // Function to sort articles + function sortArticles(columnClass) { + const $list = $('.alist'); + const $listItems = $list.children('li'); + + // Determine sort direction + if (!sortState[columnClass]) { + sortState[columnClass] = 'asc'; + } else { + sortState[columnClass] = (sortState[columnClass] === 'asc') ? 'desc' : 'asc'; + } + + // Sort the list items based on the text of the specified column + $listItems.sort(function(a, b) { + const aText = $(a).find('.' + columnClass).text().trim().toLowerCase(); + const bText = $(b).find('.' + columnClass).text().trim().toLowerCase(); + + // Special handling for period (numeric sorting) + if (columnClass === 'period') { + const aNum = parseInt(aText); + const bNum = parseInt(bText); + return sortState[columnClass] === 'asc' + ? aNum - bNum + : bNum - aNum; + } + + // Default alphabetical sorting + return sortState[columnClass] === 'asc' + ? aText.localeCompare(bText) + : bText.localeCompare(aText); + }); + + // Detach and reappend sorted items to maintain DOM structure + $list.empty().append($listItems); + + // Optional: Visual indication of sort direction + $('.legend li ').removeClass('sort-asc sort-desc'); + $(`.legend li[data-sort="${columnClass}"]`).addClass(sortState[columnClass] === 'asc' ? 'sort-asc' : 'sort-desc'); + //$(`.legend li:contains("${columnClass}")`).addClass(sortState[columnClass] === 'asc' ? 'sort-asc' : 'sort-desc'); + //$(`.legend li `).attr('data-sort').addClass(sortState[columnClass] === 'asc' ? 'sort-asc' : 'sort-desc'); + } + + // Add click event to legend spans + $('.legend li ').on('click', function() { + // Get the class corresponding to the clicked span + //const columnClass = $(this).text().toLowerCase().replace(/\s+/g, ''); + const columnClass = $(this).attr("data-sort") + + // If the column exists in the article items, sort by that column + if ($('.alist li').first().find('.' + columnClass).length > 0) { + sortArticles(columnClass); + } + }); + + +$(".alist li a ").click(function(e) { + // Prevent this event from interfering with sorting or default link behavior +// e.preventDefault(); + + console.log("lolololol"); + var ctnt = $(this).find('.content-wrapper'); + if (ctnt.length === 0) { + ctnt = $(this).closest('li').find('.content-wrapper'); + } + $(ctnt).toggleClass("open"); + }); + + //$(".alist").on('click', 'li', function(e) { + //// Prevent this event from interfering with sorting + //if ($(e.target).closest('.legend').length === 0) { + //console.log("lolololol"); + //var ctnt = $(this).find('.content-wrapper'); + //$(ctnt).toggleClass("open"); + //} + //}); + +}) + + + diff --git a/static/main.js b/static/main.js index 0906787..d4226bc 100644 --- a/static/main.js +++ b/static/main.js @@ -1,12 +1,5 @@ -$(document).ready(function(){ - - //$(".alist li").click(function(){ - //console.log("lolololol"); - //var ctnt = $(this).find('.content-wrapper') - //$(ctnt).toggleClass("open") - //}); - - +$(document).ready(function() { + // Sorting state management const sortState = {}; // Function to sort articles @@ -44,18 +37,16 @@ $(document).ready(function(){ // Detach and reappend sorted items to maintain DOM structure $list.empty().append($listItems); - // Optional: Visual indication of sort direction - $('.legend li ').removeClass('sort-asc sort-desc'); - $(`.legend li[data-sort="${columnClass}"]`).addClass(sortState[columnClass] === 'asc' ? 'sort-asc' : 'sort-desc'); - //$(`.legend li:contains("${columnClass}")`).addClass(sortState[columnClass] === 'asc' ? 'sort-asc' : 'sort-desc'); - //$(`.legend li `).attr('data-sort').addClass(sortState[columnClass] === 'asc' ? 'sort-asc' : 'sort-desc'); + // Update sort direction indicators + $('.legend li').removeClass('sort-asc sort-desc'); + $(`.legend li[data-sort="${columnClass}"]`).addClass( + sortState[columnClass] === 'asc' ? 'sort-asc' : 'sort-desc' + ); } - // Add click event to legend spans - $('.legend li ').on('click', function() { - // Get the class corresponding to the clicked span - //const columnClass = $(this).text().toLowerCase().replace(/\s+/g, ''); - const columnClass = $(this).attr("data-sort") + // Add click event to legend spans for sorting + $('.legend li').on('click', function() { + const columnClass = $(this).attr("data-sort"); // If the column exists in the article items, sort by that column if ($('.alist li').first().find('.' + columnClass).length > 0) { @@ -63,29 +54,16 @@ $(document).ready(function(){ } }); - -$(".alist").on('click', 'li ', function(e) { - // Prevent this event from interfering with sorting or default link behavior - e.preventDefault(); - - console.log("lolololol"); - var ctnt = $(this).find('.content-wrapper'); - if (ctnt.length === 0) { - ctnt = $(this).closest('li').find('.content-wrapper'); + // Toggle content visibility + $(".alist").on('click', 'li', function(e) { + // Prevent sorting when clicking on content + if (!$(e.target).closest('.legend').length) { + const $contentWrapper = $(this).find('.content-wrapper'); + + // Ensure content-wrapper is not inside a link or legend + if (!$(e.target).closest('a, .legend').length) { + $contentWrapper.toggleClass("open"); + } } - $(ctnt).toggleClass("open"); }); - - //$(".alist").on('click', 'li', function(e) { - //// Prevent this event from interfering with sorting - //if ($(e.target).closest('.legend').length === 0) { - //console.log("lolololol"); - //var ctnt = $(this).find('.content-wrapper'); - //$(ctnt).toggleClass("open"); - //} - //}); - -}) - - - +}); diff --git a/static/style.css b/static/style.css index bb39a1c..476fcc4 100644 --- a/static/style.css +++ b/static/style.css @@ -265,7 +265,7 @@ a:hover{ .open{ height:auto !important; max-height:2000px !important; - margin-top:10px; + margin-top: 10px !important; transition: max-height 0.25s ease-in; } diff --git a/templates/index.html b/templates/index.html index 7318d98..ed58f98 100644 --- a/templates/index.html +++ b/templates/index.html @@ -4,7 +4,7 @@ - urbaniste dev site + latitude dev site