MixedDataExtSelect
Jest to lista wyboru, której elementy definiujemy za pomocą SQL. Domyślnie jest opcja wyszukiwania jako pole tekstowe, ale także można rozwinąć listę.
Dodanie Obiektu
![Pole po rozwinięciu listy](/assets/mixed-data-ext-select-2-_wPyQF3O.png)
Poniższy fragment kodu dodaje obiekt MixedDataExtSelect do okienka dialogowego.
$obiekt = new MixedDataExtSelect($this->name.'emp_id');
$obiekt->withClearButton = TRUE;
$obiekt->showMixedContentInGroups = TRUE;
$obiekt->height = (Widget::DEFAULT_WIDGET_HEIGHT * 3 + 8).'px';
$obiekt->setLabel(Translator::translate('Użytkowników'));
$obiekt->placeholder = Translator::translate('Kliknij aby wyszukać');
$obiekt->alwaysShowSearchInputPlaceholder = TRUE;
$obiekt->showListIcon = TRUE;
$obiekt->multiselect = TRUE;
$obiekt->valueField = 'id____';
$obiekt->labelField = 'text';
$obiekt->dataType = ExtSelect::DATA_TYPE_ARRAY;
$obiekt->loadDataColumns = ['foto__'];
$obiekt->fullItemsWidth = TRUE;
$obiekt->mixedContentQuery = [
'USERPROFILE' => [
'label' => Translator::translate('Pracownicy'),
'filter' => '(o.lasfir ~* E\'{SEARCH_TEXT}\')',
'keyval' => 'o.usr_id',
'showBorderTag' => TRUE,
'showIcon' => FALSE,
'showFoto' => TRUE,
'showFotoStatus' => TRUE,
'fotoPath' => 'Employees',
'query' => '',
'dataAlias' => 'usr_id',
'allowOpen' => FALSE
],
'USERCLIENTPROFILE' => [
'label' => Translator::translate('Konto zewnętrzne'),
'filter' => '(o.lasfir ~* E\'{SEARCH_TEXT}\')',
'keyval' => 'o.usr_id',
'showBorderTag' => TRUE,
'showIcon' => FALSE,
'showFoto' => TRUE,
'showFotoStatus' => TRUE,
'fotoPath' => 'Employees',
'query' => '',
'dataAlias' => 'emp_id',
'allowOpen' => FALSE
]
];
Info
By dodać zapytanie SQL które wyciągnie nam np. pracowników, musimy w tablicy parametru mixedContentQuery dodać do query zapytanie z użyciem aliasu np. USERPROFILE_ lub USERCLIENTPROFILE_
SELECT '.($filter ? 'DISTINCT o.lasfir,' : '').' 'USERPROFILE_'||o.usr_id AS id____, lasfir as text, o.foto__
FROM
users_by_units_view o
LEFT JOIN
org_with_visibility dlu USING(orunid)
WHERE
{FILTER_STRING_USERPROFILE}
AND o.is_cnt IS FALSE
AND o.ent_id = '.LoggedUser::getEntityID().'
AND o.is_del IS NOT TRUE
AND o.usr_id IS NOT NULL
AND dlu.visible IS NOT FALSE
AND (ustype IS NULL OR ustype = 'REGULAR')
AND o.usr_id NOT IN (SELECT usr_id FROM doc_link_users WHERE usr_id IS NOT NULL AND doc_id = '.$doc_id.');
Dostępne właściwości
valueField
Wymagane! Trzeba zadeklarować jaka kolumna będzie jako value w selekcie. Musi się nazywać tak samo jak w query
$obiekt->valueField = 'id____';
labelField
Wymagane! Trzeba zadeklarować jaka kolumna będzie jako label w selekcie. Musi się nazywać tak samo jak w query
$obiekt->labelField = 'text';
dataType
By móc zadeklarować wiele tabel w mixedContentQuery
$obiekt->dataType = ExtSelect::DATA_TYPE_ARRAY;
showListIcon
W celu pokazania listy wyborów z ikonkami/miniaturkami należy ustawić parametr showListIcon = TRUE, oraz w parametrze loadDataColumns ustawić nazwę kolumny z zapytania sql, która będzie przedstawiać ikonkę
$obiekt->showListIcon = TRUE;
$obiekt->loadDataColumns = ['foto__'];
multiselect
W celu umożliwienia wybrania kilku opcji należy ustawić parametr multiselect = TRUE.
$obiekt->multiselect = TRUE;
withClearButton
W celu wyświetlenie przycisku do czyszczenia selecta z wybranych itemów, nalezy ustawić withClearButton = TRUE;
$obiekt->withClearButton = TRUE;