Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16701 | Rev 16822 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
16701 efrain 1
<?php
2
$acl            = $this->viewModel()->getRoot()->getVariable('acl');
3
$currentUser    = $this->currentUserHelper();
4
 
5
$roleName = $currentUser->getUserTypeId();
6
 
7
 
8
$routeAdd       = $this->url('fast-survey/add');
9
$routeDatatable = $this->url('fast-survey');
10
 
11
$allowAdd       = $acl->isAllowed($roleName, 'fast-survey/add') ? 1 : 0;
12
$allowEdit      = $acl->isAllowed($roleName, 'fast-survey/edit') ? 1 : 0;
13
$allowDelete    = $acl->isAllowed($roleName, 'fast-survey/delete') ? 1 : 0;
16747 efrain 14
$allowChart    = $acl->isAllowed($roleName, 'fast-survey/chart') ? 1 : 0;
16701 efrain 15
$allowDownload  = $acl->isAllowed($roleName, 'fast-survey/download') ? 1 : 0;
16
 
17
$this->headLink()->appendStylesheet($this->basePath('plugins/nprogress/nprogress.css'));
18
$this->inlineScript()->appendFile($this->basePath('plugins/nprogress/nprogress.js'));
19
 
20
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/jquery.validate.js'));
21
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/additional-methods.js'));
22
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/localization/messages_es.js'));
23
 
24
$this->headLink()->appendStylesheet($this->basePath('plugins/datatables-bs4/css/dataTables.bootstrap4.min.css'));
25
 
26
$this->inlineScript()->appendFile($this->basePath('plugins/datatables/jquery.dataTables.min.js'));
27
$this->inlineScript()->appendFile($this->basePath('plugins/datatables-bs4/js/dataTables.bootstrap4.min.js'));
28
 
29
 
30
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-input-number/input-number-format.jquery.js'));
31
 
32
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-confirmation/dist/bootstrap-confirmation.js'));
33
 
34
 
16747 efrain 35
 
36
$this->inlineScript()->appendFile($this->basePath('plugins/chart.js/chart.js'));
37
$this->inlineScript()->appendFile($this->basePath('plugins/chartjs-plugin-datalabels/chartjs-plugin-datalabels.js'));
38
 
39
 
40
 
16701 efrain 41
$this->inlineScript()->captureStart();
42
echo <<<JS
16747 efrain 43
 
44
 
45
    var ctxChartResult = document.getElementById("chartResult").getContext("2d");
46
 
47
 
48
    var chartResult = new Chart(ctxChartResult, {
49
        type: 'bar',
50
        data: {
51
            labels: [],
52
            datasets: [
53
                {
54
                	label : 'LABEL_VOTES',
55
         			backgroundColor: '#E69090',
56
                    borderColor: '#E69090',
57
                    borderWidth: 1,
58
                    fill: false,
59
                    data : []
60
              	},
61
            ]
62
        },
63
        options: {
64
            indexAxis: 'y',
65
            tooltips: {
66
                mode: 'index',
67
                intersect: false
68
            },
69
            scales: {
70
                xAxes: [{
71
                    ticks: {
72
                        beginAtZero:true
73
                    }
74
                }]
75
            }
76
        }
77
    });
78
 
