Utente:FixBot/DeletionBot/main2.js
Questa pagina definisce alcuni parametri di aspetto e comportamento generale di tutte le pagine. Per personalizzarli vedi Aiuto:Stile utente.
Nota: dopo aver salvato è necessario pulire la cache del proprio browser per vedere i cambiamenti (per le pagine globali è comunque necessario attendere qualche minuto). Per Mozilla / Firefox / Safari: fare clic su Ricarica tenendo premuto il tasto delle maiuscole, oppure premere Ctrl-F5 o Ctrl-R (Command-R su Mac); per Chrome: premere Ctrl-Shift-R (Command-Shift-R su un Mac); per Konqueror: premere il pulsante Ricarica o il tasto F5; per Opera può essere necessario svuotare completamente la cache dal menù Strumenti → Preferenze; per Internet Explorer: mantenere premuto il tasto Ctrl mentre si preme il pulsante Aggiorna o premere Ctrl-F5.
// La variabile contiene i messaggi di log del bot
var messages = [];
if (wgTitle == "FixBot/TestBot2")
{
// Il bot viene eseguito quando l'intera pagina è stata caricata
$(window).load(mainDeletionBot2);
}
/*=================================================================================================
*
* Funzione mainDeletionBot()
*
* Funzione principale del bot
*
* ================================================================================================
*/
function mainDeletionBot2()
{
var catStatus = [];
var iw = 0, ic = 0, summary = '';
var writeData = [];
var writeStatus;
// Inizializzo il vettore con le variabili di stato
catStatus.push( new catStatusObj() );
catStatus.push( new catStatusObj() );
catStatus.push( new catStatusObj() );
catStatus.push( new catStatusObj() );
//token = 0;
token = mw.user.tokens.get( 'editToken' );
// Inizializzazione stato del bot
currentAppStatus = 'iniziaLetturaPDC';
nextAppStatus = '';
// Il codice viene eseguito ogni 100 ms fino alla conclusione
interval = setInterval(function() {
d = new Date();
switch( currentAppStatus )
{
case 'gestioneCategorieGiornaliere':
// Avvio la gestione delle categorie giornaliere
messages.push('['+d.toISOString()+'] *** Gestione delle categorie giornaliere ***');
// Leggo le categorie in parallelo
creazioneCategorie('semplificate', new Date(), 7, catStatus[0]);
creazioneCategorie('consensuali', new Date(), 7, catStatus[1]);
creazioneCategorie('consprorogate', new Date(), 7, catStatus[2]);
creazioneCategorie('ordinarie', new Date(), 7, catStatus[3]);
summary = 'Bot: creazione/aggiornamento categorie di servizio';
currentAppStatus = 'runningCategorie';
// Stato da eseguire quando le categorie giornaliere saranno processate
nextAppStatus = 'gestioneCategorieMensili';
// ic è il numero delle sessioni in parallelo
ic = 4;
break;
case 'gestioneCategorieMensili':
// Avviso la gestione delle categorie
messages.push('['+d.toISOString()+'] *** Gestione delle categorie mensili ***');
catStatus[0] = new catStatusObj();
creazioneCategorieMese(d.getFullYear(), catStatus[0])
summary = 'Bot: creazione/aggiornamento categorie di servizio';
currentAppStatus = 'runningCategorie';
nextAppStatus = 'gestioneCategorieAnnuali';
ic = 1;
break;
case 'gestioneCategorieAnnuali':
// Avviso la gestione delle categorie
messages.push('['+d.toISOString()+'] *** Gestione delle categorie annuali ***');
catStatus[0] = new catStatusObj();
creazioneCategorieAnno(d.getFullYear(), catStatus[0])
summary = 'Bot: creazione/aggiornamento categorie di servizio';
currentAppStatus = 'runningCategorie';
nextAppStatus = 'finish';
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;
case 'scrittura':
if( writeData.length > 0 )
{
iw = 0;
writeStatus = new writeStatusObj();
scriviPagina(writeData[0].title, writeData[0].text, summary, token, writeStatus);
currentAppStatus = 'runningScrittura';
}
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, summary, token, writeStatus);
}
else
currentAppStatus = nextAppStatus;
}
break;
case 'iniziaLetturaPDC':
PDC_Date = new Date(2013,8,10);
day_counter = 0;
currentAppStatus = 'leggiGiorno';
PDC_Status = [];
PDC_Errors = [];
for(var i=0; i < tipologie.length; i++)
PDC_Status.push( new readPDCStatusObj() );
for(var i=0; i < tipologie.length; i++)
iniziaLetturaCategoriaPDC(tipologie[i], 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], 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);
console.log(messages);
}
else
{
procedure = [];
for(var i=0; i < tipologie.length; i++)
procedure[tipologie[i]] = processLetturaCategoriaPDC(tipologie[i], PDC_Status[i].rawData);
console.log(procedure);
}
// TODO Gestione del giorno successivo
currentAppStatus = 'finish';
}
break;
case 'finish':
clearInterval(interval);
}
},100);
}