Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 29.05.2022, 12:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,129

Сообщение от Сергей Ракипов
const formatter = new Intl.DateTimeFormat
превращает условно время 100000ms в 10:15 часы и минуты (года и тд как настроить)
Ответить с цитированием
  #12 (permalink)  
Старый 29.05.2022, 12:10
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 668

рони,
Спасибо. Вы помогли многим зависимым. Я это делаю для них бесплатно.
Ответить с цитированием
  #13 (permalink)  
Старый 29.05.2022, 12:11
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 668

Сообщение от рони
превращает условно время 100000ms в 10:15 часы и минуты (года и тд как настроить)
Понял
Ответить с цитированием
  #14 (permalink)  
Старый 29.05.2022, 12:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,129

Сергей Ракипов,
обновить перед копированием или запуском на просмотр, исправлены мелкие ошибки.
Ответить с цитированием
  #15 (permalink)  
Старый 29.05.2022, 12:39
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 668

Сообщение от рони
обновить перед копированием или запуском на просмотр, исправлены мелкие ошибки.
Хорошо спасибо.
Ответить с цитированием
  #16 (permalink)  
Старый 30.05.2022, 14:20
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 668

Что то я в себя поверил и не рассчитал силы. Думал этот код заверстаю под нужный дизайн. Не получается. А можно все таки блоку придать день и время. Вот в этот дизайн и там проще сделать блок

Вот как я понимаю блоки с классом class="sobranie_sreda" class="sobranie_vtornik" и т.д. будут выводится в определенный день а блоки с классом <div class="nachalo_20_00"></div> или <div class="nachalo_21_00"></div> нужно выводить надпись сколько до собрание а если идет то надпись идет собрание. Но это мне так видится может это не оптимально. Просто есть дизайн блока и нужно что бы просто присваивать блоку нужны класс с днем и временем.

<!doctype html>
<html lang="ru">
<head>
	<meta charset="utf-8">
	<title>index</title>
	<link rel="shortcut icon" href="izobrazhenie/favicon.ico">
	<meta name="viewport" content="width=device-width,initial-scale=1">
	<meta name="description" content="index">
	<meta name="Keywords" content="index"> 
	<style>
.sobranie_blok {
    display: grid;
    grid-template-columns: auto auto auto;
    grid-template-rows: auto auto auto auto auto auto;
    grid-template-areas: 
        "sobranie_nazvanie sobranie_cherez_ckolko granitsa_right"
        "sobranie_den_nedeli_vremya sobranie_cherez_ckolko granitsa_right"
        "sobranie_adres sobranie_adres granitsa_right"
        "sobranie_opisanie sobranie_opisanie granitsa_right"
        "sobranie_karta sobranie_karta granitsa_right"
        "sobranie_kak_proiti sobranie_kak_proiti granitsa_right";
    row-gap: 0px;
    column-gap: 0px;
    justify-content: center;
}

.granitsa_right{
    grid-area:granitsa_right;
    width: 1px;
    margin: -20px 0px -20px 0px;
}
.sobranie_nazvanie {
    width: 360px;
    grid-area: sobranie_nazvanie;
    font-size: 2.0rem;
    font-weight: 700;
    color: var(--tset_osnovnoi);
    padding: 0px 0px 5px 0px;
}
.sobranie_den_nedeli_vremya {
    grid-area: sobranie_den_nedeli_vremya;
    padding: 0px 0px 0px 0px;
}
.den_nedeli_vremya{
    font-size: .8rem;
}
.sobranie_cherez_ckolko {
    grid-area: sobranie_cherez_ckolko;
    padding: 0px 20px 0px 20px;
    align-self: center;
    border-left: 1px solid var(--tset_osnovnoi);
}
.cherez_ckolko{
    text-align: center;
    font-size: .8rem;
}
.cherez_ckolko_vremya{
    display: flex;
    align-items:center;
    justify-content: center;
}
#dot{
    margin: -3px 2px 0px 2px;
}
.sobranie_opisanie {
    grid-area: sobranie_opisanie;
    padding: 5px 0px 20px 0px;
}
.sobranie_adres {
    grid-area: sobranie_adres;
    padding: 20px 0px 0px 0px;
}
.sobranie_karta {
    grid-area: sobranie_karta;
    padding: 0px 0px 10px 0px;
    width: 100%;
}
.ikonka_tekst {
    display:flex;
    align-items: center;
}
.ikonka {
    width: 48px;
}
.tekst {
    padding: 0px 0px 0px 15px;
}
.ssilka_karta_proiti{
    color: var(--tset_dopolnitelnyi);
}
.ssilka_karta_proiti:hover{
    color: var(--tset_dopolnitelnyi);
    text-decoration: none;
}
.karta{
    display: block;
}
.sobranie_kak_proiti{
    grid-area: sobranie_kak_proiti;
    padding: 0px 0px 0px 0px;
    width: 100%;
}
.blok_kak_proiti_kartinka{
    display: block;
    max-width: 520px;
}
.kak_proiti_kartinka{
    width: 100%;
}
    </style>