16701 efrain 79
    jQuery( document ).ready(function( $ ) {
80
 
81
        $.validator.setDefaults({
82
            debug: true,
83
            highlight: function(element) {
84
                $(element).addClass('is-invalid');
85
            },
86
            unhighlight: function(element) {
87
                $(element).removeClass('is-invalid');
88
            },
89
            errorElement: 'span',
90
            errorClass: 'error invalid-feedback',
91
            errorPlacement: function(error, element) {
92
                if(element.parent('.form-group').length) {
93
                    error.insertAfter(element);
94
                } else if(element.parent('.toggle').length) {
95
                    error.insertAfter(element.parent().parent());
96
                } else {
97
                    error.insertAfter(element.parent());
98
                }
99
            }
100
        });
101
 
102
 
103
        $.fn.showFormErrorValidator = function(fieldname, errors) {
104
            var field = $(fieldname);
105
            if(field) {
106
                $(field).addClass('is-invalid');
107
 
108
 
109
                var error = $('<span id="' + fieldname +'-error" class="error invalid-feedback">' + errors + '</div>');
110
                if(field.parent('.form-group').length) {
111
                    error.insertAfter(field);
112
                } else  if(field.parent('.toggle').length) {
113
                    error.insertAfter(field.parent().parent());
114
                } else {
115
                    error.insertAfter(field.parent());
116
                }
117
            }
118
        };
119
 
120
 
121
 
122
 
123
        var allowEdit   = $allowEdit;
124
        var allowDelete = $allowDelete;
16747 efrain 125
        var allowChart   = $allowChart;
16701 efrain 126
        var allowDownload = $allowDownload;
127
 
128
        var gridTable = $('#gridTable').dataTable( {
129
            'processing': true,
130
            'serverSide': true,
131
            'searching': true,
132
            'order': [[ 0, 'asc' ]],
133
            'ordering':  true,
134
            'ordenable' : true,
135
            'responsive': true,
136
            'select' : false,
137
        	'paging': true,
138
            'pagingType': 'simple_numbers',
139
    		'ajax': {
140
    			'url' : '$routeDatatable',
141
    			'type' : 'get',
142
                'beforeSend': function (request) {
143
                  NProgress.start();
144
                },
145
                'dataFilter': function(response) {
146
                    var response = jQuery.parseJSON( response );
147
 
148
                    var json                = {};
149
                    json.recordsTotal       = 0;
150
                    json.recordsFiltered    = 0;
151
                    json.data               = [];
152
 
153
 
154
                    if(response.success) {
155
                        json.recordsTotal       = response.data.total;
156
                        json.recordsFiltered    = response.data.total;
157
                        json.data               = response.data.items;
158
                    } else {
159
                        $.fn.showError(response.data)
160
                    }
161
 
162
                    return JSON.stringify( json );
163
                }
164
    		},
165
            'language' : {
166
                'sProcessing':     'LABEL_DATATABLE_SPROCESSING',
167
                'sLengthMenu':     'LABEL_DATATABLE_SLENGTHMENU',
168
                'sZeroRecords':    'LABEL_DATATABLE_SZERORECORDS',
169
                'sEmptyTable':     'LABEL_DATATABLE_SEMPTYTABLE',
170
                'sInfo':           'LABEL_DATATABLE_SINFO',
171
                'sInfoEmpty':      'LABEL_DATATABLE_SINFOEMPTY',
172
                'sInfoFiltered':   'LABEL_DATATABLE_SINFOFILTERED',
173
                'sInfoPostFix':    '',
174
                'sSearch':         'LABEL_DATATABLE_SSEARCH',
175
                'sUrl':            '',
176
                'sInfoThousands':  ',',
177
                'sLoadingRecords': 'LABEL_DATATABLE_SLOADINGRECORDS',
178
                'oPaginate': {
179
                    'sFirst':    'LABEL_DATATABLE_SFIRST',
180
                    'sLast':     'LABEL_DATATABLE_SLAST',
181
                    'sNext':     'LABEL_DATATABLE_SNEXT',
182
                    'sPrevious': 'LABEL_DATATABLE_SPREVIOUS'
183
                },
184
                'oAria': {
185
                    'sSortAscending':  ': LABEL_DATATABLE_SSORTASCENDING',
186
                    'sSortDescending': ':LABEL_DATATABLE_SSORTDESCENDING'
187
                },
188
            },
189
            'drawCallback': function( settings ) {
190
                NProgress.done();
191
                $('button.btn-delete').confirmation({
192
                    rootSelector: 'button.btn-delete',
193
                    title : 'LABEL_ARE_YOU_SURE',
194
                    singleton : true,
195
                    btnOkLabel: 'LABEL_YES',
196
                    btnCancelLabel: 'LABEL_NO',
197
                    onConfirm: function(value) {
198
                        action = $(this).data('href');
199
                        NProgress.start();
200
                        $.ajax({
201
                            'dataType'  : 'json',
202
                            'accept'    : 'application/json',
203
                            'method'    : 'post',
204
                            'url'       :  action,
205
                        }).done(function(response) {
206
                            if(response['success']) {
207
                                $.fn.showSuccess(response['data']);
208
                                gridTable.api().ajax.reload(null, false);
209
                            } else {
210
                                $.fn.showError(response['data']);
211
                            }
212
                        }).fail(function( jqXHR, textStatus, errorThrown) {
213
                            $.fn.showError(textStatus);
214
                        }).always(function() {
215
                            NProgress.done();
216
                        });
217
                    },
218
                });
219
            },
220
            'aoColumns': [
221
                { 'mDataProp': 'question' },
222
                { 'mDataProp': 'details' },
223
                { 'mDataProp': 'votes' },
224
                { 'mDataProp': 'actions' },
225
    	    ],
226
            'columnDefs': [
227
                {
228
                    'targets': 0,
229
                    'className' : 'text-vertical-middle',
230
                },
231
                {
232
                    'targets': 1,
233
                    'orderable': false,
234
                    'render' : function ( data, type, row ) {
16747 efrain 235
                        var s = 'LABEL_DURATION_FROM : ' + data['added_on'] + '<br>';
16701 efrain 236
                        s = s + 'LABEL_DURATION_UNTIL : ' + data['expire_on'] + '<br>';
237
 
238
                    return s;
239
 
240
                    }
241
                },
242
                {
243
                    'targets': 2,
244
                    'className' : 'text-vertical-middle',
245
                    'orderable': false,
246
                },
247
                {
248
                    'targets': -1,
249
                    'orderable': false,
250
                    'render' : function ( data, type, row ) {
251
                        s = '';
252
 
253
                        if(allowEdit && data['link_edit']) {
254
                            s = s + '<button class="btn btn-primary btn-edit" data-href="' + data['link_edit']+ '" data-toggle="tooltip" title="LABEL_EDIT"><i class="fa fa-pencil"></i> LABEL_EDIT </button>&nbsp;';
255
                        }
256
                        if(allowDelete && data['link_delete']) {
257
                            s = s + '<button class="btn btn-danger btn-delete" data-href="' + data['link_delete']+ '" data-toggle="tooltip" title="LABEL_DELETE"><i class="fa fa-trash"></i> LABEL_DELETE </button>&nbsp;';
258
                        }
16747 efrain 259
                        if(allowChart && data['link_chart']) {
260
                            s = s + '<button class="btn btn-danger btn-chart" data-href="' + data['link_chart']+ '" data-toggle="tooltip" title="LABEL_CHART"><i class="fa fa-line-chart"></i> LABEL_CHART </button>&nbsp;';
261
                        }
262
                        if(allowDownload && data['link_download']) {
263
                            s = s + '<button class="btn btn-danger btn-download" data-href="' + data['link_download']+ '" data-toggle="tooltip" title="LABEL_DOWNLOAD"><i class="fa fa-download"></i> LABEL_DOWNLOAD </button>&nbsp;';
264
                        }
16701 efrain 265
                        return s;
266
                    }
267
                }
268
              ],
269
        });
270
 
271
 
272
        var validator = $('#form').validate({
273
            debug: true,
274
            onclick: false,
275
            onkeyup: false,
276
            ignore: [],
277
            rules: {
278
                'question': {
279
                    required: true,
280
                    maxlength: 1024,
281
                },
282
                'number_of_answers' : {
283
                    required: true,
284
                    digits: true,
285
                    min: 2,
286
                    max: 5
287
                },
288
                'answer1': {
289
                    required: true,
290
                    maxlength: 100,
291
                },
292
                'answer2': {
293
                    required: true,
294
                    maxlength: 100,
295
                },
296
                'answer3': {
297
                    required: function (element) {
298
                        return $('#form #number_of_answers').val() >= 3 ? true : false;
299
                    } ,
300
                    maxlength: 100,
301
                },
302
                'answer4': {
303
                    required: function (element) {
304
                        return $('#form #number_of_answers').val() >= 4 ? true : false;
305
                    } ,
306
                    maxlength: 100,
307
                },
308
                'answer5': {
309
                    required: function (element) {
310
                        return $('#form #number_of_answers').val() >= 5 ? true : false;
311
                    } ,
312
                    maxlength: 100,
313
                },
314
                'privacy': {
315
                    required: true,
316
                },
317
                'result_type': {
318
                    required: false,
319
 
320
                },
321
                'duration_days' : {
322
                    required: true,
323
                    digits: true,
324
                    min: 1,
325
                    max: 29
326
                },
327
                'duration_hours' : {
328
                    required: true,
329
                    digits: true,
330
                    min: 0,
331
                    max: 23
332
                },
333
                'duration_minutes' : {
334
                    required: true,
335
                    digits: true,
336
                    min: 0,
337
                    max: 59
338
                },
339
            },
340
            submitHandler: function(form)
341
            {
342
                $.ajax({
343
                    'dataType'  : 'json',
344
                    'accept'    : 'application/json',
345
                    'method'    : 'post',
346
                    'url'       :  $('#form').attr('action'),
347
                    'data'      :  $('#form').serialize(),
348
 
349
                }).done(function(response) {
350
                    NProgress.start();
351
                    if(response['success']) {
352
                        $.fn.showSuccess(response['data']);
353
 
354
                        $('#row-form').hide();
355
                        $('#row-listing').show();
356
 
357
 
358
                        gridTable.api().ajax.reload(null, false);
359
                    } else {
360
                        validator.resetForm();
361
                        if(jQuery.type(response['data']) == 'string') {
362
                            $.fn.showError(response['data']);
363
                        } else  {
364
                            $.each(response['data'], function( fieldname, errors ) {
365
                                $.fn.showFormErrorValidator('#form #' + fieldname, errors);
366
                            });
367
                        }
368
                    }
369
                }).fail(function( jqXHR, textStatus, errorThrown) {
370
                    $.fn.showError(textStatus);
371
                }).always(function() {
372
                    NProgress.done();
373
                });
374
                return false;
375
            },
376
            invalidHandler: function(form, validator) {
377
            }
378
        });
379
 
380
 
381
 
382
        $('body').on('click', 'button.btn-add', function(e) {
383
            e.preventDefault();
384
 
385
            $('#card-form-title').html('LABEL_ADD');
386
            $('#form').attr('action', '$routeAdd');
387
            $('#form #question').val('');
388
            $('#form #number_of_answers').val('2');
389
            $('#form #answer1').val('');
390
            $('#form #answer2').val('');
391
            $('#form #answer3').val('');
392
            $('#form #answer4').val('');
393
            $('#form #answer5').val('');
394
            $('#form #privacy').val($("#form #privacy option:first").val());
395
            $('#form #result_type').val($("#form #result_type option:first").val());
396
            $('#form #duration_days').val('1');
397
            $('#form #duration_hours').val('0');
398
            $('#form #duration_minutes').val('0');
399
 
400
            $('#form-group-answer3').hide();
401
            $('#form-group-answer4').hide();
402
            $('#form-group-answer5').hide();
403
 
404
            validator.resetForm();
405
            $('#row-listing').hide();
406
            $('#row-form').show();
407
 
408
        });
409
 
410
        $('body').on('click', 'button.btn-edit', function(e) {
411
            e.preventDefault();
412
            NProgress.start();
413
            var action = $(this).data('href');
414
 
415
            $.ajax({
416
                'dataType'  : 'json',
417
                'method'    : 'get',
418
                'url'       :  action,
419
            }).done(function(response) {
420
                if(response['success']) {
421
 
422
                    $('#card-form-title').html('LABEL_EDIT');
423
                    $('#form').attr('action', action);
424
                    $('#form #question').val(response['data']['question']);
425
                    $('#form #number_of_answers').val(response['data']['number_of_answers']);
426
                    $('#form #answer1').val(response['data']['answer1']);
427
                    $('#form #answer2').val(response['data']['answer2']);
428
                    $('#form #answer3').val(response['data']['answer3']);
429
                    $('#form #answer4').val(response['data']['answer4']);
430
                    $('#form #answer5').val(response['data']['answer5']);
431
                    $('#form #privacy').val(response['data']['privacy']);
432
                    $('#form #result_type').val(response['data']['result_type']);
433
                    $('#form #duration_days').val(response['data']['duration_days']);
434
                    $('#form #duration_hours').val(response['data']['duration_hours']);
435
                    $('#form #duration_minutes').val(response['data']['duration_minutes']);
436
 
437
                    switch(response['data']['number_of_answers'])
438
                    {
439
                        case 3 :
440
                            $('#form-group-answer3').show();
441
                            $('#form-group-answer4').hide();
442
                            $('#form-group-answer5').hide();
443
                            break;
444
 
445
                        case 4 :
446
                            $('#form-group-answer3').show();
447
                            $('#form-group-answer4').show();
448
                            $('#form-group-answer5').hide();
449
                            break;
450
 
451
                        case 5 :
452
                            $('#form-group-answer3').show();
453
                            $('#form-group-answer4').show();
454
                            $('#form-group-answer5').show();
455
                            break;
456
 
457
                        default :
458
                            $('#form-group-answer3').hide();
459
                            $('#form-group-answer4').hide();
460
                            $('#form-group-answer5').hide();
461
                            break;
462
 
463
                    }
464
 
465
 
466
                    validator.resetForm();
467
                    $('#row-listing').hide();
468
                    $('#row-form').show();
469
 
470
 
471
                } else {
472
                    $.fn.showError(response['data']);
473
                }
474
            }).fail(function( jqXHR, textStatus, errorThrown) {
475
                $.fn.showError(textStatus);
476
            }).always(function() {
477
                NProgress.done();
478
            });
479
        });
480
 
16747 efrain 481
        $('body').on('click', 'button.btn-chart', function(e) {
482
            e.preventDefault();
483
            NProgress.start();
484
            var action = $(this).data('href');
485
 
486
            $.ajax({
487
                'dataType'  : 'json',
488
                'method'    : 'get',
489
                'url'       :  action,
490
            }).done(function(response) {
491
                if(response['success']) {
492
 
493
                    $('#chart-question').html(response['data']['question']);
494
 
495
                    chartResult.data.labels = response['data']['labels'];
496
                    chartResult.data.datasets[0].data = response['data']['values'];
497
                    chartResult.update();
498
 
499
                    $('#row-listing').hide();
500
                    $('#row-chart').show();
501
 
502
 
503
                } else {
504
                    $.fn.showError(response['data']);
505
                }
506
            }).fail(function( jqXHR, textStatus, errorThrown) {
507
                $.fn.showError(textStatus);
508
            }).always(function() {
509
                NProgress.done();
510
            });
511
        });
512
 
513
 
514
        $('body').on('click', 'button.btn-download', function(e) {
515
            e.preventDefault();
516
 
517
            NProgress.start();
518
             var action = $(this).data('href');
519
 
520
 
521
            $.ajax({
522
                'dataType'  : 'json',
523
                'method'    : 'get',
524
                'url'       : action,
525
            }).done(function(response) {
526
                if(response['success']) {
527
                    var anchor = window.document.createElement("a");
528
                    anchor.href = 'data:application/octet-stream;charset=utf-8;base64,' + response['data']['content'] ;
529
                    anchor.download = response['data']['basename'];
530
                    document.body.appendChild(anchor);
531
                    anchor.click();  // IE: "Access is denied"; see: https://connect.microsoft.com/IE/feedback/details/797361/ie-10-treats-blob-url-as-cross-origin-and-denies-access
532
                    document.body.removeChild(anchor);
533
                } else {
534
                    $.fn.showError(response['data']);
535
                }
536
            }).fail(function( jqXHR, textStatus, errorThrown) {
537
                $.fn.showError(textStatus);
538
            }).always(function() {
539
                NProgress.done();
540
            });
541
 
542
 
543
        });
544
 
545
 
546
 
16701 efrain 547
        $('body').on('click', 'button.btn-refresh', function(e) {
548
            e.preventDefault();
549
            gridTable.api().ajax.reload(null, false);
550
        });
551
 
552
 
553
        $('body').on('click', 'button.btn-cancel', function(e) {
554
            e.preventDefault();
16747 efrain 555
            $('#row-chart').hide();
16701 efrain 556
            $('#row-form').hide();
557
            $('#row-listing').show();
558
        });
559
 
560
        $('#form #number_of_answers').change(function(e) {
561
            e.preventDefault();
562
 
563
            switch(parseInt($(this).val()))
564
                    {
565
                        case 3 :
566
                            $('#form-group-answer3').show();
567
                            $('#form-group-answer4').hide();
568
                            $('#form-group-answer5').hide();
569
                            break;
570
 
571
                        case 4 :
572
                            $('#form-group-answer3').show();
573
                            $('#form-group-answer4').show();
574
                            $('#form-group-answer5').hide();
575
                            break;
576
 
577
                        case 5 :
578
                            $('#form-group-answer3').show();
579
                            $('#form-group-answer4').show();
580
                            $('#form-group-answer5').show();
581
                            break;
582
 
583
                        default :
584
                            $('#form-group-answer3').hide();
585
                            $('#form-group-answer4').hide();
586
                            $('#form-group-answer5').hide();
587
                            break;
588
 
589
                    }
590
 
591
 
592
        });
593
 
594
 
595
        $('#form #duration_days').inputNumberFormat({decimal: 0});
596
        $('#form #duration_hours').inputNumberFormat({decimal: 0});
597
        $('#form #duration_minutes').inputNumberFormat({decimal: 0});
598
 
599
 
600
 
601
 
602
 
603
    });
