@@ -29,6 +29,7 @@ class DataTable extends Widget {
29
29
protected $ _pagination ;
30
30
protected $ _hasCheckboxes ;
31
31
protected $ _compileParts ;
32
+ protected $ _visibleHover =false ;
32
33
33
34
public function run (JsUtils $ js ){
34
35
if ($ this ->_hasCheckboxes && isset ($ js )){
@@ -37,6 +38,10 @@ public function run(JsUtils $js){
37
38
\$checkbox.each(function() {if($(this).prop('checked')){allUnchecked = false;}else{allChecked = false;}});
38
39
if(allChecked) { \$parentCheckbox.checkbox('set checked');}else if(allUnchecked){ \$parentCheckbox.checkbox('set unchecked');}else{ \$parentCheckbox.checkbox('set indeterminate');} " );
39
40
}
41
+ if ($ this ->_visibleHover ){
42
+ $ js ->execOn ("mouseover " , "# " .$ this ->identifier ." tr " , "$(event.target).closest('tr').find('.visibleover').css('visibility', 'visible'); " ,["preventDefault " =>false ,"stopPropagation " =>true ]);
43
+ $ js ->execOn ("mouseout " , "# " .$ this ->identifier ." tr " , "$(event.target).closest('tr').find('.visibleover').css('visibility', 'hidden'); " ,["preventDefault " =>false ,"stopPropagation " =>true ]);
44
+ }
40
45
return parent ::run ($ js );
41
46
}
42
47
@@ -102,17 +107,20 @@ protected function _generateContent($table){
102
107
$ objects =$ this ->_pagination ->getObjects ($ this ->_modelInstance );
103
108
}
104
109
InstanceViewer::setIndex (0 );
105
- $ table ->fromDatabaseObjects ($ objects , function ($ instance ){
110
+ $ table ->fromDatabaseObjects ($ objects , function ($ instance ) use ( $ table ) {
106
111
$ this ->_instanceViewer ->setInstance ($ instance );
107
112
InstanceViewer::$ index ++;
108
- $ result = $ this ->_instanceViewer ->getValues ();
113
+ $ values = $ this ->_instanceViewer ->getValues ();
109
114
if ($ this ->_hasCheckboxes ){
110
115
$ ck =new HtmlCheckbox ("ck- " .$ this ->identifier ,"" );
111
116
$ field =$ ck ->getField ();
112
117
$ field ->setProperty ("value " ,$ this ->_instanceViewer ->getIdentifier ());
113
118
$ field ->setProperty ("name " , "selection[] " );
114
- \array_unshift ($ result , $ ck );
119
+ \array_unshift ($ values , $ ck );
115
120
}
121
+ $ result =$ table ->newRow ();
122
+ $ result ->setIdentifier ($ this ->identifier ."-tr- " .$ this ->_instanceViewer ->getIdentifier ());
123
+ $ result ->setValues ($ values );
116
124
return $ result ;
117
125
});
118
126
}
@@ -207,10 +215,11 @@ public function refresh($compileParts=["tbody"]){
207
215
/**
208
216
* @param string $caption
209
217
* @param callable $callback
218
+ * @param boolean $visibleHover
210
219
* @return callable
211
220
*/
212
- private function getFieldButtonCallable ($ caption ,$ callback =null ){
213
- return $ this ->getCallable ("getFieldButton " ,[$ caption ],$ callback );
221
+ private function getFieldButtonCallable ($ caption ,$ visibleHover = true , $ callback =null ){
222
+ return $ this ->getCallable ("getFieldButton " ,[$ caption, $ visibleHover ],$ callback );
214
223
}
215
224
216
225
/**
@@ -229,6 +238,10 @@ private function getCallable($thisCallback,$parameters,$callback=null){
229
238
}
230
239
if ($ object instanceof HtmlSemDoubleElement){
231
240
$ object ->setProperty ("data-ajax " ,$ this ->_instanceViewer ->getIdentifier ());
241
+ if ($ object ->propertyContains ("class " ,"visibleover " )){
242
+ $ this ->_visibleHover =true ;
243
+ $ object ->setProperty ("style " ,"visibility:hidden; " );
244
+ }
232
245
}
233
246
return $ object ;
234
247
};
@@ -239,18 +252,22 @@ private function getCallable($thisCallback,$parameters,$callback=null){
239
252
* @param string $caption
240
253
* @return HtmlButton
241
254
*/
242
- private function getFieldButton ($ caption ){
243
- return new HtmlButton ("" ,$ caption );
255
+ private function getFieldButton ($ caption ,$ visibleHover =true ){
256
+ $ bt = new HtmlButton ("" ,$ caption );
257
+ if ($ visibleHover )
258
+ $ this ->_visibleOver ($ bt );
259
+ return $ bt ;
244
260
}
245
261
246
262
/**
247
263
* Inserts a new Button for each row
248
264
* @param string $caption
249
265
* @param callable $callback
266
+ * @param boolean $visibleHover
250
267
* @return \Ajax\semantic\widgets\datatable\DataTable
251
268
*/
252
- public function addFieldButton ($ caption ,$ callback =null ){
253
- $ this ->addField ($ this ->getCallable ("getFieldButton " ,[$ caption ],$ callback ));
269
+ public function addFieldButton ($ caption ,$ visibleHover = true , $ callback =null ){
270
+ $ this ->addField ($ this ->getCallable ("getFieldButton " ,[$ caption, $ visibleHover ],$ callback ));
254
271
return $ this ;
255
272
}
256
273
@@ -261,8 +278,8 @@ public function addFieldButton($caption,$callback=null){
261
278
* @param callable $callback
262
279
* @return \Ajax\semantic\widgets\datatable\DataTable
263
280
*/
264
- public function insertFieldButton ($ index ,$ caption ,$ callback =null ){
265
- $ this ->insertField ($ index , $ this ->getFieldButtonCallable ($ caption ,$ callback ));
281
+ public function insertFieldButton ($ index ,$ caption ,$ visibleHover = true , $ callback =null ){
282
+ $ this ->insertField ($ index , $ this ->getFieldButtonCallable ($ caption ,$ visibleHover , $ callback ));
266
283
return $ this ;
267
284
}
268
285
@@ -273,50 +290,50 @@ public function insertFieldButton($index,$caption,$callback=null){
273
290
* @param callable $callback
274
291
* @return \Ajax\semantic\widgets\datatable\DataTable
275
292
*/
276
- public function insertInFieldButton ($ index ,$ caption ,$ callback =null ){
277
- $ this ->insertInField ($ index , $ this ->getFieldButtonCallable ($ caption ,$ callback ));
293
+ public function insertInFieldButton ($ index ,$ caption ,$ visibleHover = true , $ callback =null ){
294
+ $ this ->insertInField ($ index , $ this ->getFieldButtonCallable ($ caption ,$ visibleHover , $ callback ));
278
295
return $ this ;
279
296
}
280
297
281
- private function addDefaultButton ($ icon ,$ class =null ,$ callback =null ){
282
- $ this ->addField ($ this ->getCallable ("getDefaultButton " ,[$ icon ,$ class ],$ callback ));
298
+ private function addDefaultButton ($ icon ,$ class =null ,$ visibleHover = true , $ callback =null ){
299
+ $ this ->addField ($ this ->getCallable ("getDefaultButton " ,[$ icon ,$ class ],$ visibleHover , $ callback ));
283
300
return $ this ;
284
301
}
285
302
286
- private function insertDefaultButtonIn ($ index ,$ icon ,$ class =null ,$ callback =null ){
287
- $ this ->insertInField ($ index ,$ this ->getCallable ("getDefaultButton " ,[$ icon ,$ class ],$ callback ));
303
+ private function insertDefaultButtonIn ($ index ,$ icon ,$ class =null ,$ visibleHover = true , $ callback =null ){
304
+ $ this ->insertInField ($ index ,$ this ->getCallable ("getDefaultButton " ,[$ icon ,$ class, $ visibleHover ],$ callback ));
288
305
return $ this ;
289
306
}
290
307
291
- private function getDefaultButton ($ icon ,$ class =null ){
292
- $ bt =$ this ->getFieldButton ("" );
308
+ private function getDefaultButton ($ icon ,$ class =null , $ visibleHover = true ){
309
+ $ bt =$ this ->getFieldButton ("" , $ visibleHover );
293
310
$ bt ->asIcon ($ icon );
294
311
if (isset ($ class ))
295
312
$ bt ->addToProperty ("class " , $ class );
296
313
return $ bt ;
297
314
}
298
315
299
- public function addDeleteButton ($ callback =null ){
300
- return $ this ->addDefaultButton ("remove " ,"delete red basic " ,$ callback );
316
+ public function addDeleteButton ($ visibleHover = true , $ callback =null ){
317
+ return $ this ->addDefaultButton ("remove " ,"delete red basic " ,$ visibleHover , $ callback );
301
318
}
302
319
303
- public function addEditButton ($ callback =null ){
304
- return $ this ->addDefaultButton ("edit " ,"edit basic " ,$ callback );
320
+ public function addEditButton ($ visibleHover = true , $ callback =null ){
321
+ return $ this ->addDefaultButton ("edit " ,"edit basic " ,$ visibleHover , $ callback );
305
322
}
306
323
307
- public function addEditDeleteButtons ($ callbackEdit =null ,$ callbackDelete =null ){
308
- $ this ->addEditButton ($ callbackEdit );
324
+ public function addEditDeleteButtons ($ visibleHover = true , $ callbackEdit =null ,$ callbackDelete =null ){
325
+ $ this ->addEditButton ($ visibleHover , $ callbackEdit );
309
326
$ index =$ this ->_instanceViewer ->visiblePropertiesCount ()-1 ;
310
- $ this ->insertDeleteButtonIn ($ index ,$ callbackDelete );
327
+ $ this ->insertDeleteButtonIn ($ index ,$ visibleHover , $ callbackDelete );
311
328
return $ this ;
312
329
}
313
330
314
- public function insertDeleteButtonIn ($ index ,$ callback =null ){
315
- return $ this ->insertDefaultButtonIn ($ index ,"remove " ,"delete red basic " ,$ callback );
331
+ public function insertDeleteButtonIn ($ index ,$ visibleHover = true , $ callback =null ){
332
+ return $ this ->insertDefaultButtonIn ($ index ,"remove " ,"delete red basic " ,$ visibleHover , $ callback );
316
333
}
317
334
318
- public function insertEditButtonIn ($ index ,$ callback =null ){
319
- return $ this ->insertDefaultButtonIn ($ index ,"edit " ,"edit basic " ,$ callback );
335
+ public function insertEditButtonIn ($ index ,$ visibleHover = true , $ callback =null ){
336
+ return $ this ->insertDefaultButtonIn ($ index ,"edit " ,"edit basic " ,$ visibleHover , $ callback );
320
337
}
321
338
322
339
public function addSearchInToolbar ($ position =Direction::RIGHT ){
@@ -345,4 +362,17 @@ public function onNewRow($callback) {
345
362
public function asForm (){
346
363
return $ this ->getForm ();
347
364
}
365
+
366
+ public function fieldAsSubmit ($ index ,$ cssStyle =NULL ,$ url =NULL ,$ responseElement =NULL ,$ attributes =NULL ){
367
+ return $ this ->_fieldAs (function ($ id ,$ name ,$ value ,$ caption ) use ($ url ,$ responseElement ,$ cssStyle ,$ index ){
368
+ $ button =new HtmlButton ($ id ,$ value ,$ cssStyle );
369
+ $ button ->postOnClick ($ url ,"$(event.target).closest('tr').find(':input').serialize() " ,$ responseElement );
370
+ return $ this ->_visibleOver ($ button );
371
+ }, $ index ,$ attributes );
372
+ }
373
+
374
+ protected function _visibleOver ($ element ){
375
+ $ this ->_visibleHover =true ;
376
+ return $ element ->addToProperty ("class " , "visibleover " )->setProperty ("style " ,"visibility:hidden; " );
377
+ }
348
378
}
0 commit comments