vkriznar / pronalUI

Repozitorij za projekt ProNal v katerem bomo naredili uporabniški vmesnik za sestavljanje nalog v Pythonu.
MIT License
2 stars 0 forks source link

preoštevilčenje nalog po želji uporabnika #12

Closed rkozelj closed 6 years ago

rkozelj commented 6 years ago

Nekje na vmesniku (recimo zgornji desni kot) bi blo dobr, da bi pri vsaki podnalogi obstajov okenček, kamor bi se, ko se vmesnik odpre, samodejno napisale številke podnalog. Potem bi pa lahko uporabnik te številke spreminjal, se pravi bi zamenjav vrstni red podnalog. Verjetno bi blo dobr, da se to nardi z gumbom, se prav ko je zadovoljen s tem, kako je oštevilču podaloge, bi kliknu na gumb "preoštevilči podnaloge" in bi se tiste številke zapisane v okenčkih uveljavle, se prav bi se vse številke na zavihkih mogle posodobit v tiste, ki so v okvirčkih. V problem.py je definriana metoda renumbering_parts, ki sprejme seznam, v katerem so zapisane nove številke podnalog, in jih glede na te številke prerazporedi.

vkriznar commented 6 years ago

Zdej ko delam na temu, se mi zdi, da bi bilo bolje če bi vsakič, ko bi spremenil eno številko podnaloge bi se vse druge avtomaticno posodobile, podobno kot pri tem če se izbriše naloga. Ker če bi hoteli naresti na zgoraj opisan način bi se uporabnik lahko zmotil in dvakrat vpisal isto številko na dveh podnalogah, prav tako bi se mogel posodobiti part_num da bi ta številka, ki jo je vpisal ostala spremenjena, ne da bi vpisal na mestu 1, 2 ko bi se pa stran osvežila bi pa spet pisalo 1.

vkriznar commented 6 years ago

Jaz bi naredil tako, da če uporabnik spremeni manjše število v večjo (1->4) se vse številke manjše od 5 premaknejo za ena dol (2->1, 3->2, 4->3) in obratno, torej se premaknejo za 1 gor če spremeniš večjo število v manjšo.

rkozelj commented 6 years ago

Če boš takoj posodabljal številke bo zagotovo prišlo do tega, da bosta dve nalogi imeli isto številko. Že če hočeš recimo zamenjat nalogo 3 v 2 in 2 v 3 boš najprej recimo nalogo 3 preoštevilčil v 2, bosta v tem trenutku obstajali dve nalogi s številko 2 in nobena s številko 3. Ti bi potem vse naloge, ki imajo številke večje od 3 verjetno zmanšjal za 1, kaj boš pa naredil z eno odvečno dvojko?

Ali pa če hočeš recimo 4 spremenit v 8, 8 v 1 in 1 v 4. Ne vem kako bo uporabnik to naredil, če boš ob vsaki spremembi ene številke že posodobil ostale?

Js sm si nekak zamisnla, da se v trenutku, ko se klikne gumb "preoštevilči" ustvaru en seznam vseh novih številk. Recimo če so na datoteki 4 podnaloge in si zamenjal 4 v 1 in 1 v 4, bo to seznam [4, 2, 3, 1] oziroma [3, 1, 2, 0] in bi se potem samo sprehodil čez ta seznam in prvo nalogo preimanoval v 4, 2 v 2, 3 v 3, in 4 v 1. Še prej bi pa lahko pogledal če sta v seznamu 2 enaki številki in če sta, loh kr takoj javš napako, da more met vsaka naloga drugačno številko.

rkozelj commented 6 years ago

hm, ok, če bi naredu tko kukr si napisu, bi mogu pa vedno preoštevilčt vse številke med tistima dvema k jih spreminjaš, recimo če maš 7 podnalog [1, 2, 3, 4, 5, 6, 7] in nardiš 3->6, morš dobit [1, 2, 6, 3, 4, 5, 7], se prav vsa števila > 3 in vsa <= 6 morjo it za ena dol, s tem da morš zmanjšat za ena preden narediš 3->6, da ne bo kej narobe preoštevilčen.

Ob spremembi 6->3 (pri začetnem [1, 2, 3, 4, 5, 6, 7] ) bi mogu dobit pa [1, 2, 4, 5, 6, 3, 7], se prav bi vsa števila, ki so => 3 in < 6 povečal za ena, s tem da morš spet pazt, da najprej preoštevilčš pa prov nardiš spremembo.

Sam po tem načinu je zlo težko delat spremembe, recimo swap dveh ali treh števil nardit, ker morš dost razmišlat, kaj je nasledna stvar, k jo morš sprement. Če hočš nardit recimo 1->4 in 4->1 in se ti že pr 1->4 vse spremeni... Se mi zdi, da je za uporabnika ta način dost bl kompliciran za uporabo.

vkriznar commented 6 years ago

Lahko tko naredimo, da kot si rekla, če vpiše vse spremembe, se te zgodijo, če pa samo eno, npr. da hoče spremeniti 4 v 1 pa pozabi spremeniti 1 v 4, da se ob sami spremembi 4 v 1 številki zamenjata. Zdej jst sm naredu tist kar sm zgoraj napisal, vendar bl kot to da uporabnik rabi razmišljati kako bo permutiral, da bo dobil željen vrstni red, pride problem pri osveževanju strani. Ker če uporabnik pozabil kšne izmed strani osvežiti in se te posodobijo je čudno. Sicer sem napisal tako da sem upošteval da v prvo pozabi osvežiti strani, vendar pa bi blo za 2. nivo to preveč. Tako da bom naredil tako, da ko uprabnik vpiše spremembo na strani 4 v 1 bo v nek seznam dodan slovar z key 4 in value 1.

rkozelj commented 6 years ago

Ne vem, al misliš obdržat to, da te stran skos sprašuje, če hočš preoštevilčt nalogo, k men se to zdi dost nadležno :) Bi blo bolš, da se preoštevilč vse, samo kadar se klikne gumb.

Drgač pa sicer loh nardimo tko, da če človek spremeni samo 4 v 1 in pol klikne, da se s tem tudi 1 preimenuje v 4, samo se bojim da bo pr kšnih zahtevnejših permutacijah (recimo 1->4, 4->6, 6->1) pršlo do težav, če bomo mi sami že neki po svoje preoštevilčl, ker lahko da bo uporabnik mel s tem več problemov kot koristi. Pomoje je bolš, če bi mu enostavno vrnemo error, da ma trenutno dve nalogi z isto številko in da more popravt.

Pa pr teh errorih mormo poleg tega, če se pojavljajo iste številke večkrat, prevert tut to, če so notr vse številke od 1 do len(slovar), se prav da ni slučajno naredu nalog 1, 2, 4 in 5, namesto 1, 2, 3 in 4. Ker to bo pol pr ns sprožl napako, k bomo hotl dostopat do naloge 5, v seznamu s 4imi nalogami.

(loh recimo preverš oboje kr s tem: sorted(slovar)==sorted(slovar.values())==[i for i in range(1, len(slovar)+1])

Men se zdi prvič bl enostavn, da za vse čudne stvari kr error vržemo, pa tut pomoje bo za uporabnika bolš, da sam nardi tko da bo prov, kukr da mi v ozadju neki čaramo.

vkriznar commented 6 years ago

Ja to sm meu napisan za takrat, ko se je potem avtomaticno vse preuredil, ker se ni blo gumba da se shrani spremembe.

MitjaR commented 6 years ago

Če ne bo šlo pa bo uporabnik ročno v datoteki. Jaz sem nekaj razmišljal in bi lahko naredili to v svojem zavihtku. Se pravi kot nekakšno pop-out okno kjer uporabnik lahko to naredi.

Ampak v resnici to ni tako pomembna funkcionalnost, da se bi bilo potrebno obremenjevati, saj je to zelo enostavno narediti tudi na sami datoteki.

rkozelj commented 6 years ago

S tem se ne bomo ukvarjali, izbrišemo kar imamo