Files
Mimante/Mimante/Examples/Pensofal Biostone Tegamino - Bidoo_files/manageBackBrowser.js.download
T
Alby96 ee67bedc31 Aggiunta calcolo valore prodotto e miglioramenti UI
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.
2025-11-21 16:55:21 +01:00

91 lines
3.0 KiB
Plaintext

/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Other/javascript.js to edit this template
*/
/*
* element: identificativo che intendiamo trattare. es. saldo puntate
* Target: div dove sarà visualizzato l'element
* Value: valore dell'element ottenuto dal server al caricamento della pagina
* archive: archiviazione che si intende dare agli elementi. es. sessionStorage
*/
window.manageBackBrowser = (function () {
let _element = null;
let _target = null;
let _currentUrl = window.location.href;
let _value = null;
function init (element, target, value, isLogged){
_element = element;
_target = target;
_value = parseInt(value);
//controllo errori per essere sicuro che tutto proceda bene
if(!isError(_element, _target, _value, isLogged)){
manage();
}
}
function isError(element, target, value, isLogged){
let error = false;
if(isLogged === true && document.getElementById('NickLoggato') === null){
console.error('utente non loggato');
error = true;
}
if(!Number.isInteger(value)){
console.error('value non è un intero');
error = true;
}
if(element.indexOf(' ') >= 0){
console.error('element non può contenere spazi');
error = true;
}
if(document.querySelectorAll(target) === null){
console.error('target passato non corrisponde ad alcun un elemento nel dom');
error = true;
}
return error;
}
function manage(){
if(sessionStorage.getItem('prelastUrl'+_element) == _currentUrl ){
// uso il valore dal sessionStorage
let elementStorage = parseInt(sessionStorage.getItem(_element));
if(Number.isInteger(elementStorage)){
//TODO controllare che sia un solo elemento, altrimenti metterlo in un ciclo
let elements = document.querySelectorAll(_target);
for (let i=0; i < elements.length; i++){
elements[i].innerText = elementStorage;
}
clearData();
}
}else{
// setto il saldo delle puntate a livello di sessionStorage
sessionStorage.setItem(_element, parseInt(_value));
}
updateQueue();
}
function updateQueue(){
let lastUrl = sessionStorage.getItem('lastUrl'+_element);
sessionStorage.setItem('prelastUrl'+_element, lastUrl);
sessionStorage.setItem('lastUrl'+_element, _currentUrl);
}
function clearData(){
sessionStorage.setItem('prelastUrl'+_element, null);
sessionStorage.setItem('lastUrl'+_element, null);
sessionStorage.setItem(_element, null);
}
return {
init: init
};
})();