</head>
<body>
<main>
	<div class="sobranie_blok" class="sobranie_sreda">
		<div class="granitsa_right">
			
		</div>
		<div class="sobranie_nazvanie">
			Калитка
		</div>
		<div class="sobranie_den_nedeli_vremya">
			<div class="den_nedeli_vremya">
				Среда /
				20:00
			</div>
		</div>
		<div class="sobranie_cherez_ckolko">
			<div class="cherez_ckolko">
				Собрание Начнется через:<br> 
                <div class="nachalo_20_00"></div>
			</div>
		</div>
		<div class="sobranie_opisanie">
			Описание собрание: <br>
			<span class="malenkii_chrift">Ежедневник</span>
		</div>
		<div class="sobranie_adres">
			ул. Декабристов 27<br>
			<span class="malenkii_chrift">Во дворе, домофон 2222, цокольный этаж</span>
		</div>
		<div class="sobranie_karta">
<a href="#">Карта</a>
		</div>
		<div class="sobranie_kak_proiti">
<a href="#">Как пройти</a>
		</div>
</div>
<br><br>
<div class="sobranie_blok" class="sobranie_vtornik">
    <div class="granitsa_right">
        
    </div>
    <div class="sobranie_nazvanie">
        Единство
    </div>
    <div class="sobranie_den_nedeli_vremya">
        <div class="den_nedeli_vremya">
            Вторник /
            21:00
        </div>
    </div>
    <div class="sobranie_cherez_ckolko">
        <div class="cherez_ckolko">
            Собрание Начнется через:<br> 
            <div class="nachalo_21_00"></div>
        </div>
    </div>
    <div class="sobranie_opisanie">
        Описание собрание: <br>
        <span class="malenkii_chrift">Ежедневник</span>
    </div>
    <div class="sobranie_adres">
        ул. Декабристов 27<br>
        <span class="malenkii_chrift">Во дворе, домофон 2222, цокольный этаж</span>
    </div>
    <div class="sobranie_karta">
<a href="#">Карта</a>
    </div>
    <div class="sobranie_kak_proiti">
<a href="#">Как пройти</a>
    </div>
</div>

</main>
</body>
</html>
Ответить с цитированием
  #17 (permalink)  
Старый 30.05.2022, 14:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,129

Сергей Ракипов,
а можно вместо class="sobranie_sreda"
и nachalo_20_00
будет data-weekday="3" и data-begin="20,00" ?
Ответить с цитированием
  #18 (permalink)  
Старый 31.05.2022, 04:50
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 668

рони,
Да конечно это же не принципиально лишь бы работало.
Ответить с цитированием
  #19 (permalink)  
Старый 31.05.2022, 07:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,129

