דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. התראה על יציאה ממ"ד & שיפור אתר פיקוד העורף

התראה על יציאה ממ"ד & שיפור אתר פיקוד העורף

מתוזמן נעוץ נעול הועבר תכנות
35 פוסטים 16 כותבים 6.7k צפיות 12 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • צדיק תמיםצ צדיק תמים

    @ששא הטלגרם שהבאתי
    או שתתלבש על איזה אתר חדשות שבודק מולם...

    ש
    ש
    ששא
    כתב ב נערך לאחרונה על ידי
    #6

    @צדיק-תמים כתב בהתראה על יציאה ממ"ד & שיפור אתר פיקוד העורף:

    @ששא הטלגרם שהבאתי

    לא יודע איך עובדים עם טלגרם... וזה גם חסום אצלי כמובן

    צדיק תמיםצ תגובה 1 תגובה אחרונה
    1
    • ש ששא

      @צדיק-תמים כתב בהתראה על יציאה ממ"ד & שיפור אתר פיקוד העורף:

      @ששא הטלגרם שהבאתי

      לא יודע איך עובדים עם טלגרם... וזה גם חסום אצלי כמובן

      צדיק תמיםצ
      צדיק תמיםצ
      צדיק תמים
      כתב ב נערך לאחרונה על ידי צדיק תמים
      #7

      @ששא @צדיק-תמים כתב בהתראה על יציאה ממ"ד & שיפור אתר פיקוד העורף:

      אפשר גם לעשות scraping על הטלגרם שלהם, https://t.me/s/PikudHaOref_all?embed=1

      מבחינתך זה סתם אתר אינטרנט
      דוגמת קוד שכתבתי פעם ורצה עד היום:

      const $ = cheerio.load(html);
      return $('div.tgme_widget_message[data-post]').map((i, messageElem) => {
        const postId = $(messageElem).attr('data-post');
        const textContainer = $(messageElem).find('.tgme_widget_message_text.js-message_text');
        textContainer.find('br').replaceWith('\n');
        const messageText = textContainer.text().trim();
        const datetimeAttr = $(messageElem).find('.tgme_widget_message_date time').attr('datetime') || '';
        const formattedDate = datetimeAttr
          ? new Date(datetimeAttr).toLocaleString('he-IL', {
              month: 'long',
              day: 'numeric',
              hour: '2-digit',
              minute: '2-digit'
            })
          : '';
      });
      
      ש תגובה 1 תגובה אחרונה
      0
      • ש ששא

        @צדיק-תמים עדיין יש את הבעיה

        @צבי-ש כתב בהתראה על יציאה ממ"ד & שיפור אתר פיקוד העורף:

        עריכה: אני חושב שהכתובות הנ"ל לא ניתן לגשת אליהם משרתים בחול, אז אם זה עובד בטסטים ולא בפרוד - שים לב לזה

        אין משהו עם גישה לחול?

        מדמ
        מדמ
        מד
        כתב ב נערך לאחרונה על ידי
        #8

        @ששא כתב בהתראה על יציאה ממ"ד & שיפור אתר פיקוד העורף:

        אין משהו עם גישה לחול?

        אני בחו"ל, ואמת נכון הדבר, אין גישה. רק כשאני מתחבר לשרת ישראל כמבואר כאן.

        תגובה 1 תגובה אחרונה
        0
        • צדיק תמיםצ צדיק תמים

          @ששא @צדיק-תמים כתב בהתראה על יציאה ממ"ד & שיפור אתר פיקוד העורף:

          אפשר גם לעשות scraping על הטלגרם שלהם, https://t.me/s/PikudHaOref_all?embed=1

          מבחינתך זה סתם אתר אינטרנט
          דוגמת קוד שכתבתי פעם ורצה עד היום:

          const $ = cheerio.load(html);
          return $('div.tgme_widget_message[data-post]').map((i, messageElem) => {
            const postId = $(messageElem).attr('data-post');
            const textContainer = $(messageElem).find('.tgme_widget_message_text.js-message_text');
            textContainer.find('br').replaceWith('\n');
            const messageText = textContainer.text().trim();
            const datetimeAttr = $(messageElem).find('.tgme_widget_message_date time').attr('datetime') || '';
            const formattedDate = datetimeAttr
              ? new Date(datetimeAttr).toLocaleString('he-IL', {
                  month: 'long',
                  day: 'numeric',
                  hour: '2-digit',
                  minute: '2-digit'
                })
              : '';
          });
          
          ש
          ש
          ששא
          כתב ב נערך לאחרונה על ידי ששא
          #9

          @צדיק-תמים כתב בהתראה על יציאה ממ"ד & שיפור אתר פיקוד העורף:

          @ששא @צדיק-תמים כתב בהתראה על יציאה ממ"ד & שיפור אתר פיקוד העורף:

          אפשר גם לעשות scraping על הטלגרם שלהם, https://t.me/s/PikudHaOref_all?embed=1

          מבחינתך זה סתם אתר אינטרנט
          דוגמת קוד שכתבתי פעם ורצה עד היום:

          const $ = cheerio.load(html);
          return $('div.tgme_widget_message[data-post]').map((i, messageElem) => {
            const postId = $(messageElem).attr('data-post');
            const textContainer = $(messageElem).find('.tgme_widget_message_text.js-message_text');
            textContainer.find('br').replaceWith('\n');
            const messageText = textContainer.text().trim();
            const datetimeAttr = $(messageElem).find('.tgme_widget_message_date time').attr('datetime') || '';
            const formattedDate = datetimeAttr
              ? new Date(datetimeAttr).toLocaleString('he-IL', {
                  month: 'long',
                  day: 'numeric',
                  hour: '2-digit',
                  minute: '2-digit'
                })
              : '';
          });
          

          זה לוקח מצבע אדום או שזה לוקח סתם דבר אחר?

          צדיק תמיםצ תגובה 1 תגובה אחרונה
          0
          • ש ששא

            @צדיק-תמים כתב בהתראה על יציאה ממ"ד & שיפור אתר פיקוד העורף:

            @ששא @צדיק-תמים כתב בהתראה על יציאה ממ"ד & שיפור אתר פיקוד העורף:

            אפשר גם לעשות scraping על הטלגרם שלהם, https://t.me/s/PikudHaOref_all?embed=1

            מבחינתך זה סתם אתר אינטרנט
            דוגמת קוד שכתבתי פעם ורצה עד היום:

            const $ = cheerio.load(html);
            return $('div.tgme_widget_message[data-post]').map((i, messageElem) => {
              const postId = $(messageElem).attr('data-post');
              const textContainer = $(messageElem).find('.tgme_widget_message_text.js-message_text');
              textContainer.find('br').replaceWith('\n');
              const messageText = textContainer.text().trim();
              const datetimeAttr = $(messageElem).find('.tgme_widget_message_date time').attr('datetime') || '';
              const formattedDate = datetimeAttr
                ? new Date(datetimeAttr).toLocaleString('he-IL', {
                    month: 'long',
                    day: 'numeric',
                    hour: '2-digit',
                    minute: '2-digit'
                  })
                : '';
            });
            

            זה לוקח מצבע אדום או שזה לוקח סתם דבר אחר?

            צדיק תמיםצ
            צדיק תמיםצ
            צדיק תמים
            כתב ב נערך לאחרונה על ידי צדיק תמים
            #10

            @ששא זה דוגמה לפרסור הודעות מהתצוגת ווב של ערוץ טלגרם
            הבאתי קישור לעיל לתצוגת ווב של הערוץ הרשמי של פיקוד העורף

            תגובה 1 תגובה אחרונה
            0
            • אבי 203א
              אבי 203א
              אבי 203
              כתב ב נערך לאחרונה על ידי
              #11

              נשאר רק לחבר?

              <!DOCTYPE html>
              <html lang="he" dir="rtl">
              <head>
                  <meta charset="UTF-8">
                  <meta name="viewport" content="width=device-width, initial-scale=1.0">
                  <title>מערכת התראות חכמה - פיקוד העורף</title>
                  <style>
                      * {
                          margin: 0;
                          padding: 0;
                          box-sizing: border-box;
                      }
              
                      body {
                          font-family: 'Segoe UI', Arial, sans-serif;
                          background: #f4f7fa;
                          color: #333;
                          min-height: 100vh;
                          padding: 20px;
                      }
              
                      .container {
                          max-width: 1200px;
                          margin: 0 auto;
                          background: #fff;
                          border-radius: 12px;
                          box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
                          overflow: hidden;
                      }
              
                      .header {
                          background: #cc0000;
                          color: white;
                          padding: 20px;
                          text-align: center;
                      }
              
                      .header h1 {
                          font-size: 2em;
                          margin-bottom: 8px;
                      }
              
                      .header p {
                          font-size: 1.1em;
                          opacity: 0.9;
                      }
              
                      .main-content {
                          padding: 20px;
                      }
              
                      .city-selector {
                          background: #f8f9fa;
                          border-radius: 10px;
                          padding: 20px;
                          margin-bottom: 20px;
                          text-align: center;
                          box-shadow: 0 4px 10px rgba(0, 0, 0, 0.05);
                      }
              
                      .city-selector h2 {
                          margin-bottom: 15px;
                          color: #2c3e50;
                          font-size: 1.5em;
                      }
              
                      .city-input {
                          width: 100%;
                          max-width: 300px;
                          padding: 12px;
                          font-size: 1em;
                          border: 2px solid #ddd;
                          border-radius: 8px;
                          text-align: center;
                          transition: border-color 0.3s ease;
                      }
              
                      .city-input:focus {
                          outline: none;
                          border-color: #4CAF50;
                      }
              
                      .audio-controls {
                          display: flex;
                          align-items: center;
                          gap: 10px;
                          margin: 15px 0;
                          justify-content: center;
                      }
              
                      .audio-controls label {
                          font-size: 1em;
                          color: #2c3e50;
                      }
              
                      .audio-controls input[type="range"] {
                          width: 100px;
                      }
              
                      .audio-controls button {
                          background: #4CAF50;
                          color: white;
                          border: none;
                          padding: 8px 16px;
                          border-radius: 8px;
                          cursor: pointer;
                          transition: background 0.3s ease;
                      }
              
                      .audio-controls button:hover {
                          background: #45a049;
                      }
              
                      .status-section {
                          display: grid;
                          grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
                          gap: 15px;
                          margin-bottom: 20px;
                      }
              
                      .status-card {
                          background: white;
                          border-radius: 10px;
                          padding: 20px;
                          box-shadow: 0 4px 10px rgba(0, 0, 0, 0.08);
                          border-left: 4px solid #ddd;
                          transition: transform 0.3s ease;
                      }
              
                      .status-card.safe {
                          border-left-color: #4CAF50;
                      }
              
                      .status-card.warning {
                          border-left-color: #ff9800;
                          animation: pulse 2s infinite;
                      }
              
                      .status-card.danger {
                          border-left-color: #f44336;
                          animation: pulse 1s infinite;
                      }
              
                      @keyframes pulse {
                          0% { box-shadow: 0 4px 10px rgba(0, 0, 0, 0.08); }
                          50% { box-shadow: 0 6px 15px rgba(244, 67, 54, 0.3); }
                          100% { box-shadow: 0 4px 10px rgba(0, 0, 0, 0.08); }
                      }
              
                      .status-title {
                          font-size: 1.2em;
                          font-weight: bold;
                          margin-bottom: 8px;
                          display: flex;
                          align-items: center;
                          gap: 8px;
                      }
              
                      .status-icon {
                          font-size: 1.3em;
                      }
              
                      .status-time {
                          color: #666;
                          font-size: 0.9em;
                          margin-bottom: 8px;
                      }
              
                      .status-description {
                          color: #555;
                          line-height: 1.4;
                      }
              
                      .history-section {
                          background: white;
                          border-radius: 10px;
                          padding: 20px;
                          box-shadow: 0 4px 10px rgba(0, 0, 0, 0.08);
                      }
              
                      .history-header {
                          display: flex;
                          justify-content: space-between;
                          align-items: center;
                          margin-bottom: 15px;
                          padding-bottom: 10px;
                          border-bottom: 2px solid #eee;
                      }
              
                      .history-item {
                          padding: 12px;
                          border-right: 3px solid #ddd;
                          margin-bottom: 10px;
                          background: #f9f9f9;
                          border-radius: 8px;
                          transition: transform 0.3s ease;
                      }
              
                      .history-item:hover {
                          transform: translateX(-3px);
                      }
              
                      .history-item.early-warning {
                          border-right-color: #ff9800;
                      }
              
                      .history-item.shelter {
                          border-right-color: #f44336;
                      }
              
                      .history-item.all-clear {
                          border-right-color: #4CAF50;
                      }
              
                      .history-time {
                          font-weight: bold;
                          color: #2c3e50;
                          margin-bottom: 5px;
                      }
              
                      .history-type {
                          font-size: 0.9em;
                          color: #666;
                          margin-bottom: 5px;
                      }
              
                      .history-description {
                          color: #555;
                      }
              
                      .refresh-btn {
                          background: #2196F3;
                          color: white;
                          border: none;
                          padding: 8px 16px;
                          border-radius: 8px;
                          cursor: pointer;
                          transition: background 0.3s ease;
                      }
              
                      .refresh-btn:hover {
                          background: #1976D2;
                      }
              
                      .no-city {
                          text-align: center;
                          color: #666;
                          font-style: italic;
                          padding: 15px;
                      }
              
                      .connection-status {
                          position: fixed;
                          top: 15px;
                          left: 15px;
                          background: #4CAF50;
                          color: white;
                          padding: 6px 12px;
                          border-radius: 15px;
                          font-size: 0.9em;
                          box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
                          z-index: 1000;
                      }
              
                      .connection-status.disconnected {
                          background: #f44336;
                      }
              
                      @media (max-width: 768px) {
                          .main-content {
                              padding: 15px;
                          }
                          .header h1 {
                              font-size: 1.5em;
                          }
                          .status-section {
                              grid-template-columns: 1fr;
                          }
                      }
                  </style>
              </head>
              <body>
                  <div class="connection-status" id="connectionStatus">🔗 מחובר לשרת</div>
              
                  <div class="container">
                      <div class="header">
                          <h1>🚨 מערכת התראות חכמה</h1>
                          <p>מעקב אחר התראות פיקוד העורף בזמן אמת</p>
                      </div>
              
                      <div class="main-content">
                          <div class="city-selector">
                              <h2>בחר את העיר שלך</h2>
                              <select id="cityInput" class="city-input">
                                  <option value="">בחר עיר</option>
                                  <option value="בני ברק">בני ברק</option>
                                  <option value="תל אביב">תל אביב</option>
                                  <option value="ירושלים">ירושלים</option>
                                  <option value="חיפה">חיפה</option>
                                  <option value="אשדוד">אשדוד</option>
                                  <option value="אשקלון">אשקלון</option>
                                  <option value="באר שבע">באר שבע</option>
                                  <option value="נתניה">נתניה</option>
                                  <option value="חולון">חולון</option>
                                  <option value="רמת גן">רמת גן</option>
                              </select>
                              <div class="audio-controls">
                                  <label for="volume">עוצמת קול:</label>
                                  <input type="range" id="volume" min="0" max="1" step="0.1" value="0.5">
                                  <button id="mute">השתק</button>
                              </div>
                          </div>
              
                          <div id="alertSystem" style="display: none;">
                              <div class="status-section">
                                  <div class="status-card safe" id="currentStatus">
                                      <div class="status-title">
                                          <span class="status-icon">✅</span>
                                          מצב רגיל
                                      </div>
                                      <div class="status-time" id="statusTime">עדכון אחרון: עכשיו</div>
                                      <div class="status-description">אין התראות פעילות באזור שלך</div>
                                  </div>
              
                                  <div class="status-card">
                                      <div class="status-title">
                                          <span class="status-icon">📍</span>
                                          עיר רשומה
                                      </div>
                                      <div class="status-description" id="registeredCity">לא נבחרה עיר</div>
                                  </div>
              
                                  <div class="status-card">
                                      <div class="status-title">
                                          <span class="status-icon">⏱️</span>
                                          זמן לממ"ד
                                      </div>
                                      <div class="status-description" id="shelterTime">מידע יופיע בעת התראה</div>
                                  </div>
                              </div>
              
                              <div class="history-section">
                                  <div class="history-header">
                                      <h2>🕘 היסטוריית התראות</h2>
                                      <button class="refresh-btn" onclick="refreshHistory()">רענן</button>
                                  </div>
                                  <div id="alertHistory">
                                      <div class="no-city">בחר עיר להצגת היסטוריה</div>
                                  </div>
                              </div>
                          </div>
                      </div>
                  </div>
              
                  <!-- Audio Elements -->
                  <audio id="pre-alert-sound" src="https://cdn.pixabay.com/download/audio/2022/03/10/audio_8d9b4e6f3c.mp3"></audio>
                  <audio id="enter-sound" src="https://cdn.pixabay.com/download/audio/2022/03/10/audio_7b1a4e3f2c.mp3"></audio>
                  <audio id="exit-sound" src="https://cdn.pixabay.com/download/audio/2022/03/10/audio_3f2a1e6b9c.mp3"></audio>
              
                  <script>
                      let currentCity = '';
                      let isConnected = true;
                      let lastAlertId = null;
                      let alertHistory = [];
                      let isMuted = localStorage.getItem('isMuted') === 'true';
                      const volumeControl = document.getElementById('volume');
                      const muteButton = document.getElementById('mute');
                      const preAlertSound = document.getElementById('pre-alert-sound');
                      const enterSound = document.getElementById('enter-sound');
                      const exitSound = document.getElementById('exit-sound');
              
                      // City data with shelter times
                      const cityData = {
                          'בני ברק': { zone: 'דן', shelterTime: 90 },
                          'תל אביב': { zone: 'דן', shelterTime: 90 },
                          'ירושלים': { zone: 'ירושלים', shelterTime: 90 },
                          'חיפה': { zone: 'חיפה והכרמל', shelterTime: 60 },
                          'אשדוד': { zone: 'אשקלון והסביבה', shelterTime: 30 },
                          'אשקלון': { zone: 'אשקלון והסביבה', shelterTime: 30 },
                          'באר שבע': { zone: 'באר שבע והנגב', shelterTime: 60 },
                          'נתניה': { zone: 'שרון', shelterTime: 45 },
                          'חולון': { zone: 'דן', shelterTime: 90 },
                          'רמת גן': { zone: 'דן', shelterTime: 90 }
                      };
              
                      // Initialize audio settings
                      const savedVolume = localStorage.getItem('volume') || 0.5;
                      preAlertSound.volume = savedVolume;
                      enterSound.volume = savedVolume;
                      exitSound.volume = savedVolume;
                      volumeControl.value = savedVolume;
                      muteButton.textContent = isMuted ? 'בטל השתקה' : 'השתק';
                      if (isMuted) {
                          preAlertSound.muted = true;
                          enterSound.muted = true;
                          exitSound.muted = true;
                      }
              
                      // Volume control
                      volumeControl.addEventListener('input', (e) => {
                          const volume = e.target.value;
                          preAlertSound.volume = volume;
                          enterSound.volume = volume;
                          exitSound.volume = volume;
                          localStorage.setItem('volume', volume);
                      });
              
                      // Mute toggle
                      muteButton.addEventListener('click', () => {
                          isMuted = !isMuted;
                          preAlertSound.muted = isMuted;
                          enterSound.muted = isMuted;
                          exitSound.muted = isMuted;
                          muteButton.textContent = isMuted ? 'בטל השתקה' : 'השתק';
                          localStorage.setItem('isMuted', isMuted);
                      });
              
                      function registerCity() {
                          const cityInput = document.getElementById('cityInput');
                          const city = cityInput.value;
                          if (!city) {
                              showNotification('אנא בחר עיר', 'danger');
                              return;
                          }
                          currentCity = city;
                          document.getElementById('registeredCity').textContent = city;
                          document.getElementById('alertSystem').style.display = 'block';
                          fetchHistory(city);
                          fetchRealTimeAlerts();
                          showNotification(`נרשמת בהצלחה להתראות עבור ${city}`, 'success');
                      }
              
                      function categorizeAlert(alert) {
                          const message = (alert.message || '').toLowerCase();
                          if (message.includes('התראה מוקדמת') || message.includes('הכן מרחב מוגן')) {
                              return { type: 'early-warning', title: 'התראה מוקדמת', icon: '⚠️', description: 'זוהה שיגור לכיוון האזור - היו מוכנים', class: 'warning' };
                          } else if (message.includes('כניסה למרחב מוגן') || message.includes('אזעקה')) {
                              return { type: 'shelter', title: 'היכנסו לממ"ד מיידית!', icon: '🚨', description: 'אזעקה באזור - היכנסו לחדר המוגן עכשיו!', class: 'danger' };
                          } else if (message.includes('שחרור') || message.includes('חזרה לשגרה')) {
                              return { type: 'all-clear', title: 'יציאה מהממ"ד', icon: '🟢', description: 'הסכנה חלפה - ניתן לצאת מהחדר המוגן', class: 'safe' };
                          }
                          return { type: 'safe', title: 'מצב רגיל', icon: '✅', description: 'אין התראות פעילות באזור שלך', class: 'safe' };
                      }
              
                      async function fetchRealTimeAlerts() {
                          try {
                              const response = await fetch('https://www.oref.org.il/WarningMessages/alerts.json');
                              const data = await response.json();
                              const statusCard = document.getElementById('currentStatus');
                              const statusIcon = statusCard.querySelector('.status-icon');
                              const statusTitle = statusCard.querySelector('.status-title');
                              const statusDescription = statusCard.querySelector('.status-description');
                              const statusTime = document.getElementById('statusTime');
                              const shelterTimeElement = document.getElementById('shelterTime');
              
                              if (data.data && currentCity && data.data.some(alert => alert.cities.includes(currentCity))) {
                                  const relevantAlert = data.data.find(alert => alert.cities.includes(currentCity));
                                  if (relevantAlert.id !== lastAlertId) {
                                      lastAlertId = relevantAlert.id;
                                      const alert = categorizeAlert(relevantAlert);
                                      updateAlertStatus(alert);
                                      addToHistory(alert);
                                      if (!isMuted) {
                                          if (alert.type === 'early-warning') {
                                              preAlertSound.play().catch(e => console.error('Error playing pre-alert sound:', e));
                                          } else if (alert.type === 'shelter') {
                                              enterSound.play().catch(e => console.error('Error playing enter sound:', e));
                                          } else if (alert.type === 'all-clear') {
                                              exitSound.play().catch(e => console.error('Error playing exit sound:', e));
                                          }
                                      }
                                      showNotification(`${alert.icon} ${alert.title} ב${currentCity}`, alert.class);
                                      document.title = alert.type === 'shelter' ? `🚨 אזעקה - ${currentCity}` : 'מערכת התראות חכמה';
                                  }
                              } else {
                                  const safeStatus = { type: 'safe', title: 'מצב רגיל', icon: '✅', description: 'אין התראות פעילות באזור שלך', class: 'safe' };
                                  updateAlertStatus(safeStatus);
                              }
                              updateConnectionStatus(true);
                          } catch (error) {
                              console.error('Error fetching real-time alerts:', error);
                              updateConnectionStatus(false);
                          }
                          updateStatusTime();
                      }
              
                      async function fetchHistory(city) {
                          try {
                              const response = await fetch(`https://alerts-history.oref.org.il//Shared/Ajax/GetAlarmsHistory.aspx?lang=he&mode=1&city_0=${encodeURIComponent(city)}`);
                              const data = await response.json();
                              alertHistory = data.map(alert => {
                                  const categorized = categorizeAlert(alert);
                                  return {
                                      time: alert.time,
                                      type: categorized.type,
                                      title: categorized.title,
                                      description: categorized.description,
                                      city: currentCity
                                  };
                              }).slice(0, 20);
                              renderHistory();
                          } catch (error) {
                              console.error('Error fetching history:', error);
                              showNotification('שגיאה בטעינת היסטוריה', 'danger');
                          }
                      }
              
                      function updateAlertStatus(alert) {
                          const statusCard = document.getElementById('currentStatus');
                          const statusIcon = statusCard.querySelector('.status-icon');
                          const statusTitle = statusCard.querySelector('.status-title');
                          const statusDescription = statusCard.querySelector('.status-description');
                          const shelterTimeElement = document.getElementById('shelterTime');
              
                          statusCard.className = `status-card ${alert.class}`;
                          statusIcon.textContent = alert.icon;
                          statusTitle.childNodes[1].textContent = alert.title;
                          statusDescription.textContent = alert.description;
              
                          if (alert.type === 'shelter' || alert.type === 'early-warning') {
                              const cityInfo = cityData[currentCity];
                              shelterTimeElement.textContent = cityInfo ? `${cityInfo.shelterTime} שניות` : 'מידע יופיע בעת התראה';
                          } else {
                              shelterTimeElement.textContent = 'מידע יופיע בעת התראה';
                          }
                      }
              
                      function addToHistory(alert) {
                          const now = new Date();
                          alertHistory.unshift({
                              time: now.toLocaleString('he-IL'),
                              type: alert.type,
                              title: alert.title,
                              description: alert.description,
                              city: currentCity
                          });
                          if (alertHistory.length > 20) {
                              alertHistory = alertHistory.slice(0, 20);
                          }
                          renderHistory();
                      }
              
                      function renderHistory() {
                          const historyContainer = document.getElementById('alertHistory');
                          if (alertHistory.length === 0) {
                              historyContainer.innerHTML = '<div class="no-city">אין היסטוריית התראות עדיין</div>';
                              return;
                          }
                          const historyHTML = alertHistory.map(item => `
                              <div class="history-item ${item.type}">
                                  <div class="history-time">${item.time}</div>
                                  <div class="history-type">${getAlertTypeText(item.type)} - ${item.city}</div>
                                  <div class="history-description">${item.description}</div>
                              </div>
                          `).join('');
                          historyContainer.innerHTML = historyHTML;
                      }
              
                      function getAlertTypeText(type) {
                          const types = {
                              'safe': 'מצב רגיל',
                              'early-warning': 'התראה מוקדמת',
                              'shelter': 'כניסה לממ"ד',
                              'all-clear': 'יציאה מממ"ד'
                          };
                          return types[type] || type;
                      }
              
                      function refreshHistory() {
                          showNotification('מרענן היסטוריה...', 'info');
                          fetchHistory(currentCity);
                      }
              
                      function updateConnectionStatus(connected) {
                          const statusElement = document.getElementById('connectionStatus');
                          isConnected = connected;
                          statusElement.textContent = connected ? '🔗 מחובר לשרת' : '❌ לא מחובר';
                          statusElement.classList.toggle('disconnected', !connected);
                      }
              
                      function updateStatusTime() {
                          const timeElement = document.getElementById('statusTime');
                          const now = new Date();
                          timeElement.textContent = `עדכון אחרון: ${now.toLocaleTimeString('he-IL')}`;
                      }
              
                      function showNotification(message, type) {
                          const notification = document.createElement('div');
                          notification.style.cssText = `
                              position: fixed;
                              top: 80px;
                              right: 20px;
                              background: ${type === 'danger' ? '#f44336' : type === 'warning' ? '#ff9800' : type === 'success' ? '#4CAF50' : '#2196F3'};
                              color: white;
                              padding: 12px 20px;
                              border-radius: 8px;
                              box-shadow: 0 4px 10px rgba(0,0,0,0.3);
                              z-index: 1001;
                              max-width: 300px;
                              font-weight: bold;
                              animation: slideIn 0.3s ease-out;
                          `;
                          notification.textContent = message;
                          document.body.appendChild(notification);
                          setTimeout(() => {
                              notification.style.animation = 'slideOut 0.3s ease-in';
                              setTimeout(() => document.body.removeChild(notification), 300);
                          }, 5000);
                      }
              
                      // Animations for notifications
                      const style = document.createElement('style');
                      style.textContent = `
                          @keyframes slideIn {
                              from { transform: translateX(100%); opacity: 0; }
                              to { transform: translateX(0); opacity: 1; }
                          }
                          @keyframes slideOut {
                              from { transform: translateX(0); opacity: 1; }
                              to { transform: translateX(100%); opacity: 0; }
                          }
                      `;
                      document.head.appendChild(style);
              
                      // Event listeners
                      document.getElementById('cityInput').addEventListener('change', registerCity);
                      setInterval(fetchRealTimeAlerts, 10000);
                      console.log('מערכת התראות חכמה פועלת');
                  </script>
              </body>
              </html>
              

              https://www.av-digital.co.il/

              תגובה 1 תגובה אחרונה
              0
              • אבי 203א
                אבי 203א
                אבי 203
                כתב ב נערך לאחרונה על ידי אבי 203
                #12

                הכנתי משהו לפום ריהטא לא בדקתי מספיק
                https://ph-7php.onrender.com/

                https://www.av-digital.co.il/

                M pcinfogmachP אבי 203א י.פל.י 4 תגובות תגובה אחרונה
                7
                • אבי 203א אבי 203

                  הכנתי משהו לפום ריהטא לא בדקתי מספיק
                  https://ph-7php.onrender.com/

                  M
                  M
                  mekev
                  כתב ב נערך לאחרונה על ידי
                  #13

                  @אבי-203
                  מדהים!

                  נקודה למחשבה ממבטי האישי:
                  אולי תעשה את הכותרת בצבע בהיר
                  ורק בעת התראה תשנה אותה לאדומה

                  תגובה 1 תגובה אחרונה
                  0
                  • אבי 203א אבי 203

                    הכנתי משהו לפום ריהטא לא בדקתי מספיק
                    https://ph-7php.onrender.com/

                    pcinfogmachP
                    pcinfogmachP
                    pcinfogmach
                    כתב ב נערך לאחרונה על ידי
                    #14

                    @אבי-203
                    מדהים! יש אפשרות לחלוקה לפי איזורים?
                    למשל ירושלים צפון דרום וכו'?

                    גמ"ח מידע מחשבים ואופיס

                    אבי 203א תגובה 1 תגובה אחרונה
                    0
                    • אבי 203א אבי 203

                      הכנתי משהו לפום ריהטא לא בדקתי מספיק
                      https://ph-7php.onrender.com/

                      אבי 203א
                      אבי 203א
                      אבי 203
                      כתב ב נערך לאחרונה על ידי אבי 203
                      #15

                      @אבי-203 כתב בהתראה על יציאה ממ"ד & שיפור אתר פיקוד העורף:

                      הכנתי משהו לפום ריהטא לא בדקתי מספיק
                      https://ph-7php.onrender.com/

                      אם היה לי זמן וכוח, אני חושב שהדבר החשוב הבא זה רישום למערכת טלפונית, שתשלח צינתוק ממספר X בהתראה מראש, ממספר Y בכניסה לממד וממספר Y ביציאה מהממד. כמובן בהתאם לעיר שנרשמה.
                      או גם סמס.

                      https://www.av-digital.co.il/

                      A תגובה 1 תגובה אחרונה
                      4
                      • pcinfogmachP pcinfogmach

                        @אבי-203
                        מדהים! יש אפשרות לחלוקה לפי איזורים?
                        למשל ירושלים צפון דרום וכו'?

                        אבי 203א
                        אבי 203א
                        אבי 203
                        כתב ב נערך לאחרונה על ידי
                        #16

                        @pcinfogmach למה זה חשוב? בשביל חיפוש מהיר ברשימה?

                        https://www.av-digital.co.il/

                        צדיק תמיםצ pcinfogmachP 2 תגובות תגובה אחרונה
                        -1
                        • אבי 203א אבי 203

                          @pcinfogmach למה זה חשוב? בשביל חיפוש מהיר ברשימה?

                          צדיק תמיםצ
                          צדיק תמיםצ
                          צדיק תמים
                          כתב ב נערך לאחרונה על ידי
                          #17
                          פוסט זה נמחק!
                          תגובה 1 תגובה אחרונה
                          -1
                          • אבי 203א אבי 203

                            הכנתי משהו לפום ריהטא לא בדקתי מספיק
                            https://ph-7php.onrender.com/

                            י.פל.י
                            י.פל.י
                            י.פל.
                            כתב ב נערך לאחרונה על ידי
                            #18

                            @אבי-203 כתב בהתראה על יציאה ממ"ד & שיפור אתר פיקוד העורף:

                            הכנתי משהו לפום ריהטא לא בדקתי מספיק
                            https://ph-7php.onrender.com/

                            נראה יפהפה!
                            האם כשהדף אינו פועל הוא שולח התראות?
                            ואם לא, האם אתה מתכוון להוסיף?
                            ואם לא, האם תוכל לשחרר את הקוד [חבל שאעבוד מחדש, כשעשית כבר את העבודה העיקרית...]

                            תגובה 1 תגובה אחרונה
                            0
                            • אבי 203א אבי 203

                              @pcinfogmach למה זה חשוב? בשביל חיפוש מהיר ברשימה?

                              pcinfogmachP
                              pcinfogmachP
                              pcinfogmach
                              כתב ב נערך לאחרונה על ידי
                              #19

                              @אבי-203 כתב בהתראה על יציאה ממ"ד & שיפור אתר פיקוד העורף:

                              @pcinfogmach למה זה חשוב? בשביל חיפוש מהיר ברשימה?

                              כי כשיש התראה בצפון ירושלים זה לא בהכרח בדרום ירושלים - בקיצער זה בעצם כמו שני ערים שונות. ככה הם גם עשו באתר של פיקוד העורף. תודה.

                              גמ"ח מידע מחשבים ואופיס

                              O תגובה 1 תגובה אחרונה
                              2
                              • ש
                                ש
                                ש.ב.ח.
                                כתב ב נערך לאחרונה על ידי
                                #20

                                @אבי-203 אשמח לעבור על קוד המקור, אם יורשה לי.

                                תגובה 1 תגובה אחרונה
                                0
                                • pcinfogmachP pcinfogmach

                                  @אבי-203 כתב בהתראה על יציאה ממ"ד & שיפור אתר פיקוד העורף:

                                  @pcinfogmach למה זה חשוב? בשביל חיפוש מהיר ברשימה?

                                  כי כשיש התראה בצפון ירושלים זה לא בהכרח בדרום ירושלים - בקיצער זה בעצם כמו שני ערים שונות. ככה הם גם עשו באתר של פיקוד העורף. תודה.

                                  O
                                  O
                                  one1010
                                  כתב ב נערך לאחרונה על ידי
                                  #21

                                  @pcinfogmach כתב בהתראה על יציאה ממ"ד & שיפור אתר פיקוד העורף:

                                  @אבי-203 כתב בהתראה על יציאה ממ"ד & שיפור אתר פיקוד העורף:

                                  @pcinfogmach למה זה חשוב? בשביל חיפוש מהיר ברשימה?

                                  כי כשיש התראה בצפון ירושלים זה לא בהכרח בדרום ירושלים - בקיצער זה בעצם כמו שני ערים שונות. ככה הם גם עשו באתר של פיקוד העורף. תודה.

                                  בשולי, מישהו יודע מה נחשב צפון/דרום/מרכז/מערב/מזרח?

                                  תגובה 1 תגובה אחרונה
                                  0
                                  • אבי 203א אבי 203

                                    @אבי-203 כתב בהתראה על יציאה ממ"ד & שיפור אתר פיקוד העורף:

                                    הכנתי משהו לפום ריהטא לא בדקתי מספיק
                                    https://ph-7php.onrender.com/

                                    אם היה לי זמן וכוח, אני חושב שהדבר החשוב הבא זה רישום למערכת טלפונית, שתשלח צינתוק ממספר X בהתראה מראש, ממספר Y בכניסה לממד וממספר Y ביציאה מהממד. כמובן בהתאם לעיר שנרשמה.
                                    או גם סמס.

                                    A
                                    A
                                    avi rz
                                    כתב ב נערך לאחרונה על ידי
                                    #22

                                    @אבי-203 כתב בהתראה על יציאה ממ"ד & שיפור אתר פיקוד העורף:

                                    אם היה לי זמן וכוח, אני חושב שהדבר החשוב הבא זה רישום למערכת טלפונית, שתשלח צינתוק ממספר X בהתראה מראש, ממספר Y בכניסה לממד וממספר Y ביציאה מהממד. כמובן בהתאם לעיר שנרשמה.

                                    פצצה, לענ"ד יעזור להרבה אנשים.

                                    תגובה 1 תגובה אחרונה
                                    0
                                    • אבי 203א
                                      אבי 203א
                                      אבי 203
                                      כתב ב נערך לאחרונה על ידי
                                      #23

                                      https://ph-7php.onrender.com/
                                      הוספתי התראות קוליות לשבת, ועוד כמה שיפורים וערים.
                                      מקווה שהכל תקין.
                                      קשה לעשות טסטים... 🙂

                                      https://www.av-digital.co.il/

                                      meir lamdanM אבי 203א 2 תגובות תגובה אחרונה
                                      2
                                      • אבי 203א אבי 203

                                        https://ph-7php.onrender.com/
                                        הוספתי התראות קוליות לשבת, ועוד כמה שיפורים וערים.
                                        מקווה שהכל תקין.
                                        קשה לעשות טסטים... 🙂

                                        meir lamdanM
                                        meir lamdanM
                                        meir lamdan
                                        כתב ב נערך לאחרונה על ידי meir lamdan
                                        #24

                                        @אבי-203 כתב בהתראה על יציאה ממ"ד & שיפור אתר פיקוד העורף:

                                        קשה לעשות טסטים...

                                        כעת לפחות בבית שמש לא עובד
                                        גם בעת האזעקה עצמה ולא בהתראה המוקדמת

                                        שניים מקרא | מיזוג pdf

                                        תגובה 1 תגובה אחרונה
                                        0
                                        • 2
                                          2
                                          22meny
                                          כתב ב נערך לאחרונה על ידי
                                          #25

                                          גם לי בירושלים לא עובד, בכל אופן תודה רבה

                                          תגובה 1 תגובה אחרונה
                                          0

                                          שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.

                                          נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.

                                          בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

                                          הרשמה התחברות
                                          תגובה
                                          • תגובה כנושא
                                          התחברו כדי לפרסם תגובה
                                          • מהישן לחדש
                                          • מהחדש לישן
                                          • הכי הרבה הצבעות


                                          • 1
                                          • 2
                                          בא תתחבר לדף היומי!
                                          • התחברות

                                          • אין לך חשבון עדיין? הרשמה

                                          • התחברו או הירשמו כדי לחפש.
                                          • פוסט ראשון
                                            פוסט אחרון
                                          0
                                          • דף הבית
                                          • קטגוריות
                                          • פוסטים אחרונים
                                          • משתמשים
                                          • חיפוש
                                          • חוקי הפורום