Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Нужен календарь (https://javascript.ru/forum/misc/76357-nuzhen-kalendar.html)

Simurg 23.02.2019 20:10

https://www.phpjabbers.com/free-event-calendar-script/

Скачал отсюда календарь. Установил на сайте, только вот текущий день не показывает, и еще при переходе на следующий месяц, где тоже есть события, дни этих событий не высвечиваются у меня на сайте,

Ответ нашел - в комментариях к скрипту

Rise 23.02.2019 21:39

m~r.Nemo,
п.5 Господи, кликабельность ячеек то здесь при чем, ну это как стрелки и списки тоже текстом сделать, чем они вам помешали то? Пусть навигация в холостую работает, если нет данных по событиям. Нет данных, значит пустой див, значит его не видно, значит его как бы нет, вот и всё. Вы понимаете что у вас могут быть месяцы без всяких событий, чем вы будете тогда див наполнять, пустотой? Тем более так и непонятно незарегистрированные пользователи будут видеть выделенные цветом ячейки по событиям, или им блокируется только описание событий, или и то и другое. Как и непонятно нужен ли им тогда будет выбор страны после этого.

Simurg 23.02.2019 22:39

Цитата:

Сообщение от Simurg (Сообщение 503990)
https://www.phpjabbers.com/free-event-calendar-script/

Скачал отсюда календарь. Установил на сайте, только вот текущий день не показывает, и еще при переходе на следующий месяц, где тоже есть события, дни этих событий не высвечиваются у меня на сайте,

а вот в ихнем демо все работает в октябре, ноябре и декабре 2014
http://demo.phpjabbers.com/freescrip...mple-page.html

ответ нашел в комментариях к скрипту

Rise 01.03.2019 06:16

Цитата:

Сообщение от m~r.Nemo
Как правильнее и универсальнее заносить даты событий/праздников в отдельные файлы?

Вот что придумал, вроде умно:
// events-source.js
var eventsSource = [
    [[2018], [2], [20], ['Event 1 (2018.02.20)', 'Event 2 (2018.02.20)']],
    [[2010, 2020], [7], [15], ['Event 3 (2010-2020.07.15)']],
    [[2015, 2017], [2, 4], [25], ['Event 4 (2015-2017.02-04.25)']],
    [[2006, 2008], [8, 10], [2, 6], ['Event 5 (2006-2008.08-10.02-06)']],
];
// holidays-source.js
var holidaysSource = [
    [[1990, 2000], [2], [5], ['Holiday 1 (1990-2000.02.05)']],
    [[2010, 2020], [2], [5], ['Holiday 1 (2010-2020.02.05)']],
];

рони 01.03.2019 11:26

Цитата:

Сообщение от Rise
Вот что придумал

а можно узнать подробнее что есть что, описание структуры?

Rise 01.03.2019 12:55

рони, а там в скобках можно догадаться что есть что. В общем массив 4-х массивов, элементы с ? могут быть пропущены:

[[год, от год до?], [месяц, от месяц до?], [число, от число до?], [описание одного события?, описание другого события?, и тд? ]]

рони 01.03.2019 13:15

Rise,
ok!

Rise 07.03.2019 09:36

рони, чтение структуры (с мемоизацией):
var src = [
    [[2018], [2], [20], ['Event 1 (2018.02.20)', 'Event 2 (2018.02.20)']],
    [[2010, 2020], [7], [15], ['Event 3 (2010-2020.07.15)']],
    [[2015, 2017], [2, 4], [25], ['Event 4 (2015-2017.02-04.25)']],
    [[2006, 2008], [8, 10], [2, 6], ['Event 5 (2006-2008.08-10.02-06)']],
    [[2000, 2001], [5, 6], [10, 11], ['Event 6 (2000-2001.05-06.10-11)']],
];
var db = {
    data: src,
    cache: {},
    read: function (y, m, d) {
        var key = y + '.' + m + '.' + d, event = this.cache[key];
        if (event !== undefined) return event;
        var event = null, data = this.data;
        top: for (var i = 0; i < data.length; i++) {
            var list = data[i];
            for (var j = 0; j <= 3; j++) {
                var item = list[j];
                var date = arguments[j];
                if (j == 3) {
                    event = item;
                    break top;
                } else if (date < item[0] || (item.length == 1 ? date > item[0] : date > item[1])) {
                    break;
                }
            }
        }
        this.cache[key] = event;
        return event;
    }
};

// true dates tests

function D(y, m, d) {
    this.y = y;
    this.m = m;
    this.d = d;
};
var dates = [
    // 2018.02.20
    new D(2018, 02, 20),
    // 2010-2020.07.15
    new D(2010, 07, 15), new D(2020, 07, 15), new D(2011, 07, 15),
    // 2015-2017.02-04.25
    new D(2015, 02, 25), new D(2017, 02, 25), new D(2016, 02, 25),
    new D(2015, 04, 25), new D(2017, 04, 25), new D(2016, 04, 25),
    new D(2015, 03, 25), new D(2017, 03, 25), new D(2016, 03, 25),
    // 2006-2008.08-10.02-06
    new D(2006, 08, 02), new D(2008, 08, 02), new D(2007, 08, 02),
    new D(2006, 10, 02), new D(2008, 10, 02), new D(2007, 10, 02),
    new D(2006, 09, 02), new D(2008, 09, 02), new D(2007, 09, 02),
    new D(2006, 08, 06), new D(2008, 08, 06), new D(2007, 08, 06),
    new D(2006, 10, 06), new D(2008, 10, 06), new D(2007, 10, 06),
    new D(2006, 09, 06), new D(2008, 09, 06), new D(2007, 09, 06),
    new D(2006, 08, 03), new D(2008, 08, 03), new D(2007, 08, 03),
    new D(2006, 10, 03), new D(2008, 10, 03), new D(2007, 10, 03),
    new D(2006, 09, 03), new D(2008, 09, 03), new D(2007, 09, 03),
    // 2000-2001.05-06.10-11
    new D(2000, 05, 10), new D(2001, 05, 10),
    new D(2000, 06, 10), new D(2001, 06, 10),
    new D(2000, 05, 11), new D(2001, 05, 11),
    new D(2000, 06, 11), new D(2001, 06, 11),
];
dates.forEach(function (date, i) {
    var event = db.read(date.y, date.m, date.d);
    console.log(i, date, event);
});
Object.keys(db.cache).forEach(function (date, i) {
    var event = db.cache[date];
    console.log(i, date, event);
});

рони 07.03.2019 10:03

Rise,
:thanks:


Часовой пояс GMT +3, время: 07:20.