Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
15443 efrain 1
<?php
2
 
3
$acl            = $this->viewModel()->getRoot()->getVariable('acl');
4
$currentUser    = $this->currentUserHelper();
5
$roleName       = $currentUser->getUserTypeId();
6
 
7
$routeDatatable = $this->url( 'activities-center/performance-evaluation');
8
 
9
 
10
$allowTakeaTest = $acl->isAllowed($roleName, 'activities-center/performance-evaluation/take-a-test') ? 1 : 0;
11
$allowReport =  $acl->isAllowed($roleName, 'activities-center/performance-evaluation/report') ? 1 : 0;
12
 
16822 efrain 13
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/nprogress/nprogress.css'));
14
$this->inlineScript()->appendFile($this->basePath('assets/vendors/nprogress/nprogress.js'));
15443 efrain 15
 
16803 efrain 16
//$this->headLink()->appendStylesheet('https://fonts.googleapis.com/icon?family=Material+Icons');
15443 efrain 17
 
18
 
19
 
20
 
16842 efrain 21
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-maxlength/bootstrap-maxlength.min.js'));
15443 efrain 22
 
23
 
16822 efrain 24
$this->inlineScript()->appendFile($this->basePath('assets/vendors/jquery-validation/jquery.validate.js'));
25
$this->inlineScript()->appendFile($this->basePath('assets/vendors/jquery-validation/additional-methods.js'));
26
$this->inlineScript()->appendFile($this->basePath('assets/vendors/jquery-validation/localization/messages_es.js'));
15443 efrain 27
 
16822 efrain 28
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/datatables.net-bs5/dataTables.bootstrap5.css'));
29
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/datatables.net-bs5-responsive/responsive.bootstrap5.css'));
15443 efrain 30
 
16822 efrain 31
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net/jquery.dataTables.js'));
32
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net-bs5/dataTables.bootstrap5.js'));
33
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net-bs5-responsive/dataTables.responsive.min.js'));
34
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net-bs5-responsive/responsive.bootstrap5.min.js'));
15443 efrain 35
 
36
 
16822 efrain 37
$this->inlineScript()->appendFile($this->basePath('assets/vendors/jquery-validation/jquery.validate.js'));
38
$this->inlineScript()->appendFile($this->basePath('assets/vendors/jquery-validation/additional-methods.js'));
39
$this->inlineScript()->appendFile($this->basePath('assets/vendors/jquery-validation/localization/messages_es.js'));
15443 efrain 40
 
16822 efrain 41
$this->inlineScript()->appendFile($this->basePath('assets/vendors/moment/moment-with-locales.min.js'));
42
//$this->headLink()->appendStylesheet($this->basePath('assets/vendors/bootstrap-datetimepicker/css/bootstrap-datetimepicker.css'));
43
//$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js'));
15443 efrain 44
 
16822 efrain 45
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-datepicker/js/bootstrap-datepicker.js'));
46
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-datepicker/js/bootstrap-datepicker.es.js'));
15443 efrain 47
 
48
 
16822 efrain 49
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/bootstrap-datepicker/css/bootstrap-datepicker.css'));
15443 efrain 50
 
16822 efrain 51
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/select2/css/select2.min.css'));
52
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/select2-bootstrap4-theme/select2-bootstrap4.min.css'));
53
$this->inlineScript()->appendFile($this->basePath('assets/vendors/select2/js/select2.min.js'));
54
 
15443 efrain 55
// JsRender //
16822 efrain 56
$this->inlineScript()->appendFile($this->basePath('assets/vendors/jsrender/jsrender.min.js'));
15443 efrain 57
 
16822 efrain 58
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/bootstrap4-toggle/css/bootstrap4-toggle.min.css'));
59
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap4-toggle/js/bootstrap4-toggle.min.js'));
15443 efrain 60
 
61
 
62
 
63
 
16803 efrain 64
 
16822 efrain 65
$this->inlineScript()->appendFile($this->basePath('assets/vendors/jquery-input-number/input-number-format.jquery.js'));
66
 
67
$this->inlineScript()->appendFile($this->basePath('assets/vendors/jquery-wizard/jquery.smartWizard.min.js'));
68
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/jquery-wizard/smart_wizard_all.min.css'));
69
 
16803 efrain 70
$this->headLink()->appendStylesheet($this->basePath('css/activity-center-accordion.css'));
71
 
72
 
