· 6 years ago · Jan 27, 2020, 12:56 AM
1$(document).ready(function(){
2 copyRight();
3 window.currentUser = null;
4 window.kinerjaUser = null;
5 window.dictionary = { nama_pekerjaan: [], output_pekerjaan: [] };
6 GetUserState();
7 var config = {
8 apiKey: "AIzaSyDJz7wA31Z4eFB6jO_-ClwX7CXPB80SBhw",
9 authDomain: "ekinerja-2942e.firebaseapp.com",
10 databaseURL: "https://ekinerja-2942e.firebaseio.com",
11 projectId: "ekinerja-2942e",
12 storageBucket: "ekinerja-2942e.appspot.com",
13 messagingSenderId: "574875128322"
14 };
15
16 firebase.initializeApp(config);
17
18 window.dbConnection = openDatabase('ekinerja', '1.0', 'E-kinerja browser database', 2 * 1024 * 1024);
19 window.dbConnection.transaction(function(trx){
20 var query = "CREATE TABLE IF NOT EXISTS `dictionary` (id INTEGER NOT NULL PRIMARY KEY, "+
21 "state TEXT NOT NULL, words TEXT NOT NULL)";
22 trx.executeSql(query, [], function(trx, results){
23 query = "select * from dictionary;"
24 trx.executeSql(query, [], function(trx, results){
25 if( results.rows.length == 0 ){
26 preview2Month = moment().add(-2, 'month').format('MM/Y').split('/');
27 $.ajax({
28 url: 'https://kinerja.banyuwangikab.go.id/kinerja/kinerja_pns/pekerjaan_disetujui_list/',
29 method: 'POST',
30 data: {
31 tahun: preview2Month[1],
32 bulan: preview2Month[0],
33 nama: '',
34 limit: 1000,
35 },
36 success: function(res){
37 _table = $("<div>"+res+"</div>").find('table#mytable tr');
38 _namaPekerjaan = "";
39 _hasilPekerjaan = "";
40 _table.each(function(i, v){
41 if( i > 0 ){
42 _namaPekerjaan += $(v).find('td').eq(4).text()+" ";
43 _hasilPekerjaan += $(v).find('td').eq(5).text()+" ";
44 }
45 });
46 _namaPekerjaan = _namaPekerjaan.replaceAll(/[^\w\s]/gi, ' ')
47 .split(" ").filter(function(word, idx, self){
48 word = word.trim();
49 if( word.length > 2 ){
50 if( isNaN(word) ){
51 return idx == self.indexOf(word);
52 }
53 }
54 return false;
55 });
56 _hasilPekerjaan = _hasilPekerjaan.replaceAll(/[^\w\s]/gi, '')
57 .split(" ").filter(function(word, idx, self){
58 word = word.trim();
59 if( word.length > 2 ){
60 if( isNaN(word) ){
61 return idx == self.indexOf(word);
62 }
63 }
64 return false;
65 });
66
67 //console.log(_namaPekerjaan);
68 //console.log(_hasilPekerjaan);
69
70 window.dictionary = {
71 nama_pekerjaan: _namaPekerjaan,
72 output_pekerjaan: _hasilPekerjaan
73 };
74 pushWords(window.dictionary);
75
76 UpdateDictionary({
77 nama_pekerjaan: $("#kamus_nama_pekerjaan").val(),
78 output_pekerjaan: $("#kamus_output_pekerjaan").val()
79 });
80 }
81 })
82
83 query = "insert into dictionary (state, words) values (?, ?);";
84 trx.executeSql(query, ['nama_pekerjaan', 'Mengetik, Verifikasi, Memilah'], function(trx, results){
85 query = "insert into dictionary (state, words) values (?, ?);";
86 trx.executeSql(query, ['output_pekerjaan', 'Laporan, BAP, Pekerjaan, Sudah, Selesai'], function(trx, results){
87 window.dictionary = {
88 nama_pekerjaan: ['Mengetik', 'Verifikasi', 'Memilah'],
89 output_pekerjaan: ['Laporan', 'BAP', 'Pekerjaan', 'Sudah', 'Selesai']
90 };
91 pushWords(window.dictionary);
92 console.log("Sukses import data default kamus.")
93 }, function(trx, err){
94 console.error(err)
95 });
96 }, function(trx, err){
97 console.error(err)
98 });
99 }else{
100 window.dictionary = {
101 nama_pekerjaan: results.rows.item(0).words.split(',').map((item) => item.trim()),
102 output_pekerjaan: results.rows.item(1).words.split(',').map((item) => item.trim())
103 };
104 pushWords(window.dictionary);
105 }
106 }, function(trx, err){
107 console.error(err)
108 });
109 }, function(trx, err){
110 console.error(err);
111 });
112 });
113
114 firebase.auth().onAuthStateChanged(function(user) {
115 if (user) {
116 console.log("user is login");
117 console.log(user)
118 window.currentUser = {
119 auth: user
120 };
121 $("#login-page").css('display', 'none');
122 $("#dashboard-page").css('display', 'inline');
123 //JobCounter(user);
124 $("body").css("background", "#fff");
125 _now = new Date();
126 _jam = _now.getHours();
127 _jam = _jam < 10 ? "0"+_jam : _jam;
128 _menit = _now.getMinutes();
129 _menit = _menit < 10 ? "0"+_menit : _menit;
130 _tahun = _now.getFullYear();
131 _bulan = _now.getMonth() + 1;
132 _bulan = _bulan < 10 ? "0"+_bulan : _bulan;;
133 _tanggal = _now.getDate();
134 _tanggal = _tanggal < 10 ? "0"+_tanggal : _tanggal;
135 //console.log(_tahun+"-"+_bulan+"-"+_tanggal+" "+_jam+":"+_menit);
136 firebase.database().ref('setting/' + user.uid + '/lastlogin').set({
137 jam: _jam+":"+_menit,
138 tanggal: _tahun+"-"+_bulan+"-"+_tanggal
139 });
140 firebase.database().ref('users/'+user.uid).once('value', function(snap){
141 var denied = true;
142 var _val = snap.val();
143 window.currentUser.state = _val;
144
145 if( (_val.state == 'superuser') || (_val.state == 'pns' && _val.nip == window.kinerjaUser.nip) ){
146 denied = false;
147 }
148
149 if( denied == true ){
150 $("#myTabContent").parent().remove();
151 $(".navbar-fixed-top").find('ul').remove();
152 alertMessage('info', 'Anda tidak punya akses disini.');
153 }
154 });
155 } else {
156 window.currentUser = null;
157 console.log("user isn't login");
158 $("#login-page").css('display', 'inline');
159 $("#dashboard-page").css('display', 'none');
160 $("body").css("background", "#e95420");
161 }
162 });
163
164 $("#advanced_option").parent().parent().parent().parent().remove();
165 var stateForm = '<div class="form-group">';
166 stateForm += '<label for="state" class="col-sm-3 control-label">Status Pekerjaan</label>';
167 stateForm += '<div class="col-sm-9" style="padding-top:5px;">';
168 stateForm += "<select name='state' class='form-control select2' style='width:250px;'>";
169 stateForm += "<option value='0'>Standart</option>";
170 stateForm += "<option value='1'>Disetujui Atasan</option>";
171 stateForm += "<option value='6'>Disetujui Tim Verifikator</option>";
172 stateForm += "</select>";
173 stateForm += '</div>';
174 stateForm += '</div>';
175 $("#tupoksiWrapper").parent().before(stateForm);
176
177 $(".number").inputmask("integer", {
178 min: 1,
179 onUnMask: function(maskedValue, unmaskedValue) {
180 return unmaskedValue;
181 },
182 }).css('text-align', 'left');
183
184 var bulan = [
185 { num: "01", text: "Januari" }, { num: "02", text: "Februari" }, { num: "03", text: "Maret" },
186 { num: "04", text: "April" }, { num: "05", text: "Mei" }, { num: "06", text: "Juni" },
187 { num: "07", text: "Juli" }, { num: "08", text: "Agustus" }, { num: "09", text: "September" },
188 { num: "10", text: "Oktober" }, { num: "11", text: "November" }, { num: "12", text: "Desember" },
189 ];
190
191 $.each(bulan, function(i, v){
192 //console.log(v.text)
193 $('#bulan').append($('<option>', {
194 value: v.num,
195 text : v.text
196 }));
197 });
198
199 //$('body').find('a[href="setup.html"]').hide();
200
201 var date = new Date();
202 //console.log(date.getMonth())
203 var str = "" + (date.getMonth()+1);
204 var pad = "00";
205 var ans = pad.substring(0, pad.length - str.length) + str;
206
207 $('#bulan').val(ans);
208
209 $("#btnSignOut").click(function(){
210 if( confirm('Logout??') ){
211 SignOut();
212 }
213 });
214
215 $("#form-signin").submit(function(e){
216 console.log("submited!!")
217 SignIn();
218 e.preventDefault();
219 });
220
221 $.ajax({
222 url: 'https://kinerja.banyuwangikab.go.id/kinerja/kinerja_pns/input_pekerjaan_baru',
223 method: 'GET',
224 success: function(res){
225 var tupoksi = $(res).find('select#pekerjaan').addClass('form-control select2').attr('style', 'width:100%;').get(0);
226 $("#tupoksiWrapper").html(tupoksi);
227 $(".select2").select2();
228 }, complete: function(xhr) {
229 if (xhr.status == "403") {
230 alertMessage('error', '[403] Access Denied!');
231 } else if (xhr.status == "500") {
232 alertMessage('error', '[500] Internal Server Error!');
233 }
234 }
235 });
236
237 $(document).on('change', 'select#pekerjaan', function(){
238 var _this = $(this);
239 var minute = (_this.find("option:selected").text().split('|')[1].trim().split(' ')[0]);
240 $("#durasi").val(minute);
241 //console.log(_this.val()+" : "+minute);
242 });
243
244 $(document).on('click', '.radio', function(){
245 $("#durasi").val($(this).data('durasi'));
246 });
247
248 $(document).on('click', '#useJeda', function(){
249 if(this.checked){
250 $("#jeda").removeAttr('disabled');
251 }else{
252 $("#jeda").attr('disabled', 'disabled');
253 }
254 });
255
256 $('.jam').clockpicker({
257 placement: 'bottom',
258 align: 'left',
259 autoclose: true,
260 default: 'now'
261 });
262
263 $('#jam').val(MyHour());
264
265 $('.tanggalan').datepicker({
266 format: 'dd-mm-yyyy',
267 autoclose: true
268 }).on('changeDate', function(){
269 var _tgl = $(this).val().split("-");
270 GetJobsInDate(_tgl[0], _tgl[1], _tgl[2]);
271 });
272
273 $("#tgl").datepicker("setDate", new Date());
274
275 $('.input-daterange').datepicker({
276 format: 'dd-mm-yyyy',
277 autoclose: true
278 });
279
280 $("#timeBarInput").TimeBar({
281 strTimeStart : '6:00',
282 strTimeStop : '18:00',
283 intTimeSteps : 5,
284 intOffset : 10,
285 strDirection : "horizontal",
286 intReadOnly : 1,
287 strHour : '',
288 strEnabledClassName : 'green_hor',
289 });
290
291 var now = (typeof val !== 'undefined') ? ((val instanceof Date) ? val : new Date(val)) : new Date();
292 var mm = now.getMonth() + 1; //January is 0!
293 var yyyy = now.getFullYear();
294 mm = (mm < 10) ? '0'+mm : mm;
295 $('#counter_tahun').val(yyyy);
296 $('#counter_bulan').val(mm);
297
298 $('#nama_pekerjaan').textcomplete([
299 { // tech companies
300 //words: dictionary.nama_pekerjaan,
301 match: /\b(\w{1,})$/,
302 search: function (term, callback) {
303 callback($.map(window.dictionary.nama_pekerjaan, function (word) {
304 wordS = word.toLowerCase();
305 termS = term.toLowerCase();
306 return wordS.indexOf(termS) === 0 ? word : null;
307 }));
308 },
309 index: 1,
310 replace: function (word) {
311 return word + ' ';
312 }
313 }
314 ]);
315
316 $('#output_pekerjaan').textcomplete([
317 { // tech companies
318 //words: dictionary.output_pekerjaan,
319 match: /\b(\w{1,})$/,
320 search: function (term, callback) {
321 callback($.map(window.dictionary.output_pekerjaan, function (word) {
322 wordS = word.toLowerCase();
323 termS = term.toLowerCase();
324 return wordS.indexOf(termS) === 0 ? word : null;
325 }));
326 },
327 index: 1,
328 replace: function (word) {
329 return word + ' ';
330 }
331 }
332 ]);
333
334 $(document).on('submit', '#formInputKinerja', function(e){
335 if ( typeof $("#advanced_option:checked").val() !== 'undefined' ){
336 $("#formSimpanPekerjaan").modal('show');
337 }else{
338 if( confirm('Simpan pekerjaan ?') ){
339 $("#btnSimpanPekerjaan").attr('disabled', 'disabled');
340 var dataPost = ConvertSerializeToJson($(document.form_pekerjaan.elements).serializeArray());
341 dataPost['jam'] = ($("#jam").val());
342 //console.log(dataPost);
343
344 SaveJob(dataPost);
345 }
346 }
347 e.preventDefault();
348 });
349
350 $(document).on('click', '#btnSaveJob', function(){
351 $("#btnSimpanPekerjaan").attr('disabled', 'disabled');
352 $("#btnSaveJob").attr('disabled', 'disabled');
353 var dataPost = ConvertSerializeToJson($(document.form_pekerjaan.elements).serializeArray());
354 var dataConfirm = ConvertSerializeToJson($(document.form_konfirmasi_savejob.elements).serializeArray());
355 dataPost['jam'] = ($("#jam").val());
356 //console.log(dataPost);
357
358 SaveJob(dataPost, dataConfirm);
359 });
360
361 $(document).on('click', '#btnImport', function(){
362 var start = $("#tgl_start").datepicker("getDate"),
363 end = $("#tgl_end").datepicker("getDate"),
364 currentDate = new Date(start.getTime()),
365 between = []
366 ;
367
368 while (currentDate <= end) {
369 _date = new Date(currentDate);
370 between.push({
371 'obj': _date,
372 'text': MyDate(_date),
373 });
374 currentDate.setDate(currentDate.getDate() + 1);
375 }
376
377 $("#hasilImport").html("");
378
379 _awalRamadhan = moment('05-05-2019', "DD-MM-YYYY");
380 _akhirRamadhan = moment('05-06-2019', "DD-MM-YYYY");
381 $.each(between, function(i, v){
382 _day = v.obj.getDay();
383 _date = v.obj.getDate();
384 _tgl = v.text;
385
386 if( moment(_tgl, "DD-MM-YYYY").isAfter(_awalRamadhan) && moment(_tgl, "DD-MM-YYYY").isBefore(_akhirRamadhan) ){
387 if( _day > 0 ){
388 if( _day != 5 ){ // selain jumat
389 // Apel Pagi
390 SimpanApel({
391 pekerjaan: 964, // Upacara / Apel
392 tgl: _tgl,
393 jam: '08:00',
394 durasi: 10,
395 keterangan: 'Apel pagi sudah dilaksanakan',
396 });
397
398 // Apel sore
399 SimpanApel({
400 pekerjaan: 964, // Upacara / Apel
401 tgl: _tgl,
402 jam: '15:00',
403 durasi: 10,
404 keterangan: 'Apel sore sudah dilaksanakan',
405 });
406 }else{ // Hari Jumat
407 // Apel Pagi
408 SimpanApel({
409 pekerjaan: 964, // Upacara / Apel
410 tgl: _tgl,
411 jam: '07:30',
412 durasi: 10,
413 keterangan: 'Apel pagi sudah dilaksanakan',
414 });
415
416 // Apel sore
417 SimpanApel({
418 pekerjaan: 964, // Upacara / Apel
419 tgl: _tgl,
420 jam: '15:30',
421 durasi: 10,
422 keterangan: 'Apel sore sudah dilaksanakan',
423 });
424 }
425 }
426 }else{ // Di luar ramadhan
427 if( _day > 0 ){
428 if( _day != 5 ){ // selain jumat
429 if( _date != 17 ){
430 // Apel pagi
431 SimpanApel({
432 pekerjaan: 964, // Upacara / Apel
433 tgl: _tgl,
434 jam: '07:00',
435 durasi: 10,
436 keterangan: 'Apel pagi sudah dilaksanakan',
437 });
438 }else{ // Hari Kesadaran Nasional
439 SimpanApel({
440 pekerjaan: 1262, // Upacara / Apel
441 tgl: _tgl,
442 jam: '07:00',
443 durasi: 60,
444 keterangan: 'Upacara sudah dilaksanakan',
445 });
446 }
447
448 // Apel sore
449 SimpanApel({
450 pekerjaan: 964, // Upacara / Apel
451 tgl: _tgl,
452 jam: '15:30',
453 durasi: 10,
454 keterangan: 'Apel sore sudah dilaksanakan',
455 });
456 }else{
457 if( _date != 17 ){
458 // Apel pagi
459 SimpanApel({
460 pekerjaan: 1311, // Olahraga
461 tgl: _tgl,
462 jam: '06:30',
463 durasi: 60,
464 keterangan: 'Apel pagi & olahraga bersama sudah dilaksanakan',
465 });
466 }else{
467 SimpanApel({
468 pekerjaan: 1262, // Hari Kesadaran Nasional
469 tgl: _tgl,
470 jam: '07:00',
471 durasi: 60,
472 keterangan: 'Upacara sudah dilaksanakan',
473 });
474 }
475
476 // Apel sore
477 SimpanApel({
478 pekerjaan: 964, // Upacara / Apel
479 tgl: _tgl,
480 jam: '14:30',
481 durasi: 10,
482 keterangan: 'Apel sore sudah dilaksanakan',
483 });
484 }
485 }
486 }
487 });
488 });
489
490 $(document).on('submit', '#form_counter', function(e){
491 var button = $(this).find('button');
492 button.attr('disabled', 'disabled');
493
494 var datesInMonth = (getDatesInMonth($('#counter_bulan').val(), $('#counter_tahun').val()));
495
496 $.ajax({
497 url: 'https://kinerja.banyuwangikab.go.id/kinerja/kinerja_pns/pekerjaan_belum_diperiksa_list/',
498 method: 'POST',
499 data: {
500 tahun: $('#counter_tahun').val(),
501 bulan: $('#counter_bulan').val(),
502 nama: "",
503 limit: 1000,
504 }, success: function(res){
505 res = $("<div>"+res+"</div>");
506 rows = res.find('table tbody tr');
507 var totalBelumDiperiksa = 0;
508 var groupKinerja = {};
509 $.each(rows, function(i, v){
510 if( i > 0){
511 menit = $(v).find('td').eq(2).text().split(" ")[0];
512 menit = parseInt(menit);
513 totalBelumDiperiksa += menit;
514 //console.log($(v).find('td').eq(2).text().split(" ")[0]);
515 // set giat to tanggal obj
516 _tgl = $(v).find('td').eq(1).text().split(" ")[0];
517 if( typeof groupKinerja[_tgl] !== 'undefined' ){
518 groupKinerja[_tgl].push($(v));
519 }else{
520 groupKinerja[_tgl] = [$(v)];
521 }
522 }
523 });
524 //console.log(groupKinerja);
525 $("#tableCounter tbody").find('tr').eq(0).find('td').eq(1).text(NFormat(totalBelumDiperiksa));
526
527 $.ajax({
528 url: 'https://kinerja.banyuwangikab.go.id/kinerja/kinerja_pns/pekerjaan_disetujui_list/',
529 method: 'POST',
530 data: {
531 tahun: $('#counter_tahun').val(),
532 bulan: $('#counter_bulan').val(),
533 nama: "",
534 limit: 1000,
535 }, success: function(res2){
536 res2 = $("<div>"+res2+"</div>");
537 rows2 = res2.find('table tbody tr');
538 var totalDisetujui = 0;
539 $.each(rows2, function(i2, v2){
540 if( i2 > 0){
541 menit = $(v2).find('td').eq(2).text().split(" ")[0];
542 menit = parseInt(menit);
543 totalDisetujui += menit;
544 //console.log($(v).find('td').eq(2).text().split(" ")[0]);
545 // set giat to tanggal obj
546 _tgl = $(v2).find('td').eq(1).text().split(" ")[0];
547 if( typeof groupKinerja[_tgl] !== 'undefined' ){
548 groupKinerja[_tgl].push($(v2));
549 }else{
550 groupKinerja[_tgl] = [$(v2)];
551 }
552 }
553 });
554 $("#tableCounter tbody").find('tr').eq(1).find('td').eq(1).text(NFormat(totalDisetujui));
555 $("#tableCounter tbody").find('tr').eq(2).find('td').eq(1).text(NFormat(totalBelumDiperiksa+totalDisetujui));
556
557 $("#tableHourProcentage tbody").empty();
558 $("#tableTimeWorkMapping tbody").empty();
559
560 $.each(datesInMonth, function(dI, dV){
561 totalmenit = 0;
562 if( typeof groupKinerja[dV.text] !== 'undefined' ){
563 $.each(groupKinerja[dV.text], function(i3, v3){
564 menit = v3.find('td').eq(2).text().split(" ")[0];
565 menit = parseInt(menit);
566 totalmenit += menit;
567 });
568 }
569
570 rowColor = "";
571 if( dV.obj.getDay() == 6 || dV.obj.getDay() == 0 ){
572 rowColor = "danger";
573 }
574
575 totalMenitKerjaEfektif = 510;
576 if( dV.obj.getDay() == 5 ){ // jum'at
577 totalMenitKerjaEfektif = 450;
578 }
579
580 procetage = ((totalmenit/totalMenitKerjaEfektif)*100); // 510 = 8,5 jam kerja
581
582 html = "<tr class='"+rowColor+"'>";
583 html += "<td style='vertical-align:middle'>"+dV.dayname+"<br>"+dV.text+"</td>";
584 html += "<td align='center' style='vertical-align:middle'>"+Math.round(procetage)+"%</td>";
585 html += "<td style='padding-top:30px;'>"
586 +"<div class='progress progress-striped active'>"
587 +"<div class='progress-bar' style='width: "+procetage+"%'></div>"
588 +"</div>";
589 +"</td>";
590 html += "<td align='center' style='vertical-align:middle'>"+totalmenit+"/"+totalMenitKerjaEfektif+"</td>";
591 html += "</tr>";
592 $("#tableHourProcentage tbody").append(html);
593
594 // tab time mapping;
595 _id = dV.text.replace('-', '_');
596 html = "<tr class='"+rowColor+"'>";
597 html += "<td>"+dV.dayname+"<br>"+dV.text+"</td>";
598 html += "<td style='padding-top:30px;'>";
599 html += "<div class='bar timebar' id='"+_id+"'></div>";
600 html += "</td>"
601 html += "</tr>";
602
603 $("#tableTimeWorkMapping tbody").append(html);
604
605 $("#"+_id).TimeBar({
606 strTimeStart : '6:00',
607 strTimeStop : '18:00',
608 intTimeSteps : 5,
609 intOffset : 10,
610 strDirection : "horizontal",
611 intReadOnly : 1,
612 strHour : '',
613 //strEnabledClassName : 'green_hor',
614 });
615
616 // push hour used to timebar
617 if( typeof groupKinerja[dV.text] !== 'undefined' ){
618 $.each(groupKinerja[dV.text], function(i3, v3){
619 jam = v3.find('td').eq(1).text().split("/")[1].trim().split("-");
620 //console.log(jam);
621 $('#'+_id).TimeBar('strEnabledClassName', 'green_hor');
622 $('#'+_id).TimeBar('Load', jam[0].trim(), jam[1].trim());
623 });
624 }
625 });
626
627 alertMessage('info', 'Load Data Berhasil');
628 button.removeAttr('disabled');
629 }, complete: function(xhr) {
630 if (xhr.status == "403") {
631 alertMessage('error', '[403] Access Denied!');
632 } else if (xhr.status == "500") {
633 alertMessage('error', '[500] Internal Server Error!');
634 }
635 }
636 });
637 }, complete: function(xhr){
638 button.removeAttr('disabled');
639 if ( xhr.status == "403" ){
640 alertMessage('error', '[403] Access Denied!');
641 }else if( xhr.status == "500" ){
642 alertMessage('error', '[500] Internal Server Error!');
643 }
644 }
645 });
646
647 e.preventDefault();
648 });
649
650 $(document).on('click', '#btnSimpanKosaKata', function(e){
651 if( confirm('Simpan kamus ?') ){
652 UpdateDictionary({
653 nama_pekerjaan: $("#kamus_nama_pekerjaan").val(),
654 output_pekerjaan: $("#kamus_output_pekerjaan").val()
655 })
656
657 window.dictionary = {
658 nama_pekerjaan: $("#kamus_nama_pekerjaan").tagsinput('items'),
659 output_pekerjaan: $("#kamus_output_pekerjaan").tagsinput('items')
660 };
661 }
662 });
663});
664
665function copyRight(){
666 var _height = $("body > div.container").height();
667 var _cr = "<div style='background:#ddd; margin-top:50px; height:50px; width:100%; padding:10px;'><div class='container'>Application created by <a target='_blank' href='https://www.facebook.com/Ahmad.Rizal.Afani'>Rizal Afani</a>.</div></div>";
668 $('body').append(_cr);
669}
670
671function alertMessage(type, message){
672 toastr.options.closeButton = true;
673 toastr.options.positionClass = "toast-bottom-right";
674 if( type == "success" ){
675 toastr.success(message);
676 }else if(type == "error") {
677 toastr.error(message);
678 }else if(type == "info") {
679 toastr.info(message);
680 }else if(type == "warning") {
681 toastr.warning(message);
682 }else{
683 //alert(message);
684 console.log(type+" : "+message);
685 }
686}
687
688var SaveJob = function(dataPost, dataConfirm){
689 //console.log(dataPost['state'])
690 $.ajax({
691 url: 'https://kinerja.banyuwangikab.go.id/kinerja/kinerja_pns/simpan_pekerjaan_baru/'+dataPost['state'],
692 type: "POST",
693 data: dataPost,
694 success: function(r) {
695 json = $.parseJSON(r);
696
697 if (json.status == 'success') {
698 jamMenit = dataPost.jam.split(":");
699 jam = parseInt(jamMenit[0]);
700 menit = parseInt(jamMenit[1]);
701
702 var nowHours = Date.today().set({
703 hour: jam,
704 minute: menit
705 });
706 var addMinute = dataPost.durasi;
707 addMinute = parseInt(addMinute);
708
709 if( typeof dataConfirm != 'undefined' ){
710 if (typeof dataConfirm.useJeda != 'undefined') {
711 $('#useJeda').prop('checked', false);
712 addMinute += parseInt(dataConfirm.jeda);
713 }
714
715 if (typeof dataConfirm.resetJob != 'undefined') {
716 $('#resetJob').prop('checked', false);
717 $("#nama_pekerjaan").val("");
718 $("#output_pekerjaan").val("");
719 }
720 }
721
722 var nextHour = moment(nowHours).add(addMinute, 'm').format('H:mm');
723 $("#jam").val(nextHour);
724
725 $('#timeBarInput').TimeBar('strEnabledClassName', 'green_hor');
726 $('#timeBarInput').TimeBar('Load', dataPost.jam, nextHour);
727
728 $("#formSimpanPekerjaan").modal('hide');
729 }
730
731 alertMessage(json.status, json.message);
732 },
733 complete: function(xhr) {
734 $("#btnSimpanPekerjaan").removeAttr('disabled');
735 $("#btnSaveJob").removeAttr('disabled');
736
737 if (xhr.status == "403") {
738 alertMessage('error', '[403] Access Denied!');
739 } else if (xhr.status == "500") {
740 alertMessage('error', '[500] Internal Server Error!');
741 }
742 }
743 });
744}
745
746var SimpanApel = function(dataPost){
747 setTimeout(function(){
748 $.ajax({
749 url: 'https://kinerja.banyuwangikab.go.id/kinerja/kinerja_pns/simpan_pekerjaan_baru/0',
750 type: "POST",
751 data: dataPost,
752 success: function(r) {
753 json = $.parseJSON(r);
754
755 if( json.status == 'error' ){
756 json.status = 'danger';
757 }
758
759 var html = '<div class="alert alert-dismissible alert-'+json.status+'">'
760 html += '<button type="button" class="close" data-dismiss="alert">×</button>';
761 html += '<p>'+dataPost.tgl+" : "+dataPost.keterangan+" "+json.message+'</p>';
762 html += '</div>';
763
764 $("#hasilImport").append(html);
765 }, complete: function(xhr) {
766 if (xhr.status == "403") {
767 alertMessage('error', '[403] Access Denied!');
768 } else if (xhr.status == "500") {
769 alertMessage('error', '[500] Internal Server Error!');
770 }
771 }
772 });
773 }, 1000);
774}
775
776var SignIn = function(){
777 var email = $("#inputEmail");
778 var password = $("#inputPassword");
779 if( email.val() != "" && password.val() != "" ){
780 firebase.auth().signInWithEmailAndPassword(email.val(), password.val()).catch(function(error) {
781 var errorCode = error.code;
782 var errorMessage = error.message;
783 alert(errorMessage);
784 });
785 }else{
786 alert('input belum lengkap!');
787 }
788}
789
790var SignOut = function(){
791 firebase.auth().signOut();
792}
793
794var NFormat = function(num){
795 if( typeof num == 'undefined' ){
796 return;
797 }
798
799 num = parseInt(num);
800
801 return num.toFixed(0).replace(/./g, function(c, i, a) {
802 return i && c !== "." && ((a.length - i) % 3 === 0) ? '.' + c : c;
803 });
804}
805
806var getUrlVars = function(url) {
807 var hash;
808 var myJson = {};
809 var hashes = url.slice(url.indexOf('?') + 1).split('&');
810 for (var i = 0; i < hashes.length; i++) {
811 hash = hashes[i].split('=');
812 myJson[hash[0]] = hash[1];
813 }
814 return myJson;
815}
816
817var ConvertSerializeToJson = function(params){
818 var hash;
819 var myJson = {};
820 $.each(params, function(key, val){
821 _key = val.name;
822 myJson[_key] = val.value;
823 });
824 return myJson;
825}
826
827var MyDate = function(val){
828 var now = (typeof val !== 'undefined') ? ((val instanceof Date) ? val : new Date(val)) : new Date();
829 var dd = now.getDate();
830 var mm = now.getMonth() + 1; //January is 0!
831 var yyyy = now.getFullYear();
832 dd = (dd < 10) ? '0'+dd : dd;
833 mm = (mm < 10) ? '0'+mm : mm;
834 return dd+"-"+mm+"-"+yyyy;
835};
836
837var MyHour = function(val){
838 var now = (typeof val !== 'undefined') ? new Date(val) : new Date();
839 var hh = now.getHours();
840 var ii = now.getMinutes();
841 hh = (hh < 10) ? '0'+hh : hh;
842 ii = (ii < 10) ? '0'+ii : ii;
843 return hh+":"+ii;
844}
845
846var getDatesInMonth = function(month, year) {
847 month = parseInt(month) - 1;
848 //console.log(year+" : "+month);
849 var date = new Date(year, month, 1);
850 var daysName = ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jum'at", "Sabtu"];
851 //console.log(date);
852 var days = [];
853 while (date.getMonth() === month) {
854 _date = new Date(date);
855 days.push({
856 obj: _date,
857 text: MyDate(_date),
858 dayname: daysName[_date.getDay()],
859 });
860 date.setDate(date.getDate() + 1);
861 }
862 return days;
863}
864
865var GetJobsInDate = function(_tanggal, _bulan, _tahun){
866 $.ajax({
867 url: 'https://kinerja.banyuwangikab.go.id/kinerja/kinerja_pns/pekerjaan_belum_diperiksa_list/',
868 method: 'POST',
869 data: {
870 tahun: _tahun,
871 bulan: _bulan,
872 nama: "",
873 limit: 1000,
874 },
875 success: function(res) {
876 res = $("<div>" + res + "</div>");
877 rows = res.find('table tbody tr');
878 var groupKinerja = {};
879 $.each(rows, function(i, v) {
880 if (i > 0) {
881 // set giat to tanggal obj
882 _tgl = $(v).find('td').eq(1).text().split(" ")[0];
883 _jam = $(v).find('td').eq(1).text().split("/")[1].trim().split("-");
884 if (typeof groupKinerja[_tgl] !== 'undefined') {
885 groupKinerja[_tgl].push(_jam);
886 } else {
887 groupKinerja[_tgl] = [_jam];
888 }
889 }
890 });
891 //console.log(groupKinerja);
892
893 $.ajax({
894 url: 'https://kinerja.banyuwangikab.go.id/kinerja/kinerja_pns/pekerjaan_disetujui_list/',
895 method: 'POST',
896 data: {
897 tahun: _tahun,
898 bulan: _bulan,
899 nama: "",
900 limit: 1000,
901 },
902 success: function(res2) {
903 res2 = $("<div>" + res2 + "</div>");
904 rows2 = res2.find('table tbody tr');
905 $.each(rows2, function(i2, v2) {
906 if (i2 > 0) {
907 // set giat to tanggal obj
908 _tgl = $(v2).find('td').eq(1).text().split(" ")[0];
909 _jam = $(v2).find('td').eq(1).text().split("/")[1].trim().split("-");
910 if (typeof groupKinerja[_tgl] !== 'undefined') {
911 groupKinerja[_tgl].push(_jam);
912 } else {
913 groupKinerja[_tgl] = [_jam];
914 }
915 }
916 });
917
918 _tgl = _tanggal+"-"+_bulan+"-"+_tahun;
919 kerjaans = groupKinerja[_tgl];
920 //console.log(kerjaans);
921
922 $('#timeBarInput').TimeBar('Clear');
923 $.each(kerjaans, function(kI, kV){
924 //console.log(kV.join(' - '))
925 $('#timeBarInput').TimeBar('strEnabledClassName', 'green_hor');
926 $('#timeBarInput').TimeBar('Load', kV[0].trim(), kV[1].trim());
927 });
928 }
929 });
930 },
931 complete: function(xhr) {
932 if (xhr.status == "403") {
933 alertMessage('error', '[403] Access Denied!');
934 } else if (xhr.status == "500") {
935 alertMessage('error', '[500] Internal Server Error!');
936 }
937 }
938 });
939}
940
941var GetUserState = function(){
942 $.ajax({
943 url: 'https://kinerja.banyuwangikab.go.id',
944 method: 'GET',
945 success: function(res){
946 res = $("<div>"+res+"</div>");
947 var isLogin = res.find('a[href="https://kinerja.banyuwangikab.go.id/auth/logout"]');
948
949 if( !isLogin.length ){
950 alertMessage('info', 'Sepertinya anda logout.');
951 return;
952 }
953
954 var isPns = res.find("a[href='http://kinerja.banyuwangikab.go.id/monitoring']");
955
956 if( isPns.length ){
957 nip = res.find('img').eq(1).attr('src').split('/')[5].substring(0, 18);
958 $('#counter_tahun').empty();
959 var now = new Date();
960 var yyyy = now.getFullYear();
961 console.log(yyyy)
962 $('#counter_tahun')
963 .append(
964 $("<option></option>")
965 .attr("value", yyyy)
966 .text(yyyy)
967 );
968 $('#counter_tahun')
969 .append(
970 $("<option></option>")
971 .attr("value", (yyyy-1))
972 .text((yyyy-1))
973 );
974 window.kinerjaUser = {
975 state: 'pns',
976 nip: nip,
977 };
978 }else{
979 window.kinerjaUser = {
980 state: 'verifikator'
981 };
982 }
983
984 if( window.kinerjaUser.state == 'verifikator' ){
985 window.location = 'not-verified.html';
986 }
987
988 console.log(window.kinerjaUser);
989 },
990 complete: function(xhr) {
991 if (xhr.status == "403") {
992 alertMessage('error', '[403] Access Denied!');
993 } else if (xhr.status == "500") {
994 alertMessage('error', '[500] Internal Server Error!');
995 }
996 }
997 })
998}
999
1000var pushWords = function(dictionary){
1001 $("#kamus_nama_pekerjaan").val(dictionary.nama_pekerjaan.join(','));
1002 $("#kamus_output_pekerjaan").val(dictionary.output_pekerjaan.join(','));
1003
1004 $("#kamus_nama_pekerjaan").tagsinput('items');
1005 $("#kamus_output_pekerjaan").tagsinput('items');
1006}
1007
1008var UpdateDictionary = function(inputs){
1009 window.dbConnection.transaction(function(trx){
1010 var query = "update dictionary set words = ? where state = ?";
1011 trx.executeSql(query, [inputs.nama_pekerjaan, 'nama_pekerjaan'], function(trx, results){
1012 query = "update dictionary set words = ? where state = ?";
1013 trx.executeSql(query, [inputs.output_pekerjaan, 'output_pekerjaan'], function(trx, results){
1014 alertMessage('info', 'Sukses simpan kamus.');
1015 console.log("Sukses update.")
1016 }, function(trx, err){
1017 console.error(err)
1018 });
1019 }, function(trx, err){
1020 console.error(err)
1021 });
1022 });
1023}
1024
1025String.prototype.replaceAll = function(search, replacement) {
1026 var target = this;
1027 return target.split(search).join(replacement);
1028};