Implementato il calcolo del valore reale dei prodotti in asta, includendo il prezzo "Compra Subito", spese di spedizione e risparmio stimato. Aggiunta una nuova sezione "Info Prodotto" nella UI per visualizzare i dettagli estratti e i calcoli. - **AuctionMonitorControl.xaml**: Aggiunta sezione fissa per mostrare informazioni prodotto e calcolo valore. - **AuctionMonitorControl.xaml.cs**: Gestiti eventi per il caricamento e aggiornamento delle informazioni prodotto. - **MainWindow**: Integrati handler per il calcolo e refresh delle informazioni prodotto. - **AuctionInfo.cs**: Aggiunte proprietà per gestire prezzo "Compra Subito", spese di spedizione e limiti di vincita. - **ProductValueCalculator.cs**: Nuova utility per calcolare il valore del prodotto e parsare informazioni dall'HTML. - **AuctionViewModel.cs**: Binding per visualizzare risparmio, costo totale e convenienza nella UI. - **Documentazione**: Aggiornata con dettagli sull'algoritmo di calcolo e layout UI. Fix: - Risolto problema di encoding UTF-8 per emoji nella UI. - Migliorato parsing HTML per prezzi e limiti di vincita. TODO: - Testare parsing su più aste e gestire edge cases. - Implementare caricamento automatico delle informazioni.
140 lines
6.7 KiB
Plaintext
140 lines
6.7 KiB
Plaintext
function formattaPrezzo(sValue) {
|
|
"use strict";
|
|
if(!isNaN(sValue)) {
|
|
var iEuro = parseInt(parseInt(sValue) / 100);
|
|
var iCents = parseInt(parseInt(sValue) - (iEuro * 100)).toString();
|
|
var sCents = '';
|
|
if(iCents == 0) {
|
|
sCents = '00';
|
|
} else if((iCents < 10) && (iCents >= 0)) {
|
|
sCents = '0' + iCents;
|
|
} else {
|
|
sCents = iCents;
|
|
}
|
|
return iEuro.toString() + "," + sCents;
|
|
}
|
|
}
|
|
|
|
function FormattaOraGiorni(sGiorni, sOre, sMinuti, sSecondi) {
|
|
"use strict";
|
|
return(sGiorni > 9 ? sGiorni : '0' + sGiorni) + ':' + (sOre > 9 ? sOre : '0' + sOre) + ':' + (sMinuti > 9 ? sMinuti : '0' + sMinuti) + ':' + (sSecondi > 9 ? sSecondi : '0' + sSecondi);
|
|
}
|
|
|
|
function FormattaOra(sMinuti, sSecondi) {
|
|
"use strict";
|
|
return(sMinuti > 9 ? sMinuti : '0' + sMinuti) + ':' + (sSecondi > 9 ? sSecondi : '0' + sSecondi);
|
|
}
|
|
|
|
function FormattaOraCompleto(sOre, sMinuti, sSecondi) {
|
|
"use strict";
|
|
return(sOre > 9 ? sOre : '0' + sOre) + ':' + (sMinuti > 9 ? sMinuti : '0' + sMinuti) + ':' + (sSecondi > 9 ? sSecondi : '0' + sSecondi);
|
|
}
|
|
|
|
function FormattaOraGiorniPromo(sGiorni, sOre, sMinuti, sSecondi) {
|
|
"use strict"
|
|
var visibilityDays = sGiorni<=0 ? 'hidden' : '';
|
|
var visibilityHours = sOre<=0 ? 'hidden' : '';
|
|
return "<div class='welc_timebox_marg "+visibilityDays+"'><div class='welc_timebox_num'>" + (sGiorni > 9 ? sGiorni : '0' + sGiorni) + "</div><div class='welc_timebox_text'>Giorni</div></div>" + " " + "<div class='welc_timebox_marg "+visibilityHours+"'><div class='welc_timebox_num'>" + (sOre > 9 ? sOre : '0' + sOre) + "</div><div class='welc_timebox_text'>Ore</div></div>" + " " + "<div class='welc_timebox_marg'><div class='welc_timebox_num'>" + (sMinuti > 9 ? sMinuti : '0' + sMinuti) + "</div><div class='welc_timebox_text'>Minuti</div></div>" + " " + "<div class='welc_timebox_nomarg'><div class='welc_timebox_num'>" + (sSecondi > 9 ? sSecondi : '0' + sSecondi) + "</div><div class='welc_timebox_text'>Secondi</div></div>";
|
|
}
|
|
|
|
function FormattaOraBenv(sOre, sMinuti, sSecondi) {
|
|
"use strict"
|
|
return "<div class='welc_timebox_marg'><div class='welc_timebox_num'>" + (sOre > 9 ? sOre : '0' + sOre) + "</div><div class='welc_timebox_text'>Ore</div></div>" + " " + "<div class='welc_timebox_marg'><div class='welc_timebox_num'>" + (sMinuti > 9 ? sMinuti : '0' + sMinuti) + "</div><div class='welc_timebox_text'>Minuti</div></div>" + " " + "<div class='welc_timebox_nomarg'><div class='welc_timebox_num'>" + (sSecondi > 9 ? sSecondi : '0' + sSecondi) + "</div><div class='welc_timebox_text'>Secondi</div></div>";
|
|
}
|
|
|
|
function formattaDataStorico(stamp) {
|
|
"use strict";
|
|
var ris = parseInt(stamp) * 1000;
|
|
var dataStorico = new Date(ris);
|
|
var slDay = (dataStorico.getDate() < 10) ? "0" : "";
|
|
var slMonth = (dataStorico.getMonth() < 9) ? "0" : "";
|
|
return(slDay + dataStorico.getDate() + '/' + slMonth + (dataStorico.getMonth() + 1) + '/' + dataStorico.getFullYear());
|
|
}
|
|
|
|
var mesi = ['Gennaio','Febbraio','Marzo','Aprile',
|
|
'Maggio','Giugno','Luglio','Agosto',
|
|
'Settembre','Ottobre','Novembre','Dicembre'];
|
|
|
|
function tomorrToday(nowstamp, scadstamp) {
|
|
"use strict";
|
|
var adesso = parseInt(nowstamp) * 1000;
|
|
var domani = (parseInt(nowstamp) * 1000) + 86400000;
|
|
var scadenza = parseInt(scadstamp) * 1000;
|
|
var adesso_data = new Date(adesso);
|
|
var domani_data = new Date(domani);
|
|
var scadenza_data = new Date(scadenza);
|
|
var text_day = "";
|
|
var slHour = (scadenza_data.getHours() < 10) ? "0" : "";
|
|
var slMinute = (scadenza_data.getMinutes() < 10) ? "0" : "";
|
|
var data_format = scadenza_data.getDate() + ' ' + mesi[scadenza_data.getMonth()] + ' ';
|
|
if((scadenza_data.getDate() == adesso_data.getDate()) && (scadenza_data.getMonth() == adesso_data.getMonth()))
|
|
data_format = "Oggi alle ";
|
|
if((scadenza_data.getDate() == domani_data.getDate()) && (scadenza_data.getMonth() == domani_data.getMonth()))
|
|
data_format = "Domani alle ";
|
|
text_day = data_format + slHour + scadenza_data.getHours() + ':' + slMinute + scadenza_data.getMinutes();
|
|
return(text_day);
|
|
}
|
|
|
|
function tomorrTodayAdv(nowstamp, scadstamp) {
|
|
"use strict";
|
|
var adesso = parseInt(nowstamp) * 1000;
|
|
var domani = (parseInt(nowstamp) * 1000) + 86400000;
|
|
var scadenza = parseInt(scadstamp) * 1000;
|
|
var adesso_data = new Date(adesso);
|
|
var domani_data = new Date(domani);
|
|
var scadenza_data = new Date(scadenza);
|
|
var text_day = "";
|
|
var slHour = (scadenza_data.getHours() < 10) ? "0" : "";
|
|
var slMinute = (scadenza_data.getMinutes() < 10) ? "0" : "";
|
|
var data_format = 'il ' + scadenza_data.getDate() + ' ' + mesi[scadenza_data.getMonth()] + ' ';
|
|
if((scadenza_data.getDate() == adesso_data.getDate()) && (scadenza_data.getMonth() == adesso_data.getMonth()))
|
|
data_format = "Oggi ";
|
|
if((scadenza_data.getDate() == domani_data.getDate()) && (scadenza_data.getMonth() == domani_data.getMonth()))
|
|
data_format = "Domani ";
|
|
text_day = data_format + slHour + scadenza_data.getHours() + ':' + slMinute + scadenza_data.getMinutes();
|
|
return(text_day);
|
|
}
|
|
|
|
function hoursMinFormat(stamp) {
|
|
"use strict";
|
|
var ris = parseInt(stamp) * 1000;
|
|
var dataStorico = new Date(ris);
|
|
var slHour = (dataStorico.getHours() < 10) ? "0" : "";
|
|
var slMinute = (dataStorico.getMinutes() < 10) ? "0" : "";
|
|
return(slHour + dataStorico.getHours() + ':' + slMinute + dataStorico.getMinutes());
|
|
}
|
|
|
|
function formattaOraStorico(stamp) {
|
|
"use strict";
|
|
var ris = parseInt(stamp) * 1000;
|
|
var dataStorico = new Date(ris);
|
|
var slHour = (dataStorico.getHours() < 10) ? "0" : "";
|
|
var slMinute = (dataStorico.getMinutes() < 10) ? "0" : "";
|
|
var slSecond = (dataStorico.getSeconds() < 10) ? "0" : "";
|
|
return(slHour + dataStorico.getHours() + ':' + slMinute + dataStorico.getMinutes() + ':' + slSecond + dataStorico.getSeconds());
|
|
}
|
|
|
|
function formattaDataEOraStorico(stamp) {
|
|
"use strict";
|
|
var ris = parseInt(stamp) * 1000;
|
|
var dataStorico = new Date(ris);
|
|
var slDay = (dataStorico.getDate() < 10) ? "0" : "";
|
|
var slMonth = (dataStorico.getMonth() < 9) ? "0" : "";
|
|
var slHour = (dataStorico.getHours() < 10) ? "0" : "";
|
|
var slMinute = (dataStorico.getMinutes() < 10) ? "0" : "";
|
|
var slSecond = (dataStorico.getSeconds() < 10) ? "0" : "";
|
|
return(slDay + dataStorico.getDate() + '/' + slMonth + (dataStorico.getMonth() + 1) + '/' + dataStorico.getFullYear() + ' ' + slHour + dataStorico.getHours() + ':' + slMinute + dataStorico.getMinutes() + ':' + slSecond + dataStorico.getSeconds());
|
|
}
|
|
|
|
function formattaVerboseDataEOraStorico(stamp) {
|
|
"use strict";
|
|
var current = moment.unix(stamp);
|
|
return current.calendar(null,{
|
|
lastDay : '[Ieri alle] H:mm:ss',
|
|
sameDay : '[Oggi alle] H:mm:ss',
|
|
nextDay : '[Domani alle] H:mm:ss',
|
|
lastWeek : '[il] L [alle] H:mm:ss',
|
|
nextWeek : '[il] L [alle] H:mm:ss',
|
|
sameElse : '[il] L [alle] H:mm:ss'
|
|
});
|
|
} |