15443 efrain 73
$this->inlineScript()->captureStart();
74
echo <<<JS
75
 
76
 
77
jQuery( document ).ready(function( $ ) {
78
 
79
    var allowTakeaTest = $allowTakeaTest;
80
    var allowReport = $allowReport
81
 
82
    var competencies_selected = new Array();
83
    var subordinates_selected = new Array();
84
 
85
    var competency_types = new Array();
86
    var competencies = new Array();
87
    var behaviors = new Array();
88
 
89
 
90
    $.fn.renderJobDescription = function(data) {
91
 
92
        $('#div-job-description').html($('#job-description-template').render(data));
93
    }
94
 
95
 
96
    $.fn.renderCompetencies = function() {
97
 
98
        if(competencies_selected.length > 0) {
99
 
16803 efrain 100
             $('#accordion').html($('#competencyTemplate').render(competencies_selected, {
15443 efrain 101
                getCompetencyType: (uuid) => competency_types.filter((item) => item.uuid == uuid ? item : false)[0],
102
                getCompetency: (uuid) => competencies.filter((item) => item.uuid == uuid ? item : false)[0],
103
                getBehavior: (uuid) => behaviors.filter((item) => item.uuid == uuid ? item : false)[0]
104
            }));
105
        } else {
106
 
107
 
16803 efrain 108
             $('#accordion').empty();
15443 efrain 109
        }
16803 efrain 110
 
111
 
112
    	$('.collapse.show').each(function(){
113
    		$(this).siblings('.card-header').find('.btn i').attr('class', 'fa fa-minus');
114
    	});
115
 
116
    	$('.collapse').on('show.bs.collapse', function(){
117
        	$(this).parent().find('.card-header .btn i').attr('class', 'fa fa-minus');
118
    	}).on('hide.bs.collapse', function(){
119
    		$(this).parent().find('.card-header .btn i').attr('class', 'fa fa-plus');
120
    	});
121
 
15443 efrain 122
    }
123
 
124
 
125
 
126
    $.validator.setDefaults({
127
        debug: true,
128
        highlight: function(element) {
129
            $(element).addClass('is-invalid');
130
        },
131
        unhighlight: function(element) {
132
            $(element).removeClass('is-invalid');
133
        },
134
        errorElement: 'span',
135
        errorClass: 'error invalid-feedback',
136
        errorPlacement: function(error, element) {
137
            if(element.parent('.form-group').length) {
138
                error.insertAfter(element);
139
            } else if(element.parent('.toggle').length) {
140
                error.insertAfter(element.parent().parent());
141
            } else {
142
                error.insertAfter(element.parent());
143
            }
144
        }
145
    });
146
 
147
 
148
 
149
    $.fn.showFormErrorValidator = function(fieldname, errors) {
150
        var field = $(fieldname);
151
        if(field) {
152
            $(field).addClass('form-group-has-error');
153
 
154
            var error = $('<div id="' + fieldname +'-error" class="form-group-invalid-feedback">' + errors + '</div>');
155
            if(field.parent('.form-group').length) {
156
                error.insertAfter(field.parent());
157
            } else {
158
                error.insertAfter(field);
159
            }
160
        }
161
    };
162
 
163
 
164
 
165
        var gridTable = $('#gridTable').dataTable( {
166
            'processing': true,
167
            'serverSide': true,
168
            'searching': true,
169
            'search' : {
170
                'search' : '$search',
171
            },
172
 
173
            'order': [[ 1, 'asc' ]],
174
            'ordering':  true,
175
            'ordenable' : true,
176
            'responsive': true,
177
            'select' : false,
178
                'paging': true,
179
            'pagingType': 'simple_numbers',
180
            'lengthMenu': [ [10, 25, 50, -1], [10, 25, 50, 'All'] ],
181
 
182
                'ajax': {
183
                        'url' : '$routeDatatable',
184
                        'type' : 'get',
185
                'data': function ( d ) {
186
 
187
 
188
                },
189
                'beforeSend': function (request) {
190
                  NProgress.start();
191
                },
192
                'dataFilter': function(response) {
193
                    var response = jQuery.parseJSON( response );
194
 
195
                    var json                = {};
196
                    json.recordsTotal       = 0;
197
                    json.recordsFiltered    = 0;
198
                    json.data               = [];
199
 
200
                    if(response.success) {
201
                                               json.recordsTotal       = response.data.total;
202
                        json.recordsFiltered    = response.data.total;
203
                        json.data               = response.data.items;
204
                    } else {
205
                        $.fn.showError(response.data)
206
                    }
207
 
208
                    return JSON.stringify( json );
209
                }
210
                },
211
            'language' : {
212
                'sProcessing':     'LABEL_DATATABLE_SPROCESSING',
213
                'sLengthMenu':     'LABEL_DATATABLE_SLENGTHMENU',
214
                'sZeroRecords':    'LABEL_DATATABLE_SZERORECORDS',
215
                'sEmptyTable':     'LABEL_DATATABLE_SEMPTYTABLE',
216
                'sInfo':           'LABEL_DATATABLE_SINFO',
217
                'sInfoEmpty':      'LABEL_DATATABLE_SINFOEMPTY',
218
                'sInfoFiltered':   'LABEL_DATATABLE_SINFOFILTERED',
219
                'sInfoPostFix':    '',
220
                'sSearch':         'LABEL_DATATABLE_SSEARCH',
221
                'sUrl':            '',
222
                'sInfoThousands':  ',',
223
                'sLoadingRecords': 'LABEL_DATATABLE_SLOADINGRECORDS',
224
                'oPaginate': {
225
                    'sFirst':    'LABEL_DATATABLE_SFIRST',
226
                    'sLast':     'LABEL_DATATABLE_SLAST',
227
                    'sNext':     'LABEL_DATATABLE_SNEXT',
228
                    'sPrevious': 'LABEL_DATATABLE_SPREVIOUS'
229
                },
230
                'oAria': {
231
                    'sSortAscending':  ': LABEL_DATATABLE_SSORTASCENDING',
232
                    'sSortDescending': ':LABEL_DATATABLE_SSORTDESCENDING'
233
                },
234
            },
235
            'drawCallback': function( settings ) {
236
                NProgress.done();
16822 efrain 237
 
15443 efrain 238
 
239
 
240
            },
241
            'aoColumns': [
242
                { 'mDataProp': 'last_date' },
243
                { 'mDataProp': 'form' },
244
                { 'mDataProp': 'supervisor_first_name' },
245
                { 'mDataProp': 'employee_last_name' },
246
                { 'mDataProp': 'status' },
247
 
248
            ],
249
            'columnDefs': [
250
                {
251
                    'targets': 0,
252
                    'render' : function ( data, type, row ) {
253
                        var s = row['last_date'] + '<br>' + row['type'];
254
 
255
                        return s;
256
 
257
 
258
                     }
259
                },
260
                {
261
                    'targets': 1,
262
                    'render' : function ( data, type, row ) {
263
                        var s = row['form'];
264
 
265
                        if (allowTakeaTest && row['actions']['link_take_a_test']) {
266
 
267
                            s = s + '<br><button class="btn btn-default btn-take-the-test" data-href="' + row['actions']['link_take_a_test'] + '" data-toggle="tooltip" title="LABEL_PERFORMANCE_EVALUATION_TAKE_TEST"><i class="fa fa-pencil"></i> LABEL_PERFORMANCE_EVALUATION_TAKE_TEST </button>&nbsp;';
268
                        }
269
 
270
                        if (allowReport && row['actions']['link_pdf']) {
271
                            s = s + '<br><button class="btn btn-default btn-pdf" data-href="' + row['actions']['link_pdf'] + '" data-toggle="tooltip" title="LABEL_PDF"><i class="fa fa-pdf"></i> LABEL_PDF </button>&nbsp;';
272
                        }
273
 
274
                        return s;
275
 
276
 
277
                     }
278
                },
279
                {
280
                    'targets': 2,
281
                    'render' : function ( data, type, row ) {
282
                        var s = row['supervisor_first_name'] + ' ' + row['supervisor_last_name'];
283
 
284
                        return s;
285
 
286
 
287
                     }
288
                },
289
                {
290
                    'targets': 3,
291
                    'render' : function ( data, type, row ) {
292
                        var s = row['employee_first_name'] + ' ' + row['employee_last_name'];
293
 
294
                        return s;
295
 
296
 
297
                     }
298
                },
299
 
300
              ],
301
        });
302
 
303
 
304
 
305
    $('body').on('click', 'button.btn-save', function(e) {
306
        e.preventDefault();
307
 
308
        var ok = $('#comment').val().trim().length > 0
309
        $.each($('input.input-behavior-comment'), function(index, element) {
310
            ok = ok && $(element).val().trim().length > 0;
311
        });
312
 
313
        if(!ok) {
314
            $.fn.showError('ERROR_PERFORMANCE_SOMEONE_COMMENT_IS_EMPTY');
315
            return false;
316
        }
317
 
16822 efrain 318
          swal.fire({
319
            title: 'LABEL_ARE_YOU_SURE',
15443 efrain 320
            message: 'LABEL_PERFORMANCE_EVALUATION_TEST_IS_COMPLETED',
16822 efrain 321
            icon: 'question',
322
            cancelButtonText: 'LABEL_NO',
323
            showCancelButton: true,
324
            confirmButtonText: 'LABEL_YES'
325
          }).then((result) => {
326
            if (result.isConfirmed) {
327
 
328
 
15443 efrain 329
                    var data = new Array()
330
                    data['comment'] = $('#comment').val().trim();
331
                    data['points'] = $('#points').val();
332
                    $.each($('input.input-behavior-comment'), function(index, element) {
333
                        k = $(this).attr('name');
334
                        v = $(this).val().trim();
335
 
336
                        data[k] = v;
337
                    });
338
                    $.each($('input.input-behavior-level'), function(index, element) {
339
                        k = $(this).attr('name');
340
                        v = $(this).val();
341
 
342
                        data[k] = v;
343
                    });
344
 
345
 
346
 
347
                    var action = $('#form').attr('action');
348
                    $.ajax({
349
                        'dataType': 'json',
350
                        'accept': 'application/json',
351
                        'method': 'post',
352
                        'url': action,
353
                        'data' : $('#form').serialize()
354
                    }).done(function(response) {
355
                        if (response['success']) {
356
                            $('#row-test').hide();
357
                            $('#row-header').show();
358
                            $('#row-table').show();
359
 
360
                            gridTable.api().ajax.reload(null, false);
361
                        } else {
362
                            $.fn.showError(response['data']);
363
                        }
364
                    }).fail(function(jqXHR, textStatus, errorThrown) {
365
                        $.fn.showError(textStatus);
366
                    });
367
                }
368
            }
369
        });
370
 
371
 
372
    });
373
 
374
    $('body').on('click', 'button.btn-refresh', function(e) {
375
        e.preventDefault();
376
        gridTable.api().ajax.reload(null, false);
377
    });
378
 
379
 
380
   $('body').on('click', 'button.btn-pdf', function(e) {
381
        e.preventDefault();
382
        var action   = $(this).data('href');
383
 
384
 
385
        NProgress.start();
386
        $.ajax({
387
            'dataType'  : 'json',
388
            'method'    : 'get',
389
            'url'       :  action,
390
        }).done(function(response) {
391
            if(response['success']) {
392
                var anchor = window.document.createElement("a");
393
                anchor.href = 'data:application/octet-stream;charset=utf-8;base64,' + response['data']['content'] ;
394
                anchor.download = response['data']['basename'];
395
                document.body.appendChild(anchor);
396
                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
397
                document.body.removeChild(anchor);
398
            } else {
399
                $.fn.showError(response['data']);
400
            }
401
        }).fail(function( jqXHR, textStatus, errorThrown) {
402
            $.fn.showError(textStatus);
403
        }).always(function() {
404
            NProgress.done();
405
        });
406
 
407
 
408
 
409
    });
410
 
411
    $('body').on('click', 'button.btn-cancel', function(e) {
412
        e.preventDefault();
413
 
414
        $('#row-test').hide();
415
        $('#row-header').show();
416
        $('#row-table').show();
417
 
418
    });
419
 
420
 
421
    $('body').on('click', 'button.btn-take-the-test', function(e) {
422
        e.preventDefault();
423
 
16817 efrain 424
         NProgress.done();
425
 
15443 efrain 426
        var action   = $(this).data('href');
16817 efrain 427
 
428
 
429
 
15443 efrain 430
        $.getJSON(action, function(response) {
431
            if(response['success']) {
432
 
433
                $('#form').attr('action', action);
434
 
435
                behaviors = response['data']['behaviors'];
436
                competency_types = response['data']['competency_types'];
437
                competencies = response['data']['competencies'];
438
                competencies_selected = response['data']['competencies_selected'];
439
                subordinates_selected = response['data']['subordinates_selected'];
440
 
441
                $.fn.renderCompetencies();
442
 
16803 efrain 443
                $('#form-title').html( response['data']['form'])
15443 efrain 444
 
16803 efrain 445
 
15443 efrain 446
                var data = {
447
                    name: response['data']['name'],
448
                    functions : response['data']['functions'],
449
                    objectives : response['data']['objectives'],
450
                    form : response['data']['form'],
451
                    type : response['data']['type'],
452
                    supervisor : response['data']['supervisor'],
453
                    employee : response['data']['employee'],
454
                    last_date : response['data']['last_date'],
455
                }
456
                $.fn.renderJobDescription(data);
457
 
458
 
459
 
460
                $('input.input-behavior-level').inputNumberFormat({decimal: 0});
461
                $('input.input-behavior-level').change(function(e) {
462
                    e.preventDefault();
463
 
464
                    var v = parseInt($(this).val());
465
                    if(isNaN(v)) {
466
                        $(this).val('0');
467
                    } else {
468
                        if(v > 100) {
469
                            $(this).val('100');
470
                        }
471
                    }
472
                });
473
 
474
 
15450 efrain 475
                $('#comment').val('');
476
                $('#points').val('');
15443 efrain 477
                $('#row-header').hide();
478
                $('#row-table').hide();
479
                $('#row-test').show();
480
 
16804 efrain 481
                $('#stepwizard').smartWizard('reset');
482
 
15443 efrain 483
 
484
            } else {
485
                $.fn.showError(response['data'])
486
            }
487
        }).fail(function( jqXHR, textStatus, errorThrown) {
488
                    $.fn.showError(textStatus);
489
                }).always(function() {
490
                    NProgress.done();
491
                });
492
 
493
 
494
    });
495
 
16822 efrain 496
    $('body').on('click', 'button.btn-delete', function(e) {
497
        e.preventDefault();
498
        var action = $(this).data('href');
15443 efrain 499
 
16822 efrain 500
 
501
          swal.fire({
502
            title: 'LABEL_ARE_YOU_SURE',
503
            icon: 'question',
504
            cancelButtonText: 'LABEL_NO',
505
            showCancelButton: true,
506
            confirmButtonText: 'LABEL_YES'
507
          }).then((result) => {
508
            if (result.isConfirmed) {
509
 
510
                    NProgress.start();
511
                    $.ajax({
512
                        'dataType'  : 'json',
513
                        'accept'    : 'application/json',
514
                        'method'    : 'post',
515
                        'url'       :  action,
516
                    }).done(function(response) {
517
                        if(response['success']) {
518
                            $.fn.showSuccess(response['data']);
519
                            gridTable.api().ajax.reload(null, false);
520
                        } else {
521
                            $.fn.showError(response['data']);
522
                        }
523
                    }).fail(function( jqXHR, textStatus, errorThrown) {
524
                        $.fn.showError(textStatus);
525
                    }).always(function() {
526
                        NProgress.done();
527
                    });
528
            }
529
       });
530
 
531
    });
532
 
533
 
15443 efrain 534
    $('#form #comment').maxlength({
535
        alwaysShow: true,
536
        validate: true
537
    });
538
 
539
 
540
 
541
    $('#points').inputNumberFormat({decimal: 0});
542
    $('#points').change(function(e) {
543
        e.preventDefault();
544
 
545
        var v = parseInt($(this).val());
546
        if(isNaN(v)) {
547
            $(this).val('0');
548
        } else {
549
            if(v > 100) {
550
                $(this).val('100');
551
            }
552
        }
553
    });
554
 
16803 efrain 555
 
556
    $('#stepwizard').smartWizard({
557
        selected: 0,
558
        // autoAdjustHeight: false,
559
        theme: 'arrows', // basic, arrows, square, round, dots
560
        transition: {
561
            animation:'none'
562
        },
563
        lang: {
564
            next: 'LABEL_NEXT',
565
            previous: 'LABEL_PREVIOUS',
566
        },
567
        toolbar: {
568
            showNextButton: true, // show/hide a Next button
569
            showPreviousButton: true, // show/hide a Previous button
570
            position: 'bottom', // none/ top/ both bottom
571
            extraHtml: `<button type="button" class="btn btn-primary btn-save">LABEL_SAVE</button>`
16822 efrain 572
                + `<button type="button" class="btn btn-light btn-cancel">LABEL_CANCEL</button>`
16803 efrain 573
        },
574
        anchor: {
575
            enableNavigation: true, // Enable/Disable anchor navigation
576
            enableNavigationAlways: false, // Activates all anchors clickable always
577
            enableDoneState: true, // Add done state on visited steps
578
            markPreviousStepsAsDone: true, // When a step selected by url hash, all previous steps are marked done
579
            unDoneOnBackNavigation: true, // While navigate back, done state will be cleared
580
            enableDoneStateNavigation: true // Enable/Disable the done state navigation
581
        },
582
    });
583
 
584
    $('#stepwizard').smartWizard('reset');
585
 
15443 efrain 586
 
587
});
588
JS;
589
$this->inlineScript()->captureEnd();
590
?>
591
 