расписание собраний инициализация из dataset
Сергей Ракипов,
<!doctype html>
<html lang="ru">
<head>
    <meta charset="utf-8">
    <title>index</title>
    <link rel="shortcut icon" href="izobrazhenie/favicon.ico">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <meta name="description" content="index">
    <meta name="Keywords" content="index">
    <style>
        .sobranie_blok {
            display: grid;
            grid-template-columns: auto auto auto;
            grid-template-rows: auto auto auto auto auto auto;
            grid-template-areas: "sobranie_nazvanie sobranie_cherez_ckolko granitsa_right" "sobranie_den_nedeli_vremya sobranie_cherez_ckolko granitsa_right" "sobranie_adres sobranie_adres granitsa_right" "sobranie_opisanie sobranie_opisanie granitsa_right" "sobranie_karta sobranie_karta granitsa_right" "sobranie_kak_proiti sobranie_kak_proiti granitsa_right";
            row-gap: 0px;
            column-gap: 0px;
            justify-content: center;
            --tset_osnovnoi: #0000FF;
            --tset_dopolnitelnyi: #000000;
        }
        .granitsa_right {
            grid-area: granitsa_right;
            width: 1px;
            margin: -20px 0px -20px 0px;
        }
        .sobranie_nazvanie {
            width: 360px;
            grid-area: sobranie_nazvanie;
            font-size: 2.0rem;
            font-weight: 700;
            color: var(--tset_osnovnoi);
            padding: 0px 0px 5px 0px;
        }
        .sobranie_den_nedeli_vremya {
            grid-area: sobranie_den_nedeli_vremya;
            padding: 0px 0px 0px 0px;
        }
        .den_nedeli_vremya {
            font-size: .8rem;
        }
        .sobranie_cherez_ckolko {
            grid-area: sobranie_cherez_ckolko;
            padding: 0px 20px 0px 20px;
            align-self: center;
            border-left: 1px solid var(--tset_osnovnoi);
        }
        .cherez_ckolko {
            text-align: center;
            font-size: .8rem;
        }
        .cherez_ckolko_vremya {
            display: flex;
            align-items: center;
            justify-content: center;
        }
        #dot {
            margin: -3px 2px 0px 2px;
        }
        .sobranie_opisanie {
            grid-area: sobranie_opisanie;
            padding: 5px 0px 20px 0px;
        }
        .sobranie_adres {
            grid-area: sobranie_adres;
            padding: 20px 0px 0px 0px;
        }
        .sobranie_karta {
            grid-area: sobranie_karta;
            padding: 0px 0px 10px 0px;
            width: 100%;
        }
        .ikonka_tekst {
            display: flex;
            align-items: center;
        }
        .ikonka {
            width: 48px;
        }
        .tekst {
            padding: 0px 0px 0px 15px;
        }
        .sobranie_kak_proiti a:hover {
            color: var(--tset_dopolnitelnyi);
        }
        .sobranie_karta a:hover {
            color: var(--tset_dopolnitelnyi);
            text-decoration: none;
        }
        .karta {
            display: block;
        }
        .sobranie_kak_proiti {
            grid-area: sobranie_kak_proiti;
            padding: 0px 0px 0px 0px;
            width: 100%;
        }
        .blok_kak_proiti_kartinka {
            display: block;
            max-width: 520px;
        }
        .kak_proiti_kartinka {
            width: 100%;
        }
    </style>
