Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 3466 | Rev 3472 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 3466 Rev 3468
Línea 1... Línea 1...
1
<?php 
1
<?php
2
$acl            = $this->viewModel()->getRoot()->getVariable('acl');
2
$acl            = $this->viewModel()->getRoot()->getVariable('acl');
3
$currentUser    = $this->currentUserHelper();
3
$currentUser    = $this->currentUserHelper();
4
$roleName       = $currentUser->getUserTypeId();
4
$roleName       = $currentUser->getUserTypeId();
Línea 5... Línea 5...
5
 
5
 
Línea 67... Línea 67...
67
$this->headStyle()->captureEnd();
67
$this->headStyle()->captureEnd();
Línea 68... Línea 68...
68
 
68
 
69
$this->inlineScript()->captureStart();
69
$this->inlineScript()->captureStart();
Línea 70... Línea -...
70
echo <<<JS
-
 
71
 
-
 
72
const classFormGenerator = function() {
-
 
73
    this.id = 0,
-
 
74
        this.table = '',
-
 
75
        this.text = '',
-
 
76
        this.behaviors = [],
-
 
77
        this.clear = function() {
-
 
78
            this.behaviors = [];
-
 
79
            this.render();
-
 
80
        },
-
 
81
       
-
 
82
        /**
-
 
83
         * Add element to section array
-
 
84
         */
-
 
85
        this.addSection = function( text, value) {
-
 
86
            var d = new Date();
-
 
87
            var slug = 'section' + d.getTime();
-
 
88
            var position = 0;
-
 
89
            $.each(this.behaviors, function(index, section) {
-
 
90
                if (position < section.position) {
-
 
91
                    position = section.position;
-
 
92
                }
-
 
93
            });
-
 
94
            position++;
-
 
95
            var section = {
-
 
96
                'slug_behaviors': slug,
-
 
97
                'text': text,
-
 
98
                'value': value,
-
 
99
                'position': position,
-
 
100
                'questions': [],
-
 
101
                'status': 0
-
 
102
            }
-
 
103
            this.behaviors.push(section);
-
 
104
        },
-
 
105
         /**
-
 
106
         * Edit element to section array
-
 
107
         */
-
 
108
        this.editSection = function(slug, text, value) {
-
 
109
            var renderTable = false;
-
 
110
            for (i = 0; i < this.behaviors.length; i++) {
-
 
111
                if (slug == this.behaviors[i].slug_behaviors) {
-
 
112
                    this.behaviors[i].text = text;
-
 
113
                    this.behaviors[i].value = value;
-
 
114
                    renderTable = true;
-
 
115
                    break;
-
 
116
                }
-
 
117
            }
-
 
118
            if (renderTable) {
-
 
119
                this.renderSection(slug);
-
 
120
            }
-
 
121
        },
-
 
122
         /**
-
 
123
         * Remove element to section array
-
 
124
         */
-
 
125
        this.deleteSection = function(slug) {
-
 
126
            var renderTable = false;
-
 
127
            for (i = 0; i < this.behaviors.length; i++) {
-
 
128
                if (slug == this.behaviors[i].slug_behaviors) {
-
 
129
                    this.behaviors.splice(i, 1);
-
 
130
                    renderTable = true;
-
 
131
                    break;
-
 
132
                }
-
 
133
            }
-
 
134
            if (renderTable) {
-
 
135
                $('#panel' + slug).remove();
-
 
136
            }
-
 
137
        }        
-
 
138
}
70
echo <<<JS
139
 
-
 
140
jQuery( document ).ready(function( $ ) {
-
 
141
    var objFormGenerator = new classFormGenerator();
71
 
142
    //objFormGenerator.render();
72
jQuery( document ).ready(function( $ ) {
143
    $.validator.setDefaults({
73
    $.validator.setDefaults({
144
        debug: true,
74
        debug: true,
145
        highlight: function(element) {
75
        highlight: function(element) {
Línea 158... Línea 88...
158
            } else {
88
            } else {
159
                error.insertAfter(element.parent());
89
                error.insertAfter(element.parent());
160
            }
90
            }
161
        }
91
        }
162
    });
92
    });
163
    
93
 
164
    $.fn.showFormErrorValidator = function(fieldname, errors) {
94
    $.fn.showFormErrorValidator = function(fieldname, errors) {
165
        var field = $(fieldname);
95
        var field = $(fieldname);
166
        if(field) {
96
        if(field) {
167
            $(field).addClass('is-invalid');
97
            $(field).addClass('is-invalid');
Línea 168... Línea 98...
168
 
98
 
169
            var error = $('<span id="' + fieldname +'-error" class="error invalid-feedback">' + errors + '</div>');
99
            var error = $('<span id="' + fieldname +'-error" class="error invalid-feedback">' + errors + '</div>');
170
            
100
 
171
            if(element.parent('.btn-file').length) {
101
            if(element.parent('.btn-file').length) {
172
                error.insertAfter(element.parent().parent());
102
                error.insertAfter(element.parent().parent());
173
            } else if(element.parent('.toggle').length) {
103
            } else if(element.parent('.toggle').length) {
174
                error.insertAfter(element.parent().parent());
104
                error.insertAfter(element.parent().parent());
175
            } else {
105
            } else {
176
                error.insertAfter(element.parent());
106
                error.insertAfter(element.parent());
177
            }
107
            }
178
        }
108
        }
Línea -... Línea 109...
-
 
109
    };
-
 
110
 
-
 
111
    var gridTable = $('#gridTable').dataTable({
-
 
112
        'processing': true,
-
 
113
        'serverSide': true,
-
 
114
        'searching': true,
-
 
115
        'order': [
-
 
116
            [0, 'asc']
-
 
117
        ],
-
 
118
        'ordering': true,
-
 
119
        'ordenable': true,
-
 
120
        'responsive': true,
-
 
121
        'select': false,
-
 
122
        'paging': true,
-
 
123
        'pagingType': 'simple_numbers',
-
 
124
        'ajax': {
-
 
125
            'url': '$routeIndex',
-
 
126
            'type': 'get',
-
 
127
            'beforeSend': function(request) {
-
 
128
                NProgress.start();
-
 
129
            },
-
 
130
            'dataFilter': function(response) {
-
 
131
                var response = jQuery.parseJSON(response);
-
 
132
                var json = {};
-
 
133
                json.recordsTotal = 0;
-
 
134
                json.recordsFiltered = 0;
-
 
135
                json.data = [];
-
 
136
                if (response.success) {
-
 
137
                    json.recordsTotal = response.data.total;
-
 
138
                    json.recordsFiltered = response.data.total;
-
 
139
                    json.data = response.data.items;
-
 
140
                } else {
-
 
141
                    $.fn.showError(response.data)
-
 
142
                }
-
 
143
                return JSON.stringify(json);
-
 
144
                gridTable.api().ajax.reload(null, false);
-
 
145
            }
-
 
146
        },
-
 
147
        'language': {
-
 
148
            'sProcessing': 'LABEL_DATATABLE_SPROCESSING',
-
 
149
            'sLengthMenu': 'LABEL_DATATABLE_SLENGTHMENU',
-
 
150
            'sZeroRecords': 'LABEL_DATATABLE_SZERORECORDS',
-
 
151
            'sEmptyTable': 'LABEL_DATATABLE_SEMPTYTABLE',
-
 
152
            'sInfo': 'LABEL_DATATABLE_SINFO',
-
 
153
            'sInfoEmpty': 'LABEL_DATATABLE_SINFOEMPTY',
-
 
154
            'sInfoFiltered': 'LABEL_DATATABLE_SINFOFILTERED',
-
 
155
            'sInfoPostFix': '',
-
 
156
            'sSearch': 'LABEL_DATATABLE_SSEARCH',
-
 
157
            'sUrl': '',
-
 
158
            'sInfoThousands': ',',
-
 
159
            'sLoadingRecords': 'LABEL_DATATABLE_SLOADINGRECORDS',
-
 
160
            'oPaginate': {
-
 
161
                'sFirst': 'LABEL_DATATABLE_SFIRST',
-
 
162
                'sLast': 'LABEL_DATATABLE_SLAST',
-
 
163
                'sNext': 'LABEL_DATATABLE_SNEXT',
-
 
164
                'sPrevious': 'LABEL_DATATABLE_SPREVIOUS'
-
 
165
            },
-
 
166
            'oAria': {
-
 
167
                'sSortAscending': ': LABEL_DATATABLE_SSORTASCENDING',
-
 
168
                'sSortDescending': ':LABEL_DATATABLE_SSORTDESCENDING'
-
 
169
            },
-
 
170
        },
-
 
171
        'drawCallback': function(settings) {
-
 
172
            NProgress.done();
-
 
173
            $('button.btn-delete').confirmation({
-
 
174
                rootSelector: 'button.btn-delete',
-
 
175
                title: 'LABEL_ARE_YOU_SURE',
-
 
176
                singleton: true,
-
 
177
                btnOkLabel: 'LABEL_YES',
-
 
178
                btnCancelLabel: 'LABEL_NO',
-
 
179
                onConfirm: function(value) {
-
 
180
                    action = $(this).data('href');
-
 
181
                    NProgress.start();
-
 
182
                    $.ajax({
-
 
183
                        'dataType': 'json',
-
 
184
                        'accept': 'application/json',
-
 
185
                        'method': 'post',
-
 
186
                        'url': action,
-
 
187
                    }).done(function(response) {
-
 
188
                        if (response['success']) {
-
 
189
                            $.fn.showSuccess(response['data']);
-
 
190
                            gridTable.api().ajax.reload(null, false);
-
 
191
                        } else {
-
 
192
                            $.fn.showError(response['data']);
-
 
193
                        }
-
 
194
                    }).fail(function(jqXHR, textStatus, errorThrown) {
-
 
195
                        $.fn.showError(textStatus);
-
 
196
                    }).always(function() {
-
 
197
                        NProgress.done();
-
 
198
                    });
-
 
199
                },
-
 
200
            });
-
 
201
        },
-
 
202
        'aoColumns': [{
-
 
203
                'mDataProp': 'name'
-
 
204
            },
-
 
205
            {
-
 
206
                'mDataProp': 'status'
-
 
207
            },
-
 
208
            {
-
 
209
                'mDataProp': 'actions'
-
 
210
            },
-
 
211
        ],
-
 
212
        'columnDefs': [{
-
 
213
                'targets': 0,
-
 
214
                'className': 'text-vertical-middle',
-
 
215
            },
-
 
216
            {
-
 
217
                'targets': -2,
-
 
218
                'orderable': false,
-
 
219
                'className': 'text-center',
-
 
220
                'render': function(data, type, row) {
-
 
221
                    checked = data == 'a' ? ' checked="checked" ' : '';
-
 
222
                    return '<div class="checkbox checkbox-success">' +
-
 
223
                        '<input class="styled" type="checkbox" ' + checked + ' disabled="disabled">' +
-
 
224
                        '<label ></label></div>';
-
 
225
                }
-
 
226
            },
-
 
227
            {
-
 
228
                'targets': -1,
-
 
229
                'orderable': false,
-
 
230
                'render': function(data, type, row) {
-
 
231
                    s = '';
-
 
232
                    if (allowEdit) {
-
 
233
                        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;';
-
 
234
                    }
-
 
235
                    if (allowDelete) {
-
 
236
                        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;';
-
 
237
                    }
-
 
238
                    if (allowReport) {
-
 
239
                        s = s + '<a class="btn btn-default btn-pdf" href="' + data['link_report'] + '" target="_blank" data-toggle="tooltip" title="LABEL_PDF"><i class="fa fa-file-o"></i> LABEL_PDF </button>&nbsp;';
-
 
240
                    }
-
 
241
                    return s;
-
 
242
                }
-
 
243
            }
-
 
244
        ],
179
    };
245
    });
180
 
246
 
181
    function getContent() {
247
    function getContent() {
182
        return $('[data-competency-behavior]').map(
248
        return $('[data-competency-behavior]').map(
183
            function (idx, td) {
249
            function (idx, td) {
184
                const competencyUuid = $(td).data('competency-uuid');
250
                const competencyUuid = $(td).data('competency-uuid');
185
                const behaviorUuid = $(td).data('behavior-uuid');
251
                const behaviorUuid = $(td).data('behavior-uuid');
Línea 186... Línea 252...
186
                const textarea = $(td).find('textarea');
252
                const textarea = $(td).find('textarea');
187
                const select = $(td).find('select');
253
                const select = $(td).find('select');
188
 
254
 
189
                return {
255
                return {
190
                    competencyUuid: competencyUuid,
256
                    competencyUuid: competencyUuid,
191
                    behaviorUuid : behaviorUuid, 
257
                    behaviorUuid : behaviorUuid,
192
                    comment: textarea.val(),
258
                    comment: textarea.val(),
193
                    evaluation: select.val(),
259
                    evaluation: select.val(),
Línea 219... Línea 285...
219
                }
285
                }
220
            }).done(function(response) {
286
            }).done(function(response) {
221
                NProgress.start();
287
                NProgress.start();
222
                if (response['success']) {
288
                if (response['success']) {
223
                    $.fn.showSuccess(response['data']);
289
                    $.fn.showSuccess(response['data']);
224
                    $('#main').show();
290
                    $('#main').hide();
225
                    $('#interview').hide();
291
                    $('#interview').hide();
226
                    $('#vacancy_uuid').change();
292
                    gridTable.api().ajax.reload(null, false);
227
                } else {
293
                } else {
228
                    validator.resetForm();
294
                    validator.resetForm();
229
                    if (jQuery.type(response['data']) == 'string') {
295
                    if (jQuery.type(response['data']) == 'string') {
230
                        $.fn.showError(response['data']);
296
                        $.fn.showError(response['data']);
231
                    } else {
297
                    } else {
Línea 255... Línea 321...
255
            'url': url,
321
            'url': url,
256
        }).done(function(response) {
322
        }).done(function(response) {
257
            if (response['success']) {
323
            if (response['success']) {
258
                var data = response.data
324
                var data = response.data
259
                $("#interview #comment").val('');
325
                $("#interview #comment").val('');
260
                $('#interview #status').val('');            
326
                $('#interview #status').val('');
261
                $('#interview #type').val('')
327
                $('#interview #type').val('')
262
                $("#interview #points").val('');
328
                $("#interview #points").val('$points_0');
263
              
329
 
264
                $("#competencies-job").html($("#competenciesTemplate").render(data))
330
                $("#competencies-job").html($("#competenciesTemplate").render(data))
265
                
-
 
266
                $("#form-interview").attr('action', url)
331
                $("#form-interview").attr('action', url)
267
                $("#content").hide();
332
                $("#content").hide();
268
                $("#main").show()
333
                $("#main").show()
269
            } else {
334
            } else {
270
                $.fn.showError(response['data']);
335
                $.fn.showError(response['data']);
Línea 275... Línea 340...
275
            NProgress.done();
340
            NProgress.done();
276
        });
341
        });
277
    });
342
    });
Línea 278... Línea 343...
278
 
343
 
279
    $('body').on('click', 'button.btn-edit', function(e) {
344
    $('body').on('click', 'button.btn-edit', function(e) {
280
        var url = $(this).data('url'); 
345
        var url = $(this).data('url');
281
        e.preventDefault();
346
        e.preventDefault();
282
        NProgress.start();
347
        NProgress.start();
283
        $.ajax({
348
        $.ajax({
284
            'dataType': 'json',
349
            'dataType': 'json',
Línea 287... Línea 352...
287
            'url': url,
352
            'url': url,
288
        }).done(function(response) {
353
        }).done(function(response) {
289
            if (response['success']) {
354
            if (response['success']) {
290
                var data = response.data
355
                var data = response.data
291
                $("#interview #comment").val(data['interview']['comment']);
356
                $("#interview #comment").val(data['interview']['comment']);
292
                $('#interview #status').val(data['interview']['status']);            
357
                $('#interview #status').val(data['interview']['status']);
293
                $('#interview #type').val(data['interview']['type']);
358
                $('#interview #type').val(data['interview']['type']);
294
                $("#interview #points").val(data['interview']['points']);
359
                $("#interview #points").val(data['interview']['points']);
295
                $("#competencies-job").html($("#competenciesTemplate").render(data))
360
                $("#competencies-job").html($("#competenciesTemplate").render(data))
296
                data.interview.content.forEach(obj => {
361
                data.interview.content.forEach(obj => {
297
                    $('#textarea-' + obj.competencyUuid + '-' + obj.behaviorUuid).val(obj.comment);
362
                    $('#textarea-' + obj.competencyUuid + '-' + obj.behaviorUuid).val(obj.comment);
298
                    $('#select-' + obj.competencyUuid + '-' + obj.behaviorUuid).val(obj.evaluation);
363
                    $('#select-' + obj.competencyUuid + '-' + obj.behaviorUuid).val(obj.evaluation);
299
                })
364
                })
300
                $("#form-interview").attr('action', url)
365
                $("#form-interview").attr('action', url)
-
 
366
                $("#content").hide();
301
                $("#interview").show()
367
                $("#main").show()
302
            } else {
368
            } else {
303
                $.fn.showError(response['data']);
369
                $.fn.showError(response['data']);
304
            }
370
            }
305
        }).fail(function(jqXHR, textStatus, errorThrown) {
371
        }).fail(function(jqXHR, textStatus, errorThrown) {
306
            $.fn.showError(textStatus);
372
            $.fn.showError(textStatus);
Línea 324... Línea 390...
324
                'method': 'post',
390
                'method': 'post',
325
                'url': $(this).data('url'),
391
                'url': $(this).data('url'),
326
            }).done(function (response) {
392
            }).done(function (response) {
327
                if (response['success']) {
393
                if (response['success']) {
328
                    $.fn.showSuccess(response['data']);
394
                    $.fn.showSuccess(response['data']);
329
                    $('#vacancy_uuid').change();
395
                    gridTable.api().ajax.reload(null, false);
330
                } else {
396
                } else {
331
                    $.fn.showError(response['data']);
397
                    $.fn.showError(response['data']);
332
                }
398
                }
333
            }).fail(function (jqXHR, textStatus, errorThrown) {
399
            }).fail(function (jqXHR, textStatus, errorThrown) {
334
                $.fn.showError(textStatus);
400
                $.fn.showError(textStatus);
335
            }).always(function () {
401
            }).always(function () {
336
                NProgress.done();
402
                NProgress.done();
337
            });
403
            });
338
        },
404
        },
339
    });
405
    });
340
    
406
 
341
    $('body').on('click', 'button.btn-cancel', function(e) {
407
    $('body').on('click', 'button.btn-cancel', function(e) {
342
        e.preventDefault();
408
        e.preventDefault();
343
        $('#main').show();
409
        $('#main').show();
344
        $('#row-form').hide();
410
        $('#row-form').hide();
345
        $('#div-listing').show();
411
        $('#div-listing').show();
346
    });
412
    });
347
    
413
 
348
    $('#form-filter #vacancy_uuid').change(function(e) {
414
    $('#form-filter #vacancy_uuid').change(function(e) {
349
        e.preventDefault();
415
        e.preventDefault();
350
        $('#form-filter #candidate_uuid').empty();
416
        gridTable.api().ajax.reload(null, false);
351
    })
-
 
352
    
-
 
353
    $('#form-filter #candidate_uuid').change(function(e) {
-
 
354
        e.preventDefault();
-
 
355
    })
417
    })
-
 
418
 
356
     /**
419
     /**
357
     * Clicked cancel new/edit Form
420
     * Clicked cancel new/edit Form
358
     */
421
     */
359
    $('button.btn-edit-cancel').click(function(e) {
422
    $('button.btn-edit-cancel').click(function(e) {
360
        e.preventDefault();
423
        e.preventDefault();
-
 
424
        $("#content").show();
361
        $('#interview').hide();
425
        $("#main").hide();
362
    });
426
    });
363
    /**
427
    /**
364
     * Clicked save and continue new Form
428
     * Clicked save and continue new Form
365
     */
429
     */
366
    $('button.btn-form-save-continue').click(function(e) {
430
    $('button.btn-form-save-continue').click(function(e) {
Línea 372... Línea 436...
372
     * Clicked save and close new/edit Form
436
     * Clicked save and close new/edit Form
373
     */
437
     */
374
    $('button.btn-form-save-close').click(function(e) {
438
    $('button.btn-form-save-close').click(function(e) {
375
        e.preventDefault();
439
        e.preventDefault();
376
        $('#interview #form-continue').val('0')
440
        $('#interview #form-continue').val('0')
-
 
441
        $("#content").show();
-
 
442
        $("#main").hide();
377
        $('#form-interview').submit();
443
        $('#form-interview').submit();
378
    });
444
    });
Línea 379... Línea 445...
379
 
445
 
380
    $('#vacancy_uuid').on('change', function (event) {
446
    $('#vacancy_uuid').on('change', function (event) {
Línea 398... Línea 464...
398
                    .text(candidate.first_name)
464
                    .text(candidate.first_name)
399
                    .data('addUrl', candidate.add_url)
465
                    .data('addUrl', candidate.add_url)
400
                    .data('editUrl', candidate.edit_url)
466
                    .data('editUrl', candidate.edit_url)
401
                    .data('deleteUrl', candidate.delete_url)
467
                    .data('deleteUrl', candidate.delete_url)
402
                    .data('reportUrl', candidate.report_url)
468
                    .data('reportUrl', candidate.report_url)
403
                
469
 
404
                $('#candidate_uuid').append(option);
470
                $('#candidate_uuid').append(option);
405
            });
471
            });
Línea 406... Línea 472...
406
 
472
 
Línea 407... Línea 473...
407
            $('#candidate_uuid').change();
473
            $('#candidate_uuid').change();
408
 
474
 
409
            $('#job-description').html($('#job-description-template').render(response.data));
475
            $('#job-description').html($('#job-description-template').render(response.data));
Línea 410... Línea 476...
410
        })
476
        })
411
    });
-
 
Línea 412... Línea -...
412
 
-
 
413
    $('#vacancy_uuid').change();
477
    });
414
 
478
 
415
 
479
   $('#vacancy_uuid').change();
416
  
480
 
Línea -... Línea 481...
-
 
481
});
417
});
482
JS;
418
JS;
483
$this->inlineScript()->captureEnd();
419
$this->inlineScript()->captureEnd();
484
?>
420
?>
485
 
421
 
486
 
Línea 688... Línea 753...
688
                </tr>
753
                </tr>
689
            {{/for}}
754
            {{/for}}
690
        {{/for}}
755
        {{/for}}
691
    </tbody>
756
    </tbody>
692
</table>
757
</table>
693
</script>
-
 
694
758
</script>
-
 
759