16822 efrain 592
 
593
 
594
                <div class="card" id="row-lists">
15443 efrain 595
                    <div class="card-body">
16822 efrain 596
                    <h6 class="card-title">card-title</h6>
15443 efrain 597
                        <table id="gridTable" class="table   table-hover">
598
                            <thead>
599
                                <tr>
600
                                    <th style="width:15%">LABEL_LAST_DATE</th>
601
                                    <th style="width:35%">LABEL_FORM_NAME</th>
602
                                    <th style="width:35%">LABEL_SUPERVISOR</th>
603
                                    <th style="width:35%">LABEL_EVALUATED</th>
604
                                    <th style="width:15%">LABEL_STATUS</th>
605
 
606
                                </tr>
607
                            </thead>
608
                            <tbody></tbody>
609
                        </table>
610
                    </div>
611
                    <div class="card-footer clearfix">
612
                        <div style="float:right;">
613
                            <button type="button" class="btn btn-info btn-refresh"><i class="fa fa-refresh"></i> LABEL_REFRESH </button>
614
                        </div>
615
                    </div>
616
                </div>
617
 
618
 
16822 efrain 619
 
620
 
621
        <div class="row p-2"  id="row-test" style="display: none;">>
16803 efrain 622
			<div class="col-12">
623
				<h4 class="text-center" id="form-title"></h4>
624
				<?php
625
                $form->setAttributes([
626
                    'method' => 'post',
627
                    'name' => 'form',
628
                    'id' => 'form',
629
                ]);
630
                $form->prepare();
631
                echo $this->form()->openTag($form);
632
                ?>
633
 
634
        		<div id="stepwizard" class="border border-gray p-4 mt-2">
635
            		<ul class="nav">
636
                    	<li class="nav-item">
637
                        	<a class="nav-link" href="#step-1">
638
                            	<div class="num">1</div>
639
                              	LABEL_GENERAL
640
                         	</a>
641
                    	</li>
642
                        <li class="nav-item">
643
                        	<a class="nav-link" href="#step-2">
644
                            	<div class="num">2</div>
645
                               	LABEL_COMPETENCIES
646
                            </a>
647
                    	</li>
648
                        <li class="nav-item">
649
                        	<a class="nav-link" href="#step-3">
650
                            	<span class="num">3</span>
651
                              	LABEL_CONCLUTION
652
                            </a>
653
                     	</li>
654
  					</ul>
655
                    <div class="tab-content">
656
    					<div id="step-1" class="tab-pane" role="tabpanel" aria-labelledby="step-1">
657
                        	<div class="w-100">
658
                            	<div class="mf-field w-100 d-flex justify-content-between p-3 align-items-center">