</head>
<body>
    <main>
        <div class="sobranie_blok" data-weekday="2">
            <div class="granitsa_right">
            </div>
            <div class="sobranie_nazvanie">
                Калитка
            </div>
            <div class="sobranie_den_nedeli_vremya">
                <div class="den_nedeli_vremya">
                    Вторник / 15:00
                </div>
            </div>
            <div class="sobranie_cherez_ckolko">
                <div class="cherez_ckolko">
                    Собрание Начнется через:<br>
                    <div data-begin="15_00"></div>
                </div>
            </div>
            <div class="sobranie_opisanie">
                Описание собрание: <br>
                <span class="malenkii_chrift">Ежедневник</span>
            </div>
            <div class="sobranie_adres">
                ул. Декабристов 27<br>
                <span class="malenkii_chrift">Во дворе, домофон 2222, цокольный этаж</span>
            </div>
            <div class="sobranie_karta">
                <a href="#">Карта</a>
            </div>
            <div class="sobranie_kak_proiti">
                <a href="#">Как пройти</a>
            </div>
        </div>
        <br><br>
        <div class="sobranie_blok" data-weekday="2">
            <div class="granitsa_right">
            </div>
            <div class="sobranie_nazvanie">
                Единство
            </div>
            <div class="sobranie_den_nedeli_vremya">
                <div class="den_nedeli_vremya">
                    Вторник / 11:00
                </div>
            </div>
            <div class="sobranie_cherez_ckolko">
                <div class="cherez_ckolko">
                    Собрание Начнется через:<br>
                    <div data-begin="11_00"></div>
                </div>
            </div>
            <div class="sobranie_opisanie">
                Описание собрание: <br>
                <span class="malenkii_chrift">Ежедневник</span>
            </div>
            <div class="sobranie_adres">
                ул. Декабристов 27<br>
                <span class="malenkii_chrift">Во дворе, домофон 2222, цокольный этаж</span>
            </div>
            <div class="sobranie_karta">
                <a href="#">Карта</a>
            </div>
            <div class="sobranie_kak_proiti">
                <a href="#">Как пройти</a>
            </div>
        </div>
    </main>
    <script>
        document.addEventListener( "DOMContentLoaded" , function() {

        const formatter = new Intl.DateTimeFormat("ru", {
            hour: "2-digit",
            minute: "2-digit"
        });
        let data = Array.from(document.querySelectorAll("[data-weekday]"), div => {
            let weekday = +div.dataset.weekday;
            let divLong = div.querySelector("[data-begin]");
            let [hour, minute] = divLong.dataset.begin.split("_");
            hour = +hour;
            minute = +minute;
            let oldHtml = "";
            let txt = divLong.parentNode.firstChild;
            return {
                div,
                weekday,
                divLong,
                hour,
                minute,
                oldHtml,
                txt
            }
        })
        const timer = () => {
            requestAnimationFrame(timer);
            const localTime = new Date;
            const day = localTime.getDay();
            data.forEach(obj => {
                let {
                    div,
                    weekday,
                    divLong,
                    hour,
                    minute,
                    oldHtml,
                    txt
                } = obj;
                const beginTime = new Date;
                beginTime.setHours(+hour, +minute, 0, 0);
                const endTime = new Date;
                hour += 1;
                minute += 15;
                endTime.setHours(hour, minute, 0, 0);
                let time = endTime - localTime;
                if (weekday == day && time > 0) {
                    let long = beginTime - localTime;
                    let status = long > 0 ? (long += 60000, `Собрание Начнется через:`) : `Собрание идет:`;
                    long = new Date(Math.abs(long) + localTime.getTimezoneOffset() * 60000);
                    long = formatter.format(long);
                    if (oldHtml == long) return;
                    div.style.display = "grid";
                    txt.data = status;
                    divLong.innerHTML = obj.oldHtml = long;
                } else if (div.style.display != "none") div.style.display = "none";
            })
        }
        requestAnimationFrame(timer);

        });
    </script>
</body>
</html>
Ответить с цитированием
  #20 (permalink)  
Старый 31.05.2022, 12:12
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 668

рони,
Вы дописали еще возможность получить информацию о том сколько времени идет собрание. Но дело в том что собрание бывают 1 час, 1 час 15 минут, 1 час 30 минут и возможно даже 2 часа.
И это в принципе не нужно. Нужно просто надпись что собрание идет а сколько идет или сколько осталось это не так важно. А когда оно закончится просто убрать блок. То есть была где то возможность что бы было возможность до сколько это будет собрание или просто продолжительность
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите к js коду, написать html код Modrih Элементы интерфейса 8 16.06.2015 18:08
Как подгрузить код JS динамически? zhurchik Общие вопросы Javascript 22 02.02.2015 14:16
Не получается вставить код js в HTML garmoni Элементы интерфейса 3 05.09.2013 05:56
код нe работает в фаирфохе dadli Javascript под браузер 2 28.01.2012 21:18
Не получается изменить код jquery GoloArt jQuery 1 27.01.2012 10:34