Modification calendrier

karlax Messages postés 1 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 27 février 2011 - 27 févr. 2011 à 18:10
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 - 28 févr. 2011 à 23:37
Bonjour,

Je cherche à mettre un sélecteur de date pour un formulaire destiné à être utilisé en local pour un "PME".
N'y connaissant pas grand chose, voire même rien en fait ^^', j'ai trouvé un calendrier sur le net qui correspond a ce dont j'ai besoin (le côté austère aussi correspond bien lol)
J'aimerai pouvoir modifier le jour de début de la semaine, pour l'instant la semaine commence le dimanche, comment pourrais je faire pour que la semaine commence le lundi ?

la partie à modifier semble être celle là

var first_day = ds_dc_date.getDay();
var first_loop = 1;
ds_echo (ds_template_new_week());
if (first_day != 0) {
ds_echo (ds_template_blank_cell(first_day));
}
var j = first_day;
for (i = 0; i < days; i ++) {
if (j == 0 && !first_loop) {
ds_echo (ds_template_new_week());
}
ds_echo (ds_template_day(i + 1, m, y));
first_loop = 0;
j ++;
j %= 7;


au cas le tout
<HEAD>
<style type="text/css">

.ds_box {
background-color: #000000;
border: 1px solid #000000; // couleur contour calendrier
position: absolute;
z-index: 32767;
}

.ds_tbl {
background-color: #80797F; // couleur jour hors mois en cours
}

.ds_head {
background-color: #EC8601; // couleur fermer et nom mois en cours
color: #FFF;
font-family: Book antica;
font-size: 14px;
font-weight: bold;
text-align: center;
letter-spacing: 2px;
}

.ds_subhead {
background-color: #F3ED47; // couleur nom jours de la semaine
color: #000;
font-size: 12px;
font-weight: bold;
text-align: center;
font-family: Book antica;
width: 32px;
}

.ds_cell {
background-color: #ECCCD1; // couleur numéros jours du mois
color: #000;
font-size: 13px;
font-weight: bold;
text-align: center;
font-family: Book antica;
padding: 5px;
cursor: pointer;
}

.ds_cell:hover {
background-color: #E101BB;
}

</style>
</head>





<script type="text/javascript">
var ds_i_date = new Date();
ds_c_month = ds_i_date.getMonth() + 1;
ds_c_year = ds_i_date.getFullYear();

function ds_getel(id) {
return document.getElementById(id);
}

function ds_getleft(el) {
var tmp = el.offsetLeft;
el = el.offsetParent
while(el) {
tmp += el.offsetLeft;
el = el.offsetParent;
}
return tmp;
}
function ds_gettop(el) {
var tmp = el.offsetTop;
el = el.offsetParent
while(el) {
tmp += el.offsetTop;
el = el.offsetParent;
}
return tmp;
}

var ds_oe = ds_getel('ds_calclass');
var ds_ce = ds_getel('ds_conclass');

var ds_ob = '';
function ds_ob_clean() {
ds_ob = '';
}
function ds_ob_flush() {
ds_oe.innerHTML = ds_ob;
ds_ob_clean();
}
function ds_echo(t) {
ds_ob += t;
}

var ds_element;

var ds_monthnames = [
'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin',
'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Decembre'
];
var ds_daynames = [
'Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'
];
function ds_template_main_above(t) {
return ''
+ '----
'
+ '<<, '
+ '<, '
+ '[Fermer], '
+ '>, '
+ '>>, '
+ ''
+ '----
'
+ '' + t + ', '
+ ''
+ '----
';
}

function ds_template_day_row(t) {
return '' + t + ', ';
}

function ds_template_new_week() {
return '----
';
}

function ds_template_blank_cell(colspan) {
return ', '
}

function ds_template_day(d, m, y) {
return '' + d + ', ';
}

function ds_template_main_below() {
return ''
+ '
';
}

function ds_draw_calendar(m, y) {
ds_ob_clean();
ds_echo (ds_template_main_above(ds_monthnames[m - 1] + ' ' + y));
for (i = 0; i < 7; i ++) {
ds_echo (ds_template_day_row(ds_daynames[i]));
}
var ds_dc_date = new Date(y,m-1,1);
if (m 1 || m 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) {
days = 31;
} else if (m 4 || m 6 || m == 9 || m == 11) {
days = 30;
} else {
days ((y % 400 0 || y % 4 == 0 && y % 100 != 0) ? 29 : 28); }
var first_day = ds_dc_date.getDay();
var first_loop = 1;
ds_echo (ds_template_new_week());
if (first_day != 0) {
ds_echo (ds_template_blank_cell(first_day));
}
var j = first_day;
for (i = 0; i < days; i ++) {
if (j == 0 && !first_loop) {
ds_echo (ds_template_new_week());
}
ds_echo (ds_template_day(i + 1, m, y));
first_loop = 0;
j ++;
j %= 7;
}
ds_echo (ds_template_main_below());
ds_ob_flush();
ds_ce.scrollIntoView();
}

function ds_sh(t) {
ds_element = t;
var ds_sh_date = new Date();
ds_c_month = ds_sh_date.getMonth() + 1;
ds_c_year = ds_sh_date.getFullYear();
ds_draw_calendar(ds_c_month, ds_c_year);
ds_ce.style.display = '';
the_left = ds_getleft(t);
the_top = ds_gettop(t) + t.offsetHeight;
ds_ce.style.left = the_left + 'px';
ds_ce.style.top = the_top + 'px';
ds_ce.scrollIntoView();
}

function ds_hi() {
ds_ce.style.display = 'none';
}

function ds_nm() {
ds_c_month ++;
if (ds_c_month > 12) {
ds_c_month = 1;
ds_c_year++;
}
ds_draw_calendar(ds_c_month, ds_c_year);
}

function ds_pm() {
ds_c_month = ds_c_month - 1;
if (ds_c_month < 1) {
ds_c_month = 12;
ds_c_year = ds_c_year - 1;
}
ds_draw_calendar(ds_c_month, ds_c_year);
}

function ds_ny() {
ds_c_year++;
ds_draw_calendar(ds_c_month, ds_c_year);
}

function ds_py() {
ds_c_year = ds_c_year - 1;
ds_draw_calendar(ds_c_month, ds_c_year);
}

function ds_format_date(d, m, y) {
m2 = '00' + m;
m2 = m2.substr(m2.length - 2);
d2 = '00' + d;
d2 = d2.substr(d2.length - 2);
return d2 + '/' + m2 + '/' + y;
}

function ds_onclick(d, m, y) {
ds_hi();
if (typeof(ds_element.value) != 'undefined') {
ds_element.value = ds_format_date(d, m, y);
} else if (typeof(ds_element.innerHTML) != 'undefined') {
ds_element.innerHTML = ds_format_date(d, m, y);
} else {
alert (ds_format_date(d, m, y));
}
}


</script>
</HEAD>
<form action="" method="post">






</form>


Merci d'avance si quelqu'un peut m'aider, et désolé si je poste pas sur la bonne rubrique voire sur le bon forum ^^'

1 réponse

007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
28 févr. 2011 à 23:37
Deux modifications sont à opérer
// Décaler les jours de la semaine en remplaçant
for (i=0;i<7;i++){ds_echo (ds_template_day_row(ds_daynames[i]));}
// par 
for (i=0;i<7;i++){ds_echo (ds_template_day_row(ds_daynames[(i+1)%7]));}

// Décaler le premier jour en modifiant
var first_day = ds_dc_date.getDay();
// pour écrire 
var first_day = (ds_dc_date.getDay()+6)%7;

Le code mériterait cependant quelques optimisations...
// En remplaçant par exemple les horribles lignes suivantes
if (m 1 || m 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) {
days = 31;
} else if (m 4 || m 6 || m == 9 || m == 11) {
days = 30;
} else {
days ((y % 400 0 || y % 4 == 0 && y % 100 != 0) ? 29 : 28); }

// par la simple instruction 
days=new Date(y,m,0).getDate(0);

Le nombre de jour d'un mois est, en effet, donné par le quantième de son dernier jour correspondant, en javascript, au jour 0 du mois suivant.
0
Rejoignez-nous