kreta/KretaWeb/Areas/Adminisztracio/Views/ELearning/Index.cshtml
2024-03-13 00:33:46 +01:00

195 lines
7 KiB
Text

@using Kreta.Core.Elearning.Nexius
@model List<Kreta.Web.Areas.Adminisztracio.Models.NexiusListItemModel>
@{
ViewBag.Title = "Index";
}
@section AddCss {
@Styles.Render("~/Content/nexius")
}
<div class="courses">
@if (Model.Count == 0)
{
<h3>
@ErrorResource.AzOnSzamaraJelenlegNincsenekElerhatoKurzusok
</h3>
}
@foreach (var course in Model)
{
int progress = (int)(course.CourseResult.Activities.Progress * 100);
var measure = (int)(course.CourseResult.Activities.Measure * 100);
var spentTime = TimeSpan.FromMinutes(course.CourseResult.Activities.TotalTime).ToString(@"hh\:mm"); ;
var deadline = "";
if (course.CourseResult.Activities.ResultEndTime.HasValue)
{
if (course.CourseResult.Activities.ResultEndTime.Value.Year == DateTime.MaxValue.Year)
{
deadline = "Nincs";
}
else
{
deadline = course.CourseResult.Activities.ResultEndTime.Value.ToShortDateString();
}
}
else
{
deadline = "Nincs";
}
<div class="course">
<div class="image">
<img class="kretaLogo" />
</div>
<div class="details">
<div class="title">@course.Course.Title</div>
<div class="description">
@if (!string.IsNullOrWhiteSpace(course.Course.Description))
{
<div class="description-inner">
<div class="description-ellipsis">@course.Course.Description</div>
</div>
}
</div>
<div class="results">
<div class="left">
<div class="progression">
<div class="result-title">Előrehaladás:</div>
<div class="statusLineContent">
<div class="statusLine" style="width: @(progress)%;"></div>
</div>
<div class="statusLineValue">@progress%</div>
</div>
<div class="result">
<div class="result-title">Eredmény:</div>
<div class="statusLineContent">
<div class="statusLine" style="width: @(measure)%;"></div>
</div>
<div class="statusLineValue">@measure%</div>
</div>
</div>
<div class="right">
<div class="progression">
<div class="result-title">Határidő:</div>
<div>
@(deadline)
</div>
</div>
<div class="result">
<div class="result-title">
Eltöltött idő:
</div>
<div>
@(spentTime)
</div>
</div>
</div>
</div>
</div>
<div class="buttons">
<div class="coursestatus_container">
<button>
@course.CourseResult.Activities.Status.GetDescription()
</button>
</div>
<div class="coursebutton_container">
<button data-launchuri="@course.Course.LaunchUri">Tovább a kurzusra</button>
</div>
</div>
</div>
}
</div>
<script>
var ELearningHelper = (function () {
var eLearningHelper = function () { };
var url = {
StartCourse: "@Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new {controller = "ELearningApi", action = "StartCourse" })",
};
eLearningHelper.StartCourse = function (launchUri) {
location.href = `${url.StartCourse}?launchUri=${launchUri}`;
};
return eLearningHelper;
})();
$('.coursebutton_container>button').click(function () {
$this = $(this);
ELearningHelper.StartCourse($this.data('launchuri'));
});
// NOTE: Az alábbi működés azt a célt szolgálta, hogy ha nem fér ki a description két sorba,
// akkor levágjuk a maradékot és szöveg végére '...'-t teszünk, de sajnos nem működött megfelelően,
// mert nem pontos a méret számolás és különböző szövegnél továbbcsúszik.
// Mivel nem olyan alapvető ennek a megírása, ezért későbbi esetre kikommentezve így hagyjuk.
// A KRETA2-9229 taszk keretein belül módosításra került, hogy overflow hidden értékkel lesz megjelenítve.
//var maxWidth = 520;
//var maxLines = 2;
//// ----------------------------------------------
//function getTextWidth(text, font) {
// var canvas = getTextWidth.canvas ||
// (getTextWidth.canvas = document.createElement("canvas"));
// var context = canvas.getContext("2d");
// context.font = font;
// var metrics = context.measureText(text);
// return metrics.width;
//};
//$('.description-inner').each(function (i, elem) {
// var startIndex = 0;
// var ellipsisText = "";
// // Get font style and size for source text
// var $objCss = $(elem).find(".description-hidden").css("font");
// // Split source text into array on spaces.
// var arr = $(elem).find(".description-hidden").text().split(" ");
// // Get width of space
// var spaceWidth = getTextWidth(" ", $objCss);
// // Get width of ellipsis
// var ellipsisWidth = getTextWidth("...", $objCss);
// // For each line
// for (var o = 0; o < maxLines; o++) {
// var newLine = "";
// var newLineWidth = 0;
// ellipsisWidth = (o + 1 == maxLines ? ellipsisWidth : 0);
// // For each word in the array
// for (var i = startIndex; i < arr.length; i++) {
// // Get width of each word.
// var wordWidth = getTextWidth(arr[i], $objCss);
// // Append word to newLine
// // Don't allow newLine to be wider than maxWidth
// if ((wordWidth + spaceWidth + newLineWidth + ellipsisWidth) < maxWidth) {
// newLineWidth += (wordWidth + spaceWidth);
// newLine += arr[i] + " ";
// startIndex = i + 1;
// }
// else {
// break;
// }
// }
// if (newLine !== '') {
// ellipsisText += (newLine + (o + 1 == maxLines ? " ..." : "<br/>"));
// }
// }
// // Show ellipsis text
// $(elem).find(".description-ellipsis").html(ellipsisText);
//});
</script>