RangeSlider – Formularová komponenta

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
duskohu
Člen | 778
+
0
-

Caute, Urobil som formularovu komponentu postavenu na jQuery UI Slider – Range slider, kedze je to moje prve dielo tohto druhu, poprosil by som o konstruktivnu, ale zhovjevavu kritiku ;-)

Git, Git – demo, Demo

  • Pridal som custom init js cez data atribut a upravil trosku strukturu pre lepsie stylovanie

Editoval duskohu (13. 7. 2013 1:48)

kuzma88
Člen | 15
+
0
-

Prošel jsem to jen zběžně a namísto obecného array:

/** @var array */
protected $value = array();

/** @var array */
protected $range = array();

bych spíš použil něco ve smyslu

/** @var IRange */
protected $value = null;

/** @var IRange */
protected $range = null;
interface IRange
{
    function getStart(); // getMin
    function setStart(); // setMin
    function getEnd(); // getMax
    function setEnd(); // setMax
    function toArray(); // pokud by bylo potřeba
}
$form->addRangeSlider('rangeSlider', 'Set range', new Range(10, 100));

odpadne tahle celkem šílená kontrola

if (count($range) > 2)
{
     throw new InvalidArgumentException('The array $range can contain a maximum two values​​, max and min.');
}

a

	/**
	 * Is control filled?
	 * @return bool
	 */
	public function isFilled()
	{
		if (empty($this->value[0]) || empty($this->value[1])) {
			return FALSE;
		}
		return TRUE;
	}

	/**
	 * Is control filled?
	 * @return bool
	 */
	public function isFilled()
	{
		return !is_null($this->value);
	}

a bude to čitelnější a můžeš testovat vstupy zda se jedná o int či decimal a řeší to objekt a ne control.

Jen návrh a nezkoušel jsem implementovat. Určitě jsem něco nedomyslel a chce to ješte poladit :)

Editoval kuzma88 (28. 6. 2013 18:32)

duskohu
Člen | 778
+
0
-

@kuzma88 dakujem za komentar, pridal som teda datovu triedu Range, ale nepouzil som interface, nejako som to nepovazoval za potrebne. Kedze RangeSlider vracia objekt Range tak ani validacia isFilled() sa neda pouzit lebo nebude null.

frosty22
Člen | 373
+
0
-

Hezké, osobně bych neměl ani nic proti array, leč tedy objekt je samozřejmě hezčí, ale u formuláře se v pravidle typu range taky definuje rozsah pomocí pole, čili by to byla alespoň stejná syntax, ale cool použiji =)