Completed
Push — master ( ae5717...a8f6cd )
by WEBEWEB
01:25
created

DataTablesColumn::setClassname()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 1
1
<?php
2
3
/**
4
 * This file is part of the jquery-datatables-bundle package.
5
 *
6
 * (c) 2018 WEBEWEB
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace WBW\Bundle\JQuery\DatatablesBundle\API;
13
14
use JsonSerializable;
15
use WBW\Library\Core\Utility\Argument\ArrayUtility;
16
17
/**
18
 * DataTables column.
19
 *
20
 * @author webeweb <https://github.com/webeweb/>
21
 * @package WBW\Bundle\JQuery\DatatablesBundle\API
22
 */
23
class DataTablesColumn implements JsonSerializable {
24
25
    /**
26
     * Cell type.
27
     *
28
     * @var string
29
     */
30
    private $cellType;
31
32
    /**
33
     * Class name.
34
     *
35
     * @var string
36
     */
37
    private $classname;
38
39
    /**
40
     * Content padding.
41
     *
42
     * @var string
43
     */
44
    private $contentPadding;
45
46
    /**
47
     * Data.
48
     *
49
     * @var integer|string
50
     */
51
    private $data;
52
53
    /**
54
     * Default content.
55
     *
56
     * @var string
57
     */
58
    private $defaultContent;
59
60
    /**
61
     * mapping.
62
     *
63
     * @var DataTablesMapping
64
     */
65
    private $mapping;
66
67
    /**
68
     * Name.
69
     *
70
     * @var string
71
     */
72
    private $name;
73
74
    /**
75
     * Order data.
76
     *
77
     * @var integer|array
78
     */
79
    private $orderData;
80
81
    /**
82
     * Order data type.
83
     *
84
     * @var string
85
     */
86
    private $orderDataType;
87
88
    /**
89
     * Order sequence.
90
     *
91
     * @var string
92
     */
93
    private $orderSequence;
94
95
    /**
96
     * Orderable.
97
     *
98
     * @var boolean
99
     */
100
    private $orderable;
101
102
    /**
103
     * Search.
104
     *
105
     * @var DataTablesSearch
106
     */
107
    private $search;
108
109
    /**
110
     * Searchable.
111
     *
112
     * @var boolean
113
     */
114
    private $searchable;
115
116
    /**
117
     * Title.
118
     *
119
     * @var string
120
     */
121
    private $title;
122
123
    /**
124
     * Type.
125
     *
126
     * @var string
127
     */
128
    private $type;
129
130
    /**
131
     * Visible.
132
     *
133
     * @var boolean
134
     */
135
    private $visible;
136
137
    /**
138
     * Width.
139
     *
140
     * @var string
141
     */
142
    private $width;
143
144
    /**
145
     * Constructor.
146
     */
147
    protected function __construct() {
148
        $this->setCellType("td");
149
        $this->setMapping(new DataTablesMapping());
150
        $this->setOrderable(true);
151
        $this->setSearchable(true);
152
        $this->setVisible(true);
153
    }
154
155
    /**
156
     * Get the cell type.
157
     *
158
     * @return string Returns the cell type.
159
     */
160
    public function getCellType() {
161
        return $this->cellType;
162
    }
163
164
    /**
165
     * Get the class name.
166
     *
167
     * @return string Returns the class name.
168
     */
169
    public function getClassname() {
170
        return $this->classname;
171
    }
172
173
    /**
174
     * Get the content padding.
175
     *
176
     * @return string Returns the content padding.
177
     */
178
    public function getContentPadding() {
179
        return $this->contentPadding;
180
    }
181
182
    /**
183
     * Get the data.
184
     *
185
     * @return integer|string Returns the data.
186
     */
187
    public function getData() {
188
        return $this->data;
189
    }
190
191
    /**
192
     * Get the default content
193
     *
194
     * @return string Returns the default content.
195
     */
196
    public function getDefaultContent() {
197
        return $this->defaultContent;
198
    }
199
200
    /**
201
     * Get the mapping.
202
     *
203
     * @return DataTablesMapping The mapping.
204
     */
205
    public function getMapping() {
206
        return $this->mapping;
207
    }
208
209
    /**
210
     * Get the name.
211
     *
212
     * @return string Returns the name.
213
     */
214
    public function getName() {
215
        return $this->name;
216
    }
217
218
    /**
219
     * Get the order data.
220
     *
221
     * @return integer|array Returns the order data.
222
     */
223
    public function getOrderData() {
224
        return $this->orderData;
225
    }
226
227
    /**
228
     * Get the order data type.
229
     *
230
     * @return string Returns the order data type.
231
     */
232
    public function getOrderDataType() {
233
        return $this->orderDataType;
234
    }
235
236
    /**
237
     * Get the order sequence.
238
     *
239
     * @return string Returns the order sequence.
240
     */
241
    public function getOrderSequence() {
242
        return $this->orderSequence;
243
    }
244
245
    /**
246
     * Get the orderable.
247
     *
248
     * @return boolean Returns the orderable.
249
     */
250
    public function getOrderable() {
251
        return $this->orderable;
252
    }
253
254
    /**
255
     * Get the search.
256
     *
257
     * @return DataTablesSearch Returns the search.
258
     */
259
    public function getSearch() {
260
        return $this->search;
261
    }
262
263
    /**
264
     * Get the searchable.
265
     *
266
     * @return boolean Returns the searchable.
267
     */
268
    public function getSearchable() {
269
        return $this->searchable;
270
    }
271
272
    /**
273
     * Get the title.
274
     *
275
     * @return string Returns the title.
276
     */
277
    public function getTitle() {
278
        return $this->title;
279
    }
280
281
    /**
282
     * Get the type.
283
     *
284
     * @return string Returns the type.
285
     */
286
    public function getType() {
287
        return $this->type;
288
    }
289
290
    /**
291
     * Get the visible.
292
     *
293
     * @return boolean Returns the visible.
294
     */
295
    public function getVisible() {
296
        return $this->visible;
297
    }
298
299
    /**
300
     * Get the width.
301
     *
302
     * @return string Returns the width.
303
     */
304
    public function getWidth() {
305
        return $this->width;
306
    }
307
308
    /**
309
     * {@inheritdoc}
310
     */
311
    public function jsonSerialize() {
312
        return $this->toArray();
313
    }
314
315
    /**
316
     * Create a DataTables column instance.
317
     *
318
     * @param string $name The column name.
319
     * @param string $title The column title.
320
     * @param string $cellType The column cell type.
321
     * @return DataTablesColumn Returns a DataTables column.
322
     */
323
    public static function newInstance($name, $title, $cellType = "td") {
324
325
        // Initialize a DataTables column.
326
        $dtColumn = new DataTablesColumn();
327
        $dtColumn->setCellType($cellType);
328
        $dtColumn->setData($name);
329
        $dtColumn->setName($name);
330
        $dtColumn->setTitle($title);
331
        $dtColumn->mapping->setColumn($name);
332
333
        // Return the DataTables column.
334
        return $dtColumn;
335
    }
336
337
    /**
338
     * Set the cell type.
339
     *
340
     * @param string $cellType The cell type.
341
     * @return DataTablesColumn Returns this DataTables column.
342
     */
343
    public function setCellType($cellType) {
344
        $this->cellType = (true === in_array($cellType, ["td", "th"]) ? $cellType : "td");
345
        return $this;
346
    }
347
348
    /**
349
     * Set the class name.
350
     *
351
     * @param string $classname The class name.
352
     * @return DataTablesColumn Returns this DataTables column.
353
     */
354
    public function setClassname($classname) {
355
        $this->classname = $classname;
356
        return $this;
357
    }
358
359
    /**
360
     * Set the content padding.
361
     *
362
     * @param string $contentPadding The content padding.
363
     * @return DataTablesColumn Returns this DataTables column.
364
     */
365
    public function setContentPadding($contentPadding) {
366
        $this->contentPadding = $contentPadding;
367
        return $this;
368
    }
369
370
    /**
371
     * Set the data.
372
     *
373
     * @param integer|string $data The data.
374
     * @return DataTablesColumn Returns this DataTables column.
375
     */
376
    public function setData($data) {
377
        $this->data = $data;
378
        return $this;
379
    }
380
381
    /**
382
     * Set the default content.
383
     *
384
     * @param string $defaultContent The default content.
385
     * @return DataTablesColumn Returns this DataTables column.
386
     */
387
    public function setDefaultContent($defaultContent) {
388
        $this->defaultContent = $defaultContent;
389
        return $this;
390
    }
391
392
    /**
393
     * Set the mapping.
394
     *
395
     * @param DataTablesMapping $mapping The mapping.
396
     * @return DataTablesColumn Returns this DataTables column.
397
     */
398
    protected function setMapping(DataTablesMapping $mapping) {
399
        $this->mapping = $mapping;
400
        return $this;
401
    }
402
403
    /**
404
     * Set the name.
405
     *
406
     * @param string $name The name.
407
     * @return DataTablesColumn Returns this DataTables column.
408
     */
409
    protected function setName($name) {
410
        $this->name = $name;
411
        return $this;
412
    }
413
414
    /**
415
     * Set the order data.
416
     *
417
     * @param integer|array $orderData The order data.
418
     * @return DataTablesColumn Returns this DataTables column.
419
     */
420
    public function setOrderData($orderData) {
421
        $this->orderData = $orderData;
422
        return $this;
423
    }
424
425
    /**
426
     * Set the order data type.
427
     *
428
     * @param string $orderDataType The order data type.
429
     * @return DataTablesColumn Returns this DataTables column.
430
     */
431
    public function setOrderDataType($orderDataType) {
432
        $this->orderDataType = $orderDataType;
433
        return $this;
434
    }
435
436
    /**
437
     * Set the order sequence.
438
     *
439
     * @param string $orderSequence The order sequence.
440
     * @return DataTablesColumn Returns this DataTables column.
441
     */
442
    public function setOrderSequence($orderSequence) {
443
        $this->orderSequence = (true === in_array($orderSequence, ["asc", "desc"]) ? $orderSequence : null);
444
        return $this;
445
    }
446
447
    /**
448
     * Set the orderable.
449
     *
450
     * @param boolean $orderable The orderable.
451
     * @return DataTablesColumn Returns this DataTables column.
452
     */
453
    public function setOrderable($orderable) {
454
        $this->orderable = $orderable;
455
        return $this;
456
    }
457
458
    /**
459
     * Set the search.
460
     *
461
     * @param DataTablesSearch $search The search.
462
     * @return DataTablesColumn Returns this DataTables column.
463
     */
464
    public function setSearch(DataTablesSearch $search) {
465
        $this->search = $search;
466
        return $this;
467
    }
468
469
    /**
470
     * Set the searchable.
471
     *
472
     * @param boolean $searchable The searchable.
473
     * @return DataTablesColumn Returns this DataTables column.
474
     */
475
    public function setSearchable($searchable) {
476
        $this->searchable = $searchable;
477
        return $this;
478
    }
479
480
    /**
481
     * Set the title.
482
     *
483
     * @param string $title The title.
484
     * @return DataTablesColumn Returns this DataTables column.
485
     */
486
    public function setTitle($title) {
487
        $this->title = $title;
488
        return $this;
489
    }
490
491
    /**
492
     * Set the type.
493
     *
494
     * @param string $type The type.
495
     * @return DataTablesColumn Returns this DataTables column.
496
     */
497
    public function setType($type) {
498
        $this->type = (true === in_array($type, ["date", "num", "num-fmt", "html", "html-num", "string"]) ? $type : null);
499
        return $this;
500
    }
501
502
    /**
503
     * Set the visible.
504
     *
505
     * @param boolean $visible The visible.
506
     * @return DataTablesColumn Returns this DataTables column.
507
     */
508
    public function setVisible($visible) {
509
        $this->visible = $visible;
510
        return $this;
511
    }
512
513
    /**
514
     * Set the width.
515
     *
516
     * @param string $width The width.
517
     * @return DataTablesColumn Returns this DataTables column.
518
     */
519
    public function setWidth($width) {
520
        $this->width = $width;
521
        return $this;
522
    }
523
524
    /**
525
     * Convert into an array representing this instance.
526
     *
527
     * @return array Returns an array representing this instance.
528
     */
529
    public function toArray() {
530
531
        // Initialize the output.
532
        $output = [];
533
534
        ArrayUtility::set($output, "cellType", $this->cellType, [null]);
535
        ArrayUtility::set($output, "classname", $this->classname, [null]);
536
        ArrayUtility::set($output, "contentPadding", $this->contentPadding, [null]);
537
        ArrayUtility::set($output, "data", $this->data, [null]);
538
        ArrayUtility::set($output, "defaultContent", $this->defaultContent, [null]);
539
        ArrayUtility::set($output, "name", $this->name, [null]);
540
        ArrayUtility::set($output, "orderable", $this->orderable, [null, true]);
541
        ArrayUtility::set($output, "orderData", $this->orderData, [null]);
542
        ArrayUtility::set($output, "orderDataType", $this->orderDataType, [null]);
543
        ArrayUtility::set($output, "orderSequence", $this->orderSequence, [null]);
544
        ArrayUtility::set($output, "searchable", $this->searchable, [null, true]);
545
        ArrayUtility::set($output, "title", $this->title, [null]);
546
        ArrayUtility::set($output, "type", $this->type, [null]);
547
        ArrayUtility::set($output, "visible", $this->visible, [null, true]);
548
        ArrayUtility::set($output, "width", $this->width, [null]);
549
550
        // Return the output.
551
        return $output;
552
    }
553
554
}
555