Commit f7c6616e authored by Deddy Vita Kurniawan's avatar Deddy Vita Kurniawan

* modul tim_pengawasan dan pkpt

parent 0463c2fa
......@@ -410,4 +410,13 @@ if ( ! function_exists('blob_to_string'))
$userStr .= chr(bindec($ch));
return $userStr;
}
}
if ( ! function_exists('bulan_indonesia'))
{
function bulan_indonesia($bln)
{
$bulan = array ('Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember');
return $bulan[$bln-1];
}
}
\ No newline at end of file
......@@ -2954,4 +2954,34 @@ class Pilih extends Pilih_Controller
echo json_encode($response);
}
/*
Pilih tim_pengawasan
Keterangan : mengembalikan daftar tim_pengawasan
Dipakai di modul pkpt
Digunakan untuk komponen select2
*/
function tim_pengawasan()
{
$q = $this->input->post('q');
$mode = $this->input->post('mode');
$req_param = array(
"q" => $q,
"mode" => $mode
);
$result = $this->pilih_model->getTimPengawasanSelect($req_param);
$response = (object) NULL;
$response->results = array();
if ($result) {
for ($i = 0; $i < count($result); $i++) {
$response->results[] = array(
'id' => (string) $result[$i]['id_tim_pengawasan_rinci'],
'text' => (string) $result[$i]['nama_tim'] ." - ". $result[$i]['pejabat'],
);
}
}
$response->sql = $this->db->queries;
echo json_encode($response);
}
}
......@@ -18,7 +18,8 @@ class Pilih_dasar_model extends Pilih_Model
$this->db->from('tahun_anggaran a');
if ($param['q'] != '')
$this->db->where('a.tahun containing', $param['q']);
//$this->db->where('a.tahun containing', $param['q']);
$this->db->like('a.tahun', $param['q']);
$this->db->order_by('a.tahun');
$result = $this->db->get()->result_array();
return $result;
......@@ -31,7 +32,8 @@ class Pilih_dasar_model extends Pilih_Model
');
$this->db->from('status_anggaran a');
if ($param['q'] != '')
$this->db->where('a.name containing', $param['q']);
//$this->db->where('a.name containing', $param['q']);
$this->db->like('Upper(a.name)', strtoupper($param['q']));
$this->db->where('a.tahun', $param['tahun']);
$this->db->order_by('a.status');
$result = $this->db->get()->result_array();
......@@ -48,7 +50,8 @@ class Pilih_dasar_model extends Pilih_Model
$this->db->from('groups a');
$this->db->where('a.appid', $this->app_id);
if ($param['q'] != '')
$this->db->where('a.name containing', $param['q']);
//$this->db->where('a.name containing', $param['q']);
$this->db->like('Upper(a.name)', strtoupper($param['q']));
$this->db->order_by('a.name');
$result = $this->db->get()->result_array();
return $result;
......@@ -78,7 +81,8 @@ class Pilih_dasar_model extends Pilih_Model
');
$this->db->from("(" . $sql . ") s");
if ($param['q'] != '')
$this->db->where('s.jabatan containing', $param['q']);
//$this->db->where('s.jabatan containing', $param['q']);
$this->db->like('Upper(s.jabatan)', strtoupper($param['q']));
$result = $this->db->get()->result_array();
return $result;
......@@ -119,7 +123,8 @@ class Pilih_dasar_model extends Pilih_Model
');
$this->db->from("(" . $sql . ") s");
if ($param['q'] != '')
$this->db->where('s.jabatan containing', $param['q']);
//$this->db->where('s.jabatan containing', $param['q']);
$this->db->like('Upper(s.jabatan)', strtoupper($param['q']));
$result = $this->db->get()->result_array();
return $result;
......@@ -134,7 +139,8 @@ class Pilih_dasar_model extends Pilih_Model
');
$this->db->from("ref_jab_tim_audit s");
if ($param['q'] != '')
$this->db->where('s.uraian containing', $param['q']);
//$this->db->where('s.uraian containing', $param['q']);
$this->db->like('Upper(s.uraian)', strtoupper($param['q']));
if ($param['mode'] == 'tim_penugasan')
$this->db->where('s.no_urut > 4');
......@@ -153,7 +159,8 @@ class Pilih_dasar_model extends Pilih_Model
$this->db->from('pejabat_daerah s');
$this->db->where('s.aktif', '1');
if ($param['q'] != '')
$this->db->where('s.nama_pejabat containing', $param['q']);
//$this->db->where('s.nama_pejabat containing', $param['q']);
$this->db->like('Upper(s.nama_pejabat)', strtoupper($param['q']));
if ($param['mode'] == 'bud')
$this->db->where('s.kode_jabatan', 'BUD');
......@@ -176,7 +183,8 @@ class Pilih_dasar_model extends Pilih_Model
$this->db->where('s.id_skpd', $param['skpd']);
if ($param['q'] != '')
$this->db->where('s.nama_pejabat containing', $param['q']);
//$this->db->where('s.nama_pejabat containing', $param['q']);
$this->db->like('Upper(s.nama_pejabat)', strtoupper($param['q']));
if ($param['kode'] != '') {
$this->db->limit(1);
......@@ -202,7 +210,8 @@ class Pilih_dasar_model extends Pilih_Model
$this->db->where('s.id_unit_kerja', $param['unit_kerja']);
if ($param['q'] != '')
$this->db->where('s.nama_pejabat containing', $param['q']);
//$this->db->where('s.nama_pejabat containing', $param['q']);
$this->db->like('Upper(s.nama_pejabat)', strtoupper($param['q']));
if ($param['kode'] != '') {
// $this->db->limit(1);
......@@ -210,7 +219,8 @@ class Pilih_dasar_model extends Pilih_Model
}
if ($param['jab'] != '')
$this->db->where('s.jabatan containing', $param['jab']);
//$this->db->where('s.jabatan containing', $param['jab']);
$this->db->like('Upper(s.jabatan)', strtoupper($param['q']));
$result = $this->db->get()->result_array();
return $result;
......@@ -228,7 +238,8 @@ class Pilih_dasar_model extends Pilih_Model
$this->db->from('ref_pejabat_spi s');
$this->db->where('s.aktif', '1');
if ($param['q'] != '')
$this->db->where('s.nama containing', $param['q']);
//$this->db->where('s.nama containing', $param['q']);
$this->db->like('Upper(s.nama)', strtoupper($param['q']));
$result = $this->db->get()->result_array();
return $result;
......@@ -245,7 +256,8 @@ class Pilih_dasar_model extends Pilih_Model
$this->db->join('ref_jab_tim_audit c', 'c.id_jab_tim_audit = a.id_jab_tim_audit');
$this->db->where('a.id_surat', $param['id_surat']);
if ($param['q'] != '')
$this->db->where('b.nama containing', $param['q']);
//$this->db->where('b.nama containing', $param['q']);
$this->db->like('Upper(b.nama)', strtoupper($param['q']));
$result = $this->db->get()->result_array();
return $result;
......@@ -267,7 +279,8 @@ class Pilih_dasar_model extends Pilih_Model
$this->db->group_by('1,2,3');
}
if ($param['q'] != '')
$this->db->where('s.nama_satker containing', $param['q']);
//$this->db->where('s.nama_satker containing', $param['q']);
$this->db->like('Upper(s.nama_satker)', strtoupper($param['q']));
$result = $this->db->get()->result_array();
......@@ -284,7 +297,8 @@ class Pilih_dasar_model extends Pilih_Model
$this->db->from('ref_jns_penugasan s');
$this->db->where('s.lvl', '3');
if ($param['q'] != '')
$this->db->where('s.jenis_penugasan containing', $param['q']);
//$this->db->where('s.jenis_penugasan containing', $param['q']);
$this->db->like('Upper(s.jenis_penugasan)', strtoupper($param['q']));
$result = $this->db->get()->result_array();
return $result;
......@@ -299,7 +313,8 @@ class Pilih_dasar_model extends Pilih_Model
');
$this->db->from('ref_jns_pemeriksaan s');
if ($param['q'] != '')
$this->db->where('s.jenis_pemeriksaan containing', $param['q']);
//$this->db->where('s.jenis_pemeriksaan containing', $param['q']);
$this->db->like('Upper(s.jenis_pemeriksaan)', strtoupper($param['q']));
$result = $this->db->get()->result_array();
return $result;
......@@ -329,7 +344,8 @@ class Pilih_dasar_model extends Pilih_Model
');
$this->db->from("(" . $sql . ") s");
if ($param['q'] != '')
$this->db->where('s.jabatan containing', $param['q']);
//$this->db->where('s.jabatan containing', $param['q']);
$this->db->like('Upper(s.jabatan)', strtoupper($param['q']));
$result = $this->db->get()->result_array();
return $result;
......@@ -411,8 +427,10 @@ class Pilih_dasar_model extends Pilih_Model
if ($param['q'] != '') {
$this->db->where('s.kode_skpd_lkp containing', $param['q']);
$this->db->or_where('s.nama_skpd containing', $param['q']);
//$this->db->where('s.kode_skpd_lkp containing', $param['q']);
//$this->db->or_where('s.nama_skpd containing', $param['q']);
$this->db->like('Upper(s.kode_bidang_lkp)', strtoupper($param['q']));
$this->db->or_like('Upper(s.nama_skpd)', strtoupper($param['q']));
}
$result = $this->db->get()->result_array();
......@@ -494,8 +512,10 @@ class Pilih_dasar_model extends Pilih_Model
$this->db->from('v_bidang b');
if ($param['q'] != '') {
$this->db->where('b.kode_bidang_lkp containing', $param['q']);
$this->db->or_where('b.nama_bidang containing', $param['q']);
//$this->db->where('b.kode_bidang_lkp containing', $param['q']);
//$this->db->or_where('b.nama_bidang containing', $param['q']);
$this->db->like('Upper(b.kode_bidang_lkp)', strtoupper($param['q']));
$this->db->or_like('Upper(b.nama_bidang)', strtoupper($param['q']));
}
$result = $this->db->get()->result_array();
......@@ -1198,8 +1218,10 @@ class Pilih_dasar_model extends Pilih_Model
if ($param['q'] != '') {
$this->db->where('s.kode_unit_kerja containing', $param['q']);
$this->db->or_where('s.nama_unit_kerja containing', $param['q']);
//$this->db->where('s.kode_unit_kerja containing', $param['q']);
//$this->db->or_where('s.nama_unit_kerja containing', $param['q']);
$this->db->like('Upper(s.kode_unit_kerja)', strtoupper($param['q']));
$this->db->like('Upper(s.nama_unit_kerja)', strtoupper($param['q']));
}
$result = $this->db->get()->result_array();
......@@ -1975,7 +1997,8 @@ class Pilih_dasar_model extends Pilih_Model
// }
if ($param['q'] != '') {
$this->db->where('s.nama_pejabat containing', $param['q']);
//$this->db->where('s.nama_pejabat containing', $param['q']);
$this->db->like('Upper(s.nama_pejabat)', strtoupper($param['q']));
}
$result = $this->db->get()->result_array();
......@@ -1999,7 +2022,8 @@ class Pilih_dasar_model extends Pilih_Model
}
if ($param['q'] != '')
$this->db->where('r.NAMA_JABATAN containing', $param['q']);
//$this->db->where('r.NAMA_JABATAN containing', $param['q']);
$this->db->like('Upper(s.nama_jabatan)', strtoupper($param['q']));
$result = $this->db->get()->result_array();
return $result;
......@@ -2301,7 +2325,8 @@ class Pilih_dasar_model extends Pilih_Model
');
$this->db->from('ref_jabatan s');
if ($param['q'] != '')
$this->db->where('s.nama_jabatan containing', $param['q']);
//$this->db->where('s.nama_jabatan containing', $param['q']);
$this->db->like('Upper(s.nama_jabatan)', strtoupper($param['q']));
$result = $this->db->get()->result_array();
return $result;
......@@ -2316,7 +2341,8 @@ class Pilih_dasar_model extends Pilih_Model
');
$this->db->from('ref_golongan s');
if ($param['q'] != '')
$this->db->where('s.pangkat containing', $param['q']);
//$this->db->where('s.pangkat containing', $param['q']);
$this->db->like('Upper(s.pangkat)', strtoupper($param['q']));
$result = $this->db->get()->result_array();
return $result;
......@@ -2330,7 +2356,8 @@ class Pilih_dasar_model extends Pilih_Model
');
$this->db->from('ref_program_pengawasan s');
if ($param['q'] != '')
$this->db->where('s.uraian containing', $param['q']);
//$this->db->where('s.uraian containing', $param['q']);
$this->db->like('Upper(s.uraian)', strtoupper($param['q']));
$result = $this->db->get()->result_array();
return $result;
......@@ -2346,7 +2373,8 @@ class Pilih_dasar_model extends Pilih_Model
$this->db->from('ref_jns_temuan s');
$this->db->where('s.ref_3 <>', '');
if ($param['q'] != '')
$this->db->where('s.jenis_penugasan containing', $param['q']);
//$this->db->where('s.jenis_penugasan containing', $param['q']);
$this->db->like('Upper(s.jenis_penugasan)', strtoupper($param['q']));
$result = $this->db->get()->result_array();
return $result;
......@@ -2410,9 +2438,9 @@ class Pilih_dasar_model extends Pilih_Model
$this->db->where('b.id_surat', $param['id_surat']);
if ($param['q'] != '')
$this->db->where('c.nama containing', $param['q']);
//$this->db->where('c.nama containing', $param['q']);
$this->db->like('Upper(c.nama)', strtoupper($param['q']));
if ($param['kode'] == 'reviu')
//$this->db->where('d.uraian containing', $param['kode']);
$this->db->where('d.uraian', 'Anggota Tim');
if($param['mode'] == 'kertas_kerja' && $param['kode'] == 'dibuat')
$this->db->where_in('c.nama', $temp);
......@@ -2642,4 +2670,25 @@ class Pilih_dasar_model extends Pilih_Model
$result = $this->db->get('proker_pengawasan_rinci')->result_array();
return $result;
}
function getTimPengawasanSelect($param)
{
$this->db->select('
t.id_tim_pengawasan_rinci,
t.nama_tim,
(
select group_concat(b.NAMA)
from tim_pengawasan_pejabat a
join ref_pejabat_spi b on b.ID_PEJABAT_SPI = a.id_pejabat_spi
where a.id_tim_pengawasan_rinci = t.id_tim_pengawasan_rinci
) pejabat
');
$this->db->from('tim_pengawasan_rinci t');
$this->db->where('t.aktif','Y');
if ($param['q'] != '')
$this->db->like('Upper(t.nama_tim)', strtoupper($param['q']));
$this->db->order_by('t.nama_tim');
$result = $this->db->get()->result_array();
return $result;
}
}
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Pkpt extends AktivitasBLUD_Controller
class Pkpt extends Base_Controller
{
public function __construct()
......@@ -17,6 +17,98 @@ class Pkpt extends AktivitasBLUD_Controller
$this->message_aktivitas_dihapus = 'PKPT telah dihapus.';
$this->message_aktivitas_gagal_dihapus = 'PKPT tidak bisa dihapus.';
}
public function daftar()
{
$this->load->model('auth/login_model', 'auth');
$data['breadcrumbs'] = 'Daftar ' . $this->modul_display;
$data['title'] = get_title($this->modul_display);
$data['modul'] = $this->modul_name;
$data['report_daftar'] = $this->report_daftar;
$data['report_form'] = $this->report_form;
$data['grid']['akses'] = $this->auth->get_level_akses($this->uri->slash_segment(1));
$data['akses'] = $this->auth->get_level_akses($this->uri->slash_segment(1));
$data['grid']['skpd'] = $this->id_skpd;
$data['grid']['url'] = base_url($this->modul_name . '/get_daftar');
$data['grid']['url_add'] = base_url($this->modul_name . '/form');
$data['grid']['url_del'] = base_url($this->modul_name . '/hapus');
$data['grid']['data'] = $this->data_model->get_grid_model();
$data['grid']['fields'] = $this->data_model->get_data_fields();
$data['main_content'] = $this->view_daftar;
$this->load->view('layout/template', $data);
}
public function get_daftar()
{
parent::get_daftar();
$aggregate = $this->data_model->get_data($this->search_param);
$count = count($aggregate);
$response = (object) NULL;
$response->sql = $this->db->queries;
if ($count == 0) // tidak ada data
{
// menambahkan userdata jika ada
$agg_fields = $this->data_model->fieldmap_daftar_aggregate;
foreach ($agg_fields as $kolom => $value) {
$response->userdata[$kolom] = $aggregate[strtoupper($kolom)];
}
echo json_encode($response);
return;
}
$page = $this->page;
$limit = $this->limit;
$total_pages = ceil($count / $limit);
if ($page > $total_pages) $page = $total_pages;
$start = $limit * $page - $limit;
if ($start < 0) $start = 0;
$this->search_param['limit'] = array(
'start' => $start,
'end' => $limit
);
$result = $this->data_model->get_data($this->search_param);
$response->page = $page;
$response->total = $total_pages;
$response->records = $count;
$response->sql = $this->db->queries;
$fields = $this->data_model->fieldmap_daftar;
for ($i = 0; $i < count($result); $i++) {
$response->rows[$i]['id'] = $result[$i][$fields[0]];
$data = array();
for ($n = 1; $n < count($fields); $n++) {
$data[] = $result[$i][$fields[$n]];
}
$response->rows[$i]['cell'] = $data;
}
// menambahkan userdata jika ada
$agg_fields = $this->data_model->fieldmap_daftar_aggregate;
foreach ($agg_fields as $kolom => $value) {
$response->userdata[$kolom] = $aggregate[strtoupper($kolom)];
}
echo json_encode($response);
}
public function form($id = 0)
{
$data = array();
$data['title'] = get_title($this->modul_display);
$data['modul'] = $this->modul_name;
$data['modul_display'] = $this->modul_display;
$data['report_form'] = $this->report_form;
$this->load->model('auth/login_model', 'auth');
$data['akses'] = $this->auth->get_level_akses($this->uri->slash_segment(1));
if ($id !== 0)
$data['data'] = $this->data_model->get_data_by_id($id);
$data['main_content'] = $this->view_form;
$this->load->view('layout/template', $data);
}
public function validasi_form()
{
......@@ -34,73 +126,48 @@ class Pkpt extends AktivitasBLUD_Controller
{
}
function rinci($id = 0)
public function get_rincian_pkpt($id = 0)
{
$result = $this->data_model->get_rinci_by_id($id);
$response = (object) NULL;
if ($result) {
for ($i = 0; $i < count($result); $i++) {
$response->rows[$i]['id'] = $result[$i]['id_pkpt_rinci'];
$response->rows[$i]['cell'] = array(
$result[$i]['id_pkpt_rinci'],
$result[$i]['id_object'],
$result[$i]['id_parent'],
$result[$i]['objek_pemeriksaan'],
$result[$i]['pengampu'],
$result[$i]['jan_1'],
$result[$i]['jan_2'],
$result[$i]['jan_3'],
$result[$i]['jan_4'],
$result[$i]['feb_1'],
$result[$i]['feb_2'],
$result[$i]['feb_3'],
$result[$i]['feb_4'],
$result[$i]['mar_1'],
$result[$i]['mar_2'],
$result[$i]['mar_3'],
$result[$i]['mar_4'],
$result[$i]['apr_1'],
$result[$i]['apr_2'],
$result[$i]['apr_3'],
$result[$i]['apr_4'],
$result[$i]['mei_1'],
$result[$i]['mei_2'],
$result[$i]['mei_3'],
$result[$i]['mei_4'],
$result[$i]['jun_1'],
$result[$i]['jun_2'],
$result[$i]['jun_3'],
$result[$i]['jun_4'],
$result[$i]['jul_1'],
$result[$i]['jul_2'],
$result[$i]['jul_3'],
$result[$i]['jul_4'],
$result[$i]['ags_1'],
$result[$i]['ags_2'],
$result[$i]['ags_3'],
$result[$i]['ags_4'],
$result[$i]['sep_1'],
$result[$i]['sep_2'],
$result[$i]['sep_3'],
$result[$i]['sep_4'],
$result[$i]['okt_1'],
$result[$i]['okt_2'],
$result[$i]['okt_3'],
$result[$i]['okt_4'],
$result[$i]['nov_1'],
$result[$i]['nov_2'],
$result[$i]['nov_3'],
$result[$i]['nov_4'],
$result[$i]['des_1'],
$result[$i]['des_2'],
$result[$i]['des_3'],
$result[$i]['des_4'],
$result[$i]['level']
);
for($i=1; $i<13; $i++)
{
$data = array();
$data[] = 'u'.$i;
$data[] = $i;
$data[] = strtoupper(bulan_indonesia($i));
$data[] = 1; // lvl
$row = new stdClass();
$row->id = $i;
$row->cell = $data;
$response->rows[] = $row;
if($id > 0){
$result = $this->data_model->get_rinci_by_id($id,$i);
for($x=0;$x<count($result);$x++){
$satker = $this->data_model->get_satker($result[$x]['id_pkpt_rinci']);
$data = array();
$data[] = $result[$x]['id_pkpt_rinci'];
$data[] = $i;
$data[] = '';
$data[] = 0; // lvl
$data[] = $result[$x]['id_tim_pengawasan'];
$data[] = $satker['id']?$satker['id']:NULL;
$data[] = $result[$x]['nama_tim'] .' - '.$result[$x]['pejabat'];
$data[] = $result[$x]['uraian'];
$data[] = $satker['kode']?$satker['kode']:NULL;
$data[] = $result[$x]['tanggal'];
$row = new stdClass();
$row->id = $result[$x]['id_pkpt_rinci'];
$row->cell = $data;
$response->rows[] = $row;
}
}
}
$response->sql = $this->db->queries;
echo json_encode($response);
}
}
......@@ -6,9 +6,12 @@ class Pkpt_model extends Base_Model
var $fieldmap_daftar;
var $fieldmap_filter;
var $fieldmap_pkpt;
var $fieldmap_pkpt_rinci;
var $fieldmap_pkpt_satker;
var $fieldmap_tanggal_aktif;
var $data_pkpt;
var $data_tim;
var $data_pkpt_rinci;
var $data_pkpt_satker;
var $nomor;
var $purge;
......@@ -39,61 +42,18 @@ class Pkpt_model extends Base_Model
'tahun' => 'tahun',
);
$this->fieldmap_tim = array(
$this->fieldmap_pkpt_rinci = array(
'id_rinci' => 'id_pkpt_rinci',
'id_pkpt' => 'id_pkpt',
'idobj' => 'id_object',
'id_parent' => 'id_parent',
'pengampu' => 'pengampu',
'jan_1' => 'jan_1',
'jan_2' => 'jan_2',
'jan_3' => 'jan_3',
'jan_4' => 'jan_4',
'feb_1' => 'feb_1',
'feb_2' => 'feb_2',
'feb_3' => 'feb_3',
'feb_4' => 'feb_4',
'mar_1' => 'mar_1',
'mar_2' => 'mar_2',
'mar_3' => 'mar_3',
'mar_4' => 'mar_4',
'apr_1' => 'apr_1',
'apr_2' => 'apr_2',
'apr_3' => 'apr_3',
'apr_4' => 'apr_4',
'mei_1' => 'mei_1',
'mei_2' => 'mei_2',
'mei_3' => 'mei_3',
'mei_4' => 'mei_4',
'jun_1' => 'jun_1',
'jun_2' => 'jun_2',
'jun_3' => 'jun_3',
'jun_4' => 'jun_4',
'jul_1' => 'jul_1',
'jul_2' => 'jul_2',
'jul_3' => 'jul_3',
'jul_4' => 'jul_4',
'ags_1' => 'ags_1',
'ags_2' => 'ags_2',
'ags_3' => 'ags_3',
'ags_4' => 'ags_4',
'sep_1' => 'sep_1',
'sep_2' => 'sep_2',
'sep_3' => 'sep_3',
'sep_4' => 'sep_4',
'okt_1' => 'okt_1',
'okt_2' => 'okt_2',
'okt_3' => 'okt_3',
'okt_4' => 'okt_4',
'nov_1' => 'nov_1',
'nov_2' => 'nov_2',
'nov_3' => 'nov_3',
'nov_4' => 'nov_4',
'des_1' => 'des_1',
'des_2' => 'des_2',
'des_3' => 'des_3',
'des_4' => 'des_4',
'level' => 'level',
'id_bulan' => 'id_bulan',
'id_tim_pengawasan' => 'id_tim_pengawasan',
'uraian' => 'uraian',
'tanggal' => 'tanggal'
);
$this->fieldmap_pkpt_satker = array(
'id_rinci' => 'id_pkpt_rinci',
'idskpd' => 'id_satker',
);
$this->fieldmap_daftar_aggregate = array(
......@@ -146,25 +106,34 @@ class Pkpt_model extends Base_Model
}
/* ambil data tim */
/* ambil data pkpt */
$this->purge = $this->input->post('purge'); $this->purge = $this->purge ? $this->purge : NULL;
$tim = $this->input->post('tim') ? $this->input->post('tim') : NULL;
$pkpt = $this->input->post('pkpt') ? $this->input->post('pkpt') : NULL;
if ($tim) {
$tim = json_decode($tim);
for ($i = 0; $i <= count($tim) - 1; $i++) {
foreach ($this->fieldmap_tim as $key => $value) {
if ($pkpt) {
$pkpt = json_decode($pkpt);
for ($i = 0; $i <= count($pkpt) - 1; $i++) {
foreach ($this->fieldmap_pkpt_rinci as $key => $value) {
switch ($key) {
default: $$key = isset($pkpt[$i]->$key) && $pkpt[$i]->$key ? $pkpt[$i]->$key : NULL;
}
if (isset($$key))
$this->data_pkpt_rinci[$i][$value] = $$key;
}
}
for ($i = 0; $i <= count($pkpt) - 1; $i++) {
foreach ($this->fieldmap_pkpt_satker as $key => $value) {
switch ($key) {
case 'level' : $$key = isset($tim[$i]->$key) && $tim[$i]->$key ? $tim[$i]->$key : 0; break;
default: $$key = isset($tim[$i]->$key) && $tim[$i]->$key ? $tim[$i]->$key : NULL;
default: $$key = isset($pkpt[$i]->$key) && $pkpt[$i]->$key ? $pkpt[$i]->$key : 0;
}
if (isset($$key))
$this->data_tim[$i][$value] = $$key;
$this->data_pkpt_satker[$i][$value] = $$key;
}
}
//die(print_r($this->data_tim));
}
}
......@@ -178,7 +147,6 @@ class Pkpt_model extends Base_Model
$this->id = $this->data_pkpt['id_pkpt'];
}
else {
//$id = $this->get_id('g_id_pkpt');
$this->db->select_max('id_pkpt')->from('pkpt');
$res = $this->db->get()->row_array();
$id = $res['id_pkpt']+1;
......@@ -191,10 +159,8 @@ class Pkpt_model extends Base_Model
$this->nomor = $this->data_pkpt['nomor'];
}
function insert_tim()
{
$no_urut = 1;
$idp = 0;
function insert_rinci()
{
if ($this->purge)
{
......@@ -204,52 +170,74 @@ class Pkpt_model extends Base_Model
$this->check_trans_status('delete pkpt_rinci failed');
}
$jml = count($this->data_tim);
$jml = count($this->data_pkpt_rinci);
for ($i = 0; $i <= $jml - 1; $i++) {
$this->data_tim[$i]['NO_URUT'] = $no_urut;
//$idr = $this->data_tim[$i]['ID_PKPT_RINCI'];
$idr = isset($this->data_tim[$i]['id_pkpt_rinci']) ? str_replace('new_', 0, $this->data_tim[$i]['id_pkpt_rinci']) : null;
if($this->data_tim[$i]['level']==1)
$this->data_tim[$i]['id_parent'] = null;
else
$this->data_tim[$i]['id_parent'] = $idp;
$idr = isset($this->data_pkpt_rinci[$i]['id_pkpt_rinci']) ? str_replace('new_', 0, $this->data_pkpt_rinci[$i]['id_pkpt_rinci']) : null;
$temp = $idr;
$this->db->select('1')->from('pkpt_rinci')->where('id_pkpt', $this->id)->where('id_pkpt_rinci', $idr);
$this->db->select('id_pkpt_rinci')->from('pkpt_rinci')->where('id_pkpt', $this->id)->where('id_pkpt_rinci', $idr);
$rs = $this->db->get()->row_array();
if ($rs){
$this->data_tim[$i]['id_pkpt'] = $this->id;
$idp = $idr;
$this->db->where('id_pkpt_rinci', $idr);
$this->db->where('id_pkpt', $this->id);
$this->db->update('pkpt_rinci', $this->data_tim[$i]);
$this->db->update('pkpt_rinci', $this->data_pkpt_rinci[$i]);
$this->check_trans_status('update pkpt_rinci failed');
$idmkr = $idr;
}
else{
unset($this->data_tim[$i]['id_pkpt_rinci']);
$this->data_tim[$i]['id_pkpt'] = $this->id;
$temp = $this->data_pkpt_rinci[$i]['id_pkpt_rinci'];
unset($this->data_pkpt_rinci[$i]['id_pkpt_rinci']);
$this->data_pkpt_rinci[$i]['id_pkpt'] = $this->id;
$this->db->insert('pkpt_rinci', $this->data_tim[$i]);
$this->db->insert('pkpt_rinci', $this->data_pkpt_rinci[$i]);
$this->check_trans_status('insert pkpt_rinci failed');
if($this->data_tim[$i]['level']==1){
$this->db->select_max('id_pkpt_rinci')->from('pkpt_rinci');
$res = $this->db->get()->row_array();
$idp = $res['id_pkpt_rinci'];
$this->db->select_max('id_pkpt_rinci')->from('pkpt_rinci');
$res = $this->db->get()->row_array();
$idmkr = $res['id_pkpt_rinci'];
}
/* hapus dulu data exist */
if (array_key_exists('id_satker',$this->data_pkpt_satker[$i]))
{
$tambahan = $this->data_pkpt_satker[$i]['id_satker'];
$data_satker = [];
$this->db->where('id_pkpt_rinci', $idmkr)->delete('pkpt_satker');
if($tambahan == 0)
continue;
if(strpos($tambahan, ",")){
$tambahan = explode(",", $tambahan);
//die(print_r($tambahan));
for ($i3 = 0; $i3 < count($tambahan); $i3++)
{
$data_satker['id_pkpt_rinci'] = $idmkr;
$data_satker['id_satker'] = $tambahan[$i3];
$this->db->insert('pkpt_satker', $data_satker);
}
for ($i4 = 0; $i4 < count($data_satker); $i4++)
{
$this->db->insert('pkpt_satker', $data_satker[$i4]);
}
}
else{
$data_satker['id_pkpt_rinci'] = $idmkr;
$data_satker['id_satker'] = $tambahan;
$this->db->insert('pkpt_satker', $data_satker);
}
}
$no_urut+=1;
}
}
function save_detail()
{
$this->insert_pkpt();
$this->insert_tim();
$this->insert_rinci();
}
/* Query daftar */
......@@ -292,77 +280,69 @@ class Pkpt_model extends Base_Model
function build_query_hapus($id = 0)
{
$this->db->select("a.id_pkpt_rinci");
$this->db->where('a.id_pkpt', $id);
$result = $this->db->get('pkpt_rinci a')->result_array();
for($i=0;$i<count($result);$i++){
$this->db->where('id_pkpt_rinci', $result[$i]['id_pkpt_rinci'])->delete('pkpt_satker');
$this->check_trans_status('delete pkpt_satker failed');
}
$this->db->where('id_pkpt', $id)->delete('pkpt_rinci');
$this->check_trans_status('delete pkpt_rinci failed');
$this->db->where('id_pkpt', $id)->delete('pkpt');
$this->check_trans_status('delete pkpt failed');
}
function get_rinci_by_id($id = 0)
{
function get_rinci_by_id($id = 0,$id_bulan = 0)
{
$this->db->select('
a.id_pkpt_rinci,
a.id_object,
a.id_parent,
a.pengampu,
a.jan_1,
a.jan_2,
a.jan_3,
a.jan_4,
a.feb_1,
a.feb_2,
a.feb_3,
a.feb_4,
a.mar_1,
a.mar_2,
a.mar_3,
a.mar_4,
a.apr_1,
a.apr_2,
a.apr_3,
a.apr_4,
a.mei_1,
a.mei_2,
a.mei_3,
a.mei_4,
a.jun_1,
a.jun_2,
a.jun_3,
a.jun_4,
a.jul_1,
a.jul_2,
a.jul_3,
a.jul_4,
a.ags_1,
a.ags_2,
a.ags_3,
a.ags_4,
a.sep_1,
a.sep_2,
a.sep_3,
a.sep_4,
a.okt_1,
a.okt_2,
a.okt_3,
a.okt_4,
a.nov_1,
a.nov_2,
a.nov_3,
a.nov_4,
a.des_1,
a.des_2,
a.des_3,
a.des_4,
a.level,
if(a.level = 0, (select r.nama_satker from ref_satker r where r.id_satker = a.id_object), (select r.jenis_pemeriksaan from ref_jns_pemeriksaan r where r.id_jns = a.id_object)) objek_pemeriksaan,
a.no_urut
a.id_pkpt,
a.id_bulan,
a.id_tim_pengawasan,
a.uraian,
a.tanggal,
t.nama_tim,
(
select group_concat(b.NAMA)
from tim_pengawasan_pejabat a
join ref_pejabat_spi b on b.ID_PEJABAT_SPI = a.id_pejabat_spi
where a.id_tim_pengawasan_rinci = t.id_tim_pengawasan_rinci
) pejabat
');
$this->db->from('pkpt_rinci a');
$this->db->join('pkpt b', 'b.id_pkpt = a.id_pkpt');
$this->db->join('tim_pengawasan_rinci t','t.id_tim_pengawasan_rinci = a.id_tim_pengawasan');
$this->db->where('a.id_pkpt', $id);
$this->db->order_by('a.no_urut'); //die(print_r($this->db->get_compiled_select()));
$this->db->where('a.id_bulan', $id_bulan);
$result = $this->db->get()->result_array();
return $result;
}
function get_satker($id_pkpt_rinci)
{
$this->db->select('a.id_pkpt_rinci, a.id_satker, b.nama_satker, b.kode_satker')
->from('pkpt_satker a')
->join('ref_satker b', 'b.id_satker = a.id_satker')
->where('a.id_pkpt_rinci', $id_pkpt_rinci)
->order_by('b.kode_satker');
$bid = $this->db->get()->result_array();
$id = array();
$kode = array();
$kodex = array();
for ($i = 0; $i < count($bid); $i++)
{
$id[] = $bid[$i]['id_satker'];
$kode[] = $bid[$i]['nama_satker'];
}
$tambahan = array(
'id' => implode($id, ","),
'kode' => implode($kode, "|"),
);
return $tambahan;
}
}
<script src="http://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.10.0/js/bootstrap-datepicker.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.10.0/locales/bootstrap-datepicker.id.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.10.0/css/bootstrap-datepicker.css" rel="stylesheet"/>
<style type="text/css">
.ui-jqgrid tr.jqgrow td {
word-wrap: break-word; /* IE 5.5+ and CSS3 */
......@@ -55,15 +60,16 @@
</div>
<ul class="nav nav-tabs" id="myTab" style="margin-bottom:5px">
<li class="active"><a href="#tim">PKPT</a></li>
<li class="active"><a href="#tim">Rincian PKPT</a></li>
</ul>
<div class="tab-content" style="height:295px">
<div class="tab-content" style="height:400px">
<div class="tab-pane active" id="tim">
<table id="grd_tim"></table>
<div id="pgr_tim"></div>
<table id="grd_pkpt"></table>
<div id="pgr_pkpt"></div>
</div>
</div>
<div class="bottom-bar">
<button type="button" class="btn btn-primary" data-bind="enable: canSave() && !processing(), click: function(data, event){save(false, data, event) }" />Simpan</button>
......@@ -73,678 +79,540 @@
</form>
<script>
var idp = lastp = idtgl = lastgl = 0,
last = 0,
akses = <?php echo $akses; ?>,
purge_tembusan = [],
purge = [];
purge_tanggal = [];
$(document).ready(function() {
$.datepicker.setDefaults($.datepicker.regional['id']);
inisialisasi();
$('#myTab a').click(function(e) {
e.preventDefault();
$(this).tab('show');
})
$("#grd_tim").jqGrid({
url: '',
datatype: 'local',
mtype: 'POST',
colNames: ['', '', '', '<b>Objek Pemeriksaan</b>', '<b>Pengampu</b>', 'I', 'II', 'III', 'IV', 'I', 'II', 'III', 'IV', 'I', 'II', 'III', 'IV', 'I', 'II', 'III', 'IV', 'I', 'II', 'III', 'IV', 'I', 'II', 'III', 'IV', 'I', 'II', 'III', 'IV', 'I', 'II', 'III', 'IV', 'I', 'II', 'III', 'IV', 'I', 'II', 'III', 'IV', 'I', 'II', 'III', 'IV', 'I', 'II', 'III', 'IV', ''],
colModel: [
{name:'id_rinci', hidden:true, editable:true, key:true},
{name:'idobj', hidden:true, editable:true},
{name:'id_parent', hidden:true, editable:true},
{name:'objek_pemeriksaan', width:120, sortable:false, editable:true, editoptions:{dataInit:initselect2}},
{name:'pengampu', width:80, sortable:false, editable:true},
{name:'jan_1', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'jan_2', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'jan_3', width:25, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'jan_4', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'feb_1', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'feb_2', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'feb_3', width:25, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'feb_4', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'mar_1', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'mar_2', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'mar_3', width:25, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'mar_4', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'apr_1', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'apr_2', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'apr_3', width:25, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'apr_4', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'mei_1', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'mei_2', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'mei_3', width:25, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'mei_4', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'jun_1', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'jun_2', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'jun_3', width:25, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'jun_4', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'jul_1', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'jul_2', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'jul_3', width:25, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'jul_4', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'ags_1', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'ags_2', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'ags_3', width:25, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'ags_4', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'sep_1', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'sep_2', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'sep_3', width:25, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'sep_4', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'okt_1', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'okt_2', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'okt_3', width:25, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'okt_4', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'nov_1', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'nov_2', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'nov_3', width:25, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'nov_4', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'des_1', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'des_2', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'des_3', width:25, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
{name:'des_4', width:20, editable: true, edittype:'checkbox', formatter:'checkbox', editoptions:{value:'1:0'}, formatoptions:{disabled:false}, align:'center', sortable:false, class:'check-row'},
<script>
var akses = <?php echo $akses; ?>,
purge = [];
multivalue = [];
var id = last_pkpt = 0;
$(document).ready(function() {
$.datepicker.setDefaults($.datepicker.regional['id']);
{name:'level', hidden:true, editable:true},
],
pager: '#pgr_tim',
rowNum: 1000,
scroll: true,
rownumbers: true,
viewrecords: true,
gridview: true,
shrinkToFit: false,
loadonce: true,
autowidth: true,
//width: '1015',
height: '200',
recordtext: '{2} baris',
rowattr: gridRowAttr3,
loadComplete: function() {
//if(App.id() > 0)
App.onChange();
},
onSelectRow: function(id) {
if (id && id !== last) {
$(this).restoreRow(last);
last = id;
}
},
ondblClickRow: dblClickaudit,
});
/* .contextMenu({
selector: ".jqgrow",
build: function ($trigger, e) {
// this callback is executed every time the menu is to be shown
// its results are destroyed every time the menu is hidden
// e is the original contextmenu event
var $tr = $(e.target).closest("tr.jqgrow"),
rowid = $tr.attr("id"),
item = $("#grd_tim").jqGrid("getRowData", rowid);
return {
callback: function (key, options) {
if(key=='copy')
jadikan_uraian(rowid);
else if(key=='edit')
jadikan_sub_uraian(rowid);
else if(key=='edit2')
jadikan_sub2_uraian(rowid);
else if(key=='cut')
kosongkan_ra(rowid);
},
items: {
copy: {name: "Jadikan Uraian"},
edit: {name: "Jadikan Sub Uraian"},
edit2: {name: "Jadikan Sub Sub Uraian"},
cut : {name: "Kosongkan Baris"}
inisialisasi();
$('#myTab a').click(function(e) {
e.preventDefault();
$(this).tab('show');
})
$("#grd_pkpt").jqGrid({
url: '',
datatype: 'local',
mtype: 'POST',
colNames: ['', '', '<b>BULAN</b>', '', '', '', '<b>PIC</b>', '<b>URAIAN</b>', '<b>AUDITI/OPD</b>', '<b>TANGGAL</b>'],
colModel: [
{name:'id_rinci', hidden:true, editable:true, key:true},
{name:'id_bulan', hidden:true, editable:true},
{name:'nama_bulan', width:120, sortable:false, editable:false},
{name:'lvl', hidden:true, editable:true},
{name:'id_tim_pengawasan', hidden:true, editable:true},
{name:'idskpd', hidden:true, editable:true},
{name:'objek_pemeriksaan', width:200, sortable:false, editable:true, editoptions:{dataInit:initselect2}},
{name:'uraian', width:250, sortable:false, editable:true},
{name:'skpd', width:200, sortable:false, editable:true, editoptions:{dataInit:initselect2satker}},
{name:'tanggal', width:200, sortable:false, editable:true,
editoptions:{size:100,dataInit: function(element) {
const id_bulan = $("[name^='id_bulan']").val();
if(id_bulan == 4 || id_bulan == 6 || id_bulan == 9 || id_bulan == 11)
tanggalAkhir = 30;
else if (id_bulan == 2){
if (id_bulan%4 == 0)
{
if (id_bulan%100 == 0) {
if (id_bulan%400 == 0)
tanggalAkhir = 29;
else
tanggalAkhir = 28;
}
else
tanggalAkhir = 29;
}
};
}
}); */
$("#grd_tim").jqGrid('navGrid', '#pgr_tim', {
add: App.canEdit(),
addtext: 'Tambah Pemeriksaan',
addfunc: add_row,
edit: App.canEdit(),
edittext: 'Ubah',
editfunc:edit_row,
del: App.canEdit(),
deltext: 'Hapus',
delfunc:del_row,
refresh: true,
refreshtext: 'Refresh',
search: false,
}, {}, {}, {}, {});
$("#grd_tim").jqGrid("setGroupHeaders", {
useColSpanStyle: true,
groupHeaders: [
{startColumnName: "jan_1", numberOfColumns: 4, titleText:'<center><b>Jan</b></center>'},
{startColumnName: "feb_1", numberOfColumns: 4, titleText:'<center><b>Feb</b></center>'},
{startColumnName: "mar_1", numberOfColumns: 4, titleText:'<center><b>Mar</b></center>'},
{startColumnName: "apr_1", numberOfColumns: 4, titleText:'<center><b>Apr</b></center>'},
{startColumnName: "mei_1", numberOfColumns: 4, titleText:'<center><b>Mei</b></center>'},
{startColumnName: "jun_1", numberOfColumns: 4, titleText:'<center><b>Jun</b></center>'},
{startColumnName: "jul_1", numberOfColumns: 4, titleText:'<center><b>Jul</b></center>'},
{startColumnName: "ags_1", numberOfColumns: 4, titleText:'<center><b>Ags</b></center>'},
{startColumnName: "sep_1", numberOfColumns: 4, titleText:'<center><b>Sep</b></center>'},
{startColumnName: "okt_1", numberOfColumns: 4, titleText:'<center><b>Okt</b></center>'},
{startColumnName: "nov_1", numberOfColumns: 4, titleText:'<center><b>Nov</b></center>'},
{startColumnName: "des_1", numberOfColumns: 4, titleText:'<center><b>Des</b></center>'},
]
});
$("#grd_tim").jqGrid().navSeparatorAdd('#pgr_tim').navButtonAdd('#pgr_tim',{
caption:'Tambah ObRik',
onClickButton: function(){
var curid = $(this).jqGrid('getGridParam','selrow'),
row = $(this).jqGrid('getRowData', curid);
if (!curid || row.objek_pemeriksaan == ""){
show_warning('Untuk menambah ObRik silahkan pilih Pemeriksaan terlebih dahulu');
return;
}
else
tanggalAkhir = 28;
}
else
tanggalAkhir = 31;
var id_parent = row.id_parent.length > 0?row.id_parent : curid;
newid = 'new_' + parseFloat((new Date().getTime() + '').slice(7))+ Math.round(Math.random() * 100);
var defdata = {id_rinci: newid, id_parent: id_parent, level: 0, pengampu: ''};
var editparam = {
keys : true,
aftersavefunc: after_save,
beforeSaveRow: before_save,
afterrestorefunc: after_restore,
oneditfunc: onEditaudit,
//successfunc: successfunc,
//errorfunc: errorfunc,
restoreAfterError: false,
}
$(this).jqGrid('addRowData', newid, defdata, 'after', curid);
//$("#"+newid).addClass("jqgrid-new-row");
//$(this).jqGrid('editRow', newid, editparam);
//$(this).jqGrid('setSelection', newid);
},
title:'Tambah ObRik',
buttonicon:'ui-icon-plus',
position:'last'
});
});
function initselect2(el){
var oid = el.id;
pos = oid.indexOf('_objek_pemeriksaan');
idx = oid.substring(0, pos);
data = $('#grd_tim').jqGrid('getRowData', idx);
if(data.level == 1){
$(el).select2({
ajax: {
url: "<?php echo base_url()?>pilih/jenis_pemeriksaan",
type: 'POST',
dataType: 'json',
quietMillis: 200,
data: function(term){
return {'q': term}
},
results: function(data) {
return {results: data.results}
},
},
placeholder: 'Pilih Jenis Pemeriksaan',
allowClear: true,
openOnEnter: false,
dropdownAutoWidth : true,
initSelection: function(element, callback){
var data = {'text': element.val()};
callback(data);
},
formatResult: formatPemeriksaan
});
$(el).on('change', function(e){
var ele = [
{id: "idobj", text: "objek_pemeriksaan"},
];
var idx = e.target.id;
// apply selection to grid element
$.each(ele, function(i, x){
var pos = idx.indexOf(x.text);
if ( pos > -1){
var pre = idx.substring(0, pos);
$('#'+pre+x.id).val(e.added ? e.added.id : null);
//$(e.target).val(e.added ? e.added.text : '');
$('#'+pre+x.text).val(e.added ? e.added.text : '');
return false;
}
});
e.stopPropagation();
});
$(el).on('select2-removed', function(e){
var ele = [
{id: "idobj", text: "objek_pemeriksaan"},
];
var idx = e.target.id;
// apply selection to grid element
$.each(ele, function(i, x){
var pos = idx.indexOf(x.text);
if ( pos > -1){
var pre = idx.substring(0, pos);
$('#'+pre+x.id).val(null);
return false;
}
});
e.stopPropagation();
});
$('#s2id_' + oid).on('keyup', function(e){
if (e.keyCode === 13) {
var ev = $.Event('keydown');
ev.keyCode= 13;
$(el).trigger(ev);
}
});
}
else{
$(el).select2({
ajax: {
url: "<?php echo base_url()?>pilih/satker",
type: 'POST',
dataType: 'json',
quietMillis: 200,
data: function(term){
return {'q': term}
},
results: function(data) {
return {results: data.results}
},
},
placeholder: 'Pilih Satuan Kerja',
allowClear: true,
openOnEnter: false,
dropdownAutoWidth : true,
initSelection: function(element, callback){
var data = {'text': element.val()};
callback(data);
},
formatResult: formatPemeriksaan
});
$(el).on('change', function(e){
var ele = [
{id: "idobj", text: "objek_pemeriksaan"},
];
var idx = e.target.id;
// apply selection to grid element
$.each(ele, function(i, x){
var pos = idx.indexOf(x.text);
if ( pos > -1){
var pre = idx.substring(0, pos);
$('#'+pre+x.id).val(e.added ? e.added.id : null);
//$(e.target).val(e.added ? e.added.text : '');
$('#'+pre+x.text).val(e.added ? e.added.text : '');
return false;
}
});
e.stopPropagation();
});
$(el).on('select2-removed', function(e){
var ele = [
{id: "idobj", text: "objek_pemeriksaan"},
];
var idx = e.target.id;
// apply selection to grid element
$.each(ele, function(i, x){
var pos = idx.indexOf(x.text);
if ( pos > -1){
var pre = idx.substring(0, pos);
$('#'+pre+x.id).val(null);
return false;
}
});
e.stopPropagation();
});
$('#s2id_' + oid).on('keyup', function(e){
if (e.keyCode === 13) {
var ev = $.Event('keydown');
ev.keyCode= 13;
$(el).trigger(ev);
}
});
$(element).datepicker({
autoclose: true,
daysOfWeekDisabled : '0,6',
language: "id",
locale:'id',
format:'dd/mm/yyyy',maxViewMode: 0,
multidate: true,
startDate: new Date(App.tahun(), (id_bulan-1), 1),
endDate: new Date(App.tahun(), (id_bulan-1), tanggalAkhir),
})
}},
editrules:{required:false, integer:false},
},
],
pager: '#pgr_pkpt',
rowNum:1000000,
scroll:true,
rownumbers:false,
viewrecords:true,
gridview:true,
shrinkToFit:false,
autowidth:true,
height: '330',
recordtext: '{2} baris',
rowattr: gridRowAttr,
onSelectRow: function(id) {
if (id && id !== last_pkpt) {
$(this).restoreRow(last_pkpt);
last_pkpt = id;
}
},
ondblClickRow:edit_row,
loadComplete: function(){
if(App.id() > 0) hide_child(0, true);
}
formatPemeriksaan = function(res){
return '<div>' + res.text + '</div>';
});
$("#grd_pkpt").jqGrid('bindKeys', { "onEnter": edit_row});
$("#grd_pkpt").jqGrid('navGrid', '#pgr_pkpt', {
add: App.canEdit(),
addtext: 'Tambah Pemeriksaan',
addfunc: add_row,
edit: App.canEdit(),
edittext: 'Ubah',
editfunc:edit_row,
del: App.canEdit(),
deltext: 'Hapus',
delfunc:del_row,
refresh: true,
refreshtext: 'Refresh',
search: false,
}, {}, {}, {}, {});
function gridRowAttr(rd){
switch (rd.lvl){
case 1 : return {"class": "row-level row-level-1"}; break;
case 2 : return {"class": "row-level row-level-2"}; break;
case 0 : return {"class": "row-level-0"}; break;
}
function add_row() {
if (!App.canEdit()) return;
newid = 'new_' + parseFloat((new Date().getTime() + '').slice(7))+ Math.round(Math.random() * 100);
$("#grd_tim").jqGrid('addRowData', newid, {id_rinci: newid, level: 1}, 'last');
$('#'+newid).addClass('row-bold row-level row-level-1');
setCell_(newid);
};
function dblClickaudit(id, irow, icol, e) {
e.stopPropagation();
edit_row.call(this, id);
}
$(this).on('click', '.row-level-1', prnt);
function prnt(e){
var id = $(e.currentTarget).attr('id');
hide_child(id,false);
}
function hide_child(id, load) {
if(load == true){
$(".row-level-0",$("#grd_pkpt")).hide();
}
function edit_row(id) {
if (!App.canEdit()) return;
var row = $("#grd_tim").jqGrid('getRowData', id);
if(row.level > 0)
$("#grd_tim").jqGrid('setColProp', 'pengampu', {editable: false});
else
$("#grd_tim").jqGrid('setColProp', 'pengampu', {editable: true});
else{
var sumber = $("#grd_pkpt").jqGrid('getRowData'), //all data
rowData = $.grep(sumber, function(e) {return e.lvl == 0}), //data level 0
id3 = id;
editparam = {
keys: true,
url: 'clientArray',
aftersavefunc: after_save,
beforeSaveRow: before_save,
oneditfunc: onEditaudit,
afterrestorefunc: after_restore,
restoreAfterError: false,
var data = $("#grd_pkpt").jqGrid('getRowData',id); //data level 1 yang di select
rowData2 = $.grep(rowData, function(e) { //data level 0, sesuai bulan
return e.id_bulan == data.id_bulan;
});
for (var i=0; i<rowData2.length; i++){
$('#'+rowData2[i].id_rinci).toggle(); // hidden child
}
$(this).jqGrid('saveRow', last, null, 'clientArray', null, after_save);
$(this).jqGrid('editRow', id, editparam);
last = id;
};
function after_save() {
$(this).focus();
}
}
function add_row() {
if (!App.canEdit()) return;
function onEditaudit(id) {
$('#' + id + '_objek_pemeriksaan').focus();
}
function before_save(opt, id) {
/* remove select2 */
$('#'+id+'_objek_pemeriksaan').select2('destroy');
//setCell_(id);
}
var curid = $(this).jqGrid('getGridParam','selrow'),
row = $(this).jqGrid('getRowData', curid);
function after_restore() {
$(this).focus();
if (!curid || row.id_bulan == ""){
show_warning('Untuk menambah data silahkan pilih Bulan terlebih dahulu');
return;
}
function del_row(id) {
if (!App.canEdit()) return;
rs = $('#grd_tim').jqGrid('getRowData', id);
if(rs.level == 1){
data = $('#grd_tim').jqGrid('getRowData');
found = $.grep(data, function(e){
return (e.id_parent == rs.id_rinci);
});
if (found.length) {show_warning('Pemeriksaan masih mempunyai ObRik'); return false;}
}
var grid = $("#grd_tim")
question = 'Hapus ObRik dari daftar ?';
confirmation(question).then(function(answer) {
if (!answer) return;
purge.push(id);
grid.jqGrid('delRowData', id);
});
};
newid = 'new_' + parseFloat((new Date().getTime() + '').slice(7))+ Math.round(Math.random() * 100);
var t = this;
function jadikan_uraian(id){
$('#'+id).addClass('row-bold row-level row-level-1');
$("#grd_tim").jqGrid('setRowData', id, {level: 1});
setCell_(id);
editparam = {
keys: true,
url: 'clientArray',
aftersavefunc: function(id){$(this).focus();},
beforeSaveRow: before_save,
//oneditfunc: onEditaudit,
afterrestorefunc: after_restore,
restoreAfterError: false,
}
const data = {id_rinci: newid, id_bulan: row.id_bulan, lvl : 0};
$(this).jqGrid('addRowData', newid, data, 'after', curid);
$("#"+newid).addClass("jqgrid-new-row");
$(this).jqGrid('editRow', newid, editparam);
$(this).jqGrid('setSelection', newid);
function jadikan_sub_uraian(id){
$('#'+id).addClass('row-bold row-level row-level-2');
$("#grd_tim").jqGrid('setRowData', id, {level: 2});
setCell_(id);
}
};
function edit_row(id) {
if (!App.canEdit()) return;
var row = $(this).jqGrid('getRowData', id);
function jadikan_sub2_uraian(id){
$('#'+id).addClass('row-bold row-level row-level-3');
$("#grd_tim").jqGrid('setRowData', id, {level: 3});
setCell_(id);
if(row.lvl == 1) return;
editparam = {
keys: true,
url: 'clientArray',
aftersavefunc: function(id){$(this).focus();},
beforeSaveRow: before_save,
//oneditfunc: onEditaudit,
afterrestorefunc: after_restore,
restoreAfterError: false,
}
function setCell_(id){
$("#grd_tim").jqGrid("setCell",id, "jan_1", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "jan_2", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "jan_3", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "jan_4", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "feb_1", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "feb_2", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "feb_3", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "feb_4", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "mar_1", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "mar_2", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "mar_3", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "mar_4", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "apr_1", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "apr_2", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "apr_3", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "apr_4", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "mei_1", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "mei_2", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "mei_3", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "mei_4", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "jun_1", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "jun_2", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "jun_3", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "jun_4", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "jul_1", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "jul_2", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "jul_3", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "jul_4", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "ags_1", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "ags_2", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "ags_3", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "ags_4", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "sep_1", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "sep_2", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "sep_3", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "sep_4", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "okt_1", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "okt_2", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "okt_3", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "okt_4", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "nov_1", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "nov_2", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "nov_3", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "nov_4", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "des_1", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "des_2", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "des_3", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
$("#grd_tim").jqGrid("setCell",id, "des_4", "", "ui-state-disabled ui-jqgrid-disablePointerEvents");
//$(this).jqGrid('saveRow', last_pkpt, null, 'clientArray', null, $(this).focus());
$(this).jqGrid('editRow', id, editparam);
//$(this).jqGrid('setSelection', id);
last_pkpt = id;
};
function onEditaudit(id) {
$('#' + id + '_objek_pemeriksaan').focus();
}
function before_save(opt, id) {
tim = $('#' + id + '_objek_pemeriksaan').val();
tanggal = $('#' + id + '_tanggal').val();
uraian = $('#' + id + '_uraian').val();
// cek semua kolom sudah diisi
if (tim == '' || tanggal == '' || uraian == '') {
show_warning('Silahkan melengkapi semua isian.');
return false;
}
function kosongkan_ra(id){
newdata = {objek_pemeriksaan:'', pengampu:'', level:0};
$("#grd_tim").jqGrid('setRowData', id, newdata);
$('.ui-state-disabled').removeClass('ui-state-disabled');
$('.ui-jqgrid-disablePointerEvents').removeClass('ui-jqgrid-disablePointerEvents');
}
// remove select2
$('#'+id+'_skpd').select2('destroy');
$('#'+id+'_objek_pemeriksaan').select2('destroy');
function gridRowAttr3(rek) {
var lvl = parseInt(rek.level);
switch (lvl){
case 1 : return {"class": "row-level row-level-1"}; break;
case 2 : return {"class": "row-level row-level-2"}; break;
case 3 : return {"class": "row-level row-level-3"}; break;
case 0 : return {"class": "row-level-0"}; break;
default : return '';
}
}
ko.validation.init({
insertMessages: false,
decorateElement: true,
errorElementClass: 'error',
var arrid = []; arrtext = [];
$.each(multivalue, function(i, x){
arrid[i] = x.id;
arrtext[i] = x.text;
});
$('#'+id+'_idskpd').val(arrid.join(","));
$('#'+id+'_skpd').val(arrtext.join("|"));
multivalue = [];
//setCell_(id);
}
function after_restore() {
$(this).focus();
}
function del_row(id) {
if (!App.canEdit()) return;
rs = $(this).jqGrid('getRowData', id);
var grid = $(this)
question = 'Hapus data dari daftar ?';
confirmation(question).then(function(answer) {
if (!answer) return;
purge.push(id);
grid.jqGrid('delRowData', id);
});
};
function add_arr(arr, val){
var exist = arr.map(function(e) { return e.id; }).indexOf(val.id);
if (exist < 0){
arr.push(val);
}
}
var ModelUnitKerja = function() {
var self = this;
self.modul_display = '<?php echo $modul_display ?>';
self.processing = ko.observable(false);
self.akses_level = ko.observable(<?php echo isset($akses) ? $akses : 0 ?>);
self.id = ko.observable(<?php echo isset($data['id_pkpt']) ? $data['id_pkpt'] : 0 ?>);
self.nomor = ko.observable(<?php echo isset($data['nomor']) ? json_encode($data['nomor']) : '' ?>)
.extend({
required: {
params: true,
message: 'Nomor tidak boleh kosong'
}
});
self.tanggal = ko.observable('<?php echo isset($data['tanggal']) ? format_date($data['tanggal']) : date('d/m/Y') ?>')
.extend({
required: {
params: true,
message: 'Tanggal tidak boleh kosong'
}
});
self.tahun = ko.observable('<?php echo isset($data['tahun']) ? $data['tahun'] : date('Y') ?>')
.extend({
required: {
params: true,
message: 'Tahun tidak boleh kosong'
}
function remove_arr(arr, val){
var exist = arr.map(function(e) { return e.id; }).indexOf(val.id);
if (exist >= 0){
arr.splice(exist, 1);
}
}
function initselect2satker(el){
var oid = el.id;
var xx = el.id.substring(0, el.id.indexOf('skpd'));
var xxx = $('#'+xx+'idskpd').val();
$(el).select2({
minimumInputLength: 0,
//maximumSelectionSize: 2,
ajax: {
url: "<?php echo base_url()?>pilih/satker",
type: 'POST',
dataType: 'json',
quietMillis: 200,
data: function(term){
return {'q': term}
},
results: function(data) {
var skpds = $.grep(data.results, function(val){
return val.id != xxx;
});
return {results: skpds}
},
},
placeholder: 'Pilih Satuan Kerja',
multiple: true,
allowClear: true,
openOnEnter: false,
dropdownAutoWidth : true,
initSelection: function(element, callback){
var data = [];
multivalue = [];
var pre = element[0].id.substring(0, element[0].id.indexOf('skpd'));
var elid = $('#'+pre+'idskpd');
var teks = element.val();
element.val(elid.val());
var id = elid.val().split(",");
if (!teks) return;
$(teks.split('|')).each(function(i, x){
data.push({id:id[i], text:x});
});
self.mode = ko.computed(function() {
return self.id() > 0 ? 'edit' : 'new';
multivalue = data;
callback(data);
},
});
$(el).on('change', function(e){
var elem = e.target;
var pre = elem.id.substring(0, elem.id.indexOf('skpd'))
var elid = $('#'+pre+'idskpdidt');
if (e.added){
//multivalue.push({ id:e.added.id, text:e.added.text });
add_arr(multivalue, { id:e.added.id, text:e.added.text });
}
if (e.removed){
remove_arr(multivalue, { id:e.removed.id, text:e.removed.text });
}
});
$('#s2id_' + oid).on('keyup', function(e){
if (e.keyCode === 13) {
var ev = $.Event('keydown');
ev.keyCode= 13;
$(el).trigger(ev);
}
});
}
function initselect2(el){
var oid = el.id;
pos = oid.indexOf('_objek_pemeriksaan');
idx = oid.substring(0, pos);
data = $(this).jqGrid('getRowData', idx);
$(el).select2({
ajax: {
url: "<?php echo base_url()?>pilih/tim_pengawasan",
type: 'POST',
dataType: 'json',
quietMillis: 200,
data: function(term){
return {'q': term}
},
results: function(data) {
return {results: data.results}
},
},
placeholder: 'Pilih Tim Pengawasan',
allowClear: true,
openOnEnter: false,
dropdownAutoWidth : true,
initSelection: function(element, callback){
var data = {'text': element.val()};
callback(data);
},
formatResult: formatPemeriksaan
});
$(el).on('change', function(e){
var ele = [
{id: "id_tim_pengawasan", text: "objek_pemeriksaan"},
];
var idx = e.target.id;
// apply selection to grid element
$.each(ele, function(i, x){
var pos = idx.indexOf(x.text);
if ( pos > -1){
var pre = idx.substring(0, pos);
$('#'+pre+x.id).val(e.added ? e.added.id : null);
//$(e.target).val(e.added ? e.added.text : '');
$('#'+pre+x.text).val(e.added ? e.added.text : '');
return false;
}
});
self.title = ko.computed(function() {
return (self.mode() === 'edit' ? 'Edit ' : 'Entri ') + self.modul_display;
e.stopPropagation();
});
$(el).on('select2-removed', function(e){
var ele = [
{id: "id_tim_pengawasan", text: "objek_pemeriksaan"},
];
var idx = e.target.id;
// apply selection to grid element
$.each(ele, function(i, x){
var pos = idx.indexOf(x.text);
if ( pos > -1){
var pre = idx.substring(0, pos);
$('#'+pre+x.id).val(null);
return false;
}
});
e.stopPropagation();
});
$('#s2id_' + oid).on('keyup', function(e){
if (e.keyCode === 13) {
var ev = $.Event('keydown');
ev.keyCode= 13;
$(el).trigger(ev);
}
});
}
formatPemeriksaan = function(res){
return '<div>' + res.text + '</div>';
}
});
ko.validation.init({
insertMessages: false,
decorateElement: true,
errorElementClass: 'error',
});
var ModelUnitKerja = function() {
var self = this;
self.modul_display = '<?php echo $modul_display ?>';
self.processing = ko.observable(false);
self.akses_level = ko.observable(<?php echo isset($akses) ? $akses : 0 ?>);
self.id = ko.observable(<?php echo isset($data['id_pkpt']) ? $data['id_pkpt'] : 0 ?>);
self.nomor = ko.observable(<?php echo isset($data['nomor']) ? json_encode($data['nomor']) : '' ?>)
.extend({
required: {
params: true,
message: 'Nomor tidak boleh kosong'
}
});
self.tanggal = ko.observable('<?php echo isset($data['tanggal']) ? format_date($data['tanggal']) : date('d/m/Y') ?>')
.extend({
required: {
params: true,
message: 'Tanggal tidak boleh kosong'
}
});
self.tahun = ko.observable('<?php echo isset($data['tahun']) ? $data['tahun'] : date('Y') ?>')
.extend({
required: {
params: true,
message: 'Tahun tidak boleh kosong'
}
});
self.isEdit = ko.computed(function() {
return self.mode() === 'edit';
});
self.mode = ko.computed(function() {
return self.id() > 0 ? 'edit' : 'new';
});
self.canEdit = ko.computed(function() {
return self.akses_level() >= 3;
});
self.canPrint = ko.computed(function() {
return self.akses_level() >= 2 && self.mode() === 'edit';
});
self.title = ko.computed(function() {
return (self.mode() === 'edit' ? 'Edit ' : 'Entri ') + self.modul_display;
});
self.canSave = ko.computed(function() {
return self.akses_level() >= 3;
});
self.isEdit = ko.computed(function() {
return self.mode() === 'edit';
});
self.errors = ko.validation.group(self);
self.canEdit = ko.computed(function() {
return self.akses_level() >= 3;
});
self.canPrint = ko.computed(function() {
return self.akses_level() >= 2 && self.mode() === 'edit';
});
}
self.canSave = ko.computed(function() {
return self.akses_level() >= 3;
});
var App = new ModelUnitKerja();
App.onChange = function(){
var totalData = $('#grd_tim').jqGrid("getDataIDs");
for (i=0; i<totalData.length; i++)
{
da = $('#grd_tim').jqGrid('getRowData',totalData[i]);
if(da.level == 1)
setCell_(da.id_rinci);
}
}
App.back = function() {
location.href = root + modul;
}
App.formValidation = function() {
var errmsg = [],
grdpejabat = $('#grd_tim'),
grdrek = $('#grd_tim');
// cek jika ada baris di grid belum disimpan
if (!App.isValid()) {
errmsg.push('Ada kolom yang belum diisi dengan benar. Silakan diperbaiki.');
App.errors.showAllMessages();
}
checkGridRow(grdrek, 'id_audit', after_save);
if (grdrek.jqGrid('getGridParam', 'reccount') === 0) {
errmsg.push('Belum ada rincian yang di entri.');
}
self.errors = ko.validation.group(self);
if (errmsg.length > 0) {
message = errmsg.join('</br>');
show_warning(message, 'Perhatian');
return false;
}
return true;
}
App.print = function() {
preview({
"tipe": "form",
"id": App.id()
});
}
App.save = function() {
if (!App.formValidation()) {
return
}
}
var $frm = $('#frm'),
data = JSON.parse(ko.toJSON(App));
data['tim'] = JSON.stringify($('#grd_tim').jqGrid('getRowData'));
data['purge'] = purge;
var App = new ModelUnitKerja();
App.back = function() {
location.href = root + modul;
}
App.formValidation = function() {
var errmsg = [];
// cek jika ada baris di grid belum disimpan
if (!App.isValid()) {
errmsg.push('Ada kolom yang belum diisi dengan benar. Silakan diperbaiki.');
App.errors.showAllMessages();
}
if (errmsg.length > 0) {
message = errmsg.join('</br>');
show_warning(message, 'Perhatian');
return false;
}
return true;
}
App.print = function() {
preview({
"tipe": "form",
"id": App.id()
});
}
App.save = function() {
if (!App.formValidation()) {
return
}
var $frm = $('#frm'),
data = JSON.parse(ko.toJSON(App));
data_rinci = $('#grd_pkpt').jqGrid('getRowData'),
rincian = $.grep(data_rinci, function(e){ return parseInt(e.lvl) == 0 });
data['pkpt'] = JSON.stringify(rincian);
data['purge'] = purge;
App.processing(true);
$.ajax({
url: $frm.attr('action'),
type: 'post',
dataType: 'json',
data: data,
success: function(res, xhr) {
if (res.isSuccess) {
if (res.id) App.id(res.id);
App.init_grid();
}
App.processing(true);
$.ajax({
url: $frm.attr('action'),
type: 'post',
dataType: 'json',
data: data,
success: function(res, xhr) {
if (res.isSuccess) {
if (res.id) App.id(res.id);
App.init_grid();
}
if (res.isSuccess) show_info(res.message, 'Sukses');
else show_error(res.message, 'Gagal');
},
complete: function() {
App.processing(false);
}
});
if (res.isSuccess) show_info(res.message, 'Sukses');
else show_error(res.message, 'Gagal');
},
complete: function() {
App.processing(false);
}
});
}
App.init_grid = function() {
var grd_tim = $('#grd_tim');
if (App.id() > 0) {
grd_tim.jqGrid('setGridParam', {'url': '<?php echo base_url($modul); ?>/rinci/' + App.id(),'datatype': 'json'});
grd_tim.trigger('reloadGrid');
}
else
{
grd_tim.jqGrid('setGridParam', {'url': '', 'datatype': 'local'});
}
}
App.init_grid = function() {
var grd_pkpt = $('#grd_pkpt');
grd_pkpt.jqGrid('setGridParam', {'url': '<?php echo base_url($modul); ?>/get_rincian_pkpt/' + App.id(),'datatype': 'json'});
grd_pkpt.trigger('reloadGrid');
}
ko.applyBindings(App);
setTimeout(function() {
App.init_grid();
}, 500)
</script>
\ No newline at end of file
ko.applyBindings(App);
setTimeout(function() {
App.init_grid();
}, 500)
</script>
\ No newline at end of file
......@@ -14,7 +14,7 @@
</div><!-- /.container-fluid -->
</div>
<!-- /.content-header -->
<!-- Main content -->
<section class="content">
<div class="container-fluid">
......
<?php
class Tim_pengawasan extends Userpage_Controller {
public function __construct()
{
parent::__construct();
$this->modul_name = 'tim_pengawasan';
$this->modul_display = 'Tim Pengawasan';
$this->view_daftar = 'tim_pengawasan_view';
$this->report_daftar = 'Daftar Tim Pengawasan';
$this->load->model('tim_pengawasan_model', 'data_model');
}
public function index()
{
$this->load->model('auth/login_model', 'auth');
$data['breadcrumbs'] = 'Daftar '.$this->modul_display;
$data['modul'] = $this->modul_name;
$data['report_daftar'] = $this->report_daftar;
$data['akses'] = $this->auth->get_level_akses($this->uri->slash_segment(1));
$data['grid']['fields'] = $this->data_model->get_data_fields();
$data['main_content'] = $this->view_daftar;
$this->load->view('layout/template', $data);
}
public function get_daftar()
{
parent::get_daftar();
$result = $this->data_model->get_data($this->search_param);
$response = (object) NULL;
$response->sql = $this->db->queries;
for($i=0; $i<count($result); $i++)
{
$response->rows[$i]['id']=$result[$i]['id_tim_pengawasan'];
$response->rows[$i]['cell']=array(
$result[$i]['nama_inspektur']
);
}
echo json_encode($response);
}
public function form($id = '')
{
$data['title'] = get_title($this->modul_display);
$data['modul'] = $this->modul_name;
$this->load->model('auth/login_model', 'auth');
$data['akses'] = $this->auth->get_level_akses($this->uri->slash_segment(1));
$data['main_content']='tim_pengawasan_form';
if($id)
{
$data['data'] = $this->data_model->get_data_by_id($id);
}
$this->load->view('layout/template',$data);
}
protected function validasi_form()
{
$this->form_validation->set_rules('nama_inspektur','Nama Inspektur','required|trim|callback_duplikasi_nama');
$this->form_validation->set_message('required', '%s tidak boleh kosong.');
$this->form_validation->set_message('_duplikasi_nama', 'Nama sudah ada.');
}
function duplikasi_nama($str)
{
if ($this->data_model->check_duplikasi_tim($str))
{
$this->form_validation->set_message('duplikasi_nama', '%s "'.$str.'" sudah ada.');
return FALSE;
}
else
{
return TRUE;
}
}
function rincian_tim($id)
{
$response = (object) NULL;
$result = $this->data_model->get_rincian_tim($id);
if ($result){
for($i=0; $i<count($result); $i++)
{
$response->rows[$i]['id'] = $result[$i]['id_tim_pengawasan_rinci'];
$response->rows[$i]['cell'][] = $result[$i]['id_tim_pengawasan_rinci'];
$response->rows[$i]['cell'][] = $result[$i]['nama_tim'];
$response->rows[$i]['cell'][] = $result[$i]['aktif'];
}
}
$response->sql = $this->db->queries;
echo json_encode($response);
}
function rincian_tim_pejabat()
{
$response = array();
$id = $this->input->post('id')?$this->input->post('id'):0;
$result = $this->data_model->get_rincian_pejabat($id);
for($i=0; $i<count($result); $i++)
{
$response[$i] = array(
'id_tim_pengawasan_pejabat' => $result[$i]['id_tim_pengawasan_pejabat'],
'id_tim_pengawasan_rinci' => $result[$i]['id_tim_pengawasan_rinci'],
'jabatan' => $result[$i]['uraian'],
'nama' => $result[$i]['nama'],
'id_jab_tim_audit' => $result[$i]['id_jab_tim_audit'],
'id_pejabat_spi' => $result[$i]['id_pejabat_spi'],
);
}
echo json_encode($response);
}
function rincian_pejabat($id = 0)
{
$response = (object) NULL;
$result = $this->data_model->get_rincian_pejabat($id);
if ($result){
for($i=0; $i<count($result); $i++)
{
$response->rows[$i]['id'] = $result[$i]['id_rincian_tim_pengawasan'];
$response->rows[$i]['cell'][] = $result[$i]['id_rincian_tim_pengawasan'];
$response->rows[$i]['cell'][] = $result[$i]['uraian'];
$response->rows[$i]['cell'][] = $result[$i]['no_urut'];
$response->rows[$i]['cell'][] = $result[$i]['nama'];
$response->rows[$i]['cell'][] = $result[$i]['id_pejabat_spi'];
}
}
$response->sql = $this->db->queries;
echo json_encode($response);
}
}
\ No newline at end of file
<?php
class Tim_pengawasan_model extends Base_Model
{
var $fields;
var $fields_tim;
var $fields_pejabat;
var $fieldmap_filter;
var $fieldmap_pejabat;
var $fieldmap_tim_pengawasan;
var $fieldmap_tim_pengawasan_rinci;
var $data_tim_pengawasan;
var $data_tim_pengawasan_rinci;
var $data_tim_pengawasan_pejabat;
var $purge_tim;
var $purge_pejabat;
function __construct()
{
parent::__construct();
$this->fields = array(
'id_tim_pengawasan',
'nama_inspektur',
'aktif'
);
$this->fieldmap_filter = array(
'nama_inspektur' => 'a.nama_inspektur',
'aktif' => 'a.aktif',
);
$this->fieldmap_tim_pengawasan = array(
'id' => 'id_tim_pengawasan',
'nama_inspektur' => 'nama_inspektur',
'aktif' => 'aktif',
);
$this->fields_tim = array(
'id_tim_pengawasan_rinci' => 'id_tim_pengawasan_rinci',
'id_tim_pengawasan' => 'id_tim_pengawasan',
'nama_tim' => 'nama_tim',
'no_urut' => 'no_urut',
'aktif' => 'aktif'
);
$this->fields_pejabat = array(
'id_tim_pengawasan_pejabat' => 'id_tim_pengawasan_pejabat',
'id_tim_pengawasan_rinci' => 'id_tim_pengawasan_rinci',
'id_pejabat_spi' => 'id_pejabat_spi',
'id_jab_tim_audit' => 'id_jab_tim_audit',
'no_urut' => 'no_urut'
);
}
function fill_data()
{
$this->purge_tim = $this->input->post('purge_tim'); $this->purge_tim = $this->purge_tim ? $this->purge_tim : NULL;
$this->purge_pejabat = $this->input->post('purge_pejabat'); $this->purge_pejabat = $this->purge_pejabat ? $this->purge_pejabat : NULL;
foreach($this->fieldmap_tim_pengawasan as $key => $value){
switch ($key){
default : $$key = $this->input->post($key) ? $this->input->post($key) : NULL;
}
if(isset($$key))
$this->data_tim_pengawasan[$value] = $$key;
}
/* ambil grid rincian_tim */
$rincian_tim = $this->input->post('rincian_tim') ? $this->input->post('rincian_tim') : NULL;
if ($rincian_tim){
$rincian_tim = json_decode($rincian_tim);
for ($i=0; $i < count($rincian_tim); $i++) {
foreach($this->fields_tim as $key => $value){
switch ($key)
{
default : $$key = isset($rincian_tim[$i]->$key) && $rincian_tim[$i]->$key ? $rincian_tim[$i]->$key : NULL;
}
if(isset($$key))
$this->data_tim_pengawasan_rinci[$i][$value] = $$key;
}
}
}
/* ambil grid rincian_pejabat */
$rincian_pejabat = $this->input->post('rincian_pejabat') ? $this->input->post('rincian_pejabat') : NULL;
if ($rincian_pejabat){
$rincian_pejabat = json_decode($rincian_pejabat);
for ($i=0; $i < count($rincian_pejabat); $i++) {
foreach($this->fields_pejabat as $key => $value){
switch ($key)
{
default : $$key = isset($rincian_pejabat[$i]->$key) && $rincian_pejabat[$i]->$key ? $rincian_pejabat[$i]->$key : NULL;
}
if(isset($$key))
$this->data_tim_pengawasan_pejabat[$i][$value] = $$key;
}
}
}
}
// ----- search advance ---- >>
function get_data_fields()
{
$fields = array(
'nama_tim' => array('name' => 'Nama Tim', 'kategori'=>'string')
);
return $fields;
}
function save_detail()
{
$this->insert_tim_pengawasan();
$this->insert_rincian_tim();
}
function insert_tim_pengawasan()
{
if(isset($this->data_tim_pengawasan['id_tim_pengawasan']))
{
$this->db->where('id_tim_pengawasan',$this->input->post('id'));
$this->db->update('tim_pengawasan', $this->data_tim_pengawasan);
$this->check_trans_status('update tim_pengawasan failed');
$this->id = $this->data_tim_pengawasan['id_tim_pengawasan'];
}
else
{
$this->db->insert('tim_pengawasan', $this->data_tim_pengawasan);
$this->check_trans_status('insert tim_pengawasan failed');
$this->db->select_max('id_tim_pengawasan')->from('tim_pengawasan');
$res = $this->db->get()->row_array();
$idfa = $res['id_tim_pengawasan'];
$this->id = $idfa;
}
}
function insert_rincian_tim()
{
if ($this->purge_tim)
{
if($this->input->post('id') > 0){
$this->db->where_in('id_tim_pengawasan_rinci', $this->purge_tim);
$this->db->delete('tim_pengawasan_rinci');
$this->check_trans_status('delete tim_pengawasan_rinci failed');
}
}
for ($i=0; $i<count($this->data_tim_pengawasan_rinci); $i++)
{
if(isset($this->data_tim_pengawasan_rinci[$i]['id_tim_pengawasan_rinci'])){
$idrbm = isset($this->data_tim_pengawasan_rinci[$i]['id_tim_pengawasan_rinci']) ? $this->data_tim_pengawasan_rinci[$i]['id_tim_pengawasan_rinci'] : NULL;
$temp = $idrbm;
$this->data_tim_pengawasan_rinci[$i]['no_urut'] = $i+1;
$this->db->select('id_tim_pengawasan_rinci')->from('tim_pengawasan_rinci')->where('id_tim_pengawasan', $this->id)->where('id_tim_pengawasan_rinci', $this->data_tim_pengawasan_rinci[$i]['id_tim_pengawasan_rinci']);
$rs = $this->db->get()->row_array();
if ($rs)
{
$this->db->where('id_tim_pengawasan_rinci', $rs['id_tim_pengawasan_rinci']);
$this->db->update('tim_pengawasan_rinci', $this->data_tim_pengawasan_rinci[$i]);
$this->check_trans_status('update tim_pengawasan_rinci failed');
$idmkr = $idrbm;
}
else
{
$temp = $this->data_tim_pengawasan_rinci[$i]['id_tim_pengawasan_rinci'];
unset($this->data_tim_pengawasan_rinci[$i]['id_tim_pengawasan_rinci']);
$this->data_tim_pengawasan_rinci[$i]['id_tim_pengawasan'] = $this->id;
$this->db->insert('tim_pengawasan_rinci', $this->data_tim_pengawasan_rinci[$i]);
$this->check_trans_status('insert tim_pengawasan_rinci failed');
$this->db->select_max('id_tim_pengawasan_rinci')->from('tim_pengawasan_rinci');
$res = $this->db->get()->row_array();
$idmkr = $res['id_tim_pengawasan_rinci'];
}
//pejabat
if($this->input->post('id') > 0){
if ($this->purge_tim)
{
$this->db->where_in('id_tim_pengawasan_rinci', $this->purge_tim);
$this->db->delete('tim_pengawasan_pejabat');
$this->check_trans_status('delete tim_pengawasan_pejabat failed');
}
}
for($x=0;$x<count($this->data_tim_pengawasan_pejabat);$x++){
if($this->data_tim_pengawasan_pejabat[$x]['id_tim_pengawasan_rinci'] == $temp){
$this->data_tim_pengawasan_pejabat[$x]['id_tim_pengawasan_rinci'] = $idmkr;
}
}
}
}
for($i=0;$i<count($this->data_tim_pengawasan_pejabat);$i++){
$this->data_tim_pengawasan_pejabat[$i]['no_urut'] = $i+1;
if($this->input->post('id') > 0){
if ($this->purge_pejabat)
{
$this->db->where_in('id_tim_pengawasan_pejabat', $this->purge_pejabat);
$this->db->delete('tim_pengawasan_pejabat');
$this->check_trans_status('delete tim_pengawasan_pejabat failed');
}
}
$this->db->select('id_tim_pengawasan_pejabat')->from('tim_pengawasan_pejabat')->where('id_tim_pengawasan_pejabat', $this->data_tim_pengawasan_pejabat[$i]['id_tim_pengawasan_pejabat']);
$rs = $this->db->get()->row_array();
if ($rs)
{
$this->db->where('id_tim_pengawasan_pejabat', $rs['id_tim_pengawasan_pejabat']);
$this->db->update('tim_pengawasan_pejabat', $this->data_tim_pengawasan_pejabat[$i]);
$this->check_trans_status('update tim_pengawasan_pejabat failed');
}
else
{
unset($this->data_tim_pengawasan_pejabat[$i]['id_tim_pengawasan_pejabat']);
$this->db->insert('tim_pengawasan_pejabat', $this->data_tim_pengawasan_pejabat[$i]);
$this->check_trans_status('insert tim_pengawasan_pejabat failed');
}
}
}
function get_data_by_id($id)
{
$this->build_query_form($id);
$result = $this->db->get()->row_array();
return $result;
}
/* query hapus */
function build_query_hapus($id=0)
{
//$this->db->where('id_tim_pengawasan', $id)->delete('tim_pengawasan_pejabat');
//$this->check_trans_status('delete tim_pengawasan_pejabat failed');
$this->db->where('id_tim_pengawasan', $id)->delete('tim_pengawasan_rinci');
$this->check_trans_status('delete tim_pengawasan_rinci failed');
$this->db->where('id_tim_pengawasan', $id)->delete('tim_pengawasan');
$this->check_trans_status('delete tim_pengawasan failed');
}
/* Query form */
function build_query_form($id=0)
{
$this->db->select('
a.id_tim_pengawasan,
a.nama_inspektur
');
$this->db->from('tim_pengawasan a');
$this->db->where('a.id_tim_pengawasan', $id);
}
/* Query daftar */
function build_query_daftar()
{
$this->db->select("a.id_tim_pengawasan, a.nama_inspektur");
$this->db->from("tim_pengawasan a");
}
function get_rincian_tim($id)
{
$this->db->select("a.id_tim_pengawasan_rinci, a.nama_tim, a.no_urut, a.aktif");
$this->db->from("tim_pengawasan_rinci a");
$this->db->order_by('a.no_urut');
$this->db->where("a.id_tim_pengawasan", $id);
$result = $this->db->get();
return $result->result_array();
}
function get_rincian_pejabat($id = 0)
{
$this->db->select("a.id_tim_pengawasan_pejabat, a.id_tim_pengawasan_rinci, c.id_jab_tim_audit, c.uraian, c.no_urut, b.id_pejabat_spi, b.nama, b.nip, b.jabatan");
$this->db->from("tim_pengawasan_pejabat a");
$this->db->join("ref_pejabat_spi b","b.id_pejabat_spi = a.id_pejabat_spi");
$this->db->join("ref_jab_tim_audit c","c.id_jab_tim_audit = a.id_jab_tim_audit");
$this->db->join("tim_pengawasan_rinci d","d.id_tim_pengawasan_rinci = a.id_tim_pengawasan_rinci");
$this->db->where("d.id_tim_pengawasan", $id);
$this->db->order_by('a.no_urut');
$result = $this->db->get();
return $result->result_array();
}
function check_duplikasi_tim()
{
$id = $this->input->post('id') ? $this->input->post('id') : 0;
$nama_inspektur = $this->input->post('nama_inspektur') ? $this->input->post('nama_inspektur') : NULL;
$this->db->select('count(a.nama_inspektur) dup')
->where('a.nama_inspektur', $nama_inspektur)
->where('a.id_tim_pengawasan <>', $id);
$rs = $this->db->get('tim_pengawasan a')->row_array();
if($rs['dup'] > 0)
{
return $rs;
}
else
{
return FALSE;
}
}
function check_dependency($id)
{
return TRUE;
}
}
\ No newline at end of file
<section class="content">
<div class="container-fluid">
<fieldset>
<legend id="bc" data-bind="text: title"></legend>
</fieldset>
<form id="frm" method="post" action="<?php echo base_url().$modul; ?>/proses">
<div class="controls-row" >
<div class="control-group" data-bind="validationElement: nama_inspektur" >
<label class="control-label" for="nama_inspektur">Nama Tim Pengawasan</label>
<input type="text" id="nama_inspektur" class="span8" data-bind="value: nama_inspektur"/>
</div>
</div>
</br>
<ul class="nav nav-tabs" id="tabs" style="margin-bottom:5px">
<li class="active"><a href="#tim">Tim</a></li>
</ul>
<div class="tab-content" style="height:300px">
<div class="tab-pane active" id="tim" >
<table id="grd_tim"></table>
<div id="pagertim"></div>
</div>
</div>
<div class="controls-row">
<div class="controls-row pull-right">
<input type="button" data-bind="enable: canSave() && !processing() , click: simpan" id="simpan_form" value="Simpan" class="btn btn-primary"/>
<input type="button" name="back" id="back" value="Kembali" class="btn btn-primary" data-bind="click: back"/>
</div>
</div>
</form>
<script type="text/javascript">
var grd_skpd = $('#gridSKPD'), grd_tim = $('#grd_tim'), last = id = 0, lastp = 0, idc = 0 ;
var purge_tim = [], purge_pejabat = [], sdrek = [];
$(document).ready(function() {
$('#tabs a').click(function(e) {
e.preventDefault();
$(this).tab('show');
})
$('#nama_inspektur').keypress(function(event) {
if (event.keyCode == 13)
{
event.preventDefault();
}
})
grd_tim.jqGrid({
url: '',
datatype: 'local',
mtype:'POST',
colNames:['', 'Nama Tim', 'Aktif'],
colModel:[
{name:'id_tim_pengawasan_rinci', hidden:true, key:true},
{name:'nama_tim', editable:true, width:200},
{name:'aktif', width:130, formatter:'select', edittype:'select', editable:true, editoptions:{value:{'Y':'Ya','T':'Tidak'}, style:'width:100px'}}
],
rowNum:1000000,
scroll:true,
pager:'#pagertim',
shrinkToFit:false,
viewrecords:true,
rownumbers:true,
gridview:true,
autowidth:true,
height:'220',
loadonce:true,
ondblClickRow: gridDoubleClick,
onSelectRow: function(id) {
if (id && id !== last) {
$(this).restoreRow(last);
last = id;
}
},
subGrid:true,
subGridBeforeExpand: subGridBeforeExpand,
subGridRowExpanded: subGridRowExpanded,
});
grd_tim.jqGrid('navGrid', '#pagertim', {
add:App.canSave(),
addfunc:add_tim,
addtext:'Tambah',
edit:App.canSave(),
editfunc:edit_row,
edittext:'Ubah',
del:App.canSave(),
deltext:'Hapus',
delfunc:del_row,
search:false,
refresh:false
});
function gridDoubleClick(id, irow, icol, e) {
e.stopPropagation();
edit_row.call(this, id);
}
function add_tim(){
if (!App.canSave()) return;
//newid = 'new_' + parseFloat((new Date().getTime() + '').slice(7))+ Math.round(Math.random() * 100);
newid = --idc;
editparam = {
keys : true,
url: 'clientArray',
aftersavefunc: after_save,
beforeSaveRow: beforesavefunc,
afterrestorefunc: afterrestorefunc,
oneditfunc: oneditfunc,
successfunc: null,
errorfunc: null,
restoreAfterError: false,
}
$(this).jqGrid('addRowData', newid, {}, 'last');
$("#"+newid).addClass("jqgrid-new-row");
$(this).jqGrid('editRow', newid, editparam);
$(this).jqGrid('setSelection', newid);
last = newid;
}
function edit_row(id){
if (!App.canSave()) return;
editparam = {
keys : true,
url: 'clientArray',
aftersavefunc: after_save,
beforeSaveRow: beforesavefunc,
afterrestorefunc: afterrestorefunc,
oneditfunc: oneditfunc,
successfunc: null,
errorfunc: null,
restoreAfterError: false,
}
grd_tim.jqGrid('editRow', id, editparam);
last = id;
return false;
};
function after_save(){
$(this).focus();
}
function beforesavefunc(opt, id){
var row = grd_tim.jqGrid('getRowData', id);
nama = $('#' + id + '_nama_tim').val();
aktif = $('#' + id + '_aktif').val();
// cek semua kolom sudah diisi
if (nama == '') {
show_warning('Silahkan melengkapi semua isian.');
return false;
}
data = grd_tim.jqGrid('getRowData');
found = $.grep(data, function(e) {
return (e.nama == nama && e.aktif == aktif );
});
if (found.length) {
show_warning('Nama Tim sudah ada');
return false;
}
}
function afterrestorefunc(){
$(this).focus();
}
function oneditfunc(id){
// focus ke elemen pertama
$('#'+id+'_nama_tim').focus();
}
function del_row(id){
var rs = {},
answer = false,
kode = '';
rs = $(this).jqGrid('getRowData', id);
switch ($(this).attr('id')){
case 'grd_tim' : kode = rs.nama_tim; break;
}
answer = confirm('Hapus ' + kode + ' dari daftar?');
if(answer == true){
if ($(this).attr('id') === 'grd_tim'){
purge_tim.push(id);
$(this).jqGrid('delRowData', id);
}
}
}
function after_sukses(){
$(this).focus();
}
function subGridBeforeExpand(subgrid_id, row_id){
if (isNaN(row_id)) return false;
}
function subGridRowExpanded(subgrid_id, row_id){
var tblPejabat, pgrPejabat, flagSD = false;
grdrow = row_id;
tblPejabat = subgrid_id+"_t"; pgrPejabat = subgrid_id+"p_";
$("#"+subgrid_id).html("<table id='"+tblPejabat+"' class='scroll'></table><div id='"+pgrPejabat+"' class='scroll'></div>");
$("#"+tblPejabat).jqGrid({
url:'',
datatype:'local',
mtype:'POST',
colNames:['', '', 'Jabatan Tim', 'Nama Pejabat', '', ''],
colModel:[
{name:'id_tim_pengawasan_pejabat', hidden:true, key:true},
{name:'id_tim_pengawasan_rinci', hidden:true},
{name:'jabatan', width:300, sortable: true, editable:true, editoptions:{dataInit:initselect2}},
{name:'nama', width:500, sortable: true, editable:true, editoptions:{dataInit:initselect3}},
{name:'id_jab_tim_audit', hidden:true, editable:true},
{name:'id_pejabat_spi', hidden:true, editable:true},
],
rownumbers:true,
rowNum:10,
pager:"#"+pgrPejabat,
sortorder:'asc',
viewrecords:true,
gridview:true,
//rowattr: gridRowAttr,
height: '100%',
onSelectRow: function(id){
if(id && id!==lastp){
$(this).restoreRow(lastp);
lastp=id;
}
},
ondblClickRow: gridDoubleClick,
loadComplete: function(){
var t = $(this),
t2 = $('#grd_tim'),
rspd = t2.jqGrid('getRowData', row_id),
info = {id_tim_pengawasan_rinci: row_id},
data = sdrek.filter(function(row){
return parseInt(row.id_tim_pengawasan_rinci) == parseInt(row_id);
});
if (!flagSD) {
setTimeout(function(){
t.jqGrid('setGridParam', {'data':data, 'info':info}).trigger('reloadGrid');
}, 100);
flagSD = true;
}
}
});
$("#"+tblPejabat).jqGrid( 'navGrid', "#"+pgrPejabat, {
add:App.canSave(),
addfunc:add_pejabat,
addtext:'Tambah',
edit:App.canSave(),
editfunc:edit_pejabat,
edittext:'Ubah',
del:App.canSave(),
deltext:'Hapus',
delfunc:del_pejabat,
search:false,
refresh:false
},{},{},{},{});
function gridDoubleClick(id, irow, icol, e) {
e.stopPropagation();
edit_pejabat.call(this, id);
}
function add_pejabat(){
if (!App.canSave()) return;
/* ambil no urut terbesar + 1*/
/* arr = $(this).jqGrid('getDataIDs');
if (arr.length != 0){
id = arr[arr.length - 1] - 1;
}
else id = 1; */
newid = --id;
var data = {id_tim_pengawasan_pejabat:newid, id_tim_pengawasan_rinci:row_id};
$(this).jqGrid('addRowData', newid, {id_tim_pengawasan_rinci:row_id}, 'last');
$(this).jqGrid('setSelection', newid);
lastp = newid;
sdrek.push(data);
}
function edit_pejabat(id){
if (!App.canSave()) return;
var t = this
var row = $(this).jqGrid('getRowData', id);
editparam = {
keys : true,
url: 'clientArray',
aftersavefunc: function(id){$(this).focus(); updateRek(t, id, 'upd');},
beforeSaveRow: beforesavepejabat,
afterrestorefunc: afterrestorepejabat,
oneditfunc: oneditpejabat,
successfunc: null,
errorfunc: null,
restoreAfterError: false,
}
$(this).jqGrid('editRow', id, editparam);
lastp = id;
return false;
}
function beforesavepejabat(opt, id){
var row = $(this).jqGrid('getRowData', id);
jabatan = $('#' + id + '_jabatan').val();
nama = $('#' + id + '_nama').val();
id_pejabat_spi = $('#' + id + '_id_pejabat_spi').val();
// cek semua kolom sudah diisi
if (jabatan == '' || nama == '') {
show_warning('Silahkan melengkapi semua isian.');
return false;
}
data = $(this).jqGrid('getRowData');
found = $.grep(data, function(e) {
return (e.nama == nama );
});
if (found.length) {
show_warning('Pejabat sudah ada');
return false;
}
/* remove select2 */
$('#'+id+'_jabatan').select2('destroy');
$('#'+id+'_nama').select2('destroy');
}
function afterrestorepejabat(){
$(this).focus();
}
function oneditpejabat(id){
// focus ke elemen pertama
$('#'+id+'_pejabat').focus();
}
function del_pejabat(id){
var rs = {},
answer = false,
kode = '';
var t = $(this);
rs = $(this).jqGrid('getRowData', id);
answer = confirm('Hapus data dari daftar?');
if(answer == true){
for(var i=0; i < sdrek.length; i++){
if (sdrek[i].id_tim_pengawasan_rinci == row_id && sdrek[i].id_tim_pengawasan_pejabat == id){
purge_pejabat.push(sdrek[i].id_tim_pengawasan_pejabat);
sdrek.splice(i, 1);
t.jqGrid('delRowData', id);
break;
}
}
}
}
function updateRek(obj, id, cmd){
var t = $(obj),
info = t.jqGrid('getGridParam', 'info'),
data = t.jqGrid('getGridParam', 'data');
row = t.jqGrid('getRowData', id);
for(var i=0; i < sdrek.length; i++){
if (sdrek[i].id_tim_pengawasan_rinci == row_id && sdrek[i].id_tim_pengawasan_pejabat == id){
sdrek[i].jabatan = row.jabatan;
sdrek[i].nama = row.nama;
sdrek[i].id_pejabat_spi = row.id_pejabat_spi;
sdrek[i].id_jab_tim_audit = row.id_jab_tim_audit;
break;
}
}
}
App.formattim = function(res) {
return '<div><strong>' + res.text + '</strong></div><div style="border-bottom:1px solid #ccc">' + res.jabatan + '</div>';
}
query_tim = function(option){
$.ajax({
url: "<?php echo base_url()?>pilih/jabatan_tim_audit",
type: 'POST',
dataType: 'json',
data: {
'q': option.term,
'mode': 'tim_pengawasan'
},
success: function (data) {
if(option.term.length > 0){
data.results.push({id: option.term, text: option.term});
}
option.callback({
results: data.results
});
}
});
}
function initselect2(el){
var oid = el.id;
$(el).select2({
minimumInputLength: 0,
query: query_tim,
placeholder: 'Pilih Jabatan Tim',
openOnEnter: false,
dropdownAutoWidth : true,
initSelection: function(element, callback){
var data = {'text': element.val()};
callback(data);
},
});
$(el).on('change', function(e){
idx = e.target.id;
pos = idx.indexOf('jabatan');
if ( pos > -1){
pre = idx.substring(0, pos);
$('#'+pre+'id_jab_tim_audit').val(e.added ? e.added.id : null);
$(e.target).val(e.added ? e.added.text : '');
return false;
}
e.stopPropagation();
});
$('#s2id_' + oid).on('keyup', function(e){
if (e.keyCode === 13) {
ev = $.Event('keydown');
ev.keyCode= 13;
$(el).trigger(ev);
}
});
}
query_nama_pejabat = function(option){
$.ajax({
url: "<?php echo base_url()?>pilih/pejabat_pemberi_tugas",
type: 'POST',
dataType: 'json',
data: {
'q': option.term
},
success: function (data) {
if(option.term.length > 0){
data.results.push({id: option.term, text: option.term });
}
option.callback({
results: data.results
});
}
});
}
function initselect3(el){
var oid = el.id;
$(el).select2({
minimumInputLength: 0,
query: query_nama_pejabat,
placeholder: 'Pilih Pejabat',
openOnEnter: false,
dropdownAutoWidth : true,
initSelection: function(element, callback){
var data = {'text': element.val()};
callback(data);
},
});
$(el).on('change', function(e){
idx = e.target.id;
pos = idx.indexOf('nama');
if ( pos > -1){
pre = idx.substring(0, pos);
$('#'+pre+'id_pejabat_spi').val(e.added ? e.added.id : null);
$(e.target).val(e.added ? e.added.text : '');
return false;
}
e.stopPropagation();
});
$('#s2id_' + oid).on('keyup', function(e){
if (e.keyCode === 13) {
ev = $.Event('keydown');
ev.keyCode= 13;
$(el).trigger(ev);
}
});
}
}
});
ko.validation.init({
insertMessages: false,
decorateElement: true,
errorElementClass: 'error',
});
var ModelTimAnggaran = function (){
var self = this;
self.processing = ko.observable(false);
self.id = ko.observable(<?php echo isset($data['id_tim_pengawasan'])?$data['id_tim_pengawasan']:0 ?>);
self.nama_inspektur = ko.observable(<?php echo isset($data['nama_inspektur']) ? json_encode($data['nama_inspektur']) : "''" ?>)
.extend({
required: {params: true, message: 'Nama Tim belum diisi'}
});
self.mode = ko.computed(function(){
return self.id() > 0 ? 'edit' : 'new';
});
self.title = ko.computed(function(){
return (self.mode() === 'edit' ? 'Edit Tim Pengawasan' : 'Entri Tim Pengawasan');
});
self.akses_level = ko.observable(<?php echo isset($akses) ? $akses : 0 ?>);
self.canSave = ko.computed(function(){
return self.akses_level() >= 3;
});
self.errors = ko.validation.group(self);
}
var App = new ModelTimAnggaran();
App.back = function(){
location.href = root+modul;
}
App.init_grid = function(){
if (App.id() > 0){
grd_tim.jqGrid('setGridParam', {'url': '<?php echo base_url($modul) ?>/rincian_tim/' + App.id(), 'datatype': 'json'});
grd_tim.trigger('reloadGrid');
}
sdrek = [];
if(App.id()){
setTimeout(function(){
$.ajax({
type: "post",
dataType: "json",
url: root + modul + '/rincian_tim_pejabat/',
data: {
'id': App.id(),
},
success: function(res) {
if ($.isArray(res)) {
sdrek = res;
}
},
});
}, 1000);
}
/* else{
grd_tim.jqGrid('setGridParam', {'url': '<?php echo base_url($modul) ?>/rincian_tim_awal/', 'datatype': 'json'});
grd_tim.trigger('reloadGrid');
} */
}
App.formValidation = function(){
var errmsg = [], ind=[],lk=[];
if (grd_tim.jqGrid('getDataIDs').length === 0) {
errmsg.push('Tim Belum Diisi.');
}
lk = grd_tim.jqGrid('getGridParam', 'savedRow');
if(lk.length > 0){
if(lk[0].id){
grd_tim.jqGrid('saveRow', lk[0].id, null, 'clientArray', null, after_sukses, null, function(){grd_tim.jqGrid('restoreRow', last);});
}
}
if (!App.isValid()){
errmsg.push('Ada kolom yang belum diisi dengan benar. Silakan diperbaiki.');
App.errors.showAllMessages();
}
if (errmsg.length > 0) {
message = errmsg.join('</br>');
show_warning(message);
return false;
}
return true;
}
App.simpan = function(){
if (!App.formValidation()){ return }
var $frm = $('#frm'),
data = JSON.parse(ko.toJSON(App));
data['purge_tim'] = purge_tim;
data['purge_pejabat'] = purge_tim;
data['rincian_tim'] = JSON.stringify(grd_tim.jqGrid('getRowData'));
data['rincian_pejabat'] = JSON.stringify(sdrek);
$.ajax({
url: $frm.attr('action'),
type: 'post',
dataType: 'json',
data: data,
success: function(res, xhr){
if (res.id) App.id(res.id);
if (res.isSuccess) {
show_info(res.message, 'Sukses');
App.init_grid();
purge_tim = [];
purge_pejabat = [];
}
else show_error(res.message, 'Gagal');
}
});
}
ko.applyBindings(App);
setTimeout(function(){App.init_grid();}, 500);
</script>
\ No newline at end of file
<div class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1 class="m-0 text-dark"><?php echo $breadcrumbs; ?></h1>
</div><!-- /.col -->
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="<?php echo base_url(); ?>">Home</a></li>
<li class="breadcrumb-item active"><?php echo $breadcrumbs; ?></li>
</ol>
</div><!-- /.col -->
</div><!-- /.row -->
</div><!-- /.container-fluid -->
</div>
<!-- /.content-header -->
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div id="grid_container">
<div id="search" class="row" style="display : unset;">
</div>
<table id="grid"></table>
<div id="pager"></div>
</div>
<script>
<?php
$akses = isset($akses) ? $akses : 0;
$canEdit = $akses >= 3;
$canPrint = $akses >= 2;
?>
var id = last = 0, canEdit = <?php echo $canEdit ? 'true' : 'false'; ?>, canPrint = <?php echo $canPrint ? 'true' : 'false'; ?>, grid_tim = $('#grid');
$(document).ready(function() {
params = {
container : $('#search'),
grid : grid_tim,
cols : <?php echo json_encode($grid['fields']); ?>,
}
Search.init(params);
grid_tim.jqGrid({
url:root+modul+'/get_daftar',
datatype:'json',
mtype:'POST',
colNames:['Nama Tim'],
colModel:[
{name:'nama_tim', width:600, sortable: true}
],
pager:'#pager',
rowNum:1000000,
scroll:true,
rownumbers:true,
viewrecords:true,
gridview:true,
shrinkToFit:false,
autowidth:true,
sortname:'nama_tim',
height:'400',
recordtext:'{2} baris',
ondblClickRow:edit_row,
});
grid_tim.jqGrid('bindKeys', {"onEnter": edit_row});
grid_tim.jqGrid( 'navGrid', "#pager", {
add: canEdit,
addtext: 'Tambah',
addfunc: add_row,
edit: canEdit,
edittext: 'Ubah',
editfunc:edit_row,
del: canEdit,
deltext: 'Hapus',
delfunc: del_row,
search: false,
searchtext: 'Cari',
refresh: true,
refreshtext: 'Refresh',
},{},{},{},{});
<?php
if ($canPrint)
{
?>
grid_tim.jqGrid().navSeparatorAdd('#pager')
.navButtonAdd('#pager',{
caption:'Cetak',
onClickButton: function(){ preview({"tipe":"daftar"}, grid_tim)},
title:'Cetak Daftar',
buttonicon:'ui-icon-print',
position:'last'
}
);
<?php
}
?>
function add_row(){
if (!canEdit && !canPrint) return false;
location.href =root+modul+'/form';
}
function edit_row(id){
if (!canEdit && !canPrint) return false;
location.href =root+modul+'/form/'+id;
}
function del_row(id){
if (!canEdit && !canPrint) return false;
rs = $(this).jqGrid('getRowData', id);
var question = 'Hapus '+rs.nama_tim+' dari Tim Anggaran ?';
confirmation(question).then(function(answer){
if (!answer) return;
$.ajax({
type: "post",
dataType: "json",
url: root+modul+"/hapus",
data: {id:id},
success: function(res) {
if (res.isSuccess) show_info(res.message, 'Sukses');
else show_error(res.message, 'Gagal');
if(res.isSuccess == true) {
grid_tim.jqGrid('delRowData', id);
}
},
});
});
}
function gridRowAttr(rd){
switch (rd.lvl){
case 1 : return {"class": "row-level row-level-1"}; break;
}
}
grid_tim.gridResize();
});
</script>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment