/** * Formulář pro vytvoření nového metaatributu * @return Form */ protected function createComponentNewMetaAttributeForm() { $form = new Form(); $metaAttributeName = $form->addText('metaAttributeName', 'Meta-attribute name:')->setRequired()->setAttribute('class', 'normalWidth'); $metaAttributeName->addRule(Form::MIN_LENGTH, 'Min length of meta-attribute name is %s characters!', 3); $metaAttributeName->addRule(function (TextInput $control) { try { $metaAttribute = $this->metaAttributesFacade->findMetaAttributeByName($control->value); if ($metaAttribute instanceof MetaAttribute) { return false; } } catch (\Exception $e) { /*chybu ignorujeme (nenalezený metaatribut je OK)*/ } return true; }, 'Meta-attribute with this name already exists!'); $formatName = $form->addText('formatName', 'Format name:')->setRequired()->addRule(Form::MIN_LENGTH, 'Min length of format name is %s characters!', 3); $formatName->setAttribute('class', 'normalWidth'); $form->addHidden('datasource'); $form->addHidden('column'); $form->addCheckbox('formatShared', 'Create shared (standard) format'); $form->addSelect('formatType', 'Values range:', array('interval' => 'Continuous values (interval)', 'values' => 'Distinct values (enumeration)'))->setAttribute('class', 'normalWidth'); $submit = $form->addSubmit('create', 'Create meta-attribute'); $submit->setValidationScope(array($metaAttributeName, $formatName)); /*$form->onSubmit[]=function(Form $form){ exit(var_dump($form->getErrors())); };*/ $submit->onClick[] = function (SubmitButton $button) { $values = $button->form->values; try { $datasource = $this->datasourcesFacade->findDatasource($values->datasource); $datasourceColumn = $this->datasourcesFacade->findDatasourceColumn($datasource, $values->column); $this->databasesFacade->openDatabase($datasource->getDbConnection()); $datasourceColumnValuesStatistics = $this->databasesFacade->getColumnValuesStatistic($datasource->dbTable, $datasourceColumn->name); $format = $this->createMetaAttributeFromDatasourceColumn($values->metaAttributeName, $values->formatName, $datasourceColumn, $datasourceColumnValuesStatistics, @$values->formatType, @$values->formatShared); $datasourceColumn->format = $format; $this->datasourcesFacade->saveDatasourceColumn($datasourceColumn); } catch (\Exception $e) { $this->flashMessage($this->translator->translate('MetaAttribute creation failed.')); } $this->redirect('Close'); }; $storno = $form->addSubmit('storno', 'Storno'); $storno->setValidationScope(array()); $storno->onClick[] = function (SubmitButton $button) { $values = $button->form->values; $this->redirect('SelectMetaAttribute', array('datasource' => $values->datasource, 'column' => $values->column)); }; $form->onError[] = function ($form) { $values = $form->values; $this->handleNewMetaAttribute($values->datasource, $values->column); }; return $form; }