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

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

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

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

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

    @אבי-203 נתקלתי לאחרונה: https://github.com/eladnava/pikud-haoref-api/
    אפשר גם לעשות scraping על הטלגרם שלהם, https://t.me/s/PikudHaOref_all?embed=1

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

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

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

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