659
                            		<div class="form-group w-100">
660
    									<h5 id="interview"></h5>
661
                                      	<div id="div-job-description"></div>
662
                                  	</div>
663
    							</div>
664
    						</div>
665
            			</div>
666
            		    <div id="step-2" class="tab-pane" role="tabpanel" aria-labelledby="step-2">
667
                            <div class="w-100">
668
                         		 <div class="accordion mt-5 w-100" id="accordion" style="height: 500px; overflow-y: auto;">
669
                            	</div>
670
                          	</div>
671
    					</div>
672
						<div id="step-3" class="tab-pane" role="tabpanel" aria-labelledby="step-3">
673
							<div class="form-group w-100">
674
                            	<?php
675
                                $element = $form->get('comment');
676
                                $element->setOptions(['label' => 'LABEL_COMMENT']);
677
                                $element->setAttributes(['class' => 'form-control']);
678
                                echo $this->formLabel($element);
679
                                echo $this->formTextArea($element);
680
                                ?>
681
                     		</div>
682
                  			<div class="form-group w-100">
683
                          		<?php
684
                                $element = $form->get('points');
685
                                $element->setAttributes(['class' => 'form-control']);
686
                                $element->setOptions(['label' => 'LABEL_EVALUATION']);
687
                                echo $this->formLabel($element);
