/**
  * Funkce vracející formulář pro vytvoření atributu na základě vybraného sloupce a preprocessingu
  * @return Form
  */
 protected function createComponentNewAttributeForm()
 {
     $form = new Form();
     $presenter = $this;
     $form->setTranslator($this->translator);
     $form->addHidden('miner');
     $form->addHidden('column');
     $form->addHidden('preprocessing');
     $form->addText('attributeName', 'Attribute name:')->setRequired('Input attribute name!')->addRule(Form::PATTERN, 'Attribute name can contain only letters, numbers and _ and has start with a letter.', '[a-zA-Z]{1}\\w*')->addRule(function (TextInput $input) {
         //kontrola, jestli již existuje atribtu se zadaným názvem
         $values = $input->getForm(true)->getValues();
         $miner = $this->findMinerWithCheckAccess($values->miner);
         $attributes = $miner->metasource->attributes;
         if (!empty($attributes)) {
             foreach ($attributes as $attribute) {
                 if ($attribute->name == $input->value) {
                     return false;
                 }
             }
         }
         return true;
     }, 'Attribute with this name already exists!');
     $form->addSubmit('submit', 'Create attribute')->onClick[] = function (SubmitButton $button) {
         $values = $button->form->values;
         $miner = $this->findMinerWithCheckAccess($values->miner);
         $this->minersFacade->checkMinerMetasource($miner);
         $attribute = new Attribute();
         $attribute->metasource = $miner->metasource;
         $attribute->datasourceColumn = $this->datasourcesFacade->findDatasourceColumn($miner->datasource, $values->column);
         $attribute->name = $values->attributeName;
         $attribute->type = $attribute->datasourceColumn->type;
         $attribute->preprocessing = $this->metaAttributesFacade->findPreprocessing($values->preprocessing);
         $attribute->active = false;
         $this->metasourcesFacade->saveAttribute($attribute);
         $metasourceTask = $this->metasourcesFacade->startAttributesPreprocessing($miner->metasource, [$attribute]);
         $this->redirect('preprocessingTask', ['id' => $metasourceTask->metasourceTaskId]);
     };
     $storno = $form->addSubmit('storno', 'storno');
     $storno->setValidationScope(array());
     $storno->onClick[] = function (SubmitButton $button) use($presenter) {
         //přesměrování na výběr preprocessingu
         $values = $button->form->getValues();
         $presenter->redirect('addAttribute', array('column' => $values->column, 'miner' => $values->miner));
     };
     return $form;
 }