604
JS;
605
$this->inlineScript()->captureEnd();
606
?>
607
 
608
 
609
 
610
<!-- Content Header (Page header) -->
611
<section class="content-header">
612
    <div class="container-fluid">
613
        <div class="row mb-2">
614
            <div class="col-sm-12">
615
                <h1>LABEL_FAST_SURVEYS</h1>
616
            </div>
617
        </div>
618
    </div><!-- /.container-fluid -->
619
</section>
620
 
621
<section class="content">
622
    <div class="container-fluid">
623
        <div class="row" id="row-listing">
624
            <div class="col-12">
625
                <div class="card">
626
                    <div class="card-body">
627
                        <table id="gridTable" class="table table-striped table-hover">
628
                            <thead>
629
                                <tr>
630
                                    <th>LABEL_QUESTION</th>
631
                                    <th>LABEL_DETAILS</th>
632
                                    <th>LABEL_VOTES</th>
633
                                    <th>LABEL_ACTIONS</th>
634
                                </tr>
635
                            </thead>
636
                            <tbody>
637
                            </tbody>
638
                        </table>
639
                    </div>
640
                    <div class="card-footer clearfix">
641
                        <div style="float:right;">
642
                            <button type="button" class="btn btn-info btn-refresh"><i class="fa fa-refresh"></i> LABEL_REFRESH </button>
