Ignore:
Timestamp:
Nov 23, 2010, 12:58:57 AM (13 years ago)
Author:
LucMorizur
Message:

Finalize date & time controls -- with some jQuery code!

File:
1 edited

Legend:

Unmodified
Added
Removed
  • extensions/event_cats/admin/template/autolog_new.js

    r7832 r7847  
    1717var ec_selected_old_group       = false;
    1818var ec_validity_on              = false;
    19 var m_offset                    = 0; /* // Inutile a priori
    20 var valid_annee                 = 0;
    21 var valid_mois                  = 0;
    22 var valid_date                  = 0;
    23 var valid_heures                = 0;
    24 var valid_minutes               = 0; */
    25 var valid_timestamp             = 0;
    2619var ec_err                      = '';
    2720var ec_selected_img             = '';
     
    703696}
    704697
    705 /* // Inutile a priori
    706 function ec_update_ts(c) {
    707   if (c && de('ec_valid_date_on_id').checked == '')
    708    de('ec_valid_date_on_id').checked = 'checked';
    709   valid_timestamp = validity_date.getTime();
    710   // For tests purpose, must be removed
    711   de('ec_span_tst_id').innerHTML = 'valid_timestamp : ' + valid_timestamp;
    712   // For tests purpose, must be removed
    713 }
    714 */
    715 
    716 function ec_add_time(v2, k) {
    717   var v = (isNaN(v2)) ? 0 : Number(v2);
    718   var m = 0;
    719   if (v < 0) v = 0;
     698function ec_get_validity() {
    720699  validity_date.setFullYear(de('ec_validity_year_id').value);
    721700  validity_date.setMonth(de('ec_validity_month_id').selectedIndex - 1);
     
    725704  validity_date.setSeconds(0);
    726705  validity_date.setMilliseconds(0);
    727   valid_timestamp = validity_date.getTime();
     706}
     707
     708function ec_set_validity() {
     709  de("ec_validity_year_id").value          = validity_date.getFullYear();
     710  de("ec_validity_month_id").selectedIndex = validity_date.getMonth() + 1;
     711  de("ec_validity_day_id").selectedIndex   = validity_date.getDate();
     712  de("ec_validity_time_id").value          =
     713   ec_add_0(validity_date.getHours()) +
     714   ":" +
     715   ec_add_0(validity_date.getMinutes());
     716}
     717
     718function ec_mark_now() {
     719  maintenant = new Date();
     720  validity_date.setTime(maintenant.getTime() + 120000); // Validity
     721  // [date & time] cannot be less than two minutes
     722  ec_set_validity();
     723}
     724
     725function ec_validity_check_min() {
     726  var tp = new Date();
     727  maintenant = tp;
     728  tp.setTime(maintenant.getTime() + 120000); // PHP will not allow that
     729  // [date & time] is less than [one minute more than current [date & time]].
     730  // Thus considering processing time, JavaScript should not allow a date
     731  // less than [two minutes more than current [date & time]] (due to the fact
     732  // that base unit for this value is one minute).
     733  de("ec_min_year_id").value          = tp.getFullYear();
     734  de("ec_min_month_id").selectedIndex = tp.getMonth() + 1;
     735  de("ec_min_day_id").selectedIndex   = tp.getDate();
     736  ec_get_validity();
     737  if (Number(validity_date.getTime()) < Number(tp.getTime())) {
     738    validity_date = tp;
     739    ec_set_validity();
     740  }
     741}
     742
     743function ec_validity_set_min() {
     744  ec_validity_check_min();
     745  // Run again this whole function after 1 mn
     746  window.setTimeout("ec_validity_set_min()", 60000);
     747}
     748
     749function ec_add_time(v2, k) {
     750  var m = 0; var ts = 0;
     751  var v = (isNaN(v2)) ? 0 : Number(v2);
     752  if (v < 0) v = 0;
     753  ec_get_validity();
     754  ts = Number(validity_date.getTime());
    728755  switch (k) {
    729756    case 0  : // minute(s)
    730       validity_date.setTime(valid_timestamp + (v *    60000));
     757      validity_date.setTime(ts + (v *    60000));
    731758    break;
    732759    case 1  : // hour(s)
    733       validity_date.setTime(valid_timestamp + (v *  3600000));
     760      validity_date.setTime(ts + (v *  3600000));
    734761    break;
    735762    case 2  : // day(s)
    736       validity_date.setTime(valid_timestamp + (v * 86400000));
     763      validity_date.setTime(ts + (v * 86400000));
    737764    break;
    738765    case 3  : // month(s)
    739       m = de('ec_validity_month_id').selectedIndex + v;
     766      m = Number(de('ec_validity_month_id').selectedIndex + v);
    740767      validity_date.setFullYear(
    741768        Number(de('ec_validity_year_id').value) + Math.floor(m / 12)
     
    747774    break;
    748775  }
    749   de("ec_validity_year_id").value          = validity_date.getFullYear();
    750   de("ec_validity_month_id").selectedIndex = validity_date.getMonth() + 1;
    751   de("ec_validity_day_id").selectedIndex   = validity_date.getDate();
    752   de("ec_validity_time_id").value          =
    753    ec_add_0(validity_date.getHours()) +
    754    ":" +
    755    ec_add_0(validity_date.getMinutes());
     776  ec_set_validity();
     777}
     778
     779function ec_valid_set_time_to(v) {
     780  var tp = new Date();
     781  var ts = 0;
     782  maintenant = tp;
     783  tp.setTime(maintenant.getTime() + 120000); // PHP will not allow that
     784  // [date & time] is less than [one minute more than current [date & time]].
     785  // Thus considering processing time, JavaScript should not allow a date
     786  // less than [two minutes more than current [date & time]] (due to the fact
     787  // that base unit for this value is one minute).
     788  ec_get_validity();
     789  validity_date.setHours(v);
     790  validity_date.setMinutes(0);
     791  ts = Number(validity_date.getTime());
     792  if (ts < Number(tp.getTime()))
     793   validity_date.setTime(ts + 86400000); // Add 1 day
     794  ec_set_validity();
     795  ec_validity_check_min();
    756796}
    757797
     
    774814  ec_selected_user                                = '-1';
    775815  ec_selected_code                                = '-1';
    776   m_offset                                   = maintenant.getTimezoneOffset();
     816  de('ec_valid_offset_id').value             = maintenant.getTimezoneOffset();
    777817  de('ec_style_forced_id').innerHTML              = ec_up_code_lbl_forced_txt;
    778818  de('ec_act1_id').value                          = ec_default_action;
     
    791831  de('ec_input_action_home').checked              = 'checked';
    792832  de('ec_input_action_home').checked              = '';
    793   de("ec_min_year_id").value                      = maintenant.getFullYear();
    794   de("ec_min_month_id").selectedIndex             = maintenant.getMonth() + 1;
    795   de("ec_min_day_id").selectedIndex               = maintenant.getDate();
    796   de("ec_validity_year_id").value                 = maintenant.getFullYear();
    797   de("ec_validity_month_id").selectedIndex        = maintenant.getMonth() + 1;
    798   de("ec_validity_day_id").selectedIndex          = maintenant.getDate();
    799   de("ec_validity_time_id").value                 =
    800    ec_add_0(maintenant.getHours()) +
    801    ":" +
    802    ec_add_0(maintenant.getMinutes());
     833  ec_mark_now();
     834  ec_validity_set_min();
    803835  pwg_initialization_datepicker("#ec_min_day_id", "#ec_min_month_id",
    804836   "#ec_min_year_id", "#ec_min_date_id", null, null, null);
     
    806838   "#ec_validity_month_id", "#ec_validity_year_id", "#ec_linked_date_id",
    807839   null, "#ec_min_date_id", null);
     840  $(document).ready(function(){
     841    $('.ui-datepicker').click(function(){
     842      ec_validity_check_min();
     843    });
     844    $('.ec_datepicker').change(function(){
     845      ec_validity_check_min();
     846    });
     847  });
    808848 
    809849  if (ec_is_creation) { // Entry creation
Note: See TracChangeset for help on using the changeset viewer.