160 lines
5 KiB
JavaScript
160 lines
5 KiB
JavaScript
/* ************************************************************
|
|
* Digicode
|
|
************************************************************
|
|
* Digicode.init : initialisation de la page
|
|
* Digicode.makeCode : creation de codes
|
|
* Digicode.codelist : liste des codes
|
|
* Digicode.AJAX : ajax
|
|
*/
|
|
Digicode = {};
|
|
|
|
/*****************************
|
|
Digicode.init
|
|
*****************************/
|
|
Digicode.init = function()
|
|
{
|
|
// afficher le tableau codelist
|
|
appendChildNodes("globalDiv", Digicode.codelist.create());
|
|
// recuperer la liste des codes
|
|
this.codelist.load();
|
|
// afficher le formulaire de creation de code
|
|
appendChildNodes("globalDiv", DIV({"id":"addCodeBox"}));
|
|
Digicode.makeCode.displayForm();
|
|
}
|
|
|
|
/*****************************
|
|
Digicode.makeCode
|
|
*****************************/
|
|
Digicode.makeCode = {}
|
|
|
|
Digicode.makeCode.displayForm = function()
|
|
{
|
|
var myForm = FORM({'id':'createCodeForm', 'name':'createCodeForm','onsubmit':"Digicode.makeCode.createCode(document.createCodeForm.newCodeLogin.value, document.createCodeForm.newCode.value); return false;", 'style':'display: none;'},
|
|
LABEL({'for':'newCodeLogin'}, "Login adhérent :"),
|
|
INPUT({"name":"newCodeLogin", "size":"10", "maxlength":"20", "class":"textinput"}),
|
|
BR(),
|
|
LABEL({'for':'newCode'}, "Code :"),
|
|
INPUT({"name":"newCode", "size":"6", "maxlength":"6", "class":"textinput"}),
|
|
BUTTON({"type":"submit","onclick":"Digicode.makeCode.createCode(document.createCodeForm.newCodeLogin.value, document.createCodeForm.newCode.value); return false;", "style":"float:right;"},"Créer code"),
|
|
BUTTON({"type":"button","onclick":"Digicode.makeCode.createCode(document.createCodeForm.newCodeLogin.value)", "style":"float:right;"},"Code aléatoire")
|
|
);
|
|
replaceChildNodes("addCodeBox", H1({},"Nouveau code"), myForm );
|
|
appear(myForm);
|
|
|
|
}
|
|
|
|
Digicode.makeCode.restoreForm = function()
|
|
{
|
|
try
|
|
{
|
|
removeElement("newCodeDisplay");
|
|
removeElement("loading");
|
|
} catch (error){}
|
|
appear("createCodeForm");
|
|
|
|
}
|
|
|
|
Digicode.makeCode.disableForm = function()
|
|
{
|
|
try
|
|
{
|
|
var form = getElement("createCodeForm");
|
|
var elts = form.elements;
|
|
for (i=0 ; i < elts.length ; i++)
|
|
elts[i].disabled = true;
|
|
}
|
|
catch (error){}
|
|
}
|
|
|
|
Digicode.makeCode.createCode = function(login, code)
|
|
{
|
|
var image = createDOM("IMG",{'style':'margin-right:2px;float:right;','src':'/static/images/indicator.gif'});
|
|
appendChildNodes("addCodeBox", DIV({'id':"loading",'style':'display:none;max-height:1em;float:left;'},image,"Loading"));
|
|
this.disableForm();
|
|
//removeElement("createCodeForm");
|
|
appear("loading");
|
|
if (code)
|
|
Digicode.AJAX.call("createCode?code="+code + "&adherent=" + login, this.handleNewCode);
|
|
else
|
|
Digicode.AJAX.call("createCode?adherent=" + login, this.handleNewCode);
|
|
}
|
|
|
|
Digicode.makeCode.handleNewCode = function(res)
|
|
{
|
|
if (res.code)
|
|
{
|
|
replaceChildNodes("addCodeBox",
|
|
H1({}, "Code créé"),
|
|
DIV({'id':"newCodeDisplay",
|
|
'style':'display:none;font-size:2em;maring:1em;font-weight:bold;text-align:center;',
|
|
'onclick':"Digicode.makeCode.displayForm();"},res.code));
|
|
appear("newCodeDisplay");
|
|
//removeElement("loading");
|
|
Digicode.codelist.addCode(res);
|
|
} else if (res.erreur) {
|
|
logError("Erreur distante : " + res.erreur);
|
|
alert("Erreur sur le serveur, le code est peut-être déjà pris.")
|
|
Digicode.makeCode.displayForm();
|
|
} else if (res.formatErreur) {
|
|
alert("Ceci n'est pas un code valide");
|
|
Digicode.makeCode.displayForm();
|
|
}
|
|
}
|
|
|
|
/*****************************
|
|
Digicode.codelist
|
|
*****************************/
|
|
Digicode.codelist = {};
|
|
|
|
Digicode.codelist.create = function ()
|
|
{
|
|
var thead = createDOM("thead", {},
|
|
createDOM("th", {'class':'code'}, "Code" ),
|
|
createDOM("th", {'class':'age'}, "Age")
|
|
);
|
|
var tbody = createDOM("tbody", {"id":"codeList"});
|
|
return TABLE({"id":"codesTable", "cellspacing":"0"}, thead, tbody)
|
|
}
|
|
|
|
|
|
|
|
Digicode.codelist.load = function()
|
|
{
|
|
Digicode.AJAX.call("codeList", Digicode.codelist.displayCodes);
|
|
}
|
|
|
|
Digicode.codelist.displayCodes = function(result)
|
|
{
|
|
if (result.codes)
|
|
replaceChildNodes('codeList',map(Digicode.codelist.newCodeTrNodeFromDict,result.codes));
|
|
else if (result.erreur)
|
|
logError("Erreur distante : " + result.erreur);
|
|
}
|
|
|
|
Digicode.codelist.newCodeTrNodeFromDict = function (aDict, style)
|
|
{
|
|
if (style) {
|
|
var aRow = createDOM("TR", {'id':'code'+aDict.code,"style":style});
|
|
} else
|
|
var aRow = createDOM("TR", {'id':'code'+aDict.code});
|
|
appendChildNodes(aRow, createDOM("TD", {'class':'code'}, aDict.code, SPAN({'style':'color:gray;margin-left:2em;'}, aDict.desc ) ) );
|
|
appendChildNodes(aRow, createDOM("TD", {'class':'age'}, aDict.age) );
|
|
return aRow;
|
|
}
|
|
|
|
Digicode.codelist.addCode = function (aDict)
|
|
{
|
|
var newLine = this.newCodeTrNodeFromDict(aDict);
|
|
appendChildNodes("codeList", newLine);
|
|
pulsate(newLine);
|
|
}
|
|
|
|
|
|
/*****************************
|
|
Digicode.AJAX
|
|
*****************************/
|
|
Digicode.AJAX = {}
|
|
|
|
Digicode.AJAX.call = AJAX.call
|
|
|
|
setInterval(Digicode.codelist.load, 30000);
|