643
                            <?php if ($allowAdd) : ?>
644
                                <button type="button" class="btn btn-primary btn-add"><i class="fa fa-plus"></i> LABEL_ADD </button>
645
                            <?php endif; ?>
646
 
647
                        </div>
648
                    </div>
649
                </div>
650
            </div>
651
        </div>
652
 
653
		<div class="row" id="row-form" style="display: none">
654
            <div class="col-12">
655
                <div class="card">
656
                	<div class="card-header" ><h2 id="card-form-title"></h2>
657
                    </div>
658
                    <?php
659
                    $form = $this->form;
660
                    $form->setAttributes([
661
                        'method'    => 'post',
662
                        'name'      => 'form',
663
                        'id'        => 'form',
664
                    ]);
665
 
666
                    $form->prepare();
667
                    echo $this->form()->openTag($form);
668
                    ?>
669
                    <div class="card-body">
670
                   		<div class="form-group">
671
                            <?php
672
                            $element = $form->get('question');
673
                            $element->setOptions(['label' => 'LABEL_QUESTION']);
674
                            $element->setAttributes(['class' => 'form-control']);
675
 
676
                            echo $this->formLabel($element);
677
                            echo $this->formText($element);
678
                            ?>
679
                        </div>
680
               			<div class="form-group">
