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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
33 פוסטים 16 כותבים 3.9k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ש מנותק
    ש מנותק
    ששא
    השיב לצדיק תמים נערך לאחרונה על ידי
    #4

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

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

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

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

    צדיק תמיםצ מדמ 2 תגובות תגובה אחרונה
    0
    • צדיק תמיםצ מנותק
      צדיק תמיםצ מנותק
      צדיק תמים
      השיב לששא נערך לאחרונה על ידי צדיק תמים
      #5

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

      ש תגובה 1 תגובה אחרונה
      0
      • ש מנותק
        ש מנותק
        ששא
        השיב לצדיק תמים נערך לאחרונה על ידי
        #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
            • ש מנותק
              ש מנותק
              ששא
              השיב לצדיק תמים נערך לאחרונה על ידי ששא
              #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
              • צדיק תמיםצ מנותק
                צדיק תמיםצ מנותק
                צדיק תמים
                השיב לששא נערך לאחרונה על ידי צדיק תמים
                #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
                    • M מנותק
                      M מנותק
                      mekev
                      השיב לאבי 203 נערך לאחרונה על ידי
                      #13

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

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

                      תגובה 1 תגובה אחרונה
                      0
                      • pcinfogmachP מנותק
                        pcinfogmachP מנותק
                        pcinfogmach
                        השיב לאבי 203 נערך לאחרונה על ידי
                        #14

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

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

                        אבי 203א תגובה 1 תגובה אחרונה
                        0
                        • אבי 203א מנותק
                          אבי 203א מנותק
                          אבי 203
                          השיב לאבי 203 נערך לאחרונה על ידי אבי 203
                          #15

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

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

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

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

                          A תגובה 1 תגובה אחרונה
                          4
                          • אבי 203א מנותק
                            אבי 203א מנותק
                            אבי 203
                            השיב לpcinfogmach נערך לאחרונה על ידי
                            #16

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

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

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

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

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

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

                                תגובה 1 תגובה אחרונה
                                0
                                • pcinfogmachP מנותק
                                  pcinfogmachP מנותק
                                  pcinfogmach
                                  השיב לאבי 203 נערך לאחרונה על ידי
                                  #19

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

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

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

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

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

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

                                    תגובה 1 תגובה אחרונה
                                    0
                                    • O מנותק
                                      O מנותק
                                      one1010
                                      השיב לpcinfogmach נערך לאחרונה על ידי
                                      #21

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

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

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

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

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

                                      תגובה 1 תגובה אחרונה
                                      0
                                      • A מנותק
                                        A מנותק
                                        avi rz
                                        השיב לאבי 203 נערך לאחרונה על ידי
                                        #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

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

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

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