22
33namespace Loki \AdminComponents \Component \Grid ;
44
5- use Hyva \Admin \ViewModel \HyvaGrid \GridFilterInterface ;
65use Loki \AdminComponents \Grid \Column \Column ;
7- use Loki \AdminComponents \Grid \Filter \Filter ;
86use Loki \AdminComponents \Grid \Filter \FilterFactory ;
97use Loki \AdminComponents \Grid \Filter \StaticFilterInterface ;
108use Loki \AdminComponents \Grid \MassAction \MassActionFactory ;
119use Loki \AdminComponents \Grid \State \FilterState ;
1210use Loki \AdminComponents \Ui \ButtonInterface ;
13- use Magento \Framework \Data \OptionSourceInterface ;
1411use Magento \Framework \DataObject ;
1512use Magento \Framework \Model \ResourceModel \Db \AbstractDb ;
1613use Magento \Framework \ObjectManagerInterface ;
1714use Magento \Framework \UrlFactory ;
18- use Loki \AdminComponents \Form \Field \Field ;
1915use Loki \AdminComponents \Form \Field \FieldFactory ;
2016use Loki \AdminComponents \Grid \Cell \CellAction ;
2117use Loki \AdminComponents \Grid \Cell \CellActionFactory ;
2521use Loki \AdminComponents \Grid \MassAction \MassActionInterface ;
2622use Loki \AdminComponents \Grid \State ;
2723use Loki \AdminComponents \Grid \StateManager ;
28- use Loki \AdminComponents \Ui \Button ;
2924use Loki \AdminComponents \Ui \ButtonFactory ;
3025use Loki \Components \Component \ComponentViewModel ;
3126use Loki \Components \Util \CamelCaseConvertor ;
32- use RuntimeException ;
3327
3428/**
3529 * @method GridRepository getRepository()
@@ -98,6 +92,12 @@ public function getItems(): array
9892 return $ this ->items [$ this ->getNamespace ()];
9993 }
10094
95+ // @todo: Move this to child-class EntitySelectViewModel
96+ public function getCurrentItem (int |string $ currentId )
97+ {
98+ return $ this ->getRepository ()->getProviderHandler ()->getItem ($ this ->getRepository ()->getProvider (), $ currentId );
99+ }
100+
101101 public function applyStaticFilters (): void
102102 {
103103 $ staticFilters = (array )$ this ->getBlock ()->getStaticFilters ();
@@ -179,12 +179,14 @@ public function getColumnPositions(): array
179179 */
180180 public function getAvailableColumns (): array
181181 {
182- $ columns = $ this ->columnLoader ->getColumns ($ this ->getNamespace ());
182+ $ columns = $ this ->columnLoader ->getColumnsFromNamespace ($ this ->getNamespace ());
183183 if (!empty ($ columns )) {
184184 return $ columns ;
185185 }
186186
187- $ columns = $ this ->getRepository ()->getProviderHandler ()->getColumns ($ this ->getRepository ()->getProvider ());
187+ $ providerHandler = $ this ->getRepository ()->getProviderHandler ();
188+ $ provider = $ this ->getRepository ()->getProvider ();
189+ $ columns = $ providerHandler ->getColumns ($ provider );
188190 if (!empty ($ columns )) {
189191 return $ columns ;
190192 }
@@ -195,6 +197,10 @@ public function getAvailableColumns(): array
195197 }
196198
197199 $ item = array_shift ($ items );
200+ if (false === $ item instanceof DataObject) {
201+ return [];
202+ }
203+
198204 $ itemData = $ item ->getData ();
199205 $ columns = [];
200206 foreach (array_keys ($ itemData ) as $ columnName ) {
@@ -210,8 +216,8 @@ public function getAvailableColumns(): array
210216 public function getColumns (): array
211217 {
212218 $ columns = $ this ->getAvailableColumns ();
213-
214219 $ columnsFromBlock = $ this ->columnLoader ->getColumnsFromBlock ($ this ->block );
220+
215221 if (!empty ($ columnsFromBlock )) {
216222 foreach ($ columnsFromBlock as $ columnFromBlock ) {
217223 foreach ($ columns as $ column ) {
@@ -227,6 +233,13 @@ public function getColumns(): array
227233 return $ this ->columnLoader ->sortColumns ($ columns );
228234 }
229235
236+ public function getVisibleColumns (): array
237+ {
238+ return array_filter ($ this ->getColumns (), function (Column $ column ) {
239+ return $ column ->isVisible ();
240+ });
241+ }
242+
230243 public function getIndexUrl (): string
231244 {
232245 $ indexUrl = $ this ->getBlock ()->getData ('index_url ' );
0 commit comments