Pozdrav,
zaigrao sam se malo i rekao bi da sam napravio nešto jako zanimljivo… i mnogo se dvoumim oko imena … i tu ću cijeniti sugestije.
Uglavnom, napravio sam nove tipove varijabli i za sada se tipovi varijabli zovu:
uservar x;
sticky y;
mirror z;
tabvar q;
uservar x - to je varijabla koja čuva stanja usera. Tako developer jednom kada definira tu varijablu, zna da će ga čekati ono što je definirao svaki puta kada je taj user logiran. Ne mora misliti o serveru, bazi podataka …ničemu.
sticky y - ovo je slično ko uservar varijabla, samo ostaje živjeti i nakon što se user odlogira. Ovdje neka komponenta može držati vlastita unutarnja stanja.
mirror z - ovo je varijabla koja je nalik sessionu, što se tiče dužine života. Samo je karakterizira to da je ista u svim paralelnim tabovima koje posjetioc otvori. Što olakšava izradu multitab aplikacija …jer što god korisnik napravi u jednom tabu, živo je i u drugom tabu. Uz ovu varijablu dolazi i event:
event.on("parallelMirroring_z", function(oldValue, newValue){
console.log('parallelMirroring detect changed value from $oldValue to $newValue');
});
U pitanje imenovanja ubacujem i ime eventa: (on
)"parallelMirroring
" ??
tabvar q - to je pak skroz slično varijabli mirror, samo sa jednom razlikom što se ova varijabla ne preslikava na svaki otvoreni tab, nego svaki tab ima svoju vrijednost ove varijable. Ovo je zapravo poprilično poput session varijable, jer se tako ponaša po dužini života. No ima jednu iznimku, kako sessioni u browseru žive posebno na svakom individualnom otvorenom tabu nezavisno od drugih tabova…tako i tabvar je isto nezavisan između tabova. Ali ako se tab podupla klikom srednjeg klika miša na reload button, onda se zapravo dobiva kopija otvorenog taba i nativni session na tom novom tabu je isti kao i na originalu te kopije.
Isto tako i tabvar je isti na kopiji taba kao na originalu …ali je za razliku od sessiona sinkroniziran između ta dva taba u real time …na isti način kao što je mirror varijabla sinkronizirana između svih otvorenih tabova.
Heto, cijenit ću prijedloge imena…i generalno bilo kakvo mišljenje.
Inače, radi se o novom (client-side) programskom jeziku kojeg ja pravim. …ma bit će bonbon. Ma već je.
Evo malo i sintakse:
"@use sticky coutner {default:0}";
"@use uservar name, age";
{
//async code...
if(!age) age = prompt("Hej $name, what age are you?"); //jednom definirane godine svaki puta će biti dostupne
//do something with age...
counter++; //brojač, interno stanje komponente. Nikada se ne resetira osim ako ga svjesno resetiramo.
"@set age,counter"; //stanja async varijabla je potrebno arhivirati set metodom nakon što želimo trajno sačuvati izmjene
}
"@use mirror text";
"@use tabvar options";
{
if(text) $("#myTextarea").value = text;
event.on("parallelMirroring_text", function(oldValue, newValue){
$("#myTextarea").value = text; // text je automatski ono što je newValue. To bi se desilo i da nismo koristili event.
// Event je tu samo da nas upozori da se neka varijabla promjenila u parallelnom tabu tako da možemo reagirati
// u ovom slučaju ažuriramo vrijednost u textarea.
// na ovaj način možemo kreirati aplikaciju gdje ćemo korisniku dopustiti da radi u više tabova, a nama se stanja neće poremetiti čak niti nakon
// relaodanja nekih od tih tabova.
});
// showOptions() - neka je to metoda koja pokazuje opcije texteditora u zavisnosti od stanja options varijable
showOptions(options); //korištenjem options tipa varijable "tabvar options" i "mirror text" omogućili smo da korisnik u svakom
//paralelnom tabu može raditi na istom tekstu, ali da su mu u svakom tabu prikazane one opcije kako ih je sebi prilagodio na tom tabu
//stanja mirror|tabvar nije potrebno spremati @set metodom ...jer su uvijek onakve kakve smo zadnji puta ostavili.
}