Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Оцените календарь на JavaScript

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

ethan



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Накидал календарик. Что скажите? Нормально или не очень?
 
Пример использования
 
АРХИВ ПОСЛЕДНЕЙ СТАБИЛЬНОЙ ВЕРСИИ
 
Вот еще скрипт для просмотра картинок
Здесь
(сорри за контент, просто не на чём было протестировать)

Всего записей: 388 | Зарегистр. 14-12-2002 | Отправлено: 15:13 26-09-2004 | Исправлено: ethan, 01:53 28-02-2005
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ethan

Цитата:
Организовать подгрузку отдельными модулями или вроде того можно...  

 
В смысле так:
теоретически наращивать функциональность календаря можно бесконечно, но в итоге он может разрастись в большого монстра, со множеством никому не нужных возможностей.
 
Можно попытаться сделать модульную структуру: скажем, отдельные типы календарей (функции для конвертации, вывод элементов интерфейса и т. п.) — в отдельных js-файлах, а в основном — возможность прописать их к массив для подгрузки...
 

Цитата:
Вы имели в виду, что расширение функционала не должно приводить к замедлению и утяжелению кода? Правильно я понял?  
Сорри, не понял о каких плагинах идёт речь?  
Можно сделать разные версии, типа fast, middle и full.

 
Собственно, выше о плагинах я и написал: определяем формат плагинов (обязательная информация, формализированная структура информации) и в основном скрипте делаем поддержку плагинов + добавляем возможность их подключения.
 

Цитата:
Желание есть.

Конвертер григорианской даты в юлианскую, римский календарь и т. п.:
http://www.24hourtranslations.co.uk/dates.htm
 
По новолуниям — только в бумажном виде есть... Постараюсь набрать или поискать (кто-то скорее всего этим занимался)...


----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 13:22 06-10-2004 | Исправлено: Svarga, 15:35 06-10-2004
ethan



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Svarga
Добавил Юлианскую дату как прототип к Date:

Код:
 
Date.prototype.jd1=function(){
// для дат позднее 15.10.1582 года
var y=this.getFullYear();var m=this.getMonth()+1;var d=this.getDate();
var j=zLong((m-14)/12);
var q=zLong(y+j+4800);
var jd=(d-32075+zLong(1461*q/4)+zLong(367*(m-2-12*j)/12)-zLong(3*((q+100)/100)/4));
return jd;
}
 

 
 
Добавлено
Т.е. можно юзать с любым объектом Date.

Всего записей: 388 | Зарегистр. 14-12-2002 | Отправлено: 11:12 14-10-2004
DeYura

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А можно ли сделать так, чтобы при нажатии на число там была ссылка на определённые закладки. Например файл info.html и закладки типа 01.02.2004. Закладки создаються вручную, а ссылки генирируються на основе нажатого числа?

Всего записей: 100 | Зарегистр. 28-10-2003 | Отправлено: 17:07 17-10-2004
ethan



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DeYura
Не совсем понял что такое закладки и их связь с сылками.
Есть возможность задать формат ссылки для каждого числа. При клике будем уходить по ней.
 
Есть один момент.
Писался ASP.net проект. Юзер мог выбрать дату(диапазон дат) для нескольких отчетов(Crystal Reports). После выбора дат и условий посылался запрос на сервер и возвращался нужный отчёт.
Так как не было связи между интерфейсом календаря и информации, хранящейся на сервере, для того, что бы устранить постояный CallBack при кликах на календаре, серверный скрипт был переписан на клиентский.
Бывают ситуации, когда вид календаря связан с информацией хранящейся в базе на сервере, пример - какой-нибудь новостной ресурс, и числа должны выдаваться в соответствии с наличием информации на какую-то дату. В таком случае лучше юзать серверный скрипт, так как часть информации из базы придется кидать клиенту в том или ином виде, что приведет к торможению и росту трафика.
 
Добавил

Код:
 
Date.prototype.jd2=function(){
// int Y,int M,double DT
// Перевод даты григорианского календаря
// в юлианскую дату (алгоритм Меёса)
// Y - григорианский год [-4713,9999]
// М - григорианский месяц [1,12]
// целая часть DT - день [1,31], дробная часть DT - время, прошедшее от начала текущего дня [.0,.99999]
// Возвращаемое значение - юлианская дата
// Целая часть JD - число дней, прошедших от 1 января 4713 года до новой эры, дробная часть JD - время, прошедшее после 12 часов полудня дня JD
// Корректная работа для дат начиная с 1.01.4713 до н. э. (то есть от Y = -4712, м = 1, от = 1.5)  
var y=this.getFullYear();var m=this.getMonth()+1;var d=this.getDate();var h=this.getHours();//(((h/12)^1)*12+(h%12))
var t=(100000/86400)*(h*3600+this.getMinutes()*60+this.getSeconds())/100000;
var dt=d+zRound(t,5);
if(m<3){y--;m+=12;}
var a=zLong(y/100);var b=0;
if(y+m/100+dt/10000>1582.1015) b=2-a+zLong(a/4);
var c=zLong(365.25*y);
if(y<0)c=zLong(365.25*y-0.75);
var jd=c+zLong(30.6001*(m+1))+dt+1720994.5+b;
return jd;
}
 

 
Теперь можно получать JD в начиная с 1 января 4713 года до нашей эры.
(по Джозефу Скалигеру).
Здесь тест.
 
PS: С этими календарями звездануться можно, их стока много оказывается, жуть.

Всего записей: 388 | Зарегистр. 14-12-2002 | Отправлено: 03:13 18-10-2004 | Исправлено: ethan, 07:03 18-10-2004
Warder

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ethan
Суперский календарик!
 
Нашел один небольшой баг только:
при прописывании дней с ссылками (формат календаря 2), к примеру

Код:
var dymDays={"2004":{"9":"1,16,20"}};

 
помечаются дни 2, 6, 16, 20, хотя, как видно, должны 1, 16, 20
 
Решение: регэксп на строчке 311 файла dym.js:

Код:
var re=new RegExp(d+",|,"+d);

заменить на

Код:
var re=new RegExp('(^|,)'+d+'(,|$)');

 
P.S.: это относится к версии на сайте, т.к. в архиве не последняя, и этих функций вообще нет ;(

Всего записей: 13 | Зарегистр. 26-01-2002 | Отправлено: 20:50 24-10-2004 | Исправлено: Warder, 20:56 24-10-2004
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ethan

Цитата:
Т.е. можно юзать с любым объектом Date.

Пример юзанья:
http://forall.ru-board.com/Svarga/google.timesearch.html
)
 

Цитата:
PS: С этими календарями звездануться можно, их стока много оказывается, жуть.

Ага... чего-чего, а календарей люди насочиняли кучу

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 04:23 25-10-2004
ethan



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Warder
Спасибо.

Цитата:
Нашел один небольшой баг...
помечаются дни 2, 6, 16, 20, хотя, как видно, должны 1, 16, 20

Сорри, допустил непростительно простую ошибку

Цитата:
var re=new RegExp('(^|,)'+d+'(,|$)');  

класс! Можно использовать в календаре?(с указанием копирайта естественно)

Цитата:
это относится к версии на сайте, т.к. в архиве не последняя, и этих функций вообще нет ;(

Тут вот в чём дело, возникает мысть, я её начинаю в свободное время воплощать(прислушиваясь к советам умных людей), и когда последняя мысль реализуется, потестировав я её архивирую. Т.е. 2-режим еще как бы не совсем реализован. Он сделан для случая привязки информации в бд на сервере к виду календаря(кол-во отображаемых дней). Осталось добавить уход по ссылке в случае отсутствия информации об отображаемых днях.
Т.е. например в случае:

Код:
var dymDays={"2004":{"9":"1,16,20"}};

при выборе пользователем месяца и года отличного от Октября 2004, будет уход по ссылке(будет возможность задать формат этой ссылки).
Для упрощения скрипта, думаю разделить эти две реализации в разные скрипты.
 
Svarga

Цитата:
// переводим время в GMT+5...

А почему в GMT+5?

Цитата:
 Интересно, какой часовой пояс гугл на самом деле юзает?

На их форуме даты у сообщений выглядят так:

Цитата:
Дата:2002-05-22 15:47:49 PST

хотя наверное у их роботов пояс может быть другой.
 
 
Добавлено
Побывал тут http://forall.ru-board.com/Svarga/
Полезное место! Очень понравилось.

Всего записей: 388 | Зарегистр. 14-12-2002 | Отправлено: 08:32 25-10-2004 | Исправлено: ethan, 08:42 25-10-2004
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ethan

Цитата:
А почему в GMT+5?

Взято с потолка
По ходу, вместо Атлантики полез чуть ли не в Сибирь (знаком ошибся)

Цитата:
Дата:2002-05-22 15:47:49 PST

UTC-08, стало быть...
Фикст.

Цитата:
хотя наверное у их роботов пояс может быть другой.

Роботы роботами... Важнее, какой часовой пояс используется при выдаче из базы...
Не Гринвич однозначно (специально минут за пять до и минут через пять после гринвичской полночи проверял — число не сменилось)... Проверю. сменится ли дата в 11 по Киеву... Если да, то выдача из базы у них в UTC-08.
 

Цитата:
Полезное место! Очень понравилось.

обыкновенный мини-мусорник, просто с индексом общим )


----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 09:10 25-10-2004
Warder

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ethan

Цитата:
Можно использовать в календаре?(с указанием копирайта естественно)  


 

Цитата:
 
Т.е. 2-режим еще как бы не совсем реализован. Он сделан для случая привязки информации в бд на сервере к виду календаря(кол-во отображаемых дней). Осталось добавить уход по ссылке в случае отсутствия информации об отображаемых днях.  
 

Да, наверное, хорошо было бы и такую фичу прикуртить...
Я в свою очередь для отображения нужной информации просто немного переписал код:
http://warder.comtv.ru/dym/dym.htm
 
Может пригодится кому ...

Всего записей: 13 | Зарегистр. 26-01-2002 | Отправлено: 02:41 26-10-2004 | Исправлено: Warder, 02:41 26-10-2004
DeYura

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть возможность задать формат ссылки для каждого числа. При клике будем уходить по ней.  
 
Пришли плизз копию фрагмента, где именно редактировать ссылку по которой должен уходить, по возможности и название фрейма в который.
 
Спасибо.
 
Добавлено
Извини, что побеспокоил ранее. Скачал новую версию календарь и всё ок. Но есть такие проблемы при уходе по ссылке:
1. Уходит на месяц раньше.
2. Не даёт срабатывать повторно. т.е. есть строка и дата 16.11.2004
 
o2 = new zDymDom("top:490px;left:950px;","rus","m-d-y",null,7,true,2,"#month#_#year#.htm##day#.#month#.#year#","_blank");
 
в резальтате получим ссылку (здесь использована закладка):
 
10_2004.htm#16.#month#.#year#
 
Можеш подредактировать. Жизнь от этого зависит плиззз

Буду очень признателен.

Всего записей: 100 | Зарегистр. 28-10-2003 | Отправлено: 22:10 15-11-2004
DeYura

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот кое-что подправил, хотя это лично под каждого.
 
                    if(this.m_ct==2){
                           var D2=mArr[i][j];
                           var M2=this.m_nmMonth+1;
                           var Y1=this.m_nmYear;
                           var M1;
                           var D1;
                           if (M2<=9) {M1="0"+M2}
                           else M1=M2;
                           if (D2<=9) {D1="0"+D2}
                           else D1=D2;
                        tnb["TABLE"]["tags"]["TBODY"]["tags"]["TR_H_"+i]["tags"]["TD_"+i+j]["attr"]["surl"]=(this.m_lf.replace(/#month#/,M1).replace(/#year#/,Y1).replace(/#day#/,D1).replace(/#month#/,M1).replace(/#year#/,Y1));
                   

Всего записей: 100 | Зарегистр. 28-10-2003 | Отправлено: 22:20 17-11-2004
Phoeniks

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня в Опере 7.53 ячейки скачут при перерисовке на смене месяца )

Всего записей: 49 | Зарегистр. 04-08-2003 | Отправлено: 21:53 20-11-2004
ethan



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DeYura
Сорри, быд немного занят.

Цитата:
Уходит на месяц раньше.

Знамо, оставил специально так. Правится :

Код:
 
surl=(this.m_lf.replace(/#year#/,this.m_nmYear).replace(/#month#/,parseInt(this.m_nmMonth)+1).replace(/#day#/,mArr[i][j]));
 


Цитата:
Не даёт срабатывать повторно. т.е. есть строка и дата 16.11.2004  

подправил

Код:
 
surl=(this.m_lf.replace(/#year#/g,this.m_nmYear).replace(/#month#/g,parseInt(this.m_nmMonth)).replace(/#day#/g,mArr[i][j]));
 

строка устраивающая тебя полность выглядит так:

Код:
 
surl=(this.m_lf.replace(/#year#/g,this.m_nmYear).replace(/#month#/g,parseInt(this.m_nmMonth)+1).replace(/#day#/g,mArr[i][j]));
 

 
 
 
Phoeniks
Как именно скачут?
Если меняется кол-во строк, то да есть такой момент.
Если другое, то можно поподробнее плиз.

Всего записей: 388 | Зарегистр. 14-12-2002 | Отправлено: 01:45 27-11-2004
dubrovsky_piotr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хороший календарь, только есть один недочетик (или я чего не понимаю...)
В календаре посвечивается текущая дата. Но кликнуть по ней нельзя.
Т.е. если кликнул на другой дате, а потом нужно снова выбрать текущую дату, то ничего не получится... она не доступна. В результате вышеперечисленной последовательности действий выбрать текущую дату нельзя!

Всего записей: 1 | Зарегистр. 22-12-2004 | Отправлено: 16:46 22-12-2004
ethan



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dubrovsky_piotr
фикс.
Во время очередной оптимизации баг пробрался на корабль.

Всего записей: 388 | Зарегистр. 14-12-2002 | Отправлено: 00:29 23-12-2004 | Исправлено: ethan, 13:12 23-12-2004
ethan



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть просьба to all,
вот тут
страничка, в которой используется скрипт календаря.
И вот какая проблема возникает,  

Цитата:
 
при выборе любой даты появляется маркер и начинает
мигать самым неприятным образом, правда подобный глюк я наблюдаю
только в FireFox 1.0 PR.
 
а затем при нажатии на выбранный день (событие onClick)
маркер переходит в левый крыйний ряд календаря и начинает мигать,
причем на всю ширину календаря,
 
Маркет начинает мигать тогда когда выбираешь
какой либо из помеченных дней.
 

Сколько я не бился, но воспроизвести ситуацию у себя не смог.
Плиз подскажите имеет место сия проблема?

Всего записей: 388 | Зарегистр. 14-12-2002 | Отправлено: 18:36 17-03-2005 | Исправлено: ethan, 18:38 17-03-2005
tolyn77



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
сделал так а почему он не хочет переходть по ссылке?
function finit() {
    o1 = new zDymDom("top:490px;left:950px;",null,null,null,null,true,2,"http://www.cbr.ru/currency_base/daily.asp?C_month=#month#&C_year=#year#&date_req=#day#/#month#/#year#","_blank");
}
 
заранее благодарен

Всего записей: 1498 | Зарегистр. 07-09-2004 | Отправлено: 17:18 02-03-2007 | Исправлено: tolyn77, 18:16 02-03-2007
Aelar

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, у меня есть такой вопрос хотелось бы разобратся в ява скриптах, нашел инфы немеряно немного подучил и появилась идея - написать календарь. Разнообразие их конечно большое в инэте но реально или сложные или простые но не соответствуют требованиям что я хочу вместить в него. Вот что я хочу чтобы делал:
1-е - при введении в в числа мне указывало дату на календаре (почти работает но сдвигает даты, может нужно  
             какой то сдвиг организовать?)  
2-е - подсказки, например при показывании на число оно выводило сообщение типа  
             "23 апреля 2007 год"(незнаю =( как сделать привязку подсказки к каждому      
             конкретному числу)
 
Помогите пожалуйста, может все это где то было но не нашел хоть перелопатил много  

Всего записей: 4 | Зарегистр. 07-04-2007 | Отправлено: 21:35 23-04-2007 | Исправлено: Aelar, 21:36 23-04-2007
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Интернет » Web-программирование » Оцените календарь на JavaScript


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru