Forum » Programiranje » javascript - gnezdenje - konkretno na mojem primeru
javascript - gnezdenje - konkretno na mojem primeru

Joze_K ::
Lp,
predelujem eno scripto / pa sem totalen noob v javascriptu
skratka, kako naj dodam še en kriterij za sortiranje
originalno je tako:
rad bi dodal še sortiranje po //rating//
če predelam zgornji zapis tako da besedo genre preimenujem v rating
mi deluje sortiranje po ratingu, ne vem pa kako naj obdelam ta ukaz da bo vsebovalo in rating in genre....
prosim za pomoč in hvala,
Jože
predelujem eno scripto / pa sem totalen noob v javascriptu
skratka, kako naj dodam še en kriterij za sortiranje
originalno je tako:
var sortType = filterTool.selected == filterTool.genre?'genre:first':(filterTool.selected == filterTool.year?'year:first':'title:last');
rad bi dodal še sortiranje po //rating//
če predelam zgornji zapis tako da besedo genre preimenujem v rating
var sortType = filterTool.selected == filterTool.rating?'rating:first':(filterTool.selected == filterTool.year?'year:first':'title:last');
mi deluje sortiranje po ratingu, ne vem pa kako naj obdelam ta ukaz da bo vsebovalo in rating in genre....
prosim za pomoč in hvala,
Jože

Joze_K ::
var filterTool = { name: null, year: null, genre: null, rating: null, input: null, selected: null, reverse: false, init: function() { $('#filter').css('visibility', 'visible'); this.name = $('#filter_name'); this.year = $('#filter_year'); this.genre = $('#filter_genre'); this.rating = $('#filter_rating'); this.input = $('#filter_input'); this.count = $('#filter_count'); this.name.click(this.filter); this.year.click(this.filter); this.genre.click(this.filter); this.rating.click(this.filter); this.input.keyup(this.filter); this.name.click(); }, filter: function(e){ if(e.target != filterTool.input.get(0)){ if(!filterTool.selected || filterTool.selected.get(0) != e.target){ if(filterTool.selected) filterTool.selected.removeClass('disabled'); if(e.target == filterTool.name.get(0)) filterTool.selected = filterTool.name; else if(e.target == filterTool.year.get(0)) filterTool.selected = filterTool.year; else if(e.target == filterTool.genre.get(0)) filterTool.selected = filterTool.genre; else if(e.target == filterTool.rating.get(0)) filterTool.selected = filterTool.rating; filterTool.selected.addClass('disabled'); }else { filterTool.reverse = !filterTool.reverse && filterTool.selected && e.target == filterTool.selected.get(0); } } else if(e.keyCode != 13) return; var sortType = filterTool.selected == filterTool.genre?'genre:first':(filterTool.selected == filterTool.year?'year:first':'title:last'); //**** tukaj bi NEKAKO VKOMPONIRAL ŠE rating var sortType = filterTool.selected == filterTool.rating?'rating:first':(filterTool.selected == filterTool.year?'year:first':'title:last'); //**** var fStr = filterTool.input.val(); var arr = !fStr?rawXML.find('movie,tvshow'):rawXML.find("movie > title:contains('" + fStr + "'),tvshow > title:contains('" + fStr + "')").parent(); arr.sort(function(a, b){ var at = $(a).find(sortType).text(); var bt = $(b).find(sortType).text(); if(sortType == 'year:first'){ if($(a).get(0).tagName == 'tvshow') at = $(a).find('premiered:first').text().substr(0,4); else if($(b).get(0).tagName == 'tvshow') bt = $(b).find('premiered:first').text().substr(0,4); at = parseInt(at); bt = parseInt(bt); } if(at < bt) return filterTool.reverse?1:-1; if(at > bt) return filterTool.reverse?-1:1; return 0; }); // movies = []; videoSmallInfo.hide(); itemSel = null; $(itemCont).empty(); arr.each(function(){ movies.push(new videoItem($(this))); }); if(movies.length > 0) movies[0].select(); filterTool.count.text(movies.length + ' flm.'); window_RESIZE(null); } }
hm,... to je cel del, ki me muči
Zgodovina sprememb…
- spremenil: Joze_K ()

ales85 ::
sortType lahko uporabiš kot polje in notri shraniš več vrednosti, nato pa preverjaš kateri filter se pojavi v tem polju.

Joze_K ::
sortType lahko uporabiš kot polje in notri shraniš več vrednosti, nato pa preverjaš kateri filter se pojavi v tem polju.
Hja,...
ampak del mojega nagovora je bil - totalni "noob" sem v JS
kako to izvesti....
(mah če ne bo drugače bom ven vrgel sortiranje po GENRE in dal notri po RATING - gre namreč za prikaz XML baze, ki je narejena kot Backup NAS sistema, v browserju - in je uporabno če lahko sortiraš npr. po IMDB ocenah, precej bolj kot po vrsti)
še lepše pa bi bilo če bi bile obe opcije...
kot kaže je JAVASCRIPT precej nepoznano področje...


geca ::
Spodnji špeh conditional statementov ...
... zapiši kot ...
... in javi, če špila.
var sortType = filterTool.selected == filterTool.genre?'genre:first':(filterTool.selected == filterTool.year?'year:first':'title:last');
... zapiši kot ...
var sortType = 'title:last'; // Privzeto po naslovu. // Grdo. :( Bomo lepšali, če deluje. ;) if (filterTool.selected === filterTool.rating) { sortType = 'rating:first'; } else if (filterTool.selected === filterTool.year) { sortType = 'year:first'; } else if (filterTool.selected === filterTool.genre) { sortType = 'genre:first'; }
... in javi, če špila.
Zgodovina sprememb…
- spremenil: geca ()

Joze_K ::
HVALA, HVALA, HVALA, HVALA, HVALA, HVALA, HVALA, HVALA, HVALA, HVALA, HVALA, HVALA, HVALA, HVALA, HVALA, ....
It's ALIVE
Kapo dol,...
ima JS majstora....
(porka mater, zdaj še meni enostavno izgleda, ko vidim tvojo kodo....)
HVALA,
It's ALIVE
Kapo dol,...
ima JS majstora....
(porka mater, zdaj še meni enostavno izgleda, ko vidim tvojo kodo....)

HVALA,

Spodnji špeh conditional statementov ...
var sortType = filterTool.selected == filterTool.genre?'genre:first':(filterTool.selected == filterTool.year?'year:first':'title:last');
... zapiši kot ...
var sortType = 'title:last'; // Privzeto po naslovu.
// Grdo. :( Bomo lepšali, če deluje. ;)
if (filterTool.selected === filterTool.rating) {
sortType = 'rating:first';
} else if (filterTool.selected === filterTool.year) {
sortType = 'year:first';
} else if (filterTool.selected === filterTool.genre) {
sortType = 'genre:first';
}
... in javi, če špila.

Joze_K ::
@geca
še mogoče kako tole naredim?
originalno posamezno spremenljivko vpiše v arr = [] tako:
torej rad bi sestavljen NIZ imel - vpisan v Kvaliteta
npr. kvaliteta videa: 1980 x 1024 / h264
to so podatki XML spremeljivk width, height, codec
četudi se codec pojavlja dvakrat - enkrat kot video - codec in enkrat kot audio - codec
še mogoče kako tole naredim?
K1 = xDoc.find('width:not(:empty)').each(function(){ if(arr.indexOf($(this).text()) < 0) arr.push($(this).text()); }); K2 = xDoc.find('height:not(:empty)').each(function(){ if(arr.indexOf($(this).text()) < 0) arr.push($(this).text()); }); K3 = xDoc.find('codec:not(:empty)').each(function(){ if(arr.indexOf($(this).text()) < 0) arr.push($(this).text()); }); Kvaliteta = K1 + " x " + K2 + " / " + K3 arr = []; ??? dvC.find('.sub:eq(11) span').text(arr.join(Kvaliteta));
originalno posamezno spremenljivko vpiše v arr = [] tako:
arr = []; xDoc.find('dateadded:not(:empty)').each(function(){ if(arr.indexOf($(this).text()) < 0) arr.push($(this).text()); }); dvC.find('.sub:eq(10) span').text(arr.join(', '));
torej rad bi sestavljen NIZ imel - vpisan v Kvaliteta
npr. kvaliteta videa: 1980 x 1024 / h264
to so podatki XML spremeljivk width, height, codec
četudi se codec pojavlja dvakrat - enkrat kot video - codec in enkrat kot audio - codec

geca ::
Ni problema. :) Poskusi tako:
Kvaliteta = K1 + " x " + K2 + " / " + K3; // Npr. 1980 x 1024 / h264 dvC.find('.sub:eq(11) span').text(Kvaliteta);

Joze_K ::
napiše mi tole kot rezultat:
Kvaliteta: [object Object] x [object Object] / [object Object]
Kvaliteta: [object Object] x [object Object] / [object Object]

geca ::
Kaj pa tole?
arr = []; K1 = xDoc.find('width:not(:empty)').each(function(){ if(arr.indexOf($(this).text()) < 0) arr.push($(this).text()); }); K2 = xDoc.find('height:not(:empty)').each(function(){ if(arr.indexOf($(this).text()) < 0) arr.push($(this).text()); }); K3 = xDoc.find('codec:not(:empty)').each(function(){ if(arr.indexOf($(this).text()) < 0) arr.push($(this).text()); }); Kvaliteta = arr[0] + " x " + arr[1] + " / " + arr[2]; dvC.find('.sub:eq(11) span').text(Kvaliteta);
Zgodovina sprememb…
- spremenil: geca ()

Joze_K ::
ok, zdaj sva že blizu....
tole dobim:
Kvaliteta: 656 x 352 / div3 - rad pa bi še audio info tole / mp3
Kvaliteta: 1920 x 1040 / avc1 / aac
da na koncu še audio codec napiše, zanimivo bi bilo, da bi izpisal oba tako kot sem zgoraj odebeljeno napisal...
struktura XML pa je tale // ni isto za tista dva primera zgoraj - kako naj mu povem da naj zdaj še audio codec išče...
oz. po logiki verjetno išče sedaj naslednjo besedo codec - bom poskusil dodati
@geca hvala ti...
tole dobim:
Kvaliteta: 656 x 352 / div3 - rad pa bi še audio info tole / mp3
Kvaliteta: 1920 x 1040 / avc1 / aac
da na koncu še audio codec napiše, zanimivo bi bilo, da bi izpisal oba tako kot sem zgoraj odebeljeno napisal...
struktura XML pa je tale // ni isto za tista dva primera zgoraj - kako naj mu povem da naj zdaj še audio codec išče...
oz. po logiki verjetno išče sedaj naslednjo besedo codec - bom poskusil dodati
streamdetails-video-codec/h264/ streamdetails-audio-codec/ac3
@geca hvala ti...
Zgodovina sprememb…
- spremenil: Joze_K ()

Joze_K ::
jap deluje tako kot sem si mislil, kar še enkrat dodam naj bere codec in bere naslednjega v strukturi
tole je rezultat:
Kvaliteta: 640 x 352 / video: xvid / audio: mp3
tole pa koda:
če bom pri svojih modifikacijah še kje "zbremzal" se slišiva,....
zaenkrat pa @geca hvala ti...
tole je rezultat:
Kvaliteta: 640 x 352 / video: xvid / audio: mp3
tole pa koda:
K4 = xDoc.find('codec:not(:empty)').each(function(){ if(arr.indexOf($(this).text()) < 0) arr.push($(this).text()); }); Kvaliteta = arr[0] + " x " + arr[1] + " / video: " + arr[2] + " / audio: " + arr[3];
če bom pri svojih modifikacijah še kje "zbremzal" se slišiva,....
zaenkrat pa @geca hvala ti...

Joze_K ::
nova ideja, nov izziv...
ko so bili filmi dodani v KODI / XBMC so potegnili Info z interneta TheMoviedb.org - med drugim tudi oceno...
link pa je podan na IMDB / kjer so ocene rahlo različne....
a je mogoče z javascriptom potegniti tudi oceno z IMDBja...moti me namreč, da so TheMoviedb.org ocene precej nižje od IMDB, dodatno pa se ocena seveda spreminja, ko več ljudi glasuje
sem gledal in je koda na strani taka:
link do strani na kateri je koda, pa že imam podatek v XML-u
npr:
Video ID: tt3168230
ko so bili filmi dodani v KODI / XBMC so potegnili Info z interneta TheMoviedb.org - med drugim tudi oceno...
link pa je podan na IMDB / kjer so ocene rahlo različne....
a je mogoče z javascriptom potegniti tudi oceno z IMDBja...moti me namreč, da so TheMoviedb.org ocene precej nižje od IMDB, dodatno pa se ocena seveda spreminja, ko več ljudi glasuje
sem gledal in je koda na strani taka:
<div class="ratingValue"> <strong title="7,0 based on 24.736 votes"><span itemprop="ratingValue">7,0</span></strong><span class="grey">/</span><span class="grey" itemprop="bestRating">10</span> </div>
link do strani na kateri je koda, pa že imam podatek v XML-u
npr:
Video ID: tt3168230

geca ::
CORS lahko zaobideš tako, da zahtevo na IMDB izvedeš na strani strežnika (PHP oz. karkoli že predstavlja tvoj backend).
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Kontakt obrazecOddelek: Izdelava spletišč | 2094 (1939) | betmen |
» | [Java]Problem z vektorjemOddelek: Programiranje | 1532 (1401) | KernelPanic |
» | [android] vstavljanje slikeOddelek: Programiranje | 1282 (1179) | messi |
» | python -slovarOddelek: Programiranje | 3190 (2169) | Valex86 |
» | Jquery scrollable menu keyboard navigacijaOddelek: Izdelava spletišč | 765 (652) | Binji |