flpolprojects commited on
Commit
bd4b9f2
·
verified ·
1 Parent(s): 46e07a8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +48 -17
app.py CHANGED
@@ -117,12 +117,22 @@ def catalog():
117
  max-width: 1200px;
118
  margin: 0 auto;
119
  }
120
- h1 {
121
  text-align: center;
122
- color: #2c3e50;
123
  margin-bottom: 40px;
124
- font-size: 2.5em;
125
- font-weight: 700;
 
 
 
 
 
 
 
 
 
 
 
126
  }
127
  .products-grid {
128
  display: grid;
@@ -355,10 +365,12 @@ def catalog():
355
  max-width: 120px;
356
  max-height: 120px;
357
  }
358
- h1 {
359
- font-size: 1.8em;
360
  margin-bottom: 20px;
361
  }
 
 
 
362
  .product h2 {
363
  font-size: 0.9em;
364
  }
@@ -377,10 +389,12 @@ def catalog():
377
  </head>
378
  <body>
379
  <div class="container">
380
- <h1>Каталог товаров</h1>
381
- <div class="products-grid">
 
 
382
  {% for product in products %}
383
- <div class="product">
384
  {% if product.get('photos') and product['photos']|length > 0 %}
385
  <div class="product-image">
386
  <img src="https://huggingface.co/datasets/{{ repo_id }}/resolve/main/photos/{{ product['photos'][0] }}"
@@ -389,7 +403,7 @@ def catalog():
389
  </div>
390
  {% endif %}
391
  <h2>{{ product['name'] }}</h2>
392
- <div class="product-price">{{ product['price'] }} ₽</div>
393
  <p class="product-description">{{ product['description'][:100] }}{% if product['description']|length > 100 %}...{% endif %}</p>
394
  <button class="product-button" onclick="openModal({{ loop.index0 }})">Подробнее</button>
395
  <button class="product-button add-to-cart" onclick="openQuantityModal({{ loop.index0 }})">В корзину</button>
@@ -423,7 +437,7 @@ def catalog():
423
  <h2>Корзина</h2>
424
  <div id="cartContent"></div>
425
  <div style="margin-top: 20px; text-align: right;">
426
- <strong>Итого: <span id="cartTotal">0</span> ₽</strong>
427
  <button class="product-button clear-cart" onclick="clearCart()">Очистить корзину</button>
428
  <button class="product-button order-button" onclick="orderViaWhatsApp()">Заказать</button>
429
  </div>
@@ -561,10 +575,10 @@ def catalog():
561
  ` : ''}
562
  <div>
563
  <strong>${item.name}</strong>
564
- <p>${item.price} × ${item.quantity}</p>
565
  </div>
566
  </div>
567
- <span>${itemTotal} ₽</span>
568
  </div>
569
  `;
570
  }).join('');
@@ -586,9 +600,9 @@ def catalog():
586
  cart.forEach((item, index) => {
587
  const itemTotal = item.price * item.quantity;
588
  total += itemTotal;
589
- orderText += `${index + 1}. ${item.name} - ${item.price} × ${item.quantity}%0A`;
590
  });
591
- orderText += `Итого: ${total} ₽`;
592
 
593
  const whatsappUrl = `https://api.whatsapp.com/send?phone=996500398754&text=${orderText}`;
594
  window.open(whatsappUrl, '_blank');
@@ -609,6 +623,23 @@ def catalog():
609
  }
610
  }
611
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
612
  console.log("Инициализация страницы, товары:", products);
613
  updateCartButton();
614
  </script>
@@ -647,7 +678,7 @@ def product_detail(index):
647
  <div class="swiper-button-next"></div>
648
  <div class="swiper-button-prev"></div>
649
  </div>
650
- <p><strong>Цена:</strong> {{ product['price'] }} ₽</p>
651
  <p><strong>Описание:</strong> {{ product['description'] }}</p>
652
  </div>