681
                            <?php
682
                            $element = $form->get('number_of_answers');
683
                            $element->setOptions(['label' => 'LABEL_NUMBER_OF_ANSWERS']);
684
                            $element->setAttributes(['class' => 'form-control']);
685
 
686
                            echo $this->formLabel($element);
687
                            echo $this->formSelect($element);
688
                            ?>
689
                        </div>
690
                    	 <div class="form-group">
691
                            <?php
692
                            $element = $form->get('answer1');
693
                            $element->setOptions(['label' => 'LABEL_ANSWER1']);
694
                            $element->setAttributes(['class' => 'form-control']);
695
 
696
                            echo $this->formLabel($element);
697
                            echo $this->formText($element);
698
                            ?>
699
                        </div>
700
                    	<div class="form-group">
701
                            <?php
702
                            $element = $form->get('answer2');
703
                            $element->setOptions(['label' => 'LABEL_ANSWER2']);
704
                            $element->setAttributes(['class' => 'form-control']);
705
 
706
                            echo $this->formLabel($element);
707
                            echo $this->formText($element);
708
                            ?>
709
                        </div>
710
                    	 <div class="form-group" id="form-group-answer3">
711
                            <?php
712
                            $element = $form->get('answer3');
713
                            $element->setOptions(['label' => 'LABEL_ANSWER3']);
