Utente:FixBot/DeletionBot/main2.js: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
FixBot (discussione | contributi)
Nessun oggetto della modifica
FixBot (discussione | contributi)
Nessun oggetto della modifica
 
(45 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1:
var guiTimeout = 0;
// La variabile contiene i messaggi di log del bot
if (wgTitle == "FixBot/DeletinBot/GUI")
var messages = [];
var currentAppStatus;
 
if (wgTitle == "FixBot/TestBot2")
{
// Il bot viene eseguito quando l'intera pagina è stata caricata
$(window).load(startDeletionBottestGUI);
}
 
function startDeletionBottestGUI()
{
form_data = '<select id="giorno" name="giorno" style="height:25px; vertical-align:top; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box;"> <option value="1">1</option><option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> <option value="13">13</option> <option value="14">14</option> <option value="15">15</option> <option value="16">16</option> <option value="17">17</option> <option value="18">18</option> <option value="19">19</option> <option value="20">20</option> <option value="21">21</option> <option value="22">22</option> <option value="23">23</option> <option value="24">24</option> <option value="25">25</option> <option value="26">26</option> <option value="27">27</option> <option value="28">28</option> <option value="29">29</option> <option value="30">30</option> <option value="31">31</option></select>';
var appStatusRouter;
form_data += '<select id="mese" name="mese" style="margin-left:2px; height:25px; vertical-align:top; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box;"> <option value="1">gennaio</option> <option value="2">febbraio</option> <option value="3">marzo</option> <option value="4">aprile</option> <option value="5">maggio</option> <option value="6">giugno</option> <option value="7">luglio</option> <option value="8">agosto</option> <option value="9">settembre</option> <option value="10">ottobre</option> <option value="11">novembre</option> <option value="12">dicembre</option></select>';
appStatusRouter = generaTabellaRouting('execAggiornaLog');
form_data += '<input type="text" id="anno" name="anno" id="anno" size="4" style="margin-left:2px; height:25px; vertical-align:top; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box;" />';
form_data += '<label style="margin-left:100px;">Giorni:</label><input type="text" name="giorni" id="giorni" size="2" style="margin-left:2px; height:25px; vertical-align:top; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box;" />';
form_runBot = ' <button type="button" id="RunBot_button" onclick="runBot_GUI(\'letturaPDC\')">Aggiorna Log e Tabelle</button>';
//mainDeletionBot2(new Date(), 8, appStatusRouter, 5);
form_runBotCat = ' <button type="button" id="RunBotCat_button" onclick="runBot_GUI(\'aggiornaCategorie\')">Aggiorna categorie</button>';
mainDeletionBot2(new Date(2013,10,14), 1, appStatusRouter, 5);
form_log = '<textarea id="botlog" name="botlog" rows="50" cols="75" disabled="disabled" style="width:900px;">Pronto</textarea>';
 
$("#form-data").html(form_data);
d = new Date();
$('#giorno').val( d.getDate() );
$('#mese').val( d.getMonth()+1 );
$('#anno').val( d.getFullYear() );
$('#giorni').val( 1 );
$('#form-RunBot').html(form_runBot);
$('#form-RunBotCat').html(form_runBotCat);
$('#form-log').html(form_log);
$('#botPanel').show();
}
 
function runBot_GUI(tipo)
 
function generaTabellaRouting(state)
{
disattivaGUI();
r = {gestioneCategorieGiornaliere:false, gestioneCategorieMensili:false, gestioneCategorieAnnuali:false, letturaPDC:false};
switch( state )
r = [];
appStatusRouter = [];
 
// Validazione data e numero giorni
d = validazioneData();
if(!d)
{
alert('La data selezionata non è valida!');
// Gestione delle sole categorie annuali
attivaGUI();
case 'execCategorieAnnuali':
return;
r['gestioneCategorieAnnuali'] = true;
}
break;
 
giorni=parseInt($('#giorni').val());
// Gestione delle sole categorie mensili
case 'execCategorieMensili':
r['gestioneCategorieMensili'] = true;
if( isNaN(giorni) )
break;
{
alert('Il valore inserito nel campo "giorni" non è valido!');
// Gestione delle sole categorie giornaliere
attivaGUI();
case 'execCategorieGiornaliere':
return;
r['gestioneCategorieGiornaliere'] = true;
}
break;
else if( giorni < 1 || giorni > 9 )
{
// Aggiornamento delle tabelle
alert('Il numero di giorni deve essere compreso tra 1 e 8');
case 'execAggiornaLog':
attivaGUI();
r['gestioneCategorieGiornaliere'] = true;
r['letturaPDC'] = truereturn;
}
break;
 
switch(tipo)
// Aggiornamento delle categorie mensili e delle tabelle
{
case 'execCategorieMensiliLog':
case 'letturaPDC':
r['gestioneCategorieMensili'] = true;
r['gestioneCategorieGiornaliere'] = true;
r['letturaPDC'] = true;
break;
 
case 'aggiornaCategorie':
// Aggiornamento completo (categorie annuali, mensili, log)
case 'execCompleta':
r['gestioneCategorieAnnuali'] = true;
r['gestioneCategorieMensili'] = true;
r['gestioneCategorieGiornaliere'] = true;
r['letturaPDCleggiStatoCatInCorso'] = true;
break;
}
states = [];
for( key in r )
{
if( r[key] )
statesappStatusRouter.push(key);
}
messages = [];
guiTimeout = 5*60+10;
guiInt=setInterval(checkGUItimeout, 1000);
mainDeletionBot(d, giorni, appStatusRouter, 5);
return states;
}
 
function checkGUItimeout()
 
/*=================================================================================================
*
* Funzione mainDeletionBot()
*
* Funzione principale del bot
*
* ================================================================================================
*/
function mainDeletionBot2(PDC_date, days, appStatusRouter, timeout)
{
if( currentAppStatus == 'finish' || currentAppStatus == 'timeout')
var catStatus = [];
{
var PDC_Status = [];
clearInterval(guiInt);
var PDC_Errors = [];
var iw = 0, icmessages_str = 0'';
for( var i=0; i < messages.length; i++)
var writeData = [];
messages_str = messages_str+messages[i]+'\n';
var writeStatus;
$('#botlog').val( messages_str );
var daysCnt=0;
var statusCnt=0 attivaGUI();
var nextAppStatus;
currentAppStatus = 'selectStatus';
botTimeout = setTimeout(function(){ currentAppStatus='timeout'; }, timeout*60*1000 );
//token = 0;
token = mw.user.tokens.get( 'editToken' );
 
startDate = new Date();
 
// Il codice viene eseguito ogni 100 ms fino alla conclusione
interval = setInterval(function() {
}
d = new Date();
else if( guiTimeout == 0 )
{
switch( currentAppStatus )
$('#botlog').val( 'Interruzione del bot...' );
{
}
case 'selectStatus':
else
if( statusCnt == appStatusRouter.length )
{
currentAppStatus = 'finish';
elseguiTimeout--;
min = {Math.floor(guiTimeout/60);
if(min<10) min='0'+min;
currentAppStatus = appStatusRouter[statusCnt];
s = statusCnt++guiTimeout%60;
if(s<10) }s='0'+s;
$('#botlog').val( 'Esecuzione in corso (timeout: '+min+':'+s+')' );
break;
case 'gestioneCategorieGiornaliere':
// Avvio la gestione delle categorie giornaliere
messages.push('['+d.toISOString()+'] *** Gestione delle categorie giornaliere ***');
catStatus = [];
for(var i=0; i < tipologie.length; i++)
{
catStatus.push( new catStatusObj() );
creazioneCategorie(tipologie[i], new Date(PDC_date.getTime()), days, catStatus[i]);
}
 
}
currentAppStatus = 'runningCategorie';
}
// Stato da eseguire quando le categorie giornaliere saranno processate
nextAppStatus = 'selectStatus';
// ic è il numero delle sessioni in parallelo
ic = tipologie.length;
break;
case 'gestioneCategorieMensili':
// Avviso la gestione delle categorie
messages.push('['+d.toISOString()+'] *** Gestione delle categorie mensili ***');
catStatus.push( new catStatusObj() );
creazioneCategorieMese(PDC_date.getFullYear(), catStatus[0])
summary = 'Bot: creazione/aggiornamento categorie di servizio';
currentAppStatus = 'runningCategorie';
nextAppStatus = 'selectStatus';
ic = 1;
break;
case 'gestioneCategorieAnnuali':
// Avviso la gestione delle categorie
messages.push('['+d.toISOString()+'] *** Gestione delle categorie annuali ***');
catStatus.push( new catStatusObj() );
creazioneCategorieAnno(PDC_date.getFullYear(), catStatus[0])
summary = 'Bot: creazione/aggiornamento categorie di servizio';
currentAppStatus = 'runningCategorie';
nextAppStatus = 'selectStatus';
ic = 1;
break;
case 'runningCategorie':
// Attendo la lettura delle categorie
var n;
for( n=0; n < ic; n++)
{
if( !catStatus[n].done )
break;
}
if( n < ic )
break;
// Lettura completata
writeData = [];
for( var n=0; n < ic; n++)
{
if( catStatus[n].ok )
writeData = writeData.concat(catStatus[n].writeData);
else
messages.push( catStatus[n].error );
}
// Stato successivo alla scrittura
currentAppStatus = 'scrittura';
break;
 
function attivaGUI()
case 'scrittura':
{
if( writeData.length > 0 )
$('#giorno').removeProp("disabled");
{
$('#mese').removeProp("disabled");
iw = 0;
$('#anno').removeProp("disabled");
writeStatus = new writeStatusObj();
$('#giorni').removeProp("disabled");
scriviPagina(writeData[0].title, writeData[0].text, writeData[0].summary, token, writeStatus);
$('#RunBot_button').removeProp("disabled");
currentAppStatus = 'runningScrittura';
$('#RunBotCat_button').removeProp("disabled");
}
}
else
{
messages.push('['+d.toISOString()+'] Nessuna pagina da scrivere');
currentAppStatus = nextAppStatus;
}
break;
case 'runningScrittura':
if( writeStatus.done )
{
d = new Date();
if( !writeStatus.ok )
messages.push(writeStatus.error);
else
messages.push('['+d.toISOString()+'] Pagina creata/modificata: '+writeData[iw].title);
iw++;
if( iw < writeData.length )
{
writeStatus = new writeStatusObj();
scriviPagina(writeData[iw].title, writeData[iw].text, writeData[iw].summary, token, writeStatus);
}
else
currentAppStatus = nextAppStatus;
}
break;
case 'letturaPDC':
Running_PDC_date = new Date(PDC_date.getTime());
daysCnt = days;
messages.push('['+d.toISOString()+'] *** Lettura delle procedure di cancellazione ***');
case 'iniziaLetturaPDC':
messages.push('['+d.toISOString()+'] Lettura procedure del '+convertiDateToCategoria(Running_PDC_date) );
currentAppStatus = 'leggiGiorno';
PDC_Status = [];
PDC_Errors = [];
for(var i=0; i < tipologie.length; i++)
{
PDC_Status.push( new readPDCStatusObj() );
iniziaLetturaCategoriaPDC(tipologie[i], Running_PDC_date, PDC_Status[i]);
}
break;
case 'leggiGiorno':
finishCnt = 0;
for(var i=0; i < tipologie.length; i++)
{
if( PDC_Status[i].done && !PDC_Status[i].finish) // Lettura completata?
{
if( PDC_Status[i].ok )
{
// Gestione del query continue
if( PDC_Status[i].qcontinue )
iniziaLetturaCategoriaPDC(tipologie[i], Running_PDC_date, PDC_Status[i]);
else
PDC_Status[i].finish = true;
}
else
{
// errore!!
PDC_Status[i].finish = true;
PDC_Errors.push( PDC_Status[i].error );
}
}
if( PDC_Status[i].finish )
finishCnt++;
}
if( finishCnt == tipologie.length )
{
if( PDC_Errors.length > 0 )
messages = messages.concat(PDC_Errors);
else
{
procedure = [];
for(var i=0; i < tipologie.length; i++)
procedure[tipologie[i]] = processLetturaCategoriaPDC(tipologie[i], PDC_Status[i].rawData);
processPDCErrate(procedure);
txt = generaTabellaConteggio(Running_PDC_date, procedure);
//txt = generaLogGiornaliero(PDC_Date, procedure);
writeData = [];
//console.log(Conta_Prefix+convertiDateToLogTxt(Running_PDC_date));
writeData.push( {'title':Conta_Prefix+convertiDateToLogTxt(Running_PDC_date), 'text':txt, 'summary':'Bot: aggiorno tabella di conteggio'} );
// Gestione del giorno successivo
daysCnt--;
if( daysCnt == 0)
{
nextAppStatus = 'selectStatus';
//currentAppStatus = 'scrittura';
currentAppStatus = 'finish';
console.log(procedure);
}
else
{
Running_PDC_date.setDate(Running_PDC_date.getDate()-1);
nextAppStatus = 'iniziaLetturaPDC';
currentAppStatus = 'scrittura';
}
}
}
break;
case 'timeout':
messages.push('['+d.toISOString()+'] *** TIMEOUT: esecuzione interrotta per il superamento del tempo limite ***');
case 'finish':
finishDate = new Date();
runningTime = Math.floor( (finishDate.getTime()-startDate.getTime())/1000 );
messages.push('['+d.toISOString()+'] *** ESECUZIONE COMPLETATA in '+runningTime/60+' minuti e '+runningTime%60+' secondi ***');
clearTimeout(botTimeout);
clearInterval(interval);
console.log(messages);
}
 
function disattivaGUI()
},100);
{
$('#giorno').prop("disabled",true);
$('#mese').prop("disabled",true);
$('#anno').prop("disabled",true);
$('#giorni').prop("disabled",true);
$('#RunBot_button').prop("disabled",true);
$('#RunBotCat_button').prop("disabled",true);
}
 
function validazioneData()
{
dd=$('#giorno').val();
mm=$('#mese').val();
yy=$('#anno').val();
d = new Date(yy, mm-1, dd);
if( d.getDate()==dd && d.getMonth()==mm-1 && d.getFullYear()==yy )
return d;
else
{
alert('La data inserita non è valida!');
return false;
}
}