653
  '''
@@ -876,7 +907,7 @@ def admin():
876
  {% for product in products %}
877
  <div class="product-item">
878
  <h3>{{ product['name'] }}</h3>
879
- <p><strong>Цена:</strong> {{ product['price'] }} руб.</p>
880
  <p><strong>Описание:</strong> {{ product['description'] }}</p>
881
  {% if product.get('photos') and product['photos']|length > 0 %}
882
  <div style="background-color: #fff; width: 100px; height: 100px; display: flex; justify-content: center; align-items: center;">
 
117
  max-width: 1200px;
118
  margin: 0 auto;
119
  }
120
+ .search-container {
121
  text-align: center;
 
122
  margin-bottom: 40px;
123
+ }
124
+ #search-input {
125
+ width: 80%;
126
+ max-width: 500px;
127
+ padding: 10px;
128
+ font-size: 1em;
129
+ border: 1px solid #ddd;
130
+ border-radius: 5px;
131
+ outline: none;
132
+ }
133
+ #search-input:focus {
134
+ border-color: #3498db;
135
+ box-shadow: 0 0 5px rgba(52, 152, 219, 0.5);
136
  }
137
  .products-grid {
138
  display: grid;
 
365
  max-width: 120px;
366
  max-height: 120px;
367
  }
368
+ .search-container {
 
369
  margin-bottom: 20px;
370
  }
371
+ #search-input {
372
+ width: 90%;
373
+ }
374
  .product h2 {
375
  font-size: 0.9em;
376
  }
 
389
  </head>
390
  <body>
391
  <div class="container">
392
+ <div class="search-container">
393
+ <input type="text" id="search-input" placeholder="Поиск по названию или описанию...">
394
+ </div>
395
+ <div class="products-grid" id="products-grid">
396
  {% for product in products %}
397
+ <div class="product" data-name="{{ product['name']|lower }}" data-description="{{ product['description']|lower }}">
398
  {% if product.get('photos') and product['photos']|length > 0 %}
399
  <div class="product-image">
400
  <img src="https://huggingface.co/datasets/{{ repo_id }}/resolve/main/photos/{{ product['photos'][0] }}"
 
403
  </div>
404
  {% endif %}
405
  <h2>{{ product['name'] }}</h2>
406
+ <div class="product-price">{{ product['price'] }}</div>
407
  <p class="product-description">{{ product['description'][:100] }}{% if product['description']|length > 100 %}...{% endif %}</p>
408
  <button class="product-button" onclick="openModal({{ loop.index0 }})">Подробнее</button>
409
  <button class="product-button add-to-cart" onclick="openQuantityModal({{ loop.index0 }})">В корзину</button>
 
437
  <h2>Корзина</h2>
438
  <div id="cartContent"></div>
439
  <div style="margin-top: 20px; text-align: right;">
440
+ <strong>Итого: <span id="cartTotal">0</span></strong>
441
  <button class="product-button clear-cart" onclick="clearCart()">Очистить корзину</button>
442
  <button class="product-button order-button" onclick="orderViaWhatsApp()">Заказать</button>
443
  </div>
 
575
  ` : ''}
576
  <div>
577
  <strong>${item.name}</strong>
578
+ <p>${item.price} × ${item.quantity}</p>
579
  </div>
580
  </div>
581
+ <span>${itemTotal}</span>
582
  </div>
583
  `;
584
  }).join('');
 
600
  cart.forEach((item, index) => {
601
  const itemTotal = item.price * item.quantity;
602
  total += itemTotal;
603
+ orderText += `${index + 1}. ${item.name} - ${item.price} × ${item.quantity}%0A`;
604
  });
605
+ orderText += `Итого: ${total}`;
606
 
607
  const whatsappUrl = `https://api.whatsapp.com/send?phone=996500398754&text=${orderText}`;
608
  window.open(whatsappUrl, '_blank');
 
623
  }
624
  }
625
 
626
+ // Поисковая строка
627
+ document.getElementById('search-input').addEventListener('input', function(e) {
628
+ const searchTerm = e.target.value.toLowerCase();
629
+ const productElements = document.querySelectorAll('.product');
630
+
631
+ productElements.forEach(product => {
632
+ const name = product.getAttribute('data-name');
633
+ const description = product.getAttribute('data-description');
634
+
635
+ if (name.includes(searchTerm) || description.includes(searchTerm)) {
636
+ product.style.display = 'flex';
637
+ } else {
638
+ product.style.display = 'none';
639
+ }
640
+ });
641
+ });
642
+
643
  console.log("Инициализация страницы, товары:", products);
644
  updateCartButton();
645
  </script>
 
678
  <div class="swiper-button-next"></div>
679
  <div class="swiper-button-prev"></div>
680
  </div>
681
+ <p><strong>Цена:</strong> {{ product['price'] }}</p>
682
  <p><strong>Описание:</strong> {{ product['description'] }}</p>
683
  </div>
684
  '''
 
907
  {% for product in products %}
908
  <div class="product-item">
909
  <h3>{{ product['name'] }}</h3>
910
+ <p><strong>Цена:</strong> {{ product['price'] }}</p>
911
  <p><strong>Описание:</strong> {{ product['description'] }}</p>
912
  {% if product.get('photos') and product['photos']|length > 0 %}
913
  <div style="background-color: #fff; width: 100px; height: 100px; display: flex; justify-content: center; align-items: center;">