714
                            $element->setAttributes(['class' => 'form-control']);
715
 
716
                            echo $this->formLabel($element);
717
                            echo $this->formText($element);
718
                            ?>
719
                        </div>
720
                    	 <div class="form-group" id="form-group-answer4">
721
                            <?php
722
                            $element = $form->get('answer4');
723
                            $element->setOptions(['label' => 'LABEL_ANSWER4']);
724
                            $element->setAttributes(['class' => 'form-control']);
725
 
726
                            echo $this->formLabel($element);
727
                            echo $this->formText($element);
728
                            ?>
729
                        </div>
730
                    	<div class="form-group" id="form-group-answer5">
731
                            <?php
732
                            $element = $form->get('answer5');
733
                            $element->setOptions(['label' => 'LABEL_ANSWER5']);
734
                            $element->setAttributes(['class' => 'form-control']);
735
 
736
                            echo $this->formLabel($element);
737
                            echo $this->formText($element);
738
                            ?>
739
                        </div>
740
                      	<div class="form-group">
741
                            <?php
742
                            $element = $form->get('privacy');
743
                            $element->setOptions(['label' => 'LABEL_PRIVACY']);
744
                            $element->setAttributes(['class' => 'form-control']);
745
 
746
                            echo $this->formLabel($element);
747
                            echo $this->formSelect($element);
