151 lines
6.1 KiB
JavaScript

/// $Id $
///////////////////////////////////////////////////////////////////////////
// //
// NOTICE OF COPYRIGHT //
// //
// Moodle - Modular Object-Oriented Dynamic Learning Environment //
// http://moodle.com //
// //
// Copyright (C) 1999 onwards Martin Dougiamas http://dougiamas.com //
// (C) 2001-3001 Eloy Lafuente (stronk7) http://contiento.com //
// //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation; either version 2 of the License, or //
// (at your option) any later version. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details: //
// //
// http://www.gnu.org/copyleft/gpl.html //
// //
///////////////////////////////////////////////////////////////////////////
/// Register the needed events
onload=function() {
/// Adjust the form on load
transformForm();
/// Get the required fields
var typeField = document.getElementById('menutype');
var sequenceField = document.getElementById('menusequence');
/// Register the rest of events
if (typeField.addEventListener) {
/// Standard
typeField.addEventListener('change', transformForm, false);
sequenceField.addEventListener('change', transformForm, false);
} else {
/// IE 5.5
typeField.attachEvent('onchange', transformForm);
sequenceField.attachEvent('onchange', transformForm);
}
}
/**
* This function controls all modifications to perform when any field changes
*/
function transformForm(event) {
/// Initialize all the needed variables
var typeField = document.getElementById('menutype');
var lengthField = document.getElementById('length');
var decimalsField = document.getElementById('decimals');
var unsignedField = document.getElementById('menuunsigned');
var notnullField = document.getElementById('menunotnull');
var sequenceField = document.getElementById('menusequence');
var defaultField = document.getElementById('default');
var lengthTip = document.getElementById('lengthtip');
var decimalsTip = document.getElementById('decimalstip');
/// Initially, enable everything
decimalsField.disabled = false;
unsignedField.disabled = false;
notnullField.disabled = false;
sequenceField.disabled = false;
defaultField.disabled = false;
/// Based on sequence, disable some items
if (sequenceField.value == '1') {
unsignedField.disabled = true;
unsignedField.value = '1';
notnullField.disabled = true;
notnullField.value = '1';
defaultField.disabled = true;
defaultField.value = '';
}
/// Based on type, disable some items
switch (typeField.value) {
case '1': // XMLDB_TYPE_INTEGER
lengthTip.innerHTML = ' 1...20';
decimalsTip.innerHTML = '';
decimalsField.disabled = true;
decimalsField.value = '';
break;
case '2': // XMLDB_TYPE_NUMBER
lengthTip.innerHTML = ' 1...20';
decimalsTip.innerHTML = ' 0...length or empty';
break;
case '3': // XMLDB_TYPE_FLOAT
lengthTip.innerHTML = ' 1...20 or empty';
decimalsTip.innerHTML = ' 0...length or empty';
break;
case '4': // XMLDB_TYPE_CHAR
lengthTip.innerHTML = ' 1...255';
decimalsTip.innerHTML = '';
decimalsField.disabled = true;
decimalsField.value = '';
unsignedField.disabled = true;
unsignedField.value = '0';
sequenceField.disabled = true;
sequenceField.value = '0';
break;
case '5': // XMLDB_TYPE_TEXT
lengthTip.innerHTML = ' small, medium, big';
decimalsTip.innerHTML = '';
decimalsField.disabled = true;
decimalsField.value = '';
unsignedField.disabled = true;
unsignedField.value = '0';
sequenceField.disabled = true;
sequenceField.value = '0';
defaultField.disabled = true;
defaultField.value = '';
break;
case '6': // XMLDB_TYPE_BINARY
lengthTip.innerHTML = ' small, medium, big';
decimalsTip.innerHTML = '';
decimalsField.disabled = true;
decimalsField.value = '';
unsignedField.disabled = true;
unsignedField.value = '0';
sequenceField.disabled = true;
sequenceField.value = '0';
defaultField.disabled = true;
defaultField.value = '';
break;
case '7': // XMLDB_TYPE_DATETIME
lengthTip.innerHTML = '';
lengthField.disabled = true;
lengthField.value = '';
decimalsTip.innerHTML = '';
decimalsField.disabled = true;
decimalsField.value = '';
unsignedField.disabled = true;
unsignedField.value = '0';
sequenceField.disabled = true;
sequenceField.value = '0';
defaultField.disabled = true;
defaultField.value = '';
break;
}
}