Python
This commit is contained in:
parent
49b90ba9b1
commit
c2f158e43c
179292
aplas_web.sql
Normal file
179292
aplas_web.sql
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -30,9 +30,6 @@ class StudentController extends Controller
|
|||
public function pythoncourse() {
|
||||
return view('student/pythoncourse/main');
|
||||
}
|
||||
public function pythoncoursetopic() {
|
||||
return view('student/pythoncourse/topic');
|
||||
}
|
||||
|
||||
public function asynctask() {
|
||||
return view('student/androidcourse/asynctask/index');
|
||||
|
|
@ -51,11 +48,6 @@ class StudentController extends Controller
|
|||
public function unitycoursepage() {
|
||||
return view('student/unitycourse/page/index');
|
||||
}
|
||||
//
|
||||
|
||||
// public function nodejscourse() {
|
||||
// return view('student/nodejscourse/main');
|
||||
// }
|
||||
public function nodejscourseBasicHTML() {
|
||||
return view('student/nodejscourse/basicHTML/index');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ class ExercisePythonController extends Controller
|
|||
) );
|
||||
}
|
||||
|
||||
return view('student.python_task.uitask', compact('python_topics'));
|
||||
return view('student.pythoncourse.python_task.uitask', compact('python_topics'));
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -71,7 +71,7 @@ class ExercisePythonController extends Controller
|
|||
$pengerjaan = DB::table('python_students_validation')->where('userid', $id)->get();
|
||||
|
||||
|
||||
return view('student.python_task.uitask_detail', compact('percobaan', 'infotopik','pengerjaan'));
|
||||
return view('student.pythoncourse.python_task.uitask_detail', compact('percobaan', 'infotopik','pengerjaan'));
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -102,20 +102,20 @@ class ExercisePythonController extends Controller
|
|||
if ( $previous->count() > 0 ) {
|
||||
|
||||
$previous = $previous->first();
|
||||
$btn_previous = url('student/python/pengerjaan/'. $previous->id_percobaan);
|
||||
$btn_previous = url('student/pythoncourse/python/pengerjaan/'. $previous->id_percobaan);
|
||||
}
|
||||
|
||||
if ( $next->count() > 0 ) {
|
||||
|
||||
$next = $next->first();
|
||||
$btn_next = url('student/python/pengerjaan/'. $next->id_percobaan);
|
||||
$btn_next = url('student/pythoncourse/python/pengerjaan/'. $next->id_percobaan);
|
||||
}
|
||||
|
||||
|
||||
$data['previous'] = $btn_previous;
|
||||
$data['next'] = $btn_next;
|
||||
|
||||
return view('student.python_task.uipengerjaan', $data);
|
||||
return view('student.pythoncourse.python_task.uipengerjaan', $data);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -412,7 +412,7 @@ class ExercisePythonController extends Controller
|
|||
$data['percobaan'] = $percobaan;
|
||||
$data['id_percobaan'] = $id_percobaan;
|
||||
|
||||
return view('student.python_feedback.feedback', $data);
|
||||
return view('student.pythoncourse.python_feedback.feedback', $data);
|
||||
|
||||
// $data['id_topik'] = $id_topik;
|
||||
// $data['id_percobaan'] = $id_percobaan;
|
||||
|
|
@ -443,7 +443,7 @@ class ExercisePythonController extends Controller
|
|||
// eksekusi insert
|
||||
DB::table('python_feedback')->insert( $data );
|
||||
|
||||
return redirect('student/python/pengerjaan/'. $id_percobaan);
|
||||
return redirect('student/pythoncourse/python/pengerjaan/'. $id_percobaan);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ class ResultController extends Controller
|
|||
}
|
||||
|
||||
// view
|
||||
return view('student.python_result.result_student', compact('dt_hasil'));
|
||||
return view('student.pythoncourse.python_result.result_student', compact('dt_hasil'));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,105 +0,0 @@
|
|||
@extends('student/home')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-12">
|
||||
|
||||
<form action="{{ url('pythonfeedback') }}" type="POST">
|
||||
|
||||
@csrf
|
||||
|
||||
<div class="card">
|
||||
|
||||
<div class="card-header">
|
||||
|
||||
<h3 class="card-title">Submit Hasil Percobaan {{$percobaan->no_percobaan.' : '.$percobaan->nama_percobaan}}</h3>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
@if (Session::has('message'))
|
||||
|
||||
<div id="alert-msg" class="alert alert-success alert-dismissible">
|
||||
|
||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"><EFBFBD></button>
|
||||
|
||||
{{ Session::get('message') }}
|
||||
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
|
||||
|
||||
@if(!empty($errors->all()))
|
||||
|
||||
<div class="alert alert-danger">
|
||||
|
||||
{{ Html::ul($errors->all())}}
|
||||
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-6">
|
||||
|
||||
{{-- <div class="form-group">
|
||||
<label for="">Durasi (menit)</label>
|
||||
<input type="number" name="durasi" class="form-control" placeholder="Masukkan estimasi durasi pengerjaan . . ." required="" />
|
||||
<small>Berisi estimasi durasi pengerjaan percobaan {{$percobaan->no_percobaan.' : '.$percobaan->nama_percobaan}}</small>
|
||||
</div> --}}
|
||||
{{-- <div class="form-group">
|
||||
<label>Tingkatan Kesulitan Percobaan</label>
|
||||
<select class="form-control" name="tingkatan">
|
||||
<option value="mudah">Mudah</option>
|
||||
<option value="sulit">Sulit</option>
|
||||
</select>
|
||||
|
||||
</div> --}}
|
||||
<div cslass="form-group">
|
||||
<label for="">Komentar </label>
|
||||
<textarea name="komentar" class="form-control" placeholder="Berikan feedback dari topik yang sudah disediakan" required=""></textarea>
|
||||
<small>Berisi pendapat mahasiswa mengenai topik pembelajaran yang dikerjakan -> Contoh : Saya bisa menyelesaikan topik ini / Materi kurang jelas </small>
|
||||
<small></small>
|
||||
</div>
|
||||
|
||||
|
||||
{{-- <input type="hidden" name="id_topik" value="{{ $id_topik }}" >
|
||||
<input type="hidden" name="id_percobaan" value="{{ $id_percobaan }}" > --}}
|
||||
<input type="hidden" name="id_topik" value="{{ $infotopik->id_topik }}" >
|
||||
<input type="hidden" name="id_percobaan" value="{{ $percobaan->id_percobaan }}" >
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="card-footer">
|
||||
|
||||
<a href="{{ url('student/python/pengerjaan/'. $id_percobaan) }}" class="btn btn-outline-info">Back</a>
|
||||
|
||||
{{-- <input type="hidden" name="topic" value="{{$taskid}}" /> --}}
|
||||
|
||||
{{ Form::submit('Save', ['class' => 'btn btn-primary pull-right']) }}
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- </form> -->
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
|
@ -1,124 +0,0 @@
|
|||
@extends('student/home')
|
||||
|
||||
<!-- untuk mengisi yield pada home.blade.php -->
|
||||
@section('script')
|
||||
|
||||
<!-- Code Ace Library For Python -->
|
||||
<script src="{{URL::to('/js/ace/ace/ace.js')}}"></script>
|
||||
|
||||
<!-- Code Ace Library For Python -->
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="row">
|
||||
|
||||
|
||||
|
||||
<div class="col-12">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="card">
|
||||
|
||||
<div class="card-header">
|
||||
|
||||
<h2> Result </h2>
|
||||
<h5> Percobaan Topik Pembelajaran Python Dasar </h5>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
<!-- kolom untuk overview materi pembelajaran -->
|
||||
|
||||
<table class="table table-stripe table-bordered">
|
||||
<thead>
|
||||
<tr class="text-center">
|
||||
<th>No</th>
|
||||
<th>Topik - Percobaan</th>
|
||||
<th>Status</th>
|
||||
<th>Dosen</th>
|
||||
<th>Tanggal</th>
|
||||
<th>Opsi</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@foreach ( $dt_hasil AS $nomor => $isi_kolom )
|
||||
<tr>
|
||||
<td class="text-center">{{ ($nomor + 1) }}</td>
|
||||
<td>
|
||||
<b>| {{ $isi_kolom->nama }} | </b>{{ $isi_kolom->nama_percobaan }}
|
||||
</td>
|
||||
<td class="text-center">{{ $isi_kolom->status}}</td>
|
||||
<td class="text-center">{{ $isi_kolom->nama_dosen }}</td>
|
||||
<td class="text-center">{{ date('d F Y H.i A', strtotime($isi_kolom->create_at)) }}</td>
|
||||
<td>
|
||||
<a href="javascript:;" data-toggle="modal" data-target="#modal-{{ $nomor }}"
|
||||
class="btn btn-sm btn-primary text-center">Detail Validasi</a>
|
||||
|
||||
<!-- Modal -->
|
||||
<div class="modal fade" id="modal-{{ $nomor }}" tabindex="-1" role="dialog"
|
||||
aria-labelledby="exampleModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-body">
|
||||
|
||||
<button type="button" class="close" data-dismiss="modal"
|
||||
aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
|
||||
<b>BAB {{ $isi_kolom->bab}} ({{ $isi_kolom->nama }})</b>
|
||||
<h6 style="margin: 0px"><code>Percobaan {{$isi_kolom->no_percobaan}} :
|
||||
{{ $isi_kolom->nama_percobaan }}</code></h6>
|
||||
<small>Pengerjaan pada
|
||||
{{ date('d F Y H.i A', strtotime($isi_kolom->create_at)) }}</small>
|
||||
<hr>
|
||||
<b>Source Code Jawaban Anda :</b>
|
||||
<div class="card card-body"
|
||||
style="font-family: 'Courier New', Courier, monospace">
|
||||
{{ $isi_kolom->report }}
|
||||
</div>
|
||||
<a href="{{ asset('python-resources/unittest/jawaban/'. $isi_kolom->file_submitted) }}.py"
|
||||
download>Unduh Source Code</a>
|
||||
<br>
|
||||
<small>Klik untuk mengunduh file jawaban</small><hr>
|
||||
<b>Hasil Unit Test : </b><br>
|
||||
<?php echo $isi_kolom->checkresult ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@endforeach
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- JS Python -->
|
||||
<!-- Option 1: Bundle Bootstrap dengan Popper -->
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
||||
@endsection
|
||||
|
|
@ -1,843 +0,0 @@
|
|||
@extends('student/home')
|
||||
|
||||
<!-- untuk mengisi yield pada home.blade.php -->
|
||||
@section('script')
|
||||
|
||||
<!-- Code Ace Library For Python -->
|
||||
<script src="{{URL::to('/js/ace/ace/ace.js')}}"></script>
|
||||
|
||||
<!-- Code Ace Library For Python -->
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="row">
|
||||
|
||||
|
||||
|
||||
<div class="col-12">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="card">
|
||||
|
||||
<div class="card-header">
|
||||
|
||||
<h2> {{ $infotopik->nama }} </h2>
|
||||
<h5> Materi Percobaan ke - {{ $percobaan->no_percobaan . ". " . $percobaan->nama_percobaan}} </h5>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
|
||||
<!-- pesan jika berhasil (session) -->
|
||||
|
||||
@if (Session::has('message'))
|
||||
|
||||
<div id="alert-msg" class="alert alert-success alert-dismissible">
|
||||
|
||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"><EFBFBD></button>
|
||||
|
||||
{{ Session::get('message') }}
|
||||
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
|
||||
|
||||
<!-- pesan jika error (withErrors) -->
|
||||
|
||||
@if(!empty($errors->all()))
|
||||
|
||||
<div class="alert alert-danger alert-dismissible">
|
||||
|
||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"><EFBFBD></button>
|
||||
|
||||
{{ Html::ul($errors->all())}}
|
||||
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
|
||||
<!-- kolom untuk overview materi pembelajaran -->
|
||||
|
||||
<div class="form-group">
|
||||
|
||||
<!--<label for="description">Catatan</label>-->
|
||||
|
||||
<div style="padding: 16px; background-color: #f5f5f5; border: 2px solid #e9e9e9">
|
||||
<b>Catatan</b><br>
|
||||
{{ $percobaan->catatan }}
|
||||
|
||||
<div id="syntax-error" style="font-weight: bold; color: red"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- BUTTON -->
|
||||
<div class="button-group">
|
||||
|
||||
<!-- Jika ingin kembali ke list percobaan -->
|
||||
|
||||
@php
|
||||
|
||||
$id_topik = $percobaan->id_topik;
|
||||
|
||||
@endphp
|
||||
|
||||
<!-- jika kembali ke list percobaan -->
|
||||
<input type="button" value="List Percobaan"
|
||||
onclick="window.location.href='{{ url('student/python/taskdetail/'. $id_topik) }}'"
|
||||
class="mx-1 btn btn-outline-primary" style="min-width: 120px; min-height: 45px;">
|
||||
|
||||
<!-- jika sudah sampai topic terakhir, next button dinonaktifkan -->
|
||||
|
||||
<a href="{{ $previous }}" class="float-right mr-1 btn btn-outline-primary"
|
||||
style="min-width: 120px; min-height: 45px;">
|
||||
Sebelumnya
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Button Compile -->
|
||||
<input type="button" id="compile" value="Check Code Validity" class="float-right mr-1 btn btn-success"
|
||||
style="min-width: 150px; min-height: 45px; display: none">
|
||||
|
||||
|
||||
|
||||
<a href="{{ $next }}" class="mx-1 btn btn-outline-primary"
|
||||
style="min-width: 120px; min-height: 45px;">
|
||||
Selanjutnya
|
||||
</a>
|
||||
|
||||
<!-- feedback button -->
|
||||
<a href="{{ url('/student/python/feedback/'. $infotopik->id_topik.'/'.$percobaan->id_percobaan)}}" class="float-right mr-1 btn btn-primary"
|
||||
style="padding: 8px; min-width: 120px; min-height: 45px; color:white;"><i class="fa fa-heart" aria-hidden="true"></i>
|
||||
Feedback
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="row" style="padding-top:20px">
|
||||
|
||||
<div id="left-panel" class="col-md-6">
|
||||
|
||||
<div class="code-box-container"
|
||||
style="box-shadow: 0 2px 5px 0 rgba(62, 64, 68, 0.5);height: 684px; width:100%;border-radius:5px; border-style:solid; border-width:4px; border-color: #E1E1E8;">
|
||||
|
||||
<div>
|
||||
|
||||
@php
|
||||
|
||||
$guidefiles = asset( $percobaan->panduanpath )
|
||||
@endphp
|
||||
<embed class="guide-reader" style="height: 636px; width:100%;margin-bottom: -4px;"
|
||||
type="application/pdf" src="{{ $guidefiles }}"></embed>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="mb-0 nav nav-justified btn-group">
|
||||
|
||||
<tr>
|
||||
|
||||
<!-- button download pdf -->
|
||||
|
||||
<td>
|
||||
<a class="btn btn-success" style="border-radius:0px" href="{{ $guidefiles }}"
|
||||
target="_blank">
|
||||
<i class="fa fa-download"></i> Download Guide</a>
|
||||
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div id="right-panel" class="col-md-6">
|
||||
|
||||
<div class="code-box-container"
|
||||
style="box-shadow: 0 2px 5px 0 rgba(62, 64, 68, 0.5); border-radius:5px; border-style:solid; border-width:4px; border-color: #E1E1E8;">
|
||||
|
||||
<div class="mb-0 nav nav-justified btn-group">
|
||||
|
||||
<tr>
|
||||
|
||||
<!-- switch button menggunakan js -->
|
||||
|
||||
<td>
|
||||
|
||||
<input id="MainActivityTab" type="button" value="main.py"
|
||||
class="btn btn-secondary tab-box rounded-0 font-italic"
|
||||
onclick="openTab('MainActivityTab','0')"></input>
|
||||
|
||||
<!-- Inputan id topik dan id percobaan untuk compile -->
|
||||
<input type="hidden" name="id_topik" value="{{ $infotopik->id_topik }}" />
|
||||
<input type="hidden" name="id_percobaan"
|
||||
value="{{ $percobaan->id_percobaan }}" />
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- Text pengerjaan -->
|
||||
<div style="height: 540px; border-right: 1px solid #e0e0e0" id="teks-editor"></div>
|
||||
<!-- End Text Pengerjaan -->
|
||||
|
||||
<div class="mb-0 nav nav-justified btn-group">
|
||||
<tr>
|
||||
|
||||
<!-- switch button menggunakan js -->
|
||||
|
||||
<td>
|
||||
<!-- <a class="btn btn-secondary tab-box rounded-0 font-italic"
|
||||
style="border-radius:0px; color:white;" onclick="orientationbutton()">
|
||||
|
||||
<i class="fa fa-retweet"></i> Change orientation</a> -->
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- data 'id' untuk UiTopicStdController -->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="col-12" style="padding-top:20px;padding-right:20px;padding-left:20px;">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-1 align-middle" style="border-right: 1px solid #e0e0e0">
|
||||
<h1 style="margin: 0px"><span id="total-percobaan" class="text-center">0</span>x</h1>
|
||||
<small>Submit</small>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<h1 style="margin: 0px">Result</h1>
|
||||
{{-- <code style="font-size: 20px" id="times" data-time="0">Coding Time - s</code> --}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- <p style="color: #ea5a73; font-size:larger">(After Trying 0 Times)</p> --}}
|
||||
|
||||
<table class="table table-bordered table-hover">
|
||||
|
||||
<thead>
|
||||
|
||||
<tr class="text-center">
|
||||
|
||||
<th>Submit No.</th>
|
||||
|
||||
<th>Nama Topik</th>
|
||||
|
||||
<th>Detail Validasi</th>
|
||||
|
||||
<th>Status</th>
|
||||
</tr>
|
||||
|
||||
</thead>
|
||||
|
||||
<tbody id="table-body">
|
||||
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- </form> -->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!-- JS Python -->
|
||||
<!-- Option 1: Bundle Bootstrap dengan Popper -->
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
||||
{{-- <script src="https://www.jqueryscript.net/demo/Multifunctional-jQuery-Countdown-Stopwatch-Plugin-Timer-js/jquery.timer.js"></script> --}}
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
/**
|
||||
* jquery.timer.js
|
||||
*
|
||||
* Copyright (c) 2011 Jason Chavannes <jason.chavannes@gmail.com>
|
||||
*
|
||||
* http://jchavannes.com/jquery-timer
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use, copy,
|
||||
* modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
* of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
||||
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
$(function() {
|
||||
|
||||
$.timer = Timer;
|
||||
|
||||
/**
|
||||
* First parameter can either be a function or an object of parameters.
|
||||
*
|
||||
* @param {function | {
|
||||
* action: function,
|
||||
* time: int=,
|
||||
* autostart: boolean=
|
||||
* }} action
|
||||
* @param {int=} time
|
||||
* @param {boolean=} autostart
|
||||
* @returns {Timer}
|
||||
*/
|
||||
function Timer(action, time, autostart) {
|
||||
|
||||
if (this.constructor != Timer || this.init) {
|
||||
return new Timer(action, time, autostart);
|
||||
}
|
||||
|
||||
this.set(action, time, autostart);
|
||||
|
||||
return this;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Timer
|
||||
*
|
||||
* @param {function | {
|
||||
* action: function,
|
||||
* time: int=,
|
||||
* autostart: boolean=
|
||||
* }} action
|
||||
* @param {int=} time
|
||||
* @param {boolean=} autostart
|
||||
* @returns {Timer}
|
||||
*/
|
||||
Timer.prototype.set = function(action, time, autostart) {
|
||||
|
||||
this.init = true;
|
||||
|
||||
if (typeof action == "object") {
|
||||
|
||||
if (action.time) {
|
||||
time = action.time;
|
||||
}
|
||||
|
||||
if (action.autostart) {
|
||||
autostart = action.autostart;
|
||||
}
|
||||
|
||||
action = action.action;
|
||||
|
||||
}
|
||||
|
||||
if (typeof action == "function") {
|
||||
this.action = action;
|
||||
}
|
||||
|
||||
if (!isNaN(time)) {
|
||||
this.intervalTime = time;
|
||||
}
|
||||
|
||||
if (autostart && this.isReadyToStart()) {
|
||||
this.isActive = true;
|
||||
this.setTimer();
|
||||
}
|
||||
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
Timer.prototype.isReadyToStart = function() {
|
||||
|
||||
var notActive = !this.active;
|
||||
var hasAction = typeof this.action == "function";
|
||||
var hasTime = !isNaN(this.intervalTime);
|
||||
|
||||
return notActive && hasAction && hasTime;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {int=} time
|
||||
* @returns {Timer}
|
||||
*/
|
||||
Timer.prototype.once = function(time) {
|
||||
|
||||
var timer = this;
|
||||
|
||||
if (isNaN(time)) {
|
||||
timer.action();
|
||||
return this;
|
||||
}
|
||||
|
||||
setTimeout(fnTimeout, time);
|
||||
return this;
|
||||
|
||||
function fnTimeout() {
|
||||
timer.action();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {boolean=} reset
|
||||
* @returns {Timer}
|
||||
*/
|
||||
Timer.prototype.play = function(reset) {
|
||||
|
||||
if (this.isReadyToStart()) {
|
||||
|
||||
if (reset) {
|
||||
this.setTimer();
|
||||
}
|
||||
else {
|
||||
this.setTimer(this.remaining);
|
||||
}
|
||||
|
||||
this.isActive = true;
|
||||
|
||||
}
|
||||
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* @returns {Timer}
|
||||
*/
|
||||
Timer.prototype.pause = function() {
|
||||
|
||||
if (this.isActive) {
|
||||
|
||||
this.isActive = false;
|
||||
this.remaining -= new Date() - this.last;
|
||||
|
||||
this.clearTimer();
|
||||
|
||||
}
|
||||
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* @returns {Timer}
|
||||
*/
|
||||
Timer.prototype.stop = function() {
|
||||
|
||||
this.isActive = false;
|
||||
this.remaining = this.intervalTime;
|
||||
|
||||
this.clearTimer();
|
||||
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {boolean=} reset
|
||||
* @returns {Timer}
|
||||
*/
|
||||
Timer.prototype.toggle = function(reset) {
|
||||
|
||||
if (this.isActive) {
|
||||
this.pause();
|
||||
}
|
||||
else if (reset) {
|
||||
this.play(true);
|
||||
}
|
||||
else {
|
||||
this.play();
|
||||
}
|
||||
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* @returns {Timer}
|
||||
*/
|
||||
Timer.prototype.reset = function() {
|
||||
|
||||
this.isActive = false;
|
||||
this.play(true);
|
||||
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* @returns {Timer}
|
||||
*/
|
||||
Timer.prototype.clearTimer = function() {
|
||||
clearTimeout(this.timeoutObject);
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* @returns {Timer}
|
||||
*/
|
||||
Timer.prototype.setTimer = function(time) {
|
||||
|
||||
var timer = this;
|
||||
|
||||
if (isNaN(time)) {
|
||||
time = this.intervalTime;
|
||||
}
|
||||
|
||||
this.remaining = time;
|
||||
this.last = new Date();
|
||||
|
||||
this.clearTimer();
|
||||
|
||||
this.timeoutObject = setTimeout(fnTimeout, time);
|
||||
|
||||
return this;
|
||||
|
||||
function fnTimeout() {
|
||||
timer.execute();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* @returns {Timer}
|
||||
*/
|
||||
Timer.prototype.execute = function() {
|
||||
|
||||
if (this.isActive) {
|
||||
|
||||
try {
|
||||
this.action();
|
||||
}
|
||||
finally {
|
||||
this.setTimer();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
})
|
||||
</script>
|
||||
|
||||
<script>
|
||||
|
||||
|
||||
$(function() {
|
||||
|
||||
|
||||
function startTime( status ) {
|
||||
|
||||
|
||||
|
||||
var count = 0;
|
||||
var timer = $.timer(function() {
|
||||
|
||||
count = ++count;
|
||||
// $('#times').text("Coding Time "+(count)+" s");
|
||||
// $("#times").data("time", count);
|
||||
|
||||
// console.log( count );
|
||||
});
|
||||
|
||||
timer.set({ time : 1000, autostart : true });
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
function startEditor() {
|
||||
|
||||
let editor;
|
||||
editor = ace.edit("teks-editor");
|
||||
// tampilan tema warna editor
|
||||
editor.setTheme("ace/theme/tomorrow_night");
|
||||
// editor.setTheme("ace/theme/clouds");
|
||||
editor.session.setMode("ace/mode/python");
|
||||
editor.setFontSize("12px");
|
||||
|
||||
}
|
||||
|
||||
|
||||
function openmodule() {
|
||||
|
||||
$.ajax({
|
||||
|
||||
type: "GET",
|
||||
url: "{{ url('student/python-history/'. $infotopik->id_topik.'/'. $percobaan->id_percobaan) }}",
|
||||
dataType: "json",
|
||||
success: function( result ) {
|
||||
|
||||
let btncompiler = $('#compile');
|
||||
|
||||
if ( (result.validasi).length > 0 ){
|
||||
|
||||
|
||||
let editor = ace.edit("teks-editor");
|
||||
|
||||
// tampilan tema warna editor
|
||||
editor.setTheme("ace/theme/tomorrow_night");
|
||||
// editor.setTheme("ace/theme/clouds");
|
||||
editor.session.setMode("ace/mode/python");
|
||||
editor.setFontSize("12px");
|
||||
|
||||
if ( result.statusPassed == false ) {
|
||||
|
||||
btncompiler.show(500);
|
||||
|
||||
|
||||
editor.setValue(`{{ $percobaan->texteditor }}`);
|
||||
|
||||
} else { // PASSED
|
||||
|
||||
|
||||
// editor.setValue("");
|
||||
editor.setValue( result.hist_texteditor );
|
||||
|
||||
// console.log( result.hist_texteditor );
|
||||
}
|
||||
|
||||
|
||||
startEditor();
|
||||
|
||||
// $('#times').text("Coding Time "+((result.validasi)[0].time)+" s");
|
||||
$('#total-percobaan').text(result.submit);
|
||||
|
||||
} else {
|
||||
|
||||
btncompiler.hide();
|
||||
|
||||
$('#teks-editor').html(`
|
||||
<div class="text-center align-middle">
|
||||
|
||||
|
||||
<div class="form-group" style="margin-top: 100px; margin-bottom: 100px">
|
||||
<small style="color: #9e9e9e">Mulai Mengerjakan Percobaan</small><br>
|
||||
<button class="btn btn-success" id="start-learning">Start Test</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
`);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
openmodule();
|
||||
|
||||
|
||||
// execute button pertama (Start Test)
|
||||
$("#teks-editor").on("click", "#start-learning", function() {
|
||||
|
||||
|
||||
|
||||
$("#teks-editor").html("");
|
||||
startEditor();
|
||||
|
||||
let editor = ace.edit("teks-editor");
|
||||
editor.setValue(`{{ $percobaan->texteditor }}`);
|
||||
|
||||
|
||||
// btn compiler
|
||||
$('#compile').show(1000);
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// menampilkan hasil validasi ditampilan awal (Tabel Results)
|
||||
hasilValidasi();
|
||||
|
||||
$('#compile').click(function () {
|
||||
|
||||
executing();
|
||||
});
|
||||
|
||||
function executing() {
|
||||
|
||||
let editor = ace.edit("teks-editor");
|
||||
var editorString = editor.getSession().getValue();
|
||||
// #mengkosongkan error sintax
|
||||
$('#syntax-error').html("").hide();
|
||||
|
||||
|
||||
if ( editorString.length > 0 ) {
|
||||
|
||||
// ambil inputan id_topik dan id_percobaan disimpan di variabel
|
||||
var variabelid_topik = $('input[name="id_topik"]').val();
|
||||
var variabelid_percobaan = $('input[name="id_percobaan"]').val();
|
||||
|
||||
$.ajax({
|
||||
url: "http://127.0.0.1:8000/student/python-compile",
|
||||
method: "GET", // GET | POST
|
||||
data: {
|
||||
code: editor.getSession().getValue(),
|
||||
id_topik: variabelid_topik,
|
||||
id_percobaan: variabelid_percobaan,
|
||||
// time: $('#times').data("time")
|
||||
},
|
||||
dataType: "json",
|
||||
success: function (response) {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (response.status == true) {
|
||||
|
||||
|
||||
// total percobaan
|
||||
$('#total-percobaan').text(response.jml);
|
||||
|
||||
// true alias berhasil input data tampil hasil validasi
|
||||
hasilValidasi();
|
||||
|
||||
if ( response.data ) {
|
||||
// pengerjaan telah passed
|
||||
$('#compile').hide(1000);
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
// alert( response.status );
|
||||
$('#syntax-error').html("<hr><h5>Sintaks Kode Error !</h5>" + response.data).hide().fadeIn(1000);
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
error: function (q) {
|
||||
|
||||
console.log(q);
|
||||
}
|
||||
})
|
||||
|
||||
} else {
|
||||
|
||||
alert("Mohon isi source code anda");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// fungsi untuk menampilkan hasil validasi
|
||||
function hasilValidasi() {
|
||||
|
||||
// ambil inputan id_topik dan id_percobaan
|
||||
var variabelid_topik = $('input[name="id_topik"]').val();
|
||||
var variabelid_percobaan = $('input[name="id_percobaan"]').val();
|
||||
|
||||
$.ajax({
|
||||
|
||||
|
||||
|
||||
type: "GET",
|
||||
url: "{{ url('student/python/tampil-data-validation') }}",
|
||||
data: "id_topik=" + variabelid_topik + "&id_percobaan=" + variabelid_percobaan,
|
||||
dataType: "json",
|
||||
success: function (response) {
|
||||
|
||||
if (response.status == true) {
|
||||
|
||||
if ( response.statusPassed == true ) {
|
||||
|
||||
$('#compile').hide();
|
||||
}
|
||||
|
||||
$("#table-body").html(response.data);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
})
|
||||
</script>
|
||||
<!-- End JS Python -->
|
||||
|
||||
|
||||
@endsection
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
@extends('student/home')
|
||||
@section('content')
|
||||
<div class="row" style="padding: 32px">
|
||||
|
||||
<div class="col-12">
|
||||
<h4>Start Learning Basic Python </h4>
|
||||
<p>Pilih topik dibawah ini untuk memulai pembelajaran</p>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
|
||||
<div class="card card-body">
|
||||
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr class="text-center">
|
||||
<th>Bab</th>
|
||||
<th>Nama Topik</th>
|
||||
<th>Deskripsi</th>
|
||||
<th>Status</th>
|
||||
<th>Aksi</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach( $python_topics AS $index => $tp )
|
||||
|
||||
@if ($tp['isi']->status == "1")
|
||||
<tr>
|
||||
<td class="text-center">{{ $tp['isi']->bab }}</td>
|
||||
<td>{{ $tp['isi']->nama }}</td>
|
||||
<td width="25%">{{ $tp['isi']->deskripsi }}</td>
|
||||
<td>{{ $tp['totalPercobaan'] }} Percobaan
|
||||
<br>
|
||||
<small>Telah menyelesaikan {{ $tp['totalPassed'].'/'.$tp['totalPercobaan'] }}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
|
||||
@php
|
||||
|
||||
$color = "success";
|
||||
$icon = "fa fa-eye";
|
||||
if ( $tp['totalPassed'] == $tp['totalPercobaan'] ) {
|
||||
|
||||
$color = "warning";
|
||||
$icon = "fa fa-check";
|
||||
}
|
||||
@endphp
|
||||
<a class="btn btn-{{ $color }}" href="{{ url('student/python/taskdetail/'. $tp['isi']->id_topik) }}"><i class="{{ $icon }}"></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
|
@ -1,82 +0,0 @@
|
|||
@extends('student/home')
|
||||
@section('content')
|
||||
<div class="row" style="padding: 32px">
|
||||
|
||||
<div class="col-12">
|
||||
<h4>{{$infotopik->nama}}</h4>
|
||||
<p>Pilih percobaan dibawah ini untuk memulai pembelajaran</p>
|
||||
</div>
|
||||
|
||||
<!-- Button -->
|
||||
<div class="button-group">
|
||||
<input type="button" value="Kembali" onclick="window.location.href='{{ url('student/python/task/') }}'"
|
||||
class="mx-1 btn btn-outline-primary" style="min-width: 120px; min-height: 45px; margin-bottom: 20px">
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<div class="card card-body">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr class="text-center">
|
||||
<th>No</th>
|
||||
<th>Percobaan</th>
|
||||
<th>Deskripsi</th>
|
||||
<th>Aksi</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach( $percobaan AS $index => $pc )
|
||||
|
||||
|
||||
@php
|
||||
|
||||
$status_pengerjaan = false;
|
||||
|
||||
if ( count( $pengerjaan ) > 0 ) {
|
||||
|
||||
foreach ( $pengerjaan AS $pngrj ) {
|
||||
|
||||
if ( $pngrj->id_percobaan == $pc->id_percobaan ) {
|
||||
|
||||
$status_pengerjaan = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// - - - - - - - -
|
||||
// warna button
|
||||
$colorBtn = "";
|
||||
$iconBtn = '';
|
||||
|
||||
if ( $status_pengerjaan == true ) {
|
||||
|
||||
$colorBtn = "btn btn-warning";
|
||||
$iconBtn = '<i class="fa fa-check"></i>';
|
||||
} else {
|
||||
|
||||
$colorBtn = "btn btn-success";
|
||||
$iconBtn = '<i class="fa fa-hand-pointer"></i>';
|
||||
}
|
||||
|
||||
@endphp
|
||||
<tr>
|
||||
<td class="text-center">{{ $index +1 }}</td>
|
||||
<td>{{ $pc->nama_percobaan }}</td>
|
||||
<td>{{ $pc->deskripsi }}</td>
|
||||
<td class="text-center">
|
||||
<a class="{{ $colorBtn }}"
|
||||
href="{{ url('student/python/pengerjaan/'. $pc->id_percobaan) }}"><?php echo $iconBtn ?></a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
|
@ -4,5 +4,5 @@
|
|||
Login as {{ Auth::user()->roleid }}
|
||||
</div>
|
||||
<!-- Default to the left -->
|
||||
<strong>Copyright © 2020 <a href="https://aplas.org">Android Programming Learning Assistance System (APLAS)</a>.</strong> All rights reserved.
|
||||
<strong>Copyright © 2022 <a href="http://learning.aplas.online/iclop/">Intelligent Computer Assisted Programming Learning Platform(iCLOP)</a>.</strong> All rights reserved.
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -1,18 +1,13 @@
|
|||
<nav class="main-header navbar navbar-expand navbar-white navbar-light" style="background-color: wheat;">
|
||||
<nav class="main-header navbar navbar-expand navbar-black navbar-white" style="background-color: dark;">
|
||||
<!-- Left navbar links -->
|
||||
|
||||
<ul class="navbar-nav">
|
||||
<ul class="navbar-nav" style="font-size:120%;">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" data-widget="pushmenu" href="#"><i class="fas fa-bars"></i></a>
|
||||
</li>
|
||||
<li class="nav-item d-none d-sm-inline-block">
|
||||
<a href="{{URL::to('student')}}" class="nav-link">Home</a>
|
||||
<a href="{{URL::to('home')}}" class="nav-link">Home</a>
|
||||
</li>
|
||||
<!--
|
||||
<li class="nav-item d-none d-sm-inline-block">
|
||||
<a href="#" class="nav-link">Contact</a>
|
||||
</li>
|
||||
-->
|
||||
<li class="nav-item">
|
||||
<a href="{{ route('logout')}}" class="nav-link"
|
||||
onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
|
||||
|
|
@ -26,18 +21,4 @@
|
|||
</li>
|
||||
</ul>
|
||||
|
||||
<!-- SEARCH FORM
|
||||
<form class="form-inline ml-3">
|
||||
<div class="input-group input-group-sm">
|
||||
<input class="form-control form-control-navbar" type="search" placeholder="Search" aria-label="Search">
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-navbar" type="submit">
|
||||
<i class="fas fa-search"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
-->
|
||||
|
||||
|
||||
</nav>
|
||||
|
|
|
|||
|
|
@ -22,11 +22,11 @@ scratch. This page gets rid of all links and provides the needed markup only.
|
|||
<div class="wrapper">
|
||||
|
||||
<!-- Navbar -->
|
||||
@include('student/fluttercourse/header')
|
||||
@include('student/pythoncourse/header')
|
||||
<!-- /.navbar -->
|
||||
|
||||
<!-- Main Sidebar Container -->
|
||||
@include('student/fluttercourse/sidebar')
|
||||
@include('student/pythoncourse/sidebar')
|
||||
|
||||
<!-- Content Wrapper. Contains page content -->
|
||||
<div class="content-wrapper">
|
||||
|
|
@ -67,7 +67,7 @@ scratch. This page gets rid of all links and provides the needed markup only.
|
|||
<!-- /.control-sidebar -->
|
||||
|
||||
<!-- Main Footer -->
|
||||
@include('student/fluttercourse/footer')
|
||||
@include('student/pythoncourse/footer')
|
||||
|
||||
</div>
|
||||
<!-- ./wrapper -->
|
||||
|
|
|
|||
|
|
@ -1,47 +0,0 @@
|
|||
@extends('student/fluttercourse/home')
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
{{ Form::open(['route'=>'lfiles.store', 'files'=>true]) }}
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Submit a Learning Result File</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if(!empty($errors->all()))
|
||||
<div class="alert alert-danger">
|
||||
{{ Html::ul($errors->all())}}
|
||||
</div>
|
||||
@endif
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="data1">Topic</label>
|
||||
<input id="data1" type="text" value="{{ $topic['name'] }}" class="form-control" disabled />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{!! Form::label('fileid', 'File Name:') !!}
|
||||
<select class="form-control" id="fileid" name="fileid">
|
||||
@foreach($files as $file)
|
||||
<option value="{{ $file->id }}" {{ $file->id == 0 ? 'selected' : '' }}>{{ $file->fileName.' >>> '.$file->path.'' }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{ Form::label('rscfile', 'File:') }}
|
||||
{{ Form::file('rscfile', ['class'=>'form-control']) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<input type="hidden" name="topic" value="{{ $topic['id'] }}" />
|
||||
<input type="button" value="Back" onclick="history.back()" class="btn btn-outline-info">
|
||||
{{ Form::submit('Save', ['class' => 'btn btn-primary pull-right']) }}
|
||||
</div>
|
||||
</div>
|
||||
<!-- </form> -->
|
||||
{{ Form::close() }}
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
@extends('student/home')
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
{{ Form::model($data,['route'=>['results.update',$data['id']], 'files'=>true,'method'=>'PUT']) }}
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Change Data of Task Result</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if(!empty($errors->all()))
|
||||
<div class="alert alert-danger">
|
||||
{{ Html::ul($errors->all())}}
|
||||
</div>
|
||||
@endif
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
{!! Form::label('taskid', 'Learning Task:') !!}
|
||||
<select disabled class="form-control" id="taskid" name="taskid">
|
||||
@foreach($items as $item)
|
||||
<option value="{{ $item->id }}" {{ $item->id == $data['taskid'] ? 'selected' : '' }}>{{ '['.$item->name.'] '.$item->taskno.'. '.$item->desc }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{ Form::label('status', 'Status: ') }}
|
||||
<div>{{ Form::radio('status', 'Passed' , $data['status']=='Passed') }}
|
||||
Passed
|
||||
{{ Form::radio('status', 'Failed' , $data['status']=='Failed') }}
|
||||
Failed</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{ Form::label('duration', 'Duration') }}
|
||||
{{ Form::number('duration', $data['duration'], ['class'=>'form-control', 'placeholder'=>'Duration Time in Minutes']) }}
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{ Form::label('image', 'Captured Image of Evidence (jpg,png). Left it blank if does not change') }}
|
||||
{{ Form::file('image', ['class'=>'form-control']) }}
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{ Form::label('comment', 'Task Comment') }}
|
||||
{{ Form::textarea('comment', $data['comment'], ['class'=>'form-control', 'placeholder'=>'Task Comment', 'rows'=>5]) }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<input type="button" value="Back" onclick="history.back()" class="btn btn-outline-info">
|
||||
<input type="hidden" name="taskid" value="{{ $data['id'] }}" />
|
||||
{{ Form::submit('Save', ['class' => 'btn btn-primary pull-right']) }}
|
||||
</div>
|
||||
</div>
|
||||
<!-- </form> -->
|
||||
{{ Form::close() }}
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
@extends('student/fluttercourse/home')
|
||||
@extends('student/pythoncourse/home')
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Start to learn Android Programming with APLAS</h3>
|
||||
<h3 class="card-title">Start to learn Android Programming with iCLOP</h3>
|
||||
<div class="card-tools">
|
||||
|
||||
</div>
|
||||
|
|
@ -17,29 +17,65 @@
|
|||
</div>
|
||||
<div class="row">
|
||||
<p>
|
||||
<div>Requirements:</div>
|
||||
<div>Minimum Requirements :
|
||||
<ol>
|
||||
<li>
|
||||
A PC with minimum 4 GB RAM, 4 GB HDD, 1280 x 800 screen resolution, Microsoft Windows 7/8/10 (32- or 64-bit).
|
||||
CPU : Intel Core i3–350M dual-core processor (2.26 GHz, 3 MB Cache)
|
||||
</li>
|
||||
<li>
|
||||
Java SDK 1.8 minimum installed.
|
||||
VGA : Integrated Intel HD graphics
|
||||
</li>
|
||||
<li>
|
||||
Android Studio 3.5 installed.
|
||||
RAM : 4GB DDR3 dual-channel RAM (2GB + 2GB)
|
||||
</li>
|
||||
<li>
|
||||
A web browser.
|
||||
</li>
|
||||
<li>
|
||||
A PDF reader software.
|
||||
</li>
|
||||
<li>
|
||||
Internet Connection.
|
||||
</li>
|
||||
|
||||
<br>
|
||||
</ol>
|
||||
</p>
|
||||
<p1>
|
||||
<div>Recommendet Specs :
|
||||
<ol>
|
||||
<li>
|
||||
CPU : Intel Core i5-8400
|
||||
</li>
|
||||
<li>
|
||||
VGA : Integrated Intel UHD graphics
|
||||
</li>
|
||||
<li>
|
||||
RAM : 16 GB RAM
|
||||
</li>
|
||||
</ol>
|
||||
</p1>
|
||||
<br>
|
||||
<p2>
|
||||
<div>Software :
|
||||
<ol>
|
||||
<li>
|
||||
Windows 7 SP1 64-bit, Windows 8.1 64-bit, Windows 10 64-bit, Windows 11 64-bit
|
||||
</li>
|
||||
<li>
|
||||
Tools: Windows PowerShell 5.0+, Git 2.x
|
||||
</li>
|
||||
<li>
|
||||
Android Studio (Flutter Extension)
|
||||
</li>
|
||||
</ol>
|
||||
</p2>
|
||||
<br>
|
||||
<p3>
|
||||
<div>Documents :
|
||||
<ol>
|
||||
<li>
|
||||
Guide
|
||||
</li>
|
||||
<li>
|
||||
Supplement
|
||||
</li>
|
||||
<li>
|
||||
Test File
|
||||
</li>
|
||||
</ol>
|
||||
</p3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
@extends('student/home')
|
||||
@extends('student/pythoncourse/home')
|
||||
|
||||
@section('content')
|
||||
|
||||
|
|
@ -84,7 +84,7 @@
|
|||
|
||||
<div class="card-footer">
|
||||
|
||||
<a href="{{ url('student/python/pengerjaan/'. $id_percobaan) }}" class="btn btn-outline-info">Back</a>
|
||||
<a href="{{ url('student/pythoncourse/python/pengerjaan/'. $id_percobaan) }}" class="btn btn-outline-info">Back</a>
|
||||
|
||||
{{-- <input type="hidden" name="topic" value="{{$taskid}}" /> --}}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
@extends('student/home')
|
||||
@extends('student/pythoncourse/home')
|
||||
|
||||
<!-- untuk mengisi yield pada home.blade.php -->
|
||||
@section('script')
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
@extends('student/home')
|
||||
@extends('student/pythoncourse/home')
|
||||
|
||||
<!-- untuk mengisi yield pada home.blade.php -->
|
||||
@section('script')
|
||||
|
|
@ -93,7 +93,7 @@
|
|||
|
||||
<!-- jika kembali ke list percobaan -->
|
||||
<input type="button" value="List Percobaan"
|
||||
onclick="window.location.href='{{ url('student/python/taskdetail/'. $id_topik) }}'"
|
||||
onclick="window.location.href='{{ url('student/pythoncourse/python/taskdetail/'. $id_topik) }}'"
|
||||
class="mx-1 btn btn-outline-primary" style="min-width: 120px; min-height: 45px;">
|
||||
|
||||
<!-- jika sudah sampai topic terakhir, next button dinonaktifkan -->
|
||||
|
|
@ -122,7 +122,7 @@
|
|||
</a>
|
||||
|
||||
<!-- feedback button -->
|
||||
<a href="{{ url('/student/python/feedback/'. $infotopik->id_topik.'/'.$percobaan->id_percobaan)}}" class="float-right mr-1 btn btn-primary"
|
||||
<a href="{{ url('/student/pythoncourse/python/feedback/'. $infotopik->id_topik.'/'.$percobaan->id_percobaan)}}" class="float-right mr-1 btn btn-primary"
|
||||
style="padding: 8px; min-width: 120px; min-height: 45px; color:white;"><i class="fa fa-heart" aria-hidden="true"></i>
|
||||
Feedback
|
||||
</a>
|
||||
|
|
@ -811,7 +811,7 @@
|
|||
|
||||
|
||||
type: "GET",
|
||||
url: "{{ url('student/python/tampil-data-validation') }}",
|
||||
url: "{{ url('student/pythoncourse/python/tampil-data-validation') }}",
|
||||
data: "id_topik=" + variabelid_topik + "&id_percobaan=" + variabelid_percobaan,
|
||||
dataType: "json",
|
||||
success: function (response) {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
@extends('student/home')
|
||||
@extends('student/pythoncourse/home')
|
||||
@section('content')
|
||||
<div class="row" style="padding: 32px">
|
||||
|
||||
|
|
@ -45,7 +45,7 @@
|
|||
$icon = "fa fa-check";
|
||||
}
|
||||
@endphp
|
||||
<a class="btn btn-{{ $color }}" href="{{ url('student/python/taskdetail/'. $tp['isi']->id_topik) }}"><i class="{{ $icon }}"></i></a>
|
||||
<a class="btn btn-{{ $color }}" href="{{ url('student/pythoncourse/python/taskdetail/'. $tp['isi']->id_topik) }}"><i class="{{ $icon }}"></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
@extends('student/home')
|
||||
@extends('student/pythoncourse/home')
|
||||
@section('content')
|
||||
<div class="row" style="padding: 32px">
|
||||
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
<!-- Button -->
|
||||
<div class="button-group">
|
||||
<input type="button" value="Kembali" onclick="window.location.href='{{ url('student/python/task/') }}'"
|
||||
<input type="button" value="Kembali" onclick="window.location.href='{{ url('student/pythoncourse/python/task/') }}'"
|
||||
class="mx-1 btn btn-outline-primary" style="min-width: 120px; min-height: 45px; margin-bottom: 20px">
|
||||
</div>
|
||||
|
||||
|
|
@ -68,7 +68,7 @@
|
|||
<td>{{ $pc->deskripsi }}</td>
|
||||
<td class="text-center">
|
||||
<a class="{{ $colorBtn }}"
|
||||
href="{{ url('student/python/pengerjaan/'. $pc->id_percobaan) }}"><?php echo $iconBtn ?></a>
|
||||
href="{{ url('student/pythoncourse/python/pengerjaan/'. $pc->id_percobaan) }}"><?php echo $iconBtn ?></a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
|
|
|
|||
|
|
@ -1,59 +0,0 @@
|
|||
@extends('student/fluttercourse/home')
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
{{ Form::open(['route'=>'results.store', 'files'=>true]) }}
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Submit a Task Result</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if(!empty($errors->all()))
|
||||
<div class="alert alert-danger">
|
||||
{{ Html::ul($errors->all())}}
|
||||
</div>
|
||||
@endif
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
{!! Form::label('taskid', 'Learning Task:') !!}
|
||||
<select class="form-control" id="taskid" name="taskid">
|
||||
@foreach($items as $item)
|
||||
<option value="{{ $item->id }}" {{ $item->id == 0 ? 'selected' : '' }}>{{ '['.$item->name.'] '.$item->taskno.'. '.$item->desc }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{ Form::label('status', 'Status: ') }}
|
||||
<div>{{ Form::radio('status', 'Passed' , true) }}
|
||||
Passed
|
||||
{{ Form::radio('status', 'Failed' , false) }}
|
||||
Failed</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{ Form::label('duration', 'Duration') }}
|
||||
{{ Form::number('duration', '0', ['class'=>'form-control', 'placeholder'=>'Duration Time in Minutes']) }}
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{ Form::label('image', 'Captured Image of Evidence (jpg,png)') }}
|
||||
{{ Form::file('image', ['class'=>'form-control']) }}
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{ Form::label('comment', 'Task Comment') }}
|
||||
{{ Form::textarea('comment', '', ['class'=>'form-control', 'placeholder'=>'Task Comment', 'rows'=>5]) }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<input type="button" value="Back" onclick="history.back()" class="btn btn-outline-info">
|
||||
<input type="hidden" name="topic" value="{{ $topic['id'] }}" />
|
||||
{{ Form::submit('Save', ['class' => 'btn btn-primary pull-right']) }}
|
||||
</div>
|
||||
</div>
|
||||
<!-- </form> -->
|
||||
{{ Form::close() }}
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
@extends('student/fluttercourse/home')
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
{{ Form::model($entity,['route'=>['results.update',$entity['id']], 'files'=>true,'method'=>'PUT']) }}
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Change Data of Task Result</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if(!empty($errors->all()))
|
||||
<div class="alert alert-danger">
|
||||
{{ Html::ul($errors->all())}}
|
||||
</div>
|
||||
@endif
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<div class="form-group">
|
||||
<label for="data1">Task</label>
|
||||
<input id="data1" type="text" value="{{ $task['taskno'].'. '.$task['desc'] }}" class="form-control" disabled />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{ Form::label('status', 'Status: ') }}
|
||||
<div>{{ Form::radio('status', 'Passed' , $entity['status']=='Passed') }}
|
||||
Passed
|
||||
{{ Form::radio('status', 'Failed' , $entity['status']=='Failed') }}
|
||||
Failed</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{ Form::label('duration', 'Duration') }}
|
||||
{{ Form::number('duration', $entity['duration'], ['class'=>'form-control', 'placeholder'=>'Duration Time in Minutes']) }}
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{ Form::label('image', 'Captured Image of Evidence (jpg,png). Left it blank if does not change') }}
|
||||
{{ Form::file('image', ['class'=>'form-control']) }}
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{ Form::label('comment', 'Task Comment') }}
|
||||
{{ Form::textarea('comment', $entity['comment'], ['class'=>'form-control', 'placeholder'=>'Task Comment', 'rows'=>5]) }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<input type="button" value="Back" onclick="history.back()" class="btn btn-outline-info">
|
||||
<input type="hidden" name="taskid" value="{{ $entity['taskid'] }}" />
|
||||
{{ Form::submit('Save', ['class' => 'btn btn-primary pull-right']) }}
|
||||
</div>
|
||||
</div>
|
||||
<!-- </form> -->
|
||||
{{ Form::close() }}
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -1,170 +0,0 @@
|
|||
@extends('student/fluttercourse/home')
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Student's Task Results Submission</h3>
|
||||
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if (Session::has('message'))
|
||||
<div id="alert-msg" class="alert alert-success alert-dismissible">
|
||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"><EFBFBD></button>
|
||||
{{ Session::get('message') }}
|
||||
</div>
|
||||
@endif
|
||||
{{ Form::open(['method' => 'GET']) }}
|
||||
<div class="form-group">
|
||||
{!! Form::label('topic', 'Topic:') !!}
|
||||
{!! Form::select('topicList', $items , $filter, ['class' => 'form-control', 'id' => 'topicList', 'onchange' => 'this.form.submit();']) !!}
|
||||
{{ Form::close() }}
|
||||
<!--
|
||||
{!! Form::label('topic', 'Topic:') !!}
|
||||
{!! Form::select('topic', $items , null, ['class' => 'form-control', 'onchange' => 'doSomething(this)']) !!}
|
||||
-->
|
||||
</div>
|
||||
|
||||
@php ($complete = true)
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-12">
|
||||
{!! Form::label('tit1', 'Result of Each Task:') !!}
|
||||
|
||||
@if ($valid=='0')
|
||||
<a class="btn btn-success" href="{{ URL::to('/student/results/create/'.$filter)}}"><i class="fa fa-plus"></i> Submit a Task Result</a>
|
||||
@endif
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr class="text-center">
|
||||
<th>Task No.</th>
|
||||
<th>Description</th>
|
||||
<th>Status</th>
|
||||
<th>Duration</th>
|
||||
<th>Evidence</th>
|
||||
<th>Comment</th>
|
||||
<th>Action</th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($entities as $entity)
|
||||
<tr>
|
||||
<td class="text-center">{{ $entity['taskno'] }}</td>
|
||||
<td>{{ $entity['desc'] }}</td>
|
||||
@if ($valid != '0')
|
||||
@php ($complete = false)
|
||||
<td colspan="5" color="red"><b><i>Task result was already validated</i></b></td>
|
||||
@elseif ($entity['status']=='')
|
||||
@php ($complete = false)
|
||||
<td colspan="5" color="red"><b><i>Not yet uploaded</i></b></td>
|
||||
@else
|
||||
<td>{{ $entity['status'] }}</td>
|
||||
<td>{{ $entity['duration'] }} minutes</td>
|
||||
<td class="text-center"><img src="{{ asset('storage/'.$entity['imgFile']) }}" width="120"/></td>
|
||||
<td>{{ $entity['comment'] }}</td>
|
||||
<td class="text-center">
|
||||
<form method="POST" action="{{ URL::to('/student/results/'.$entity['id']) }}">
|
||||
{{ csrf_field() }}
|
||||
<input type="hidden" name="_method" value="DELETE" />
|
||||
<input type="hidden" name="topic" value="{{ $filter }}" />
|
||||
<div class="btn-group">
|
||||
<!--<a class="btn btn-info" href="{{ URL::to('/student/results/'.$entity['id']) }}"><i class="fa fa-eye"></i></a>
|
||||
-->
|
||||
<a class="btn btn-success" href="{{ URL::to('/student/results/'.$entity['id'].'/edit') }}"><i class="fa fa-pencil-alt"></i></a>
|
||||
<button type="submit" class="btn btn-danger"><i class="fa fa-trash"></i></button>
|
||||
</div>
|
||||
</form>
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-12">
|
||||
{!! Form::label('tit2', 'Learning Files Submission:') !!}
|
||||
@if ($valid=='0')
|
||||
<a class="btn btn-info" href="{{ URL::to('/student/lfiles/create/'.$filter)}}"><i class="fa fa-plus"></i> Submit a Learning File</a>
|
||||
@endif
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr class="text-center">
|
||||
<th>No.</th>
|
||||
<th>File Name</th>
|
||||
<th>Folder Path</th>
|
||||
<th>Description</th>
|
||||
<th>Status</th>
|
||||
<th>Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($lfiles as $index => $lfile)
|
||||
<tr>
|
||||
<td class="text-center">{{ $index +1 }}</td>
|
||||
<td>{{ $lfile['fileName'] }}</td>
|
||||
<td>{{ $lfile['path'] }}</td>
|
||||
<td>{{ $lfile['desc'] }}</td>
|
||||
|
||||
@if ($valid!='0')
|
||||
@php ($complete = false)
|
||||
<td colspan="2" color="red"><b><i>Task result was already validated</i></b></td>
|
||||
@elseif ($lfile['rscfile']=='')
|
||||
@php ($complete = false)
|
||||
<td colspan="2" color="red"><b><i>Not yet submitted</i></b></td>
|
||||
@else
|
||||
<td class="text-center">
|
||||
<span class="btn btn-warning"><i class="fa fa-check-circle"></i></span>
|
||||
</td>
|
||||
|
||||
<td class="text-center">
|
||||
<form method="POST" action="{{ URL::to('/student/lfiles/'.$lfile['id']) }}">
|
||||
{{ csrf_field() }}
|
||||
<input type="hidden" name="_method" value="DELETE" />
|
||||
<input type="hidden" name="topic" value="{{ $filter }}" />
|
||||
<div class="btn-group">
|
||||
<!--<a class="btn btn-info" href="{{ URL::to('/student/results/'.$entity['id']) }}"><i class="fa fa-eye"></i></a>
|
||||
-->
|
||||
<a class="btn btn-success" href="{{ URL::to('/student/lfiles/'.$lfile['id'].'/edit') }}"><i class="fa fa-pencil-alt"></i></a>
|
||||
<button type="submit" class="btn btn-danger"><i class="fa fa-trash"></i></button>
|
||||
</div>
|
||||
</form>
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@if ($valid=='0')
|
||||
@if ($complete)
|
||||
<a class="btn btn-danger" href="{{ URL::to('/student/lfiles/valid/'.$filter)}}"><i class="fa fa-check-square"></i> Validate This Learning</a>
|
||||
@else
|
||||
<span class="btn btn-block" ><i class="fa fa-frown"></i> Submission is Not Complete</a>
|
||||
@endif
|
||||
@else
|
||||
<span class="btn btn-block" ><i class="fa fa-smile"></i> Validation is Success</a>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@endsection
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
@extends('admin/admin')
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">A Learning Task Detail</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="data1">Task Id</label>
|
||||
<input id="data1" type="text" value="{{ $data['id'] }}" class="form-control" disabled />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="data2">Task Number</label>
|
||||
<input id="data2" type="text" value="{{ $data['taskno'] }}" class="form-control" disabled />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="data3">Description</label>
|
||||
<input id="data3" type="text" value="{{ $data['desc'] }}" class="form-control" disabled />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="data4">Topic</label>
|
||||
<input id="data4" type="text" value="{{ $topic['name'] }}" class="form-control" disabled />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-footer">
|
||||
<input type="button" value="Back" onclick="history.back()" class="btn btn-outline-info">
|
||||
<!--
|
||||
<a href="{{ URL::to('admin/topic') }}" class="btn btn-outline-info">Back</a>
|
||||
-->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -2,9 +2,9 @@
|
|||
<!-- Brand Logo -->
|
||||
<a href="#" class="brand-link">
|
||||
<img src="{{asset('lte/dist/img/iclop-logo.png')}}" alt="iCLOP logo" class="brand-image elevation-3"
|
||||
style="opacity: .8">
|
||||
style="width:120px;height:60px;">
|
||||
<br>
|
||||
<span class="brand-text font-weight-light" style="color: blueviolet"> Flutter Course</span>
|
||||
<span class="brand-text font-weight-light" style="font-size:160%;"> Python Course</span>
|
||||
</a>
|
||||
|
||||
<!-- Sidebar -->
|
||||
|
|
@ -27,21 +27,27 @@
|
|||
|
||||
|
||||
<li class="treeview">
|
||||
<a href="#" class="nav-link" style="background-color:powderblue;color:black;">
|
||||
<i class="nav-icon fas fa-space-shuttle"></i>
|
||||
<p><b>Start Learning</b></p>
|
||||
<a href="#" class="nav-link" style="background-color:#dce775;color:black;">
|
||||
<i class="nav-icon fab fa-python"></i>
|
||||
<p> <b>Learning Basic Python</b>
|
||||
</p>
|
||||
</a>
|
||||
<ul role="menu" class="nav nav-pills nav-sidebar flex-column">
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="{{URL::to('student/fluttercourse/tasks')}}" class="nav-link"><i class="nav-icon fas fa-angle-right"></i>
|
||||
<p>Download Materials</p>
|
||||
<a href="{{URL::to('student/pythoncourse/python/task')}}" class="nav-link">
|
||||
<i class="nav-icon fas fa-angle-right"></i>
|
||||
<p>
|
||||
Start Learning <span class="right badge badge-danger">New</span>
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="{{URL::to('student/fluttercourse/results')}}" class="nav-link">
|
||||
<i class="nav-icon fas fa-angle-right"></i>
|
||||
<p>Submit Your Project </p>
|
||||
<a href="{{URL::to('student/pythoncourse/python/result')}}" class="nav-link"><i
|
||||
class="nav-icon fas fa-angle-right"></i>
|
||||
<p>Learning Results
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
|||
|
|
@ -1,127 +0,0 @@
|
|||
@extends('student/fluttercourse/home')
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Start Learning Android Programming with iCLOP</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if (Session::has('message'))
|
||||
<div id="alert-msg" class="alert alert-success alert-dismissible">
|
||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"><EFBFBD></button>
|
||||
{{ Session::get('message') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
{{ Form::open(['method' => 'GET']) }}
|
||||
<div class="form-group">
|
||||
{!! Form::label('topic', 'Learning Topic:') !!}
|
||||
{!! Form::select('topicList', $items , $filter, ['class' => 'form-control', 'id' => 'topicList', 'onchange' => 'this.form.submit();']) !!}
|
||||
<div class="form-group">
|
||||
<label for="description">Description</label>
|
||||
<textarea id="desc" class="form-control" disabled rows="2">{{ $topic['desc'] }}</textarea>
|
||||
</div>
|
||||
{{ Form::close() }}
|
||||
<!--
|
||||
{!! Form::label('topic', 'Topic:') !!}
|
||||
{!! Form::select('topic', $items , null, ['class' => 'form-control', 'onchange' => 'doSomething(this)']) !!}
|
||||
-->
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr class="text-center">
|
||||
<th></th>
|
||||
<th>Guide Documents</th>
|
||||
<th>Test Files</th>
|
||||
<th>Supplement Files</th>
|
||||
<th>Other Files</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<tr>
|
||||
<td>Resource for <b>{{ $topic['name'] }}</b></td>
|
||||
<td class="text-center">
|
||||
@if($topic['guide'] !='')
|
||||
<div class="btn-group">
|
||||
<a class="btn btn-success" href="{{ URL::to('/download/guide/'.str_replace('learning/','',$topic['guide']).'/'.str_replace(' ','',$topic['name'])) }}"><i class="fa fa-download"></i> Download</a>
|
||||
</div>
|
||||
@else
|
||||
Empty
|
||||
@endif
|
||||
</td>
|
||||
<td class="text-center">
|
||||
@if($topic['testfile'] !='')
|
||||
<div class="btn-group">
|
||||
<a class="btn btn-warning" href="{{ URL::to('/download/test/'.str_replace('learning/','',$topic['testfile']).'/'.str_replace(' ','',$topic['name'])) }}"><i class="fa fa-download"></i> Download</a>
|
||||
</div>
|
||||
@else
|
||||
Empty
|
||||
@endif
|
||||
</td>
|
||||
<td class="text-center">
|
||||
@if($topic['supplement'] !='')
|
||||
<div class="btn-group">
|
||||
<a class="btn btn-primary" href="{{ URL::to('/download/supp/'.str_replace('learning/','',$topic['supplement']).'/'.str_replace(' ','',$topic['name'])) }}"><i class="fa fa-download"></i> Download</a>
|
||||
</div>
|
||||
@else
|
||||
Empty
|
||||
@endif
|
||||
</td>
|
||||
<td class="text-center">
|
||||
@if($topic['other'] !='')
|
||||
<div class="btn-group">
|
||||
<a class="btn btn-info" href="{{ URL::to('/download/other/'.str_replace('learning/','',$topic['other']).'/'.str_replace(' ','',$topic['name'])) }}" ><i class="fa fa-download"></i> Download</a>
|
||||
</div>
|
||||
@else
|
||||
Empty
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr class="text-center">
|
||||
<th>Task No.</th>
|
||||
<th>Description</th>
|
||||
<th>Topic Name</th>
|
||||
<th>Show</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($entities as $entity)
|
||||
<tr>
|
||||
<td class="text-center">{{ $entity['taskno'] }}</td>
|
||||
<td>{{ $entity['desc'] }}</td>
|
||||
<td>{{ $entity['name'] }}</td>
|
||||
<td class="text-center">
|
||||
<div class="btn-group">
|
||||
<a class="btn btn-info" href="{{ URL::to('/student/tasks/'.$entity['id']) }}"><i class="fa fa-eye"></i></a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@endsection
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
@extends('admin/admin')
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">A Learning Task Detail</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="data1">Task Id</label>
|
||||
<input id="data1" type="text" value="{{ $data['id'] }}" class="form-control" disabled />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="data2">Task Number</label>
|
||||
<input id="data2" type="text" value="{{ $data['taskno'] }}" class="form-control" disabled />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="data3">Description</label>
|
||||
<input id="data3" type="text" value="{{ $data['desc'] }}" class="form-control" disabled />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="data4">Topic</label>
|
||||
<input id="data4" type="text" value="{{ $topic['name'] }}" class="form-control" disabled />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-footer">
|
||||
<input type="button" value="Back" onclick="history.back()" class="btn btn-outline-info">
|
||||
<!--
|
||||
<a href="{{ URL::to('admin/topic') }}" class="btn btn-outline-info">Back</a>
|
||||
-->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
@extends('student/home')
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Validation Result of Learning Result</h3>
|
||||
<div class="card-tools">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if (Session::has('message'))
|
||||
<div id="alert-msg" class="alert alert-success alert-dismissible">
|
||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"><EFBFBD></button>
|
||||
{{ Session::get('message') }}
|
||||
</div>
|
||||
@endif
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr class="text-center">
|
||||
<th>Topic Name</th>
|
||||
<th>Submission Result</th>
|
||||
<th>Duration</th>
|
||||
<th>Validation Result</th>
|
||||
<th>Validation Detail</th>
|
||||
<th>Status</th>
|
||||
<th>Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($entities as $entity)
|
||||
<tr>
|
||||
<td>{{ $entity['name'] }}</td>
|
||||
<td>{{ $entity['passed'] }} Task(s) Passed,<br/>{{ $entity['failed'] }} Task(s) Failed</td>
|
||||
<td>Total: {{ $entity['tot_duration'] }} minute(s),<br/>Average: {{ round($entity['avg_duration'],2) }} minute(s)/task</td>
|
||||
<td>
|
||||
@if ($entity['vpassed']=='')
|
||||
WAITING
|
||||
@else
|
||||
{{ $entity['vpassed'] }} Task(s) Passed,<br/>{{ $entity['vfailed'] }} Task(s) Failed
|
||||
@endif
|
||||
</td>
|
||||
<td>{!! nl2br($entity['checkresult']) !!}</td>
|
||||
<td>{{ $entity['checkstat'] }}</td>
|
||||
<td class="text-center">
|
||||
<div class="btn-group">
|
||||
<a class="btn btn-info" href="{{ URL::to('/student/valid/'.$entity['id']) }}"><i class="fa fa-eye"> Show Detail</i></a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
|
@ -1,62 +0,0 @@
|
|||
@extends('student/home')
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Validation Result Detail [Student name: {{ $student['name'] }}, Topic: {{ $topic['name'] }} ]</h3>
|
||||
<div class="card-tools">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if (Session::has('message'))
|
||||
<div id="alert-msg" class="alert alert-success alert-dismissible">
|
||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"><EFBFBD></button>
|
||||
{{ Session::get('message') }}
|
||||
</div>
|
||||
@endif
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr class="text-center">
|
||||
<th>No.</th>
|
||||
<th>Test File</th>
|
||||
<th>Taks Name</th>
|
||||
<th>Result</th>
|
||||
<th>Report</th>
|
||||
<th>Exec Time</th>
|
||||
<th>Duration</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($entities as $index => $entity)
|
||||
<tr>
|
||||
<td>{{ $index+1 }}</td>
|
||||
<td>{{ $entity['fileName'] }}</td>
|
||||
<td>{{ $entity['taskno'].'. '.$entity['desc'] }}</td>
|
||||
<td>{{ $entity['status'] }}</td>
|
||||
<td>{!! nl2br(e($entity['report'])) !!}</td>
|
||||
<td>{{ $entity['created_at'] }}</td>
|
||||
<td>{{ $entity['duration'] }} seconds</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<input type="button" value="Back" onclick="history.back()" class="btn btn-outline-info">
|
||||
<!--
|
||||
<a href="{{ URL::to('admin/topic') }}" class="btn btn-outline-info">Back</a>
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
|
@ -153,19 +153,19 @@ Route::group(['middleware' => ['auth', 'student']], function() {
|
|||
/** Python */
|
||||
//Tampilan topik
|
||||
Route::get('/student/pythoncourse', 'StudentController@pythoncourse');
|
||||
Route::get('/student/python/task', [ExercisePythonController::class, 'index']);
|
||||
Route::get('/student/pythoncourse/python/task', [ExercisePythonController::class, 'index']);
|
||||
//Tampilan detail percobaan
|
||||
Route::get('/student/python/taskdetail/{id_topik}', [ExercisePythonController::class, 'detail_percobaan']);
|
||||
Route::get('/student/pythoncourse/python/taskdetail/{id_topik}', [ExercisePythonController::class, 'detail_percobaan']);
|
||||
//Tampilan pengerjaan (Teks Editor)
|
||||
Route::get('/student/python/pengerjaan/{id_percobaan}', [ExercisePythonController::class, 'teks_editor']);
|
||||
Route::get('/student/pythoncourse/python/pengerjaan/{id_percobaan}', [ExercisePythonController::class, 'teks_editor']);
|
||||
// tampilan feedback
|
||||
Route::get('/student/python/feedback/{id_topik}/{id_percobaan}', [ExercisePythonController::class, 'feedback']);
|
||||
Route::get('/student/pythoncourse/python/feedback/{id_topik}/{id_percobaan}', [ExercisePythonController::class, 'feedback']);
|
||||
//Compile Program
|
||||
Route::get('/student/python-compile', [ExercisePythonController::class, 'compiler']);
|
||||
//tampilan data validation
|
||||
Route::get('student/python/tampil-data-validation', [ExercisePythonController::class, 'dataValidation']);
|
||||
Route::get('student/pythoncourse/python/tampil-data-validation', [ExercisePythonController::class, 'dataValidation']);
|
||||
//tampilan result mahasiswa
|
||||
Route::get('student/python/result', [ResultController::class, 'index']);
|
||||
Route::get('student/pythoncourse/python/result', [ResultController::class, 'index']);
|
||||
Route::get('pythonfeedback', [ExercisePythonController::class, 'feedback_submit']);
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user