748
                            ?>
749
                        </div>
750
                      	<div class="form-group">
751
                            <?php
752
                            $element = $form->get('result_type');
753
                            $element->setOptions(['label' => 'LABEL_RESULT_TYPE']);
754
                            $element->setAttributes(['class' => 'form-control']);
755
 
756
                            echo $this->formLabel($element);
757
                            echo $this->formSelect($element);
758
                            ?>
759
                        </div>
760
                    	<div class="form-group">
761
                            <?php
762
                            $element = $form->get('duration_days');
763
                            $element->setOptions(['label' => 'LABEL_DURATION_DAYS']);
764
                            $element->setAttributes(['class' => 'form-control']);
765
 
766
                            echo $this->formLabel($element);
767
                            echo $this->formNumber($element);
768
                            ?>
769
                        </div>
770
                  		<div class="form-group">
771
                            <?php
772
                            $element = $form->get('duration_hours');
773
                            $element->setOptions(['label' => 'LABEL_DURATION_HOURS']);
774
                            $element->setAttributes(['class' => 'form-control']);
775
 
776
                            echo $this->formLabel($element);
777
                            echo $this->formNumber($element);
778
                            ?>
779
                        </div>
780
                      	<div class="form-group">
781
                            <?php
782
                            $element = $form->get('duration_minutes');
783
                            $element->setOptions(['label' => 'LABEL_DURATION_MINUTES']);
784
                            $element->setAttributes(['class' => 'form-control']);
785
 
786
                            echo $this->formLabel($element);
787
                            echo $this->formNumber($element);
788
                            ?>
789
                        </div>
790
                    </div>
791
               		<div class="card-footer text-right">
792
                   		<button type="submit" class="btn btn-primary">LABEL_SAVE</button>
793
                        <button type="button" class="btn btn-light btn-cancel">LABEL_CANCEL</button>
794
                    </div>
795
                     <?php echo $this->form()->closeTag($form); ?>
796
                </div>
797
           </div>
16747 efrain 798
       </div>
799
 
800
   		<div class="row" id="row-chart" style="display: none">
801
            <div class="col-12">
802
                <div class="card">
803
                    <div class="card-header">
804
                        <h2 id="chart-question"></h2>
805
                    </div>
806
                    <div class="card-body">
807
                        <div class="row">
808
                            <div class="col-lg-12 col-12 chart">
809
                                <canvas id="chartResult" style="min-height: 250px; height: 250px; max-height: 250px; max-width: 100%;"></canvas>
810
                            </div>
811
                        </div>
812
                    </div>
813
                    <div class="card-footer text-right">
814
                   	    <button type="button" class="btn btn-light btn-cancel">LABEL_CANCEL</button>
815
                    </div>
816
                </div>
817
            </div>
818
        </div>
16701 efrain 819
 
820
 
821
    </div>
822
</section>
823
 
824