688
                                echo $this->formNumber($element);
689
                                ?>
690
                   			</div>
691
						</div>
692
					</div>
693
            	</div>
694
        	</div>
695
			<?php echo $this->form()->closeTag($form); ?>
696
 		</div>
15443 efrain 697
 
16803 efrain 698
 
16822 efrain 699
 
15443 efrain 700
 
701
<script id="job-description-template" type="text/x-jsrender">
702
    <div class="card">
703
        <div class="card-body">
16803 efrain 704
 
15443 efrain 705
            <table class="table table-bordered">
706
                <tr>
707
                    <th>LABEL_LAST_DATE</th>
708
                    <th>LABEL_TYPE</th>
709
                </tr>
710
                <tr>
711
                    <td>{{:last_date}}</td>
712
                    <td>{{:type}}</td>
713
                </tr>
714
 
715
                <tr>
716
                    <th>LABEL_SUPERVISOR</th>
717
                    <th>LABEL_EMPLOYEE</th>
718
                </tr>
719
                <tr>
720
                    <td>{{:supervisor}}</td>
721
                    <td>{{:employee}}</td>
722
                </tr>
723
            </table>
724
            <br/>
725
 
726
            <p class="card-text"><b>LABEL_OBJECTIVES</b></p>
727
            <p class="card-text">{{:objectives}}</p>
728
            <p class="card-text"><b>LABEL_FUNCTIONS</b></p>
729
            <p class="card-text">{{:functions}}</p>
730
 
731
        </div>
732
    </div>
733
</script>
734
 
735
 
736
<script id="competencyTemplate" type="text/x-jsrender">
16803 efrain 737
<div class="card">
738
    <div class="card-header" id="heading-{{:uuid}}">
739
        <h2 class="clearfix mb-0">
740
            <a class="btn btn-link" data-toggle="collapse" data-target="#collapse-{{:uuid}}" aria-expanded="true" aria-controls="collapse-{{:uuid}}">
741
                <i class="fa fa-plus"></i> {{:~getCompetencyType(competency_type_uuid).name}} - {{:~getCompetency(uuid).name}}
742
            </a>
743
        </h2>
744
    </div>
745
    <div id="collapse-{{:uuid}}" class="collapse" aria-labelledby="heading-{{:uuid}}" data-parent="#accordion">
746
        <div class="card-body">
747
            <div class="table-responsive">
748
                <table class="table table-bordered">
749
                    <thead>
750
                        <tr>
751
                            <th style="width: 30%;">LABEL_ELEMENT</th>
752
                            <th style="width: 50%;">LABEL_TITLE</th>
753
                            <th style="width: 10%;">LABEL_LEVEL</th>
754
                            <th style="width: 10%;">LABEL_POINTS</th>
755
                         </tr>
756
                    </thead>
757
                    <tbody>
758
                        <tr>
759
                            <td class="text-left">LABEL_COMPETENCY</td>
760
                            <td class="text-left">{{:name}}</td>
761
                            <td>&nbsp;</td>
762
                            <td>&nbsp;</td>
763
                        </tr>
764
                        {{for behaviors}}
765
                        <tr >
766
                            <td class="text-left">--LABEL_BEHAVIOR</td>
767
                                <td class="text-left">
768
                            {{:~getBehavior(uuid).description}}
769
                            </td>
770
                            <td class="text-right">
771
                                {{:level}}
772
                            </td>
773
                            <td class="text-right">
774
                                <input type="number" class="form-control input-behavior-level " value="0" step="1" min="0" max="100" name="{{:competency_uuid}}-{{:uuid}}-points" id="{{:competency_uuid}}-{{:uuid}}-points" ></input>
775
                            </td>
776
                        </tr>
777
                        <tr >
778
                            <td colspan="4">
779
                                LABEL_COMMENT
780
                                <input type="text" class="form-control input-behavior-comment" value="" maxlength="128" name="{{:competency_uuid}}-{{:uuid}}-comment" id="{{:competency_uuid}}-{{:uuid}}-comment" ></input>
781
                            </td>
782
                        </tr >
783
                        {{/for}}
784
                    </tbody>
785
                </table>
786
            </div>
787
        </div>
788
    </div>
789
</div>
15443 efrain 790
 
791
</script>
792
 
793