edit.blade.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. <?php $getStatus = \App\Model\Privillage\Role::where('id',Auth::user()->role_id)->value('akses'); ?>
  2. @extends('dev.core.using')
  3. @section('content')
  4. <style>
  5. input, select {
  6. border: 0 !important;
  7. background: transparent !important;
  8. border-bottom: 1px solid #cdcdcd !important;
  9. }
  10. .tb-container{
  11. background: #fff;
  12. margin-top: 1em;
  13. }
  14. tbody > tr {
  15. line-height: 45px !important;
  16. min-height: 45px !important;
  17. height: 45px !important;
  18. }
  19. .ic {
  20. width: 1.5rem;
  21. height: 1.3rem;
  22. border-radius: .5rem;
  23. text-align: center;
  24. cursor:pointer;
  25. /* background: #cdcdcd; */
  26. /* padding-top: .3rem; */
  27. font-size: 1em;
  28. list-style: none;
  29. color: #000;
  30. }
  31. </style>
  32. <br/>
  33. <br/>
  34. <form action="{{route('aktivasi-program.update',$data->id)}}" method="POST" id="form-edit">
  35. @csrf
  36. <div class="col">
  37. <div class="form-group">
  38. <label for="exampleInputEmail1">Tahun Program *</label>
  39. <input type="" class="form-control" id="tahunProgram" placeholder="No Data Available" value="{{$data->value}}" name="value" required>
  40. <small id="tahunProgramHelp" class="form-text text-muted" style="color:red !important"></small>
  41. <!-- <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small> -->
  42. </div>
  43. <div class="form-group">
  44. <label for="exampleInputEmail1">Status *</label>
  45. <select class="form-control" id="status" name="status" required>
  46. <option value="0" {{$data->status==0?'selected':''}}>Draft</option>
  47. <option value="1" {{$data->status==1?'selected':''}}>Aktif</option>
  48. <option value="2" {{$data->status==2?'selected':''}}>Selesai</option>
  49. </select>
  50. </div>
  51. <div class="row">
  52. <div class="col-md-10"></div>
  53. <div class="col-md-2">
  54. <div class="btn btn-primary" style="background: #B4CD93;float:right" id="add-program"><i class="fas fa-plus-circle"></i> Tambah</div>
  55. </div>
  56. </div>
  57. <div class="btn btn-primary btn-lg btn-block" style="background: #193865;margin-top: 1em">Program</div>
  58. <div class="tb-container">
  59. <table class="table table-bordered">
  60. <thead >
  61. <tr class="table-dark">
  62. <th scope="col" width="300px">Program</th>
  63. <th scope="col" width="300px">Sub Program</th>
  64. <th scope="col">Periode</th>
  65. <th scope="col">Jumlah</th>
  66. <th scope="col">Aksi</th>
  67. </tr>
  68. </thead>
  69. <tbody id="tbody">
  70. <input type="hidden" name="uniqids" id="uniqids">
  71. @foreach($data->tahunProgramDetail as $key => $row)
  72. @php $uniqid = sprintf("%06d", mt_rand(1, 999999)); @endphp
  73. <tr id="tr-{{$uniqid}}">
  74. <input type="hidden" name="id_{{$uniqid}}" value="{{$row->id}}">
  75. <input type="hidden" class="uniqid" value="{{$uniqid}}">
  76. <td>
  77. <select class="form-control program" id="program-{{$uniqid}}" name="id_template_program_{{$uniqid}}" required onChange="selectSubProgram({{$uniqid}})">
  78. @foreach($templateProgram as $opt)
  79. <option value="{{$opt->id}}" id="{{$uniqid}}" {{$row->id_template_program==$opt->id?'selected':''}}>{{$opt->nama}}</option>
  80. @endforeach
  81. </select>
  82. </td>
  83. <td>
  84. <select class="form-control subprogram" id="subprogram-{{$uniqid}}" name="id_template_program_detail_{{$uniqid}}" required>
  85. @foreach($templateProgramDetail->where('id_template_program',$row->id_template_program) as $opt)
  86. <option value="{{$opt->id}}" id="{{$uniqid}}" {{$row->id_template_program_detail==$opt->id?'selected':''}}>{{$opt->nama}}</option>
  87. @endforeach
  88. </select>
  89. </td>
  90. <td>
  91. <select class="form-control" id="satuan_{{$uniqid}}" name="satuan_{{$uniqid}}" onChange="setJumlah({{$uniqid}})">
  92. <option value="Tahun" {{$row->satuan=='Tahun'?'selected':''}}>Tahun</option>
  93. <option value="Bulan" {{$row->satuan=='Bulan'?'selected':''}}>Bulan</option>
  94. </select>
  95. </td>
  96. <td>
  97. <select class="form-control" name="jumlah_{{$uniqid}}" id="jumlah_{{$uniqid}}">
  98. <?php $optJumlah = ($row->satuan == 'Tahun')?12:1; ?>
  99. @for($i=1;$i<=$optJumlah;$i++)
  100. <option value="{{$i}}" {{$row->jumlah==$i?'selected':''}}>{{$i}}</option>
  101. @endfor
  102. </select>
  103. </td>
  104. <td>
  105. <center>
  106. <a data-id="{{$row->id}}" ><i class="fas fa-trash" style="color: #E12D2D" onClick="removeData({{$uniqid}})"></i></a>
  107. </center>
  108. </td>
  109. </tr>
  110. @endforeach
  111. </tbody>
  112. </table>
  113. </div>
  114. <div class="tb-container">
  115. <div class="row" style="padding:20px">
  116. <div class="col-md-8"></div>
  117. <div class="col-md-4">
  118. <button type="button" class="btn btn-primary confirmation" id="btn-submit" data-target="form-edit" style="background: #193865"><i class="fa fa-save"></i> Simpan Perubahan</button>
  119. <a href="{{route('aktivasi-program')}}" class="btn btn-primary" id="btn-back" style="background: #fff;color: #193865">Batal</a>
  120. </div>
  121. </div>
  122. </div>
  123. </div>
  124. </form>
  125. <script>
  126. $('#add-program').click(function() {
  127. var uniqid = Date.now();
  128. var id = '<input type="hidden" class="uniqid" value="'+uniqid+'">';
  129. var program = `<td><select class="form-control program" id="program-`+uniqid+`" name="id_template_program_`+uniqid+`" onChange="selectSubProgram(`+uniqid+`)">`
  130. @foreach($templateProgram as $opt)
  131. program += `<option value="{{$opt->id}}" id="`+uniqid+`">{{$opt->nama}}</option>`
  132. @endforeach
  133. program += `</select></td>`;
  134. var subprogram = `<td><select class="form-control subprogram" id="subprogram-`+uniqid+`" name="id_template_program_detail_`+uniqid+`">`
  135. subprogram += `</select></td>`;
  136. var periode = `<td>
  137. <select class="form-control" name="satuan_`+uniqid+`" id="satuan_`+uniqid+`" onChange="setJumlah(`+uniqid+`)">
  138. <option value="Tahun">Tahun</option>
  139. <option value="Bulan">Bulan</option>
  140. </select>
  141. </td>`;
  142. var jumlah = `<td>
  143. <select class="form-control" name="jumlah_`+uniqid+`" id="jumlah_`+uniqid+`">
  144. </select>
  145. </td>`;
  146. var aksi = '<td><center><a id="btn-remove" onClick="removeData('+uniqid+')"><i class="fas fa-trash" style="color: #E12D2D" ></i></a></center></td>';
  147. var attribute = '<tr id="tr-'+uniqid+'">'+id+program+subprogram+periode+jumlah+aksi+'</tr>';
  148. $('#tbody').append(attribute);
  149. setJumlah(uniqid);
  150. selectSubProgram(uniqid);
  151. // checkDuplicate();
  152. })
  153. // function checkDuplicate(){
  154. // var selected = [];
  155. // var invalid = 0;
  156. // $('.program option:selected').each(function(i, obj) {
  157. // //remove tooltip
  158. // $('#parent-'+obj.id).tooltip('dispose');
  159. // //check if kolom is duplicate
  160. // if ($.inArray(obj.value, selected) != -1){
  161. // $('#parent-'+obj.id).css({'color':'red'});
  162. // $('#parent-'+obj.id).children('option').css({'color':'#8898aa'});
  163. // $('#parent-'+obj.id).tooltip({title: 'Program "'+obj.value+'" sudah digunakan'});
  164. // invalid++;
  165. // }else{
  166. // $('#parent-'+obj.id).css({'color':'#8898aa'});
  167. // }
  168. // selected.push(obj.value);
  169. // });
  170. // if(invalid>0){
  171. // $('#btn-submit').prop('disabled',true);
  172. // return false;
  173. // }else{
  174. // $('#btn-submit').prop('disabled',false);
  175. // return true;
  176. // }
  177. // }
  178. // checkDuplicate();
  179. function selectSubProgram(uniqid){
  180. var id_program = $('#program-'+uniqid).val();
  181. $.ajax({
  182. url: "{{url('api/pembuatan-program')}}/subprogram?id_template_program="+id_program,
  183. dataType: "json",
  184. type: "GET",
  185. async: true,
  186. data: { },
  187. beforeSend: function(){
  188. $('#subprogram-'+uniqid).children('option').remove();
  189. },
  190. success: function (result) {
  191. var opt = '';
  192. $.each( result.data, function( index, value ){
  193. opt += '<option value="'+value.id+'">'+value.nama+'</option>';
  194. });
  195. $('#subprogram-'+uniqid).append(opt);
  196. console.log(result.data);
  197. },
  198. error: function (xhr, exception) {
  199. var msg = "";
  200. if (xhr.status === 0) {
  201. msg = "Not connect.\n Verify Network." + xhr.responseText;
  202. } else if (xhr.status == 404) {
  203. msg = "Requested page not found. [404]" + xhr.responseText;
  204. } else if (xhr.status == 500) {
  205. msg = "Internal Server Error [500]." + xhr.responseText;
  206. } else if (exception === "parsererror") {
  207. msg = "Requested JSON parse failed.";
  208. } else if (exception === "timeout") {
  209. msg = "Time out error." + xhr.responseText;
  210. } else if (exception === "abort") {
  211. msg = "Ajax request aborted.";
  212. } else {
  213. msg = "Error:" + xhr.status + " " + xhr.responseText;
  214. }
  215. console.log(msg);
  216. }
  217. });
  218. }
  219. $('#btn-submit').on('click',function(){
  220. // var check = checkDuplicate();
  221. // if(check){
  222. var uniqids = '';
  223. $('.uniqid').each(function(i, obj) {
  224. if(uniqids!=''){
  225. uniqids += ',';
  226. }
  227. uniqids += obj.value;
  228. });
  229. $('#uniqids').val(uniqids);
  230. // }
  231. });
  232. function removeData(uniqid){
  233. $('#tr-'+uniqid).remove();
  234. // checkDuplicate();
  235. }
  236. function setJumlah(uniqid){
  237. var satuan = $('#satuan_'+uniqid).find(":selected").val();
  238. var jumlah = 0;
  239. if(satuan=='Tahun'){
  240. jumlah = 12;
  241. }else if(satuan=='Bulan'){
  242. jumlah = 1;
  243. }
  244. var option = '';
  245. for(var i = 1;i<=jumlah;i++){
  246. option += '<option value="'+i+'">'+i+'</option>';
  247. }
  248. $('#jumlah_'+uniqid).children('option').remove();
  249. $('#jumlah_'+uniqid).append(option);
  250. }
  251. </script>
  252. @endsection