Advertisement
Guest User

Untitled

a guest
Jan 26th, 2020
350
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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.  
  665. function 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.  
  671. function 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.  
  688. var 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.  
  746. var 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">&times;</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.  
  776. var 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.  
  790. var SignOut = function(){
  791.     firebase.auth().signOut();
  792. }
  793.  
  794. var 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.  
  806. var 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.  
  817. var 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.  
  827. var 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.  
  837. var 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.  
  846. var 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.  
  865. var 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.  
  941. var 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.  
  1000. var 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.  
  1008. var 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.  
  1025. String.prototype.replaceAll = function(search, replacement) {
  1026.     var target = this;
  1027.     return target.split(search).join(replacement);
  1028. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement