Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.01.2019, 16:17
Аватар для m~r.Nemo
Аспирант
Отправить личное сообщение для m~r.Nemo Посмотреть профиль Найти все сообщения от m~r.Nemo
 
Регистрация: 27.10.2012
Сообщений: 80

Нужен календарь
Нуже подобный календарь, а только более удобный и функциональный...

<style>
#calendar3 { width: 250px; font: monospace; line-height: 1.2em; font-size: 24px; text-align: center; }
#calendar3 thead tr:last-child { font-size: small; color: #555555; }
#calendar3 tbody td { color: #2c567a; }
#calendar3 tbody td { color: #2c567a; }
#calendar3 tbody td:nth-child(n+6), #calendar3 .holiday { color: #e7285c; }
#calendar3 tbody td.today { outline: 3px solid #ff0000; }
td { background: #e6e6e6; border: 1px solid #b9b9b9; }

</style>
<table id="calendar3">
  <thead>
    <tr><td colspan="4"><select>
<option value="0">Январь</option>
<option value="1">Февраль</option>
<option value="2">Март</option>
<option value="3">Апрель</option>
<option value="4">Май</option>
<option value="5">Июнь</option>
<option value="6">Июль</option>
<option value="7">Август</option>
<option value="8">Сентябрь</option>
<option value="9">Октябрь</option>
<option value="10">Ноябрь</option>
<option value="11">Декабрь</option>
</select><td colspan="3"><input type="number" value="" min="0" max="9999" size="4">
    <tr><td>Пн<td>Вт<td>Ср<td>Чт<td>Пт<td>Сб<td>Вс
  <tbody>
</table>
<script>
function Calendar3(id, year, month) {
var Dlast = new Date(year,month+1,0).getDate(),
    D = new Date(year,month,Dlast),
    DNlast = D.getDay(),
    DNfirst = new Date(D.getFullYear(),D.getMonth(),1).getDay(),
    calendar = '<tr>',
    m = document.querySelector('#'+id+' option[value="' + D.getMonth() + '"]'),
    g = document.querySelector('#'+id+' input');
if (DNfirst != 0) {
  for(var  i = 1; i < DNfirst; i++) calendar += '<td>';
}else{
  for(var  i = 0; i < 6; i++) calendar += '<td>';
}
for(var  i = 1; i <= Dlast; i++) {
  if (i == new Date().getDate() && D.getFullYear() == new Date().getFullYear() && D.getMonth() == new Date().getMonth()) {
    calendar += '<td class="today">' + i;
  }else{
    if (  // список официальных праздников
        (i == 1 && D.getMonth() == 0 && ((D.getFullYear() > 1897 && D.getFullYear() < 1930) || D.getFullYear() > 1947)) || // Новый год
        (i == 2 && D.getMonth() == 0 && D.getFullYear() > 1992) || // Новый год
        ((i == 3 || i == 4 || i == 5 || i == 6 || i == 8) && D.getMonth() == 0 && D.getFullYear() > 2004) || // Новый год
        (i == 7 && D.getMonth() == 0 && D.getFullYear() > 1990) || // Рождество Христово
        (i == 23 && D.getMonth() == 1 && D.getFullYear() > 2001) || // День защитника Отечества
        (i == 8 && D.getMonth() == 2 && D.getFullYear() > 1965) || // Международный женский день
        (i == 1 && D.getMonth() == 4 && D.getFullYear() > 1917) || // Праздник Весны и Труда
        (i == 9 && D.getMonth() == 4 && D.getFullYear() > 1964) || // День Победы
        (i == 12 && D.getMonth() == 5 && D.getFullYear() > 1990) || // День России (декларации о государственном суверенитете Российской Федерации ознаменовала окончательный Распад СССР)
        (i == 7 && D.getMonth() == 10 && (D.getFullYear() > 1926 && D.getFullYear() < 2005)) || // Октябрьская революция 1917 года
        (i == 8 && D.getMonth() == 10 && (D.getFullYear() > 1926 && D.getFullYear() < 1992)) || // Октябрьская революция 1917 года
        (i == 4 && D.getMonth() == 10 && D.getFullYear() > 2004) // День народного единства, который заменил Октябрьскую революцию 1917 года
       ) {
      calendar += '<td class="holiday">' + i;
    }else{
      calendar += '<td>' + i;
    }
  }
  if (new Date(D.getFullYear(),D.getMonth(),i).getDay() == 0) {
    calendar += '<tr>';
  }
}
for(var  i = DNlast; i < 7; i++) calendar += '<td>&nbsp;';
document.querySelector('#'+id+' tbody').innerHTML = calendar;
g.value = D.getFullYear();
m.selected = true;
if (document.querySelectorAll('#'+id+' tbody tr').length < 6) {
    document.querySelector('#'+id+' tbody').innerHTML += '<tr><td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;';
}
document.querySelector('#'+id+' option[value="' + new Date().getMonth() + '"]').style.color = 'rgb(220, 0, 0)'; // в выпадающем списке выделен текущий месяц
}
Calendar3("calendar3",new Date().getFullYear(),new Date().getMonth());
document.querySelector('#calendar3').onchange = function Kalendar3() {
  Calendar3("calendar3",document.querySelector('#calendar3 input').value,parseFloat(document.querySelector('#calendar3 select').options[document.querySelector('#calendar3 select').selectedIndex].value));
}
</script>


Кто возьмётся написать? или доработать этот?
Ответить с цитированием
  #2 (permalink)  
Старый 11.01.2019, 20:13
Аватар для m~r.Nemo
Аспирант
Отправить личное сообщение для m~r.Nemo Посмотреть профиль Найти все сообщения от m~r.Nemo
 
Регистрация: 27.10.2012
Сообщений: 80

По поводу календаря, пока есть два вопроса,
возможно ли скрипт разделить на части, чтобы информация о государственных праздниках, рабочих субботах, важных событиях бралась из отдельных файлов, например txt

Насколько сложно реализовать календарь, что бы по клику менялась ориентация, с горизонтальной на вертикальную (пн вт ср расположены в колонку а не в строку) и обратно по клику...
Ответить с цитированием
  #3 (permalink)  
Старый 12.01.2019, 05:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от m~r.Nemo
возможно ли скрипт разделить на части, чтобы информация о государственных праздниках, рабочих субботах, важных событиях бралась из отдельных файлов, например txt
Это не только возможно, но и нужно делать, потому, что праздничный день никуда не денется, но если он выпадает на выходной день, то добавляется день отдыха, такие же переносы производит и правительство постановлением. А в файле ли это хранить или в ином месте, это не важно, все это возлагается на сервер.
Ответить с цитированием
  #4 (permalink)  
Старый 12.01.2019, 09:10
Аватар для m~r.Nemo
Аспирант
Отправить личное сообщение для m~r.Nemo Посмотреть профиль Найти все сообщения от m~r.Nemo
 
Регистрация: 27.10.2012
Сообщений: 80

Тогда остается один вопрос, насколько сложно реализовать календарь, что бы по клику менялась ориентация, с горизонтальной на вертикальную (пн вт ср расположены в колонку а не в строку) и обратно по клику...

другими словами хочу спросить насколько больше получится кода, в процентах, на 10, 20, 50, 100%?
Ответить с цитированием
  #5 (permalink)  
Старый 12.01.2019, 09:13
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от m~r.Nemo
информация о государственных праздниках, рабочих субботах, важных событиях
Просто нерабочие дни (праздничные и выходные) не пойдет?
Сообщение от m~r.Nemo
Насколько сложно реализовать календарь, что бы по клику менялась ориентация
Как заново написать.
Ответить с цитированием
  #6 (permalink)  
Старый 12.01.2019, 10:36
Аватар для m~r.Nemo
Аспирант
Отправить личное сообщение для m~r.Nemo Посмотреть профиль Найти все сообщения от m~r.Nemo
 
Регистрация: 27.10.2012
Сообщений: 80

Сообщение от Rise Посмотреть сообщение
Просто нерабочие дни (праздничные и выходные) не пойдет?
Мне кажется что не вариант, оставить рабочие субботы выделенным красным...

Цитата:
Как заново написать.
Ну поскольку не нашёл во всём интернете ни одного стоящего варианта, то придётся заморочится новым идеальным во всех смыслах вариантом...
Ответить с цитированием
  #7 (permalink)  
Старый 12.01.2019, 10:48
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от m~r.Nemo
не вариант, оставить рабочие субботы выделенным
Вы не поняли, нерабочие дни определяться будут числом, а не днем недели. Например, январь 2019 нерабочие дни "1,2,3,4,5,6,7,8,12,13,19,20,26,27".
Ответить с цитированием
  #8 (permalink)  
Старый 12.01.2019, 11:48
Аватар для m~r.Nemo
Аспирант
Отправить личное сообщение для m~r.Nemo Посмотреть профиль Найти все сообщения от m~r.Nemo
 
Регистрация: 27.10.2012
Сообщений: 80

Rise,
ну как вариант сойдет, но мне бы хотелось разделить этот момент, тоесть праздники отдельно из файла, рабочие субботы отдельно из другого файла, а просто выходные по дню недели...
Ответить с цитированием
  #9 (permalink)  
Старый 12.01.2019, 12:24
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от m~r.Nemo
мне бы хотелось разделить этот момент
Какой в этом практический смысл? Итак понятно, что есть суббота и воскресенье, что если какой-то субботы в этом списке нет, то значит она рабочая.
Ответить с цитированием
  #10 (permalink)  
Старый 12.01.2019, 12:54
Аватар для m~r.Nemo
Аспирант
Отправить личное сообщение для m~r.Nemo Посмотреть профиль Найти все сообщения от m~r.Nemo
 
Регистрация: 27.10.2012
Сообщений: 80

Сообщение от Rise Посмотреть сообщение
Какой в этом практический смысл? Итак понятно, что есть суббота и воскресенье, что если какой-то субботы в этом списке нет, то значит она рабочая.
Ок учту этот момент, а смысл в том, что бы праздники подсвечивались отдельно от выходных, другим оттенком красного, тогда будет видно что это не просто выходной, а надо отмечать праздник, и заранее к нему готовится...

Последний раз редактировалось m~r.Nemo, 12.01.2019 в 12:57.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не открывается календарь datapicker в ячейках таблицы kupidon Общие вопросы Javascript 13 24.02.2017 20:08
Freelance. Нужен календарь на Javascript для подстановки в <input /> даты и времени. DiYanka Работа 1 14.06.2014 02:03
Нужен календарь. m~r.Nemo Работа 4 19.08.2013 19:03
jQuery UI календарь в далоговом окне ololosh jQuery 1 14.08.2012 17:23
Нужен календарь на javascript. Где взять? javascript_pupil Общие вопросы Javascript 8 07.10.2011 18:34