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
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;