Skip to content

Commit 9a112d9

Browse files
committed
Merge pull request #7 from Lykegenes/dev
Merge for release v1.3.0
2 parents 84f0a0c + 7098061 commit 9a112d9

File tree

6 files changed

+167
-19
lines changed

6 files changed

+167
-19
lines changed

config/config.php

Lines changed: 59 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,69 @@
22

33
return [
44

5-
'defaults' => [
5+
/*
6+
|--------------------------------------------------------------------------
7+
| Datagrid Styling
8+
|--------------------------------------------------------------------------
9+
|
10+
| Specify the CSS classes that will be added by default to the various
11+
| HTML elements that will be generated.
12+
|
13+
*/
14+
'default_css' => [
15+
// Will be appended to the <table> element
616
'datagrid_class' => 'table table-condensed table-hover table-striped',
7-
'column_class' => 'form-control',
17+
18+
// Will be appended to all the <th> elements
19+
'column_class' => 'table-column',
20+
],
21+
22+
/*
23+
|--------------------------------------------------------------------------
24+
| Available Views
25+
|--------------------------------------------------------------------------
26+
|
27+
| This array contains all the views that can be used to properly
28+
| generate a datagrid.
29+
|
30+
*/
31+
'views' => [
32+
// For client-side processing
33+
'client_datagrid' => 'datagrid-builder::clientDatagrid',
34+
35+
// For server-side processing
36+
'server_datagrid' => 'datagrid-builder::serverDatagrid',
37+
38+
// For the table headers
39+
'column' => 'datagrid-builder::column',
840
],
941

10-
// Views Templates
11-
'datagrid' => 'datagrid-builder::datagrid',
12-
'column' => 'datagrid-builder::column',
42+
/*
43+
|--------------------------------------------------------------------------
44+
| Default Datagrid View
45+
|--------------------------------------------------------------------------
46+
|
47+
| Set the default view that will be used when generating a datagrid.
48+
| Use one of the keys from the 'views' array above.
49+
|
50+
*/
51+
'default_datagrid_view' => 'client_datagrid',
1352

53+
/**
54+
* jQuery Bootgrid assets location
55+
*/
56+
/*
57+
|--------------------------------------------------------------------------
58+
| Assets Location
59+
|--------------------------------------------------------------------------
60+
|
61+
| Set the URLs of the assets used by jQuery Bootgrid. By default, a CDN
62+
| is used, but you can also host the files yourself.
63+
|
64+
| WARNING : jQuery Bootgrid also requires jQuery. It is expected
65+
| that you already included it.
66+
|
67+
*/
1468
'css_url' => '//cdnjs.cloudflare.com/ajax/libs/jquery-bootgrid/1.3.1/jquery.bootgrid.min.css',
1569
'js_url' => '//cdnjs.cloudflare.com/ajax/libs/jquery-bootgrid/1.3.1/jquery.bootgrid.min.js',
1670

src/Datagrid.php

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,22 @@ class Datagrid
2222
* @var array
2323
*/
2424
protected $datagridOptions = [
25-
'method' => 'GET',
26-
'url' => null,
27-
'ajaxParams' => [],
28-
'rowCount' => [10, 25, 50],
29-
'formatters' => [
25+
'HTML_id' => 'datagrid',
26+
'datagrid_view' => null,
27+
'method' => 'GET',
28+
'url' => null,
29+
'ajaxParams' => [],
30+
'rowCount' => [10, 25, 50],
31+
'searchSettings' => [
32+
'caseSensitive' => false,
33+
'delay' => 250, // in milliseconds
34+
'characters' => 1,
35+
],
36+
'formatters' => [
3037
'view' => 'datagrid-builder::formatters.default',
3138
'options' => [],
3239
],
33-
'converters' => [
40+
'converters' => [
3441
'view' => 'datagrid-builder::converters.default',
3542
'options' => [],
3643
],
@@ -626,10 +633,16 @@ protected function render($options, $columns, $showStart, $showColumns, $showEnd
626633
{
627634
$datagridOptions = $this->datagridHelper->mergeOptions($this->datagridOptions, $options);
628635

636+
if (isset($datagridOptions['datagrid_view'])) {
637+
$datagridView = $datagridOptions['datagrid_view'];
638+
} else {
639+
$datagridView = $this->datagridHelper->getConfig('views.' . $this->datagridHelper->getConfig('default_datagrid_view'));
640+
}
641+
629642
return $this->datagridHelper->getView()
630-
->make($this->datagridHelper->getConfig('datagrid'))
631-
->with('name', $this->name)
643+
->make($datagridView)
632644
->with(compact('showStart', 'showColumns', 'showEnd'))
645+
->with('HTML_id', $datagridOptions['HTML_id'])
633646
->with('datagridOptions', $datagridOptions)
634647
->with('columns', $columns)
635648
->with('exclude', $this->exclude)

src/DatagridColumn.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
<?php namespace Lykegenes\DatagridBuilder;
1+
<?php
2+
namespace Lykegenes\DatagridBuilder;
23

34
use Lykegenes\DatagridBuilder\Datagrid;
45
use Lykegenes\DatagridBuilder\DatagridHelper;
@@ -218,7 +219,7 @@ public function isRendered()
218219
}
219220

220221
/**
221-
* Default options for field
222+
* Default options for column
222223
*
223224
* @return array
224225
*/
@@ -235,7 +236,7 @@ protected function getDefaults()
235236
private function allDefaults()
236237
{
237238
return [
238-
'attr' => ['class' => $this->datagridHelper->getConfig('defaults.column_class')],
239+
'attr' => ['class' => $this->datagridHelper->getConfig('default_css.column_class')],
239240
'converter' => null, // use jQuery Bootgrid's default
240241
'formatter' => null, // use jQuery Bootgrid's default
241242
'label' => $this->datagridHelper->formatLabel($this->getRealName()),

tests/DatagridTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ public function it_can_modify_existing_columns()
121121
// Adds new if provided name doesn't exist
122122
$this->plainDatagrid->modify('remember');
123123
$this->assertEquals(
124-
['placeholder' => 'Enter text here...', 'class' => 'form-control'],
124+
['placeholder' => 'Enter text here...', 'class' => 'table-column'],
125125
$this->plainDatagrid->description->getOption('attr')
126126
);
127127
$this->plainDatagrid->modify('description', [

views/clientDatagrid.blade.php

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
@if ($showStart)
2+
<link rel="stylesheet" type="text/css" href="{!! config('datagrid-builder.css_url') !!}">
3+
4+
<div>
5+
<table id="{{ $HTML_id }}" class="{!! config('datagrid-builder.default_css.datagrid_class') !!}">
6+
<thead>
7+
<tr>
8+
@endif
9+
10+
@if ($showColumns)
11+
@foreach ($columns as $column)
12+
@if( ! in_array($column->getName(), $exclude) )
13+
{!! $column->render() !!}
14+
@endif
15+
@endforeach
16+
@endif
17+
18+
@if ($showEnd)
19+
</tr>
20+
</thead>
21+
</table>
22+
</div>
23+
24+
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
25+
<script src="{!! config('datagrid-builder.js_url') !!}"></script>
26+
27+
<script type="text/javascript">
28+
JSON.unflatten=function(r){"use strict";if(Object(r)!==r||Array.isArray(r))return r;var e=/\.?([^.\[\]]+)|\[(\d+)\]/g,n={};for(var t in r){for(var a,f=n,i="";a=e.exec(t);)f=f[i]||(f[i]=a[2]?[]:{}),i=a[2]||a[1];f[i]=r[t]}return n[""]},JSON.flatten=function(r){function e(r,t){if(Object(r)!==r)n[t]=r;else if(Array.isArray(r)){for(var a=0,f=r.length;f>a;a++)e(r[a],t+"["+a+"]");0==f&&(n[t]=[])}else{var i=!0;for(var u in r)i=!1,e(r[u],t?t+"."+u:u);i&&(n[t]={})}}var n={};return e(r,""),n};
29+
30+
var deferredBootgrid = $.Deferred(),
31+
deferredAjax = $.Deferred();
32+
33+
var rows = []
34+
$.getJSON("{!! $datagridOptions['url'] !!}")
35+
.done(function( json ) {
36+
if (Array.isArray(json.data)) {
37+
json.data.forEach(function(element) {
38+
rows.push(JSON.flatten(element))
39+
})
40+
} else {
41+
rows = response.responseJSON.data
42+
}
43+
44+
deferredAjax.resolve()
45+
})
46+
47+
var datagrid = $("#{{ $HTML_id }}")
48+
.on("initialized.rs.jquery.bootgrid", function (e)
49+
{
50+
deferredBootgrid.resolve()
51+
})
52+
.bootgrid({
53+
caseSensitive: {{ json_encode($datagridOptions['searchSettings']['caseSensitive']) }},
54+
searchSettings: {
55+
delay: {{ $datagridOptions['searchSettings']['delay'] }},
56+
characters: {{ $datagridOptions['searchSettings']['characters'] }}
57+
},
58+
rowCount: {!! json_encode($datagridOptions['rowCount']) !!},
59+
converters: {
60+
@include($datagridOptions['converters']['view'],['options' => $datagridOptions['converters']['options']])
61+
},
62+
formatters: {
63+
@include($datagridOptions['formatters']['view'], ['options' => $datagridOptions['formatters']['options']])
64+
},
65+
labels: {
66+
all: "@lang('datagrid-builder::datagrid-builder.all')",
67+
infos: "@lang('datagrid-builder::datagrid-builder.infos')",
68+
loading: "@lang('datagrid-builder::datagrid-builder.loading')",
69+
noResults: "@lang('datagrid-builder::datagrid-builder.noResults')",
70+
refresh: "@lang('datagrid-builder::datagrid-builder.refresh')",
71+
search: "@lang('datagrid-builder::datagrid-builder.search')",
72+
}
73+
})
74+
75+
$.when(deferredBootgrid,deferredAjax).done(function(){
76+
datagrid.bootgrid("append", rows)
77+
rows = undefined
78+
});
79+
</script>
80+
@endif

views/datagrid.blade.php renamed to views/serverDatagrid.blade.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<link rel="stylesheet" type="text/css" href="{!! config('datagrid-builder.css_url') !!}">
33

44
<div>
5-
<table id="{{ $name or 'datagrid' }}" class="table table-condensed table-hover table-striped">
5+
<table id="{{ $HTML_id }}" class="{!! config('datagrid-builder.default_css.datagrid_class') !!}">
66
<thead>
77
<tr>
88
@endif
@@ -25,7 +25,7 @@
2525
<script src="{!! config('datagrid-builder.js_url') !!}"></script>
2626

2727
<script type="text/javascript">
28-
$("#{{ $name or 'datagrid' }}").bootgrid({
28+
$("#{{ $HTML_id }}").bootgrid({
2929
ajax: true,
3030
ajaxSettings: {
3131
method: "{!! $datagridOptions['method'] !!}"

0 commit comments

Comments
 (0)