/* global _, angular, i18n, Ladda, Odometer */
'use strict';
angular.module('Client.directives', [])
/* Layouts */
.directive('privacy', [function() {
return {
restrict: 'C',
templateUrl: '/templates/layouts/privacy.dbdacademy',
};
}])
.directive('copyright', [function() {
return {
restrict: 'C',
templateUrl: '/templates/layouts/copyright.dbdacademy'
};
}])
.directive('headBar', [function() {
return {
restrict: 'A',
template: '
',
link: function(scope, element, attrs) {
scope.$watch('headbar', function(newValue, oldValue) {
//console.log(newValue)
if (newValue) {
// scope.service.client.page().then(function(page) {
// console.log(page)
scope.navigation = 'templates/layouts/header.dbdacademy';
// });
}
});
}
};
}])
.directive('header', [function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
scope.service.client.info().then(function(institute) {
// console.log(institute)
scope.institute['pages'] = institute.pages;
});
}
}
}])
.directive('headbarLogo', [function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
var logo = scope.service.client.logo();
// console.log(logo)
// if(logo) {
logo = '/public/img/logo/logo-dbdacademy-color.png';
var $img = $('').append($('
').attr('src', logo).height(48));
element.append($img.addClass('valign-wrapper'));
// }
}
}
}])
.directive('headbarLogoRight', [function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
var logo = ''; //'//services.promptskill.com/app/program/public/img/logo/logo-dbdacademy.png';
if (logo) {
var $img = $('').append($('
').attr('src', logo));
element.append($img);
}
}
}
}])
.directive('sideNavigator', ['$location', function($location) {
return {
restrict: 'C',
link: function(scope, element, attrs) {
//
scope.service.member.authorized().then(function(authorized) {
//
if (authorized) {
$location.hash(null);
if (authorized.permission) {
// $location.path('/'+authorized.permission);
} else {
var sidenav = $('.sidenav');
var $btLogout = $('').addClass('waves-effect waves-light btn btn-logout btn-reg bold large z-depth-0').text('ออกจากระบบ');
$btLogout.on('click', function() {
scope.logout();
});
sidenav.append($btLogout);
}
}
});
element.ready(function() {
//
var sidenav = $('.sidenav');
sidenav.sidenav();
});
//
}
}
}])
.directive('prelaunch', ['$timeout', '$window', function($timeout, $window) {
return {
restrict: 'A',
link: function link(scope, element, attrs) {
scope.$parent.fullpage = true;
//
$timeout(function() {
$('.copyright').hide();
// $('.nav-wrapper').hide();
//
scope.service.client.banner().then(function(data) {
scope.banner = data.banner;
// console.log(scope.banner);
});
//
if (!window.matchMedia("(max-width: 600px)").matches) {
$('.nav-wrapper').hide();
}
}, 600);
scope.toWebPage = function() {
$window.location.href = '/';
}
//
}
}
}])
.directive('sitemap', [function() {
return {
restrict: 'A',
templateUrl: '/templates/layouts/sitemap.dbdacademy',
link: function(scope, element, attrs) {
attrs.$observe('sitemap', function(program) {
//scope.service.program.data('sitemap', institution).then(function(data) {
//console.log(data)
// scope.sitemap = data;
//});
});
}
};
}])
/* Elements */
.directive('image', [function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
attrs.$observe('image', function(image) {
var img = new Image();
img.onload = function() {
var ratio = this.height / this.width;
element.css('padding-top', ratio * 100 + '%');
element.css('position', 'relative');
}
img.src = 'https:' + image;
element.removeAttr('image');
element.css('background-image', "url('" + image + "')").addClass('cover');
//
element.removeAttr('image');
});
}
}
}])
.directive('background', [function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
attrs.$observe('background', function(image) {
var img = new Image();
img.onload = function() {
if (attrs.height == 'fit') {
element.height(this.height);
//element.css('height', this.height + '');
//element.addClass('width');
element.css('background-size', 'auto ' + this.height + 'px')
} else if (attrs.height == 'auto') {
element.css('background-size', 'auto ' + this.height + 'px');
element.removeClass('background-image');
}
//else
element.addClass(attrs.height);
}
img.src = 'https:' + image;
element.removeAttr('background');
element.css("background-image", "url('" + image + "')");
element.addClass('background-image');
});
}
}
}])
.directive('icon', [function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
attrs.$observe('icon', function(image) {
var $img = $('
');
var img = new Image();
img.onload = function() {
$img.attr('src', image);
element.append($img);
}
img.src = image;
element.removeAttr('icon');
});
}
}
}])
/* Style */
.directive('fitBrief', ['$timeout', function($timeout) {
return {
restrict: 'A',
priority: 10,
link: function(scope, element, attrs) {
scope.$watch(attrs.ngBindHtml, function(value) {
var fontSize = parseInt(element.css('font-size'));
var margin = element.parent().css('margin');
//console.log(margin)
$timeout(function() {
if (value != undefined) {
var blockBrief = element.prev();
var brief = blockBrief.find('.brief');
var marginTop = (blockBrief.height() - brief.height()) / fontSize;
element.children().children().children(':first-child').css('margin-top', -marginTop + 'em').css('margin-left', '-4%');
}
})
})
}
}
}])
/* Page */
.directive('pageBanner', [function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
var designWidth = 1920;
attrs.$observe('pageBanner', function(banner) {
if (banner) {
element.removeAttr('page-banner')
//if(attrs.fit=='width') {
//var img = new Image();
//img.onload = function() {
// var height = this.height / designWidth;
// element.css('height', height *100+'vw');
//}
//img.src = 'https:' + banner;
element.css('background-image', "url('" + banner + "')").addClass(attrs.fit);
}
});
}
}
}])
.directive('bannerPage', [function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
attrs.$observe('bannerPage', function(image) {
var $backgroundBanner = $('').addClass('bg-banner-page');
var $contentBanner = $('').addClass('content-banner-page center-align-sm');
var $titleBanner = $('').addClass('title-banner-page black-text bold');
if (attrs.color) {
$contentBanner.css('background-color', attrs.color);
}
$backgroundBanner.css("background-image", "url('" + image + "')");
$titleBanner.text(attrs.title);
$contentBanner.append($titleBanner);
element.append($backgroundBanner).append($contentBanner);
});
}
}
}])
/* Content */
.directive('_carouselSlider', ['$timeout', function($timeout) {
/* need banner data form dinsorworks */
return {
restrict: 'A',
link: function(scope, element, attrs) {
//
$timeout(function() {
scope.service.client.highlight().then(function(banner) {
var highlight = banner.highlight;
// console.log(highlight);
if (highlight) {
var $carousel = $('').addClass('carousel carousel-slider relative');
var $btnPrev = $('').addClass('btn-prev absolute').append($('
').attr('src', '/public/img/icon/icon-prev-white.png'));
var $btnNext = $('').addClass('btn-next absolute').append($('
').attr('src', '/public/img/icon/icon-next-white.png'));
//
element.addClass('banner-wrapper').append($carousel.append($btnPrev).append($btnNext));
angular.forEach(highlight, function(item) {
var $item = $('').addClass('carousel-item').attr('target', '_self');
var $image = $('').addClass('relative background-image fit');
//
$item.css('height', '100%').attr('href', item.url_link);
$image.css('background-image', "url('" + item.image + "')").css('height', '100%');
$item.append($image);
$carousel.append($item);
});
//
element.ready(function() {
$carousel.carousel({
fullWidth: true,
indicators: true
});
$carousel.find('.btn-prev').click(function(e) {
e.preventDefault();
e.stopPropagation();
$carousel.carousel('prev');
});
$carousel.find('.btn-next').click(function(e) {
e.preventDefault();
e.stopPropagation();
$carousel.carousel('next');
});
// auto next slide banner
// setInterval(function () {
// $carousel.carousel('next');
// }, 7000);
});
}
//
});
}, 900);
//
}
}
}])
.directive('carouselHighlight', ['$timeout', function($timeout) {
/* need banner data form dinsorworks */
return {
restrict: 'A',
link: function(scope, element, attrs) {
//
$timeout(function() {
scope.service.client.highlight().then(function(response) {
// console.log(response);
scope.carousel_highlight = response.highlight;
//
});
}, 900);
// Init Carousel
scope.initCarouselHighlight = function() {
// console.log('init carouse');
const splide = new Splide('.carousel-highlight .splide', {
autoplay: true
});
splide.mount();
}
//
}
}
}])
.directive('news', ['$routeParams', '$timeout', function($routeParams, $timeout) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
//
var newsId = $routeParams.id;
// console.log(newsId);
$timeout(function() {
//
scope.service.client.news(newsId).then(function(news) {
scope.news = news;
// console.log(scope.news);
})
}, 900);
//
}
}
}])
.directive('courseSpecial', ['$compile', '$timeout', function($compile, $timeout) {
return {
restruct: 'A',
link: function link(scope, element, attrs) {
//
const courses = [{
'code': 'DBD68501',
'name': 'การเริ่มต้นธุรกิจสำหรับ SME มือใหม่',
'brief': 'เป็นหลักสูตรพื้นฐานโดยเริ่มต้นจากการถามตนเองว่าอยากทำธุรกิจเพราะอะไรมีเป้าหมายอะไรในการทำธุรกิจ การทำธุรกิจให้ประสบความสำเร็จต้องใช้ทั้งกำลังกายและกำลังใจต้องใช้เวลาในการเรียนรู้และไม่มีทางลัดแต่จะประสบความสำเร็จเร็วแค่ไหนขึ้นอยู่กับหลายปัจจัยโดยสิ่งที่ต้องนำมาใช้การหาวิธีทำอย่างไรให้มีโอกาสประสบความสำเร็จให้มากที่สุด โดยการเรียนรู้หลักการที่สำคัญก่อนใช้เครื่องมือใช้ข้อมูลที่เข้าถึงได้ให้เป็นประโยชน์มากที่สุดซึ่งเป็นแนวคิดและปัจจัยความสำเร็จของการเริ่มต้นธุรกิจเหมาะสำหรับผู้เริ่มประกอบธุรกิจและผู้สนใจทั่วไป',
'thumbnail': '/public/resources/course/22/8920136a-582a-4321-9e03-470c1d7ceb15/image/65101.jpg',
'banner': '/public/resources/course/22/8920136a-582a-4321-9e03-470c1d7ceb15/image/Banner65101-1.jpg',
'duration': '180',
'cpd': false,
'certificate': true,
'state': null,
},
{
'code': 'DBD68502',
'name': 'การตลาดด้าน e-commerce',
'brief': 'ปฏิเสธไม่ได้เลยว่าโลกออนไลน์ในปัจจุบันมีผลต่อการใช้ชีวิตของคนเราเป็นอย่างมาก ทั้งการทำธุรกิจที่ต้องปรับตัวให้เข้ากับพฤติกรรมผู้บริโภค จึงมีร้านค้าที่ก้าวเข้าสู่โลก e-commerce (อีคอมเมิร์ซ) กันมากขึ้น ทำให้การศึกษาและการเรียนรี้ความเกี่ยวข้องกับการทำธุรกิจออนไลน์ และกลยุทธ์การตลาดในการโปรโมทสินค้าผ่านอินเตอร์เน็ตทั้งหมดนี้จึงเป็นเรื่องสำคัญ ที่จะทำให้สามารถขายสินค้าและเอาชนะคู่แข่งที่มีจำนวนมากได้',
'thumbnail': '/public/resources/course/48/b385fac2-e916-431c-9666-bafaf8f69400/image/65302.jpg',
'banner': '/public/resources/course/48/b385fac2-e916-431c-9666-bafaf8f69400/image/DBD65302-Banner.jpg',
'duration': '180',
'cpd': false,
'certificate': true,
'state': null,
},
{
'code': 'DBD68503',
'name': 'การตลาดยุคดิจิทัล',
'brief': 'การทำการตลาดแบบดิจิทัลในปัจจุบันไม่เพียงแต่ช่วยให้ธุรกิจโปรโมทสินค้าและบริการได้เท่านั้น แต่ยังช่วยให้บริการลูกค้าออนไลน์ได้ตลอด 24 ชั่วโมง เพื่อให้ลูกค้ารู้สึกว่าได้รับการดูแลและเอาใจใส่เป็นอย่างดี ด้วยเหตุนี้การตลาดแบบดิจิทัลจึงเป็นประโยชน์สำหรับแบรนด์และธุรกิจต่างๆ ในหลักสูตรนี้เนื้อหาครอบคลุมเกี่ยวกับ เครื่องมือส่งเสริมการตลาดดิจิทัล ซึ่งเป็นหลักสูตรที่ช่วยให้ผู้เรียนสามารถเพิ่มยอดขายในการทำการค้าผ่านออนไลน์โดยการใช้เครื่องมือต่าง ๆ เข้ามาช่วยในการดำเนินธุรกิจให้ประสบความสำเร็จได้อย่างลงตัวเป็นอย่างดี',
'thumbnail': '/public/resources/course/49/ceab3583-8ba0-4be7-afd5-e3c12849897d/image/65303.jpg',
'banner': '/public/resources/course/49/ceab3583-8ba0-4be7-afd5-e3c12849897d/image/DBD65303-Banner.jpg',
'duration': '180',
'cpd': false,
'certificate': true,
'state': null,
},
{
'code': 'DBD68504',
'name': 'AI เปลี่ยนเกมธุรกิจ พลิก SME ไทยให้เติบโต',
'brief': 'หลักสูตรนี้จะพาคุณเจาะลึกโลกของ AI ตั้งแต่พื้นฐาน ที่เข้าใจง่าย คลายทุกข้อสงสัย และพาไปรู้จัก เทรนด์ AI ที่กำลังพลิกโฉมธุรกิจ จากนั้นคุณจะได้เห็นว่า AI ช่วย ยกระดับการตลาด และการดำเนินงานได้อย่างไร พร้อมทำความเข้าใจ Generative AI อย่างลึกซึ้ง และเรียนรู้การนำไปใช้จริงในธุรกิจของคุณ ฝึกใช้งาน ChatGPT และ Gemini รวมถึงการวิเคราะห์ข้อมูลเชิงลึก สุดท้ายเราจะช่วยคุณ ประเมินความพร้อม วางแผน และเลือกใช้ AI ให้เหมาะสมกับธุรกิจ เพื่อให้ SME ไทยก้าวทันและเติบโตในยุค AI ได้อย่างยั่งยืน',
'thumbnail': '/public/resources/course/79/2ca95863-ea8f-428f-9753-3d512975c866/image/DBD_Thum.png',
'banner': '/public/resources/course/79/2ca95863-ea8f-428f-9753-3d512975c866/image/Banner_DBD%20AI_01.png',
'duration': '180',
'cpd': false,
'certificate': true,
'state': null,
},
{
'code': 'DBD68505',
'name': 'เส้นทางสู่ความสำเร็จธุรกิจร้านอาหาร',
'brief': 'เป็นหลักสูตรที่ออกแบบมาเพื่อช่วยผู้ที่สนใจหรือกำลังทำธุรกิจร้านอาหารให้สามารถเดินทางไปสู่ความสำเร็จได้อย่างมีประสิทธิภาพและยั่งยืน โดยการถ่ายทอดประสบการณ์และความรู้จากผู้เชี่ยวชาญที่มีประสบการณ์ตรงในการทำธุรกิจร้านอาหาร',
'thumbnail': '/public/resources/course/76/b05a3ea2-8bf8-4aec-9a23-5b1789fdb6c4/image/Thumb_Business3.png',
'banner': '/public/resources/course/76/b05a3ea2-8bf8-4aec-9a23-5b1789fdb6c4/image/Banner_DBD68101.png',
'duration': '180',
'cpd': false,
'certificate': true,
'state': null,
}
];
// console.log(courses);
$timeout(function() {
// scope.service.client.recommend().then(function(courses) {
// console.log(courses);
if (courses) {
var courseState = 'course-content';
var categoryName = 'หลักสูตรยกระดับทักษะธุรกิจสำหรับผู้ประกอบการโครงการคนละครึ่ง';
var cardStyle = "card-course";
var btnPrevClass = 'btn-pagination prev-carousel normal';
var btnNextClass = 'btn-pagination next-carousel normal';
/* topic & pagination */
var $section = $('').addClass('section-course course-recommend white lighten-5 valign-wrapper');
var $container = $('').addClass('container');
var $rowCourseName = $('').addClass('row hide-on-small-only');
var $colCourseName = $('').addClass('col s8 m6 l6');
var $courseName = $('').attr('href', '/courses');
var $colPagination = $('').addClass('col s4 m6 l6 right-align');
var $btnPrev = $('').addClass(btnPrevClass);
var $btnNext = $('').addClass(btnNextClass);
//
$courseName.append($('').addClass('course-name black-text bold').text(categoryName));
$btnPrev.append($('').addClass('material-icons').text('navigate_before'));
$btnNext.append($('').addClass('material-icons').text('navigate_next'));
//
$colPagination.append($btnPrev).append($btnNext);
// $rowCourseName.append($colCourseName.append($courseName));
$rowCourseName.append($colCourseName.append($courseName)).append($colPagination);
$container.append($('').addClass('course-name black-text larger bold center-align hide-on-med-and-up').text(categoryName));
$container.append($rowCourseName);
/* program course */
var $programCourse = $('').addClass('relative');
scope.courseSpecialContent = function() {
//
var $carousel = $('').addClass('carousel carousel-slider course-carousel');
var $carouselItem = $('').addClass('carousel-item');
var $rowCourse = $('').addClass('row');
// responsive devices
var countCourse = 0;
var responsiveDevice = 4; // Desktop Devices
if (window.matchMedia("(max-width: 600px)").matches) responsiveDevice = 1; // Mobile Devices
else if (window.matchMedia("(min-width: 601px) and (max-width: 992px)").matches) responsiveDevice = 3; // Tablet Devices
angular.forEach(courses, function(item) {
if (countCourse == 0) {
$carousel.append($carouselItem);
$carouselItem.append($rowCourse);
}
//
var $colCourse = $('').addClass('col s12 m4 l3');
var $card = $('').addClass('card hoverable').addClass(cardStyle);
var $cardImage = $('').addClass('card-image course-image');
var $cardContent = $('').addClass('card-content');
var $courseName = $('').addClass('course-title').text(item.name);
var $courseBrief = $('').addClass('course-brief small').text(item.brief);
var $cardAction = $('').addClass('card-action').attr(courseState, item.code);
//
$cardImage.css('background-image', "url('" + item.thumbnail + "')");
$cardContent.append($courseName).append($courseBrief);
$card.append($cardImage).append($cardContent).append($cardAction);
$rowCourse.append($colCourse.append($card));
//
countCourse++;
if (countCourse == responsiveDevice) {
countCourse = 0;
$carouselItem = $('').addClass('carousel-item');
$rowCourse = $('').addClass('row');
}
});
$programCourse.append($carousel)
// initialization carrousel program courses
var carousel = element.find('.carousel');
carousel.carousel({
fullWidth: true,
indicators: false
});
// move next carousel
$btnNext.click(function(e) {
e.preventDefault();
e.stopPropagation();
$carousel.carousel('next');
});
// move prev carousel
$btnPrev.click(function(e) {
e.preventDefault();
e.stopPropagation();
$carousel.carousel('prev');
});
// mobile responsive pagination
if (responsiveDevice == 1) {
carousel.carousel({
fullWidth: true,
indicators: true
});
//
$btnPrev.removeClass().addClass('btn-pagination-sm prev-carousel absolute valign-wrapper hide-on-med-and-up');
$btnNext.removeClass().addClass('btn-pagination-sm next-carousel absolute valign-wrapper hide-on-med-and-up');
$container.addClass('relative').append($btnPrev).append($btnNext);
} else {
$btnPrev.removeClass().addClass(btnPrevClass);
$btnNext.removeClass().addClass(btnNextClass);
$colPagination.append($btnPrev).append($btnNext);
}
}
$container.append($programCourse);
$section.append($container);
element.append($section);
//
element.ready(function() {
scope.courseSpecialContent();
$(window).on('resize', function() {
$programCourse.empty();
scope.courseSpecialContent();
});
});
//
$compile(element.contents())(scope);
}
//
// });
}, 1000);
}
}
}])
.directive('courseCampaign', ['$compile', '$timeout', function($compile, $timeout) {
return {
restruct: 'A',
link: function link(scope, element, attrs) {
//
const courses = [{
'code': 'DBD68104',
'name': 'วางกลยุทธ์เพิ่มยอดขาย ลดต้นทุน',
'brief': 'บทเรียนนี้ว่าด้วยการวางกลยุทธ์เพื่อ “เพิ่มยอดขาย และลดต้นทุน” โดยนำเสนอทั้งมุมมอง Beginner สำหรับผู้ที่เริ่มต้น สามารถทำตามได้ง่าย และ Advance สำหรับผู้ที่มีประสบการณ์และต้องการยกระดับการบริหารจัดการเชิงลึก เนื้อหาครอบคลุมตั้งแต่การวางแผน การปรับปรุงการขาย การจัดการต้นทุน ไปจนถึงเทคนิคการบริหารธุรกิจให้มีประสิทธิภาพและยั่งยืน',
'thumbnail': '/public/resources/course/81/4aaee6fe-ff00-4340-901c-82ba3d3756ed/image/Thum_DBD68104.png',
'banner': '/public/resources/course/81/4aaee6fe-ff00-4340-901c-82ba3d3756ed/image/Banner-DBD68104_1.png',
'duration': '180',
'cpd': false,
'certificate': true,
'state': null,
},
{
'code': 'DBD68103',
'name': 'หมัดเด็ดร้านอาหารขายดีกลยุทธ์เพิ่มยอดปังตลอดปี',
'brief': 'เป็นหลักสูตรที่มีการเรียนรู้กลยุทธ์สำคัญที่จะช่วยให้ร้านอาหารมียอดขายต่อเนื่องทั้งปี ผ่านการรักษาคุณภาพ สร้างเมนูเด่น ทำการตลาดออนไลน์ จัดโปรโมชันตรงจังหวะ และใส่ใจบริการ เพื่อดึงดูดลูกค้าใหม่และรักษาลูกค้าเก่าไว้ได้อย่างยั่งยืน',
'thumbnail': '/public/resources/course/80/8fb40c22-3529-4c39-8f97-205a8f72796b/image/Thum_DBD68103.png',
'banner': '/public/resources/course/80/8fb40c22-3529-4c39-8f97-205a8f72796b/image/Banner_DBD68103.png',
'duration': '180',
'cpd': false,
'certificate': true,
'state': null,
},
{
'code': 'DBD68402',
'name': 'AI เปลี่ยนเกมธุรกิจ พลิก SME ไทยให้เติบโต',
'brief': 'หลักสูตรนี้จะพาคุณเจาะลึกโลกของ AI ตั้งแต่พื้นฐาน ที่เข้าใจง่าย คลายทุกข้อสงสัย และพาไปรู้จัก เทรนด์ AI ที่กำลังพลิกโฉมธุรกิจ จากนั้นคุณจะได้เห็นว่า AI ช่วย ยกระดับการตลาด และการดำเนินงานได้อย่างไร พร้อมทำความเข้าใจ Generative AI อย่างลึกซึ้ง และเรียนรู้การนำไปใช้จริงในธุรกิจของคุณ ฝึกใช้งาน ChatGPT และ Gemini รวมถึงการวิเคราะห์ข้อมูลเชิงลึก สุดท้ายเราจะช่วยคุณ ประเมินความพร้อม วางแผน และเลือกใช้ AI ให้เหมาะสมกับธุรกิจ เพื่อให้ SME ไทยก้าวทันและเติบโตในยุค AI ได้อย่างยั่งยืน ',
'thumbnail': '/public/resources/course/79/2ca95863-ea8f-428f-9753-3d512975c866/image/DBD_Thum.png',
'banner': '/public/resources/course/79/2ca95863-ea8f-428f-9753-3d512975c866/image/Banner_DBD AI_01.png',
'duration': '180',
'cpd': false,
'certificate': true,
'state': null,
},
{
'code': 'DBD68401',
'name': 'Meta AI & Ads Solutions for SME Growth',
'brief': 'ในหลักสูตรนี้ ทุกท่านจะได้เรียนรู้เกี่ยวกับ Meta Ads Solutions ที่จะช่วยเพิ่มประสิทธิภาพในการทำ ทำ โฆษณา และดึงดูดกลุ่มเป้าหมายได้อย่างแม่นยำ ยำ ยิ่งขึ้น พร้อมทั้งทำ ทำ ความรู้จักกับ Generative AI จาก Meta อีกหนึ่งเครื่องมือสำ สำ คัญที่จะเข้ามายกระดับงานการตลาดให้ดูเป็นมืออาชีพมากขึ้น อีกทั้งยังใช้งานง่าย และไม่ซับซ้อน',
'thumbnail': '/public/resources/course/78/9c04f40c-b68d-4e4b-93b9-7e66b3c5cd32/image/Thum_DBD68401.png',
'banner': '/public/resources/course/78/9c04f40c-b68d-4e4b-93b9-7e66b3c5cd32/image/0623%20-%20Banner%20Meta%20MOC_11_%20DBD%201920x640.jpg',
'duration': '180',
'cpd': false,
'certificate': true,
'state': null,
},
{
'code': 'DBD68102',
'name': 'รู้ทันภูมิรัฐศาสตร์สร้างโอกาสธุรกิจไทย',
'brief': 'เป็นหลักสูตรที่เน้นการเรียนรู้เกี่ยวกับภูมิรัฐศาสตร์ในมุมมองที่สามารถนำไปใช้ในการวิเคราะห์และวางกลยุทธ์ทางธุรกิจในบริบทของการค้าและเศรษฐกิจในระดับภูมิภาคและโลก โดยเฉพาะในแง่ของโอกาสและความท้าทายที่ธุรกิจไทยสามารถใช้ประโยชน์จากการเปลี่ยนแปลงในภูมิรัฐศาสตร์ได้',
'thumbnail': '/public/resources/course/77/c1d375dc-3fa9-49d1-8b42-c214fd5b3353/image/Thumb_DBD68102_4.png',
'banner': '/public/resources/course/77/c1d375dc-3fa9-49d1-8b42-c214fd5b3353/image/Banner_DBD68102.png',
'duration': '180',
'cpd': false,
'certificate': true,
'state': null,
},
{
'code': 'DBD68101',
'name': 'เส้นทางสู่ความสำเร็จธุรกิจร้านอาหาร',
'brief': 'เป็นหลักสูตรที่ออกแบบมาเพื่อช่วยผู้ที่สนใจหรือกำลังทำธุรกิจร้านอาหารให้สามารถเดินทางไปสู่ความสำเร็จได้อย่างมีประสิทธิภาพและยั่งยืน โดยการถ่ายทอดประสบการณ์และความรู้จากผู้เชี่ยวชาญที่มีประสบการณ์ตรงในการทำธุรกิจร้านอาหาร',
'thumbnail': '/public/resources/course/76/b05a3ea2-8bf8-4aec-9a23-5b1789fdb6c4/image/Thumb_Business3.png',
'banner': '/public/resources/course/76/b05a3ea2-8bf8-4aec-9a23-5b1789fdb6c4/image/Banner_DBD68101.png',
'duration': '180',
'cpd': false,
'certificate': true,
'state': null,
},
{
'code': 'DBD67101',
'name': 'Carbon Credit โอกาสธุรกิจไทยในยุคเศรษฐกิจสีเขียว',
'brief': 'เรียนรู้กลยุทธ์การทำธุรกิจให้ SMEs ไทยเติบโตอย่างยั่งยืนในยุคโลกาภิวัตน์ ครอบคลุมสถานการณ์การค้าโลกปัจจุบัน แนวโน้มในอนาคต ผลกระทบต่อ SMEs การปรับตัวสู่ธุรกิจสีเขียว และการใช้ประโยชน์จากเทคโนโลยีดิจิทัล',
'thumbnail': '/public/resources/course/73/732af718-53c8-4763-b608-a7f822dae4ed/image/Thumb_carbon3.png',
'banner': '/public/resources/course/73/732af718-53c8-4763-b608-a7f822dae4ed/image/Banner_carbon.png',
'duration': '180',
'cpd': false,
'certificate': true,
'state': null,
},
{
'code': 'DBD67102',
'name': 'ESG สร้างมูลค่าสู่ธุรกิจยั่งยืน',
'brief': 'เรียนรู้แนวคิด ESG (Environmental, Social, and Governance) ซึ่งเป็นแนวทางการดำเนินธุรกิจที่คำนึงถึงสิ่งแวดล้อม สังคม และการกำกับดูแลกิจการที่ดี เพื่อสร้างมูลค่าเพิ่มให้กับธุรกิจในระยะยาว พร้อมทั้งศึกษาตัวอย่างภาคปฏิบัติและเครื่องมือที่สามารถนำไปประยุกต์ใช้ในการดำเนินธุรกิจอย่างยั่งยืน',
'thumbnail': '/public/resources/course/74/ba42ebe8-00e9-44e7-8b77-1ae5e156cae0/image/Thumb_ESG1.png',
'banner': '/public/resources/course/74/ba42ebe8-00e9-44e7-8b77-1ae5e156cae0/image/Banner_ESG.png',
'duration': '180',
'cpd': false,
'certificate': true,
'state': null,
},
{
'code': 'DBD67103',
'name': 'การจัดการธุรกิจโฮมสเตย์',
'brief': 'เรียนรู้หลักการและเทคนิคในการบริหารจัดการธุรกิจโฮมสเตย์อย่างมืออาชีพ ครอบคลุมตั้งแต่การวางแผนธุรกิจ การออกแบบที่พัก การให้บริการลูกค้า การตลาด และการสร้างรายได้เพิ่มเติม เพื่อให้ธุรกิจโฮมสเตย์เติบโตอย่างยั่งยืน',
'thumbnail': '/public/resources/course/75/e341f934-3447-4a91-887f-cbeef04d5b6a/image/Thumb_Home1.png',
'banner': '/public/resources/course/75/e341f934-3447-4a91-887f-cbeef04d5b6a/image/Banner_Home.png',
'duration': '180',
'cpd': false,
'certificate': true,
'state': null,
}
];
// console.log(courses);
$timeout(function() {
// scope.service.client.recommend().then(function(courses) {
// console.log(courses);
if (courses) {
var courseState = 'course-content';
var categoryName = 'วิชาใหม่';
var cardStyle = "card-course";
var btnPrevClass = 'btn-pagination prev-carousel normal';
var btnNextClass = 'btn-pagination next-carousel normal';
/* topic & pagination */
var $section = $('').addClass('section-course course-recommend purple lighten-5 valign-wrapper');
var $container = $('').addClass('container');
var $rowCourseName = $('').addClass('row hide-on-small-only');
var $colCourseName = $('').addClass('col s8 m6 l6');
var $courseName = $('').attr('href', '/courses');
var $colPagination = $('').addClass('col s4 m6 l6 right-align');
var $btnPrev = $('').addClass(btnPrevClass);
var $btnNext = $('').addClass(btnNextClass);
//
$courseName.append($('').addClass('course-name black-text bold').text(categoryName));
$btnPrev.append($('').addClass('material-icons').text('navigate_before'));
$btnNext.append($('').addClass('material-icons').text('navigate_next'));
//
$colPagination.append($btnPrev).append($btnNext);
// $rowCourseName.append($colCourseName.append($courseName));
$rowCourseName.append($colCourseName.append($courseName)).append($colPagination);
$container.append($('').addClass('course-name black-text larger bold center-align hide-on-med-and-up').text(categoryName));
$container.append($rowCourseName);
/* program course */
var $programCourse = $('').addClass('relative');
scope.courseCampaignContent = function() {
//
var $carousel = $('').addClass('carousel carousel-slider course-carousel');
var $carouselItem = $('').addClass('carousel-item');
var $rowCourse = $('').addClass('row');
// responsive devices
var countCourse = 0;
var responsiveDevice = 4; // Desktop Devices
if (window.matchMedia("(max-width: 600px)").matches) responsiveDevice = 1; // Mobile Devices
else if (window.matchMedia("(min-width: 601px) and (max-width: 992px)").matches) responsiveDevice = 3; // Tablet Devices
angular.forEach(courses, function(item) {
if (countCourse == 0) {
$carousel.append($carouselItem);
$carouselItem.append($rowCourse);
}
//
var $colCourse = $('').addClass('col s12 m4 l3');
var $card = $('').addClass('card hoverable').addClass(cardStyle);
var $cardImage = $('').addClass('card-image course-image');
var $cardContent = $('').addClass('card-content');
var $courseName = $('').addClass('course-title').text(item.name);
var $courseBrief = $('').addClass('course-brief small').text(item.brief);
var $cardAction = $('').addClass('card-action').attr(courseState, item.code);
//
$cardImage.css('background-image', "url('" + item.thumbnail + "')");
$cardContent.append($courseName).append($courseBrief);
$card.append($cardImage).append($cardContent).append($cardAction);
$rowCourse.append($colCourse.append($card));
//
countCourse++;
if (countCourse == responsiveDevice) {
countCourse = 0;
$carouselItem = $('').addClass('carousel-item');
$rowCourse = $('').addClass('row');
}
});
$programCourse.append($carousel)
// initialization carrousel program courses
var carousel = element.find('.carousel');
carousel.carousel({
fullWidth: true,
indicators: false
});
// move next carousel
$btnNext.click(function(e) {
e.preventDefault();
e.stopPropagation();
$carousel.carousel('next');
});
// move prev carousel
$btnPrev.click(function(e) {
e.preventDefault();
e.stopPropagation();
$carousel.carousel('prev');
});
// mobile responsive pagination
if (responsiveDevice == 1) {
carousel.carousel({
fullWidth: true,
indicators: true
});
//
$btnPrev.removeClass().addClass('btn-pagination-sm prev-carousel absolute valign-wrapper hide-on-med-and-up');
$btnNext.removeClass().addClass('btn-pagination-sm next-carousel absolute valign-wrapper hide-on-med-and-up');
$container.addClass('relative').append($btnPrev).append($btnNext);
} else {
$btnPrev.removeClass().addClass(btnPrevClass);
$btnNext.removeClass().addClass(btnNextClass);
$colPagination.append($btnPrev).append($btnNext);
}
}
$container.append($programCourse);
$section.append($container);
element.append($section);
//
element.ready(function() {
scope.courseCampaignContent();
$(window).on('resize', function() {
$programCourse.empty();
scope.courseCampaignContent();
});
});
//
$compile(element.contents())(scope);
}
//
// });
}, 1000);
}
}
}])
.directive('courseRecommend', ['$compile', '$timeout', function($compile, $timeout) {
return {
restruct: 'A',
link: function link(scope, element, attrs) {
//
$timeout(function() {
scope.service.client.recommend().then(function(courses) {
// console.log(courses);
if (courses) {
var courseState = 'course-content';
var categoryName = 'หลักสูตรแนะนำ';
var cardStyle = "card-course";
var btnPrevClass = 'btn-pagination prev-carousel normal';
var btnNextClass = 'btn-pagination next-carousel normal';
/* topic & pagination */
var $section = $('').addClass('section-course course-recommend white valign-wrapper');
var $container = $('').addClass('container');
var $rowCourseName = $('').addClass('row hide-on-small-only');
var $colCourseName = $('').addClass('col s8 m6 l6');
var $courseName = $('').attr('href', '/courses');
var $colPagination = $('').addClass('col s4 m6 l6 right-align');
var $btnPrev = $('').addClass(btnPrevClass);
var $btnNext = $('').addClass(btnNextClass);
//
$courseName.append($('').addClass('course-name black-text bold').text(categoryName));
$btnPrev.append($('').addClass('material-icons').text('navigate_before'));
$btnNext.append($('').addClass('material-icons').text('navigate_next'));
//
$colPagination.append($btnPrev).append($btnNext);
$rowCourseName.append($colCourseName.append($courseName)).append($colPagination);
$container.append($('').addClass('course-name black-text larger bold center-align hide-on-med-and-up').text(categoryName));
$container.append($rowCourseName);
/* program course */
var $programCourse = $('').addClass('relative');
scope.courseRecommendContent = function() {
//
var $carousel = $('').addClass('carousel carousel-slider course-carousel');
var $carouselItem = $('').addClass('carousel-item');
var $rowCourse = $('').addClass('row');
// responsive devices
var countCourse = 0;
var responsiveDevice = 4; // Desktop Devices
if (window.matchMedia("(max-width: 600px)").matches) responsiveDevice = 1; // Mobile Devices
else if (window.matchMedia("(min-width: 601px) and (max-width: 992px)").matches) responsiveDevice = 3; // Tablet Devices
angular.forEach(courses, function(item) {
if (countCourse == 0) {
$carousel.append($carouselItem);
$carouselItem.append($rowCourse);
}
//
var $colCourse = $('').addClass('col s12 m4 l3');
var $card = $('').addClass('card hoverable').addClass(cardStyle);
var $cardImage = $('').addClass('card-image course-image');
var $cardContent = $('').addClass('card-content');
var $courseName = $('').addClass('course-title').text(item.name);
var $courseBrief = $('').addClass('course-brief small').text(item.brief);
var $cardAction = $('').addClass('card-action').attr(courseState, item.code);
//
$cardImage.css('background-image', "url('" + item.thumbnail + "')");
$cardContent.append($courseName).append($courseBrief);
$card.append($cardImage).append($cardContent).append($cardAction);
$rowCourse.append($colCourse.append($card));
//
countCourse++;
if (countCourse == responsiveDevice) {
countCourse = 0;
$carouselItem = $('').addClass('carousel-item');
$rowCourse = $('').addClass('row');
}
});
$programCourse.append($carousel)
// initialization carrousel program courses
var carousel = element.find('.carousel');
carousel.carousel({
fullWidth: true,
indicators: false
});
// move next carousel
$btnNext.click(function(e) {
e.preventDefault();
e.stopPropagation();
$carousel.carousel('next');
});
// move prev carousel
$btnPrev.click(function(e) {
e.preventDefault();
e.stopPropagation();
$carousel.carousel('prev');
});
// mobile responsive pagination
if (responsiveDevice == 1) {
carousel.carousel({
fullWidth: true,
indicators: true
});
//
$btnPrev.removeClass().addClass('btn-pagination-sm prev-carousel absolute valign-wrapper hide-on-med-and-up');
$btnNext.removeClass().addClass('btn-pagination-sm next-carousel absolute valign-wrapper hide-on-med-and-up');
$container.addClass('relative').append($btnPrev).append($btnNext);
} else {
$btnPrev.removeClass().addClass(btnPrevClass);
$btnNext.removeClass().addClass(btnNextClass);
$colPagination.append($btnPrev).append($btnNext);
}
}
$container.append($programCourse);
$section.append($container);
element.append($section);
//
element.ready(function() {
scope.courseRecommendContent();
$(window).on('resize', function() {
$programCourse.empty();
scope.courseRecommendContent();
});
});
//
$compile(element.contents())(scope);
}
//
});
}, 900);
}
}
}])
.directive('courseCategory', ['$compile', '$timeout', function($compile, $timeout) {
return {
restrict: 'A',
link: function link(scope, element, attrs) {
$timeout(function() {
var resourceUrl = scope.service.client.resource();
//console.log(resourceUrl)
scope.service.client.category(name).then(function(category) {
// console.log(category)
scope['category'] = category;
var courseCount = 1;
var button = 'ดูหลักสูตร';
//
angular.forEach(scope.category, function(category, index) {
var $category = $('').addClass('relative');
var $sectionCourse = $('').addClass('section-course white');
var $banner = $('').addClass('banner-course relative');
var courseState = 'course-content';
var categoryName = category.name;
var paginationStyle = "";
var cardStyle = "card-course";
var $cardIcon = $('').hide();
//
if (category.permalink != 'podclass') {
var position = courseCount % 2 == 0 ? 'right' : 'left';
courseCount++;
//console.log(category)
var $bannerContent = $('').addClass('banner-course-content absolute');
var $bannerTitle = $('').addClass('banner-course-title black-text bold').text(category.name);
var $bannerNote = $('').addClass('banner-course-note black-text medium normal remark').text(category.remark);
var $bannerDesc = $('').addClass('banner-course-desc black-text regular').html(category.brief);
var $bannerBtn = $('').addClass('banner-course-btn waves-effect btn-signup btn-flat z-depth-1 medium').text(button);
//
var banner = resourceUrl + '/category/' + category.background;
var image = new Image();
image.onload = function() {
$banner.height(this.height);
}
image.src = 'https:' + banner;
//
$banner.css({ backgroundImage: "url(" + banner + ")" });
$banner.addClass('background-image banner-' + position);
//
$bannerContent.append($bannerTitle).append($bannerNote).append($bannerDesc).append($bannerBtn.attr('href', '/courses'));
$banner.append($bannerContent);
$category.append($banner);
} else {
//colPaginationClass = 'col s6 m6 l6 offset-s6 offset-m6 offset-l6 right-align';
//courseState = 'course-state'
categoryName = "";
paginationStyle = 'white black-text';
cardStyle = 'card-pod-class black';
//
$cardIcon = $('
').attr('src', '/public/img/icon/icon-microphone-white.png');
$sectionCourse.removeClass('section-course');
$category.addClass('section-intro background-image white');
var banner = resourceUrl + '/category/' + category.background;
var img = new Image();
img.onload = function() {
$category.height(this.height);
}
img.src = banner;
$category.css("background-image", "url('" + banner + "')");
// $banner.css({backgroundImage: "url("+banner+")"});
// $banner.addClass('background-image banner-'+position);
}
//
// courses
var $container = $('').addClass('container');
var $rowCourseName = $('').addClass('row hide-on-small-only');
var $colCourseName = $('').addClass('col s8 m6 l6');
var $courseName = $('').attr('href', '/courses');
var $colPagination = $('').addClass('col s4 m6 l6 right-align');
var $btnPrev = $('').addClass('btn-pagination prev-carousel normal').addClass(paginationStyle);
var $btnNext = $('').addClass('btn-pagination next-carousel normal').addClass(paginationStyle);
//
$courseName.append($('').addClass('course-name black-text bold').text(categoryName));
$btnPrev.append($('').addClass('material-icons').text('navigate_before'));
$btnNext.append($('').addClass('material-icons').text('navigate_next'));
//
$colPagination.append($btnPrev).append($btnNext);
$rowCourseName.append($colCourseName.append($courseName)).append($colPagination);
$container.append($rowCourseName);
//
var $programCourse = $('').addClass('relative');
var $carousel = $('').addClass('carousel carousel-slider course-carousel');
var $carouselItem = $('').addClass('carousel-item');
var $rowCourse = $('').addClass('row');
//
// responsive devices
var countCourse = 0;
var responsiveDevice = 4; // Desktop Devices
if (window.matchMedia("(max-width: 600px)").matches) responsiveDevice = 1; // Mobile Devices
else if (window.matchMedia("(min-width: 601px) and (max-width: 992px)").matches) responsiveDevice = 3; // Tablet Devices
//
angular.forEach(category.courses, function(item) {
if (countCourse == 0) {
$carousel.append($carouselItem);
$carouselItem.append($rowCourse);
}
//
var $colCourse = $('').addClass('col s12 m4 l3');
var $card = $('').addClass('card hoverable').addClass(cardStyle);
var $cardImage = $('').addClass('card-image course-image');
var $cardContent = $('').addClass('card-content');
var $courseName = $('').addClass('course-title').text(item.name);
var $courseBrief = $('').addClass('course-brief small').text(item.brief);
if (category.permalink != 'podclass') {
$cardImage.css('background-image', "url('" + resourceUrl + '../../../..' + item.thumbnail + "')");
$cardContent.append($courseName).append($courseBrief);
} else {
$cardImage = $('
').addClass('bg-card').attr('src', resourceUrl + '../../../..' + item.thumbnail);
var $cardIcon = $('
').attr('src', '/public/img/icon/icon-microphone-white.png');
var $cardContent = $('').addClass('course-image course-podclass them-bg-yellow relative');
$cardContent.append($cardIcon).append($courseName);
}
//
var $cardAction = $('').addClass('card-action').attr(courseState, item.code);
$card.append($cardImage).append($cardContent).append($cardAction);
$rowCourse.append($colCourse.append($card));
//$colCourse.addClass(item.state);
$cardAction.addClass(item.state)
//
countCourse++;
if (countCourse == responsiveDevice) {
countCourse = 0;
$carouselItem = $('').addClass('carousel-item');
$rowCourse = $('').addClass('row');
}
});
$programCourse.append($carousel);
$container.append($programCourse);
//console.log($container)
$category.append($sectionCourse.append($container));
element.append($category);
element.ready(function() {
// initialization carrousel program courses
var carousel = element.find('.carousel');
carousel.carousel({
fullWidth: true,
indicators: false
});
// move next carousel
$btnNext.click(function(e) {
e.preventDefault();
e.stopPropagation();
$carousel.carousel('next');
});
// move prev carousel
$btnPrev.click(function(e) {
e.preventDefault();
e.stopPropagation();
$carousel.carousel('prev');
});
// mobile responsive pagination
if (responsiveDevice == 1) {
carousel.carousel({
fullWidth: true,
indicators: true
});
//
$btnPrev.removeClass().addClass('btn-pagination-sm prev-carousel absolute valign-wrapper hide-on-med-and-up');
$btnNext.removeClass().addClass('btn-pagination-sm next-carousel absolute valign-wrapper hide-on-med-and-up');
$container.addClass('relative').append($btnPrev).append($btnNext);
var indicators = element.find('.indicators');
if (index != Object.keys(scope.category).length) indicators.remove();
}
});
});
$compile(element.contents())(scope)
//
});
}, 900);
//
}
}
}])
.directive('categoryCourses', ['$compile', '$routeParams', function($compile, $routeParams) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
//
attrs.$observe('categoryCourses', function(name) {
scope.bannerCourses = name == "";
var castState = ['podclass'];
var courseCount = 1;
var courseType = $routeParams.category;
var courseState = 'course-content';
scope.service.client.category(name).then(function(category) {
// console.log(category);
//
angular.forEach(category, function(item, index) {
var type = item.permalink;
if (!castState.includes(type) && !courseType) {
//
scope.bannerCourses = false;
//
var $section = $('').addClass('section');
var $container = $('').addClass('container');
var $rowCourseName = $('').addClass('row');
var $colCourseName = $('').addClass('col s12 m12 l12');
var $courseName = $('').addClass('section-title black-text bold').text(item.name);
var $courseNote = $('').addClass('section-note red-text regular').text(item.remark);
if (courseCount % 2 == 1) $section.addClass('white');
courseCount++;
//
$rowCourseName.append($colCourseName.append($courseName).append($courseNote));
$container.append($rowCourseName);
//
var $rowCourses = $('').addClass('row');
angular.forEach(item.courses, function(course) {
var $col = $('').addClass('col s6 m4 l3');
var $card = $('').addClass('card card-course hoverable');
var $cardImage = $('').addClass('card-image course-image');
var $cardContent = $('').addClass('card-content');
var $courseTitle = $('').addClass('course-title').text(course.name);
var $courseBrief = $('').addClass('course-brief small').text(course.brief);
var $cardAction = $('').addClass('card-action').attr(courseState, course.code);
//
$cardImage.css('background-image', "url('" + course.thumbnail + "')");
$cardContent.append($courseTitle).append($courseBrief);
$card.append($cardImage).append($cardContent).append($cardAction);
$rowCourses.append($col.append($card));
});
//
$container.append($rowCourses);
element.append($section.append($container));
//
} else if (castState.includes(type) && courseType == 'podclass') {
//
var courseName = 'DBDPODCLASS';
var background = '/public/img/background/background-dbd-pod-class-fade.png';
var backgroundColor = '#484A4B';
// topic & background
var $section = $('').addClass('section valign-wrapper bg-center-bottom');
var $container = $('').addClass('container');
var $courseName = $('').addClass('course-media bold white-text relative center-align').html(courseName);
$section.css("background-image", "url('" + background + "')");
$section.css("background-color", backgroundColor);
$container.append($courseName);
// program
var $rowCourse = $('').addClass('row');
angular.forEach(item.courses, function(course) {
var $colCourse = $('').addClass('col s6 m4 l3');
var $card = $('').addClass('card card-pod-class hoverable black relative');
var $cardImage = $('
').addClass('bg-card').attr('src', course.thumbnail);
var $cardIcon = $('
').attr('src', '/public/img/icon/icon-microphone-white.png');
var $courseImage = $('').addClass('course-image course-podclass them-bg-yellow relative');
var $courseTitle = $('').addClass('course-title white-text').text(course.name);
var $cardAction = $('').addClass('card-action').attr('course-state', course.code);
var $cardTime = $('').addClass('icon-vertical course-time blue-grey-text text-lighten-3 medium right');
var $icon = $('').addClass('material-icons').text('access_time');
var $time = $('').addClass('italic').text(' 0 ชม.');
//
$courseImage.append($cardIcon).append($courseTitle);
$cardTime.append($icon).append($time);
$cardAction.append($cardTime);
$card.append($cardImage).append($courseImage).append($cardAction);
$rowCourse.append($colCourse.append($card));
//
});
$container.append($rowCourse);
element.append($section.append($container));
}
});
//
$compile(element.contents())(scope)
});
});
}
}
}])
.directive('videoIntro', ['$timeout', function($timeout) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
//
var background = '/public/img/background/background-dbd-video.jpg';
//
$timeout(function() {
scope.service.client.video().then(function(video) {
// console.log(video);
//
if (video) {
var btnCourseText = 'เริ่มดู';
var btnPrevClass = 'btn-pagination prev-carousel normal white black-text';
var btnNextClass = 'btn-pagination next-carousel normal white black-text';
// background
var $section = $('').addClass('section-intro relative background-image');
var $container = $('').addClass('container');
var img = new Image();
img.onload = function() {
$section.height(this.height);
}
img.src = background;
$section.css("background-image", "url('" + background + "')");
// pagination
var $pagination = $('').addClass('right-align hide-on-small-only').css('padding', '0 0.75rem');
var $btnPrev = $('').addClass(btnPrevClass).append($('').addClass('material-icons').text('navigate_before'));
var $btnNext = $('').addClass(btnNextClass).append($('').addClass('material-icons').text('navigate_next'));
$pagination.append($btnPrev).append($btnNext);
$container.append($pagination);
// program
var $sectionCourse = $('').addClass('program-intro');
scope.courseVideoContent = function() {
//
var $carousel = $('').addClass('carousel carousel-slider course-carousel');
var $carouselItem = $('').addClass('carousel-item');
var $rowCourse = $('').addClass('row');
// responsive devices
var countCourse = 1;
var responsiveDevice = 5;
if (window.matchMedia("(max-width: 600px)").matches) responsiveDevice = 2; // Mobile Devices
else if (window.matchMedia("(min-width: 601px) and (max-width: 992px)").matches) responsiveDevice = 4; // Tablet Devices
else responsiveDevice = 5; // Desktop Devices
angular.forEach(video, function(item) {
if (countCourse == 1) {
$carousel.append($carouselItem);
$carouselItem.append($rowCourse);
}
//
var $colCourse = $('').addClass('col s12 m4 l3');
var $card = $('').addClass('card card-video hoverable black relative');
var $cardImage = $('
').addClass('bg-card').attr('src', item.banner);
var $cardIcon = $('
').attr('src', '/public/img/icon/icon-play-video.png');
var $courseImage = $('').addClass('course-image course-video them-bg-color relative');
var $courseTitle = $('').addClass('course-title white-text').text(item.title);
var $cardAction = $('').addClass('card-action');
var $btnCourse = $('').addClass('waves-effect waves-light btn-small btn medium z-depth-0').text(btnCourseText);
var $cardTime = $('').addClass('icon-vertical course-time blue-grey-text text-lighten-3 medium right');
var $icon = $('').addClass('material-icons').text('access_time');
var $time = $('').addClass('italic').text(' 0 ชม.');
//
$courseImage.append($cardIcon).append($courseTitle);
$btnCourse.attr('href', '/video/' + item.video_id);
if (item.website_url) {
$btnCourse.attr('target', '_blank');
$btnCourse.attr('href', item.website_url);
}
$btnCourse.click(function() {
scope.scrollToTop();
});
// $cardTime.append($icon).append($time);
$cardAction.append($btnCourse).append($cardTime);
$cardAction.append($cardTime);
$card.append($cardImage).append($courseImage).append($cardAction);
$rowCourse.append($colCourse.append($card));
//
countCourse++;
if (countCourse == responsiveDevice) {
countCourse = 1;
$carouselItem = $('').addClass('carousel-item');
$rowCourse = $('').addClass('row');
}
});
$sectionCourse.append($carousel);
// initialization carrousel program courses
var carousel = element.find('.carousel');
carousel.carousel({
fullWidth: true,
indicators: false
});
// move next carousel
$btnNext.click(function(e) {
e.preventDefault();
e.stopPropagation();
$carousel.carousel('next');
});
// move prev carousel
$btnPrev.click(function(e) {
e.preventDefault();
e.stopPropagation();
$carousel.carousel('prev');
});
// mobile responsive pagination
if (responsiveDevice == 2) {
carousel.carousel({
fullWidth: true,
indicators: true
});
//
$btnPrev.removeClass().addClass('btn-pagination-sm prev-carousel absolute valign-wrapper hide-on-med-and-up');
$btnNext.removeClass().addClass('btn-pagination-sm next-carousel absolute valign-wrapper hide-on-med-and-up');
$container.addClass('relative').append($btnPrev).append($btnNext);
} else {
$btnPrev.removeClass().addClass(btnPrevClass);
$btnNext.removeClass().addClass(btnNextClass);
$pagination.append($btnPrev).append($btnNext);
}
}
//
$container.append($sectionCourse);
$section.append($container);
element.append($section);
element.ready(function() {
scope.courseVideoContent();
$(window).on('resize', function() {
$sectionCourse.empty();
scope.courseVideoContent();
});
});
//
}
});
}, 900);
//
}
}
}])
.directive('programVideo', ['$routeParams', function($routeParams) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
//
var courseName = 'คลังความรู้ธุรกิจ';
var background = '/public/img/background/background-dbd-video-fade.png';
var backgroundColor = '#0A0A12';
var courseType = $routeParams.category;
//
if (courseType == 'video') {
scope.service.client.video().then(function(video) {
// console.log(video);
//
// topic & background
var $section = $('').addClass('section valign-wrapper bg-center-bottom');
var $container = $('').addClass('container');
var $courseName = $('').addClass('course-media bold white-text relative center-align').html(courseName);
$section.css("background-image", "url('" + background + "')");
$section.css("background-color", backgroundColor);
$container.append($courseName);
// program
var $rowCourse = $('').addClass('row');
angular.forEach(video, function(item) {
var $colCourse = $('').addClass('col s6 m4 l3');
var $card = $('').addClass('card card-video hoverable black relative');
var $cardImage = $('
').addClass('bg-card').attr('src', item.banner);
var $cardIcon = $('
').attr('src', '/public/img/icon/icon-play-video.png');
var $courseImage = $('').addClass('course-image course-video them-bg-color relative');
var $courseTitle = $('').addClass('course-title white-text').text(item.title);
var $cardAction = $('').addClass('card-action');
var $btnCourse = $('').addClass('waves-effect waves-light btn-small btn medium z-depth-0').text('เริ่มดู');
var $cardTime = $('').addClass('icon-vertical course-time blue-grey-text text-lighten-3 medium right');
var $icon = $('').addClass('material-icons').text('access_time');
var $time = $('').addClass('italic').text(' 0 ชม.');
//
$courseImage.append($cardIcon).append($courseTitle);
$btnCourse.attr('href', '/video/' + item.video_id);
$btnCourse.click(function() {
scope.scrollToTop();
});
$cardTime.append($icon).append($time);
// $cardAction.append($cardTime);
$cardAction.append($btnCourse).append($cardTime);
$card.append($cardImage).append($courseImage).append($cardAction);
$rowCourse.append($colCourse.append($card));
});
$container.append($rowCourse);
//
$section.append($container);
element.append($section);
})
//
}
//
}
}
}])
.directive('videoView', ['$routeParams', '$timeout', function($routeParams, $timeout) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
//
var video_id = $routeParams.id;
$timeout(function() {
scope.service.client.video(video_id).then(function(video) {
scope.video = video;
// console.log(scope.video);
//
var videContent = element.find('#vide_content');
var $video = $('').addClass('responsive-video white').attr('controls', 'controls').css('width', '100%');
var $source = $('').attr('type', 'video/mp4');
$source.attr('src', scope.video.video_url);
$video.append($source);
//
videContent.append($video);
});
scope.service.learner.videolog(video_id).then(function(data) {
});
}, 400);
//
}
}
}])
.directive('howToLearn', [function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
//
scope.service.client.learn().then(function(learns) {
// console.log(learns);
//
var $collapsible = $('').addClass('collapsible grey lighten-3');
$collapsible.attr('id', 'collapsible');
element.append($collapsible);
angular.forEach(learns, function(item) {
var $li = $('');
var $header = $('').addClass('collapsible-header grey lighten-3 valign-wrapper');
var $question = $('').addClass('black-text').text(item.title);
var $badge = $('').addClass('badge');
var $body = $('').addClass('collapsible-body');
var $answer = $('').addClass('black-text').html(item.content);
//
$badge.append($('').addClass('material-icons bold large').text('add'));
$li.append($header.append($question).append($badge));
$li.append($body.append($answer));
$collapsible.append($li);
});
//
$collapsible.collapsible();
});
//
}
}
}])
.directive('instructor', ['$routeParams', function($routeParams) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
//
var instructorId = $routeParams.id;
// console.log(instructorId);
//
if (_.isUndefined(instructorId)) {
/* faculty of lecturers */
scope.service.client.instructor().then(function(instructors) {
console.log(instructors);
//
if (instructors) {
var $row = $('').addClass('row').css('margin', '0 -0.75rem');
//
angular.forEach(instructors, function(item) {
var $col = $('').addClass('col s6 m4 l3');
var $link = $('').attr('href', '/lecturer/' + item.instructor_id);
var $card = $('').addClass('card-instructor');
var $cardImage = $('').addClass('card-instructor-image');
var $cardContent = $('').addClass('card-instructor-content');
var $title = $('').addClass('instructor-title').html(item.name + '
' + item.lastname);
var $brief = $('').addClass('instructor-brief').html(item.title);
//
$cardImage.css('background-image', 'url("' + item.photo + '")');
$cardContent.append($title).append($brief);
$card.append($cardImage).append($cardContent);
$link.click(function() {
scope.scrollToTop();
});
$col.append($link.append($card));
$row.append($col);
});
//
element.append($row);
}
});
} else {
/* profile lecturer */
scope.service.client.instructor(instructorId).then(function(instructor) {
// console.log(instructor);
//
scope.instructor = instructor;
});
}
//
}
}
}])
.directive('frequentlyAskedQuestion', [function() {
/* need FAQ data from dinsorworks */
return {
restrict: 'A',
link: function(scope, element, attrs) {
//
scope.service.client.faq().then(function(faq) {
// console.log(faq);
//
var $collapsible = $('').addClass('collapsible grey lighten-3');
$collapsible.attr('id', 'collapsible');
element.append($collapsible);
angular.forEach(faq, function(item) {
var $li = $('');
var $header = $('').addClass('collapsible-header grey lighten-3 valign-wrapper');
var $question = $('').addClass('black-text').text(item.question);
var $badge = $('').addClass('badge');
$badge.append($('').addClass('material-icons bold large').text('add'));
$li.append($header.append($question).append($badge));
var $body = $('').addClass('collapsible-body');
var $answer = $('').addClass('black-text').html(item.answer);
$li.append($body.append($answer));
$collapsible.append($li);
});
//
$collapsible.collapsible();
});
//
}
}
}])
.directive('knowledge', ['$routeParams', function($routeParams) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
//
var tipId = $routeParams.id;
//
if (_.isUndefined(tipId)) {
scope.service.client.tip().then(function(tips) {
// console.log(tips);
if (tips) {
scope.knowledgeContent = function() {
var $container = $('').addClass('container');
var $row = $('').addClass('row relative');
var $boxShelf = $('').addClass('box-shelf white absolute');
// responsive devices
var count = 1;
var responsiveDevice = 3;
if (window.matchMedia("(max-width: 600px)").matches) responsiveDevice = 1; // Mobile Devices
else if (window.matchMedia("(min-width: 601px) and (max-width: 992px)").matches) responsiveDevice = 3; // Tablet Devices
else responsiveDevice = 3; // Desktop Devices
angular.forEach(tips, function(item) {
if (count == 1) {
$container.append($row);
$row.append($boxShelf);
}
//
var $col = $('').addClass('col s12 m4 l4');
var $link = $('').attr('href', '/practical-fact/' + item.tip_id);
var $card = $('').addClass('card-trip bg-cover-center');
//
$card.css('background-image', 'url("' + item.banner + '")');
$link.append($card);
$link.click(function() {
scope.scrollToTop();
});
$row.append($col.append($link));
count++;
//
if (count == (responsiveDevice + 1)) {
count = 1;
$row = $('').addClass('row relative');
$boxShelf = $('').addClass('box-shelf white absolute');
}
});
element.append($container);
}
element.ready(function() {
scope.knowledgeContent();
// responsive resize
$(window).on('resize', function() {
element.empty();
scope.knowledgeContent();
});
});
}
//
});
} else {
//
scope.service.client.tip(tipId).then(function(tip) {
scope.tip = tip;
// console.log(scope.tip);
/* get thumbnail */
element.find('.card-trip').css('background-image', 'url("' + scope.tip.banner + '")');
scope.knowledgeContent = function() {
// responsive devices
if (window.matchMedia("(max-width: 600px)").matches) { // Mobile Devices
var boxTrip = element.find('.box-trip-topic');
boxTrip.removeClass('valign-wrapper');
}
};
element.ready(function() {
scope.knowledgeContent();
// responsive resize
$(window).on('resize', function() {
scope.knowledgeContent();
});
});
});
//
}
//
}
}
}])
/* Course */
.directive('alertPanel', ['$timeout', function($timeout) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
scope.$watch('alert.msg', function(msg, old) {
//console.log(msg)
//console.log(old)
var $panel = angular.element('#course-navigator .panel');
var $btnClose = angular.element('').addClass('close-btn material-icons').text('close');
$panel.addClass('relative').append($btnClose);
//console.log($panel.innerWidth())
if (msg) {
//element.empty();
angular.element('').css('width', '100%').html(msg).appendTo(element);
element.addClass('alert-panel valign-wrapper');
$panel.addClass('show');
//scope.timeout(3000, scope.$parent.alert = {});
scope.hideAlert = function() {
$panel.removeClass('show');
scope.alert.msg = '';
element.empty();
}
$timeout(function() {
scope.hideAlert();
}, 7000);
$btnClose.on('click', function() {
scope.hideAlert();
});
}
/*if(msg=="") {
if($panel.hasClass('show')) {
$panel.removeClass('show');
element.empty();
//console.log(msg)
}
}*/
});
}
}
}])
// .directive('courseState', [function() {
// return {
// restrict: 'A',
// link: function(scope, element, attrs) {
// attrs.$observe('courseState', function(code)
// {
// if(code) {
// // scope.service.course.state(code).then(function(state) {
// // console.log(state);
// // if(state.code=='enrol') {
// element.on('click', function() {
// element.find('a').addClass('normal regular disabled').text('กำลังโหลด...').unbind("click");
// });
// // }
// // });
// //
// };
// });
// }
// }
// }])
.directive('courseOutlines', [function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
attrs.$observe('courseOutlines', function(total) {
// console.log(total)
// console.log(scope.course)
if (total) {
var $container = $('').addClass('container');
var $row = $('').addClass('row');
var $title = $('').addClass('head-text underline-text')
if (scope.course.title_text.outline) {
$container.append($title.text(scope.course.title_text.outline))
}
//
if (scope.course.outlines.length) {
angular.forEach(scope.course.outlines, function(outline, key) {
var $outline = $('
').addClass('outline col s12 m4 l4');
var $title = $('').addClass('title dbadman bold relative');
var $chapter = $('').addClass('outdent right-align').text(outline.item);
var $brief = $('').addClass('brief normal light').text(outline.brief);
var $btnReadMore = $('').addClass('btn-flat small them-text-color regular padding-0').text('อ่านต่อ');
//
$title.append($chapter).append($('').text(outline.title));
$outline.append($title);
// check brief null
if (outline.brief) {
$outline.append($brief).append($btnReadMore);
} else {
$outline.css('min-height', 'unset');
}
$btnReadMore.on('click', function() {
$('.outlines .outline .btn-flat').show();
$('.outlines .outline .brief').css({
overflow: 'hidden',
height: '9em',
marginBottom: '0',
webkitBoxOrient: 'vertical',
webkitLineClamp: '6'
});
//
$brief.css({
overflow: 'visible',
height: 'fit-content',
marginBottom: $btnReadMore.height(),
webkitBoxOrient: 'unset',
webkitLineClamp: 'unset'
});
$('.outlines .outline .btn-flat').css('margin-bottom', $brief.height() - 162 + 'px');
$btnReadMore.hide();
});
$container.append($row.append($outline));
if (scope.course.type == 'live') {
$outline.append($('').addClass('date-calendar normal medium').text(outline.type.textdate))
$outline.append($('').addClass('time normal medium').text(outline.type.time))
$outline.append($('
').attr('src', outline.type.icon).css('margin-top', '1em'))
}
});
} else {
element.remove();
}
//
element.css('background-image', 'url(' + scope.course.bg_outline + ')').addClass('cover');
element.append($container);
}
});
}
}
}])
.directive('courseDocument', [function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
attrs.$observe('courseDocument', function(code) {
//
if (code && !_.isUndefined(scope.course.books)) {
// console.log(scope.course.books);
if (Object.keys(scope.course.books).length) {
var $container = $('').addClass('container').css('margin-top', '2em');
var $header = $('').addClass('black-text bold').text('เอกสารประกอบการเรียน');
var $msg = $('').addClass('red-text regular center-align').css('margin', '6rem 0');
var $row = $('').addClass('row');
$container.append($header);
// check enroll course
scope.service.course.state(code).then(function(response) {
var state = response.code;
// console.log(response);
//
if (code && !_.isUndefined(state)) {
if (state == 'continue' || state == 'review' || state == 'start') {
//
angular.forEach(scope.course.books, function(item) {
if (item.file) {
var cover = item.cover ? item.cover : '/public/img/background/background-no-picture-500x500.jpg';
//
var $col = $('').addClass('col s6 m3 l2');
var $action = $('').attr('href', item.file).attr('target', '_blank').attr('download', item.title);
var $image = $('
').addClass('document-image').attr('src', cover).attr('alt', item.title);
var $title = $('').addClass('document-title black-text regular truncate-3').text(item.title);
//
$action.append($image).append($title);
$row.append($col.append($action));
}
});
$container.append($row);
} else {
$msg.text('กรุณาลงทะเบียนเรียน เพื่อดาวน์โหลดเอกสารประกอบการเรียน');
$container.append($msg);
}
} else {
$msg.text('กรุณาลงทะเบียนเรียน เพื่อดาวน์โหลดเอกสารประกอบการเรียน');
$container.append($msg);
}
element.append($container).show();
});
//
} else element.hide();
} else element.hide();
//
});
}
}
}])
.directive('timeCountdown', [function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
attrs.$observe('timeCountdown', function(type) {
if (type == 'quiz' || type == 'final_test') {
var $card = $('').addClass('card-alert center-align z-depth-2');
// var $alertTitle = $('').addClass('card-alert-title regular valign-wrapper').text('บทเรียนมีคำถามระหว่างเรียน 20 คำถาม');
var $alertTitle = $('').addClass('card-alert-title regular valign-wrapper');
var $alertTimeCountdown = $('').addClass('card-alert-time medium normal').css('margin', '0 0.5em').text('00 : 00 : 00');
//
$card.append($alertTitle.append($alertTimeCountdown));
element.append($card);
// countdown timer
var count = 30 * 60;
var counter = setInterval(timer, 1000);
function timer() {
count = count - 1;
if (count == -1) {
// alert('finish');
clearInterval(counter);
return;
}
var seconds = count % 60;
var minutes = Math.floor(count / 60);
var hours = Math.floor(minutes / 60);
minutes %= 60;
hours %= 60;
$alertTimeCountdown.text(
(hours.toString().length == 1 ? '0' : '') + hours + " : " +
(minutes.toString().length == 1 ? '0' : '') + minutes + " : " +
(seconds.toString().length == 1 ? '0' : '') + seconds
);
}
}
//
});
}
}
}])
.directive('bookCover', [function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
attrs.$observe('bookCover', function(cover) {
if (cover != '') {
var image = scope.activity.resource.cover;
var title = scope.activity.resource.title;
var file = scope.activity.resource.file;
var $document = $('').css('padding', '1em');
var $img = $('
').css('width', '10em').attr('src', image);
var $title = $('').css('margin-bottom', '1.5em').text(title);
var $download = $('').append($('
').attr('src', '//services.promptskill.com/app/program/public/img/icon/icon-book-open.png'));
$download.attr('href', 'https:' + file);
$download.attr('target', '_blank');
$document.append($img).append($title).append($download);
element.append($document);
}
});
}
}
}])
/* Learner */
.directive('courseCertificate', [function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
scope.cert_title = 'กำลังตรวจสอบ...';
//
scope.service.course.certificate(scope.course.code).then(function(cert) {
// console.log(cert);
if (!cert.reference) {
scope.cert_title = 'คุณได้เรียนหลักสูตรจบแล้ว';
scope.cert_msg = 'ขออภัย คะแนนของคุณไม่ผ่านเงื่อนไขการรับหนังสือรับรอง';
}
})
}
}
}])
.directive('certificateVerification', ['$routeParams', '$window', function($routeParams, $window) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
//
scope.code = $routeParams.code;
//console.log(scope.code);
if (scope.code) {
scope.card = 'certificate';
scope.service.learner.certificated(scope.code).then(function(cert) {
scope.cert = cert;
scope.service.course.info(cert.course).then(function(course) {
scope.cert.course = course;
});
});
} else scope.card = 'form';
scope.checkCertificate = function() {
const code = $('#certificate_id').val();
$window.location.href = '/certified/' + code;
// scope.card = 'certificate';
}
//
}
}
}])
/* LRS */
// .directive('activityEmbed', ['$timeout', function($timeout) {
// return {
// restrict: 'A',
// link: function(scope, element, attrs)
// {
// //
// attrs.$observe('activityEmbed', function(module)
// {
// if(module !='') {
// $timeout(function() {
// var $iframe = $('#moobed');
// $iframe.attr('scrolling', 'yes');
//
// // $iframe.on("load", function() {
// // $iframe.contents().find("body.h5p-embed").css('overflow', 'auto');
// // });
// }, 1000);
// }
// });
// //
// }
// }
// }])
/* Form */
.directive('formHelper', ['$window', function($window) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
attrs.$observe('formHelper', function(text) {
var helper = scope.helper;
// console.log(text)
// console.log(helper)
if (text) {
if (!helper.hasOwnProperty('type')) {
helper.title = 'มีบางอย่างผิดพลาด';
helper.type = 'warning';
}
Swal.fire({
title: helper.title,
html: text,
icon: helper.type,
confirmButtonText: 'ตกลง',
// confirmButtonColor: "#9E9E9E",
heightAuto: false
}).then(function() {
//console.log(text)
if (scope.helper.close) {
$window.top.close();
}
if (scope.helper.redirect) {
$window.location.href = '/' + scope.helper.redirect;
}
scope.helper = {}
});
}
});
}
}
}])
.directive('formSignup', ['$window', function($window) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
//
scope.step = 'memberTypeStep';
scope.member_type = 'กรุณาเลือกประเภทสมาชิก';
scope.alert_text = 'กรุณาตรวจสอบและกรอกข้อมูลใหม่ให้ถูกต้อง';
scope.policyModal = true;
/* modal policy */
element.ready(function() {
if (scope.policyModal) {
var modal = element.find('.modal');
modal.modal({
dismissible: false
}).modal('open');
scope.toWebPage = function() {
$window.location.href = '/';
}
}
});
/* signup form multiple steps */
scope.nextStep = function(id, step) {
var status = false;
if (id != 'null') {
if (scope.validateForm(id)) {
status = true;
} else {
Swal.fire({
title: 'มีบางอย่างผิดพลาด',
text: scope.alert_text,
icon: 'warning',
confirmButtonText: 'ตกลง',
heightAuto: false
});
scope.alert_text = 'กรุณาตรวจสอบและกรอกข้อมูลใหม่ให้ถูกต้อง';
}
} else status = true;
if (status) scope.step = step;
}
scope.prevStep = function(step) {
scope.step = step;
}
/* validation form */
scope.validateForm = function(id) {
var status = false;
var validate = 0;
// validate input
var formCheck = angular.element('#' + id).find('input');
angular.forEach(formCheck, function(input) {
var $input = angular.element(input);
if ($input.prop('required') && $input.val() == '') {
validate++;
}
});
// validate select
formCheck = angular.element('#' + id).find('select');
angular.forEach(formCheck, function(input) {
var $input = angular.element(input);
if ($input.prop('required') && $input.val() == null) {
validate++;
}
});
// validate radio
formCheck = angular.element('#' + id).find('input[type=radio]');
var inputRadio = [];
angular.forEach(formCheck, function(input) {
// var $input = angular.element(input);
var nameInput = angular.element(input).attr('name');
if (!inputRadio.includes(nameInput)) {
inputRadio.push(nameInput);
}
});
angular.forEach(inputRadio, function(input) {
if (!$('input[name=' + input + ']').is(':checked')) {
validate++;
}
});
// validate checkbox
formCheck = angular.element('#' + id).find('input[type=checkbox]');
var inputCheckbox = [];
angular.forEach(formCheck, function(input) {
var nameInput = angular.element(input).attr('name');
if (!inputCheckbox.includes(nameInput)) {
inputCheckbox.push(nameInput);
}
});
angular.forEach(inputCheckbox, function(input) {
if (!$('input[name=' + input + ']').is(':checked')) {
if (input != 'same_as_current_address')
validate++;
}
});
// validate username
if (angular.element('#' + id).find('input[name=username]').length) {
var username = $('input[name=username]');
var pattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
var $helper = username.next().next();
if (pattern.test(username.val()) == false) {
scope.alert_text = 'รูปแบบอีเมลไม่ถูกต้อง';
validate++;
}
// check member account
// scope.service.member.valid(username.val()).then(function(data) {
// console.log(data);
// if(data) {
// validate++;
// scope.alert_text = data.msg;
// username.removeClass("valid").addClass("invalid");
// $helper.attr('data-error', data.msg);
// }else {
// username.removeClass("invalid").addClass("valid");
// $helper.attr('data-error','รูปแบบอีเมลไม่ถูกต้อง');
// }
// });
// console.log(validate);
}
// validate password
if (angular.element('#' + id).find('input[name=password]').length) {
//
var password = $('input[name=password]').val();
var confirm_password = $('input[name=confirm_password]').val();
//
if ((password.length < 8 || confirm_password < 8) ||
(password.search(/[A-Z]/) < 0 || confirm_password.search(/[A-Z]/) < 0) ||
(password.search(/[a-z]/) < 0 || confirm_password.search(/[a-z]/) < 0) ||
(password.search(/[0-9]/) < 0 || confirm_password.search(/[0-9]/) < 0)) {
scope.alert_text = 'กรุณาตั้งรหัสผ่านให้เป็นไปตามเงื่อนไขที่กำหนด';
validate++;
}
if (password != confirm_password) {
scope.alert_text = 'รหัสผ่านไม่ตรงกัน';
validate++;
}
}
// validate juristic id
if (angular.element('#' + id).find('input[name=corporate_number]').length && scope.form['occupation'] === 'ธุรกิจส่วนตัว/เจ้าของกิจการ') {
const inputId = 'corporate_number';
const input = document.getElementById(inputId);
const helper_text = document.getElementById(`helper_${inputId}`);
const val = input.value.replace(/\D/g, '');
if (val.length < 13) {
validate++;
input.classList.remove("valid");
input.classList.add("invalid");
if (helper_text) {
helper_text.setAttribute('data-error', 'กรุณากรอกให้ครบ 13 หลัก');
}
return;
}
if (isValidJuristicId(val)) {
input.classList.remove("invalid");
input.classList.add("valid");
if (helper_text) {
helper_text.removeAttribute('data-error');
}
} else {
validate++;
input.classList.remove("valid");
input.classList.add("invalid");
if (helper_text) {
helper_text.setAttribute('data-error', 'เลขทะเบียนนิติบุคคลไม่ถูกต้อง');
}
}
}
if (validate == 0) status = true;
return status;
}
/* Form Condition */
// limit length input
scope.limitLength = function(event, limit) {
var char = String.fromCharCode(event.which);
var length = event.target.value.length;
if (length >= limit || !(/[0-9]/.test(char))) {
event.preventDefault();
}
}
// only english characters
scope.onlyEnglishCharacters = function(e) {
var orgi_text = "ๅภถุึคตจขชๆไำพะัีรนยบลฃฟหกดเ้่าสวงผปแอิืทมใฝ๑๒๓๔ู฿๕๖๗๘๙๐ฎฑธํ๊ณฯญฐฅฤฆฏโฌ็๋ษศซฉฮฺ์ฒฬฦ";
var chk_text = e.target.value.split("");
chk_text.filter(function(s) {
if (orgi_text.indexOf(s) != -1) {
e.target.value = e.target.value.replace(RegExp(s, "g"), '');
}
});
}
// only thai characters
scope.onlyThaiCharacters = function(e) {
var orgi_text = "ๅภถุึคตจขชๆไำพะัีรนยบลฃฟหกดเ้่าสวงผปแอิืทมใฝ๑๒๓๔ู฿๕๖๗๘๙๐ฎฑธํ๊ณฯญฐฅฤฆฏโฌ็๋ษศซฉฮฺ์ฒฬฦ";
var chk_text = e.target.value.split("");
chk_text.filter(function(s) {
if (orgi_text.indexOf(s) == -1) {
e.target.value = e.target.value.replace(RegExp(s, "g"), '');
}
});
}
// validation username
$('#username').on('blur', function() {
var input = $("#username");
var $helper = input.next().next();
scope.validationUsername = true;
//
if (input.val() && input.hasClass('valid')) {
scope.service.member.valid(input.val()).then(function(data) {
// console.log(data);
if (data) {
scope.validationUsername = true;
input.removeClass("valid").addClass("invalid");
$helper.attr('data-error', data.msg);
} else {
scope.validationUsername = false;
input.removeClass("invalid").addClass("valid");
$helper.attr('data-error', 'รูปแบบอีเมลไม่ถูกต้อง');
}
});
}
});
// valid ID card
scope.validIdCard = function() {
var input = $("#id_card_number");
var id = input.val();
var disabled = true;
if (id.length >= 13 && $("#id_card_number").hasClass('valid')) {
for (var i = 0, sum = 0; i < 12; i++) {
sum += parseInt(id.charAt(i)) * (13 - i);
}
let mod = sum % 11;
let check = (11 - mod) % 10;
if (check == parseInt(id.charAt(12))) {
disabled = false;
input.removeClass("invalid").addClass("valid");
$("#helper").attr('data-error', 'กรุณากรอกให้ถูกต้อง');
} else {
disabled = true;
input.removeClass("valid").addClass("invalid");
$("#helper").attr('data-error', 'เลขประจำตัวประชาชนไม่ถูกต้อง');
}
}
return disabled;
}
$("#id_card_number").on("keyup", function(e) {
var input = $("#id_card_number");
scope.validationIdCard = true;
//
if (e.target.value.length == 13) {
scope.service.member.valid(e.target.value).then(function(data) {
// console.log(data);
if (data) {
scope.validationIdCard = true;
input.removeClass("valid").addClass("invalid");
$("#helper").attr('data-error', data.msg);
} else {
scope.validationIdCard = false;
input.removeClass("invalid").addClass("valid");
$("#helper").attr('data-error', 'กรุณากรอกให้ถูกต้อง');
}
});
}
})
$(":input").on("keyup", function(e) {
var orgi_text = "<>";
var chk_text = e.target.value.split("");
chk_text.filter(function(s) {
if (orgi_text.indexOf(s) != -1) {
e.target.value = e.target.value.replace(RegExp(s, "g"), '');
}
});
})
// input upload and preview profile image
$('#profile').on("change", function(event) {
var reader = new FileReader();
reader.onload = function() {
$(".user-profile").each(function() {
$(this).attr('src', reader.result);
});
}
reader.readAsDataURL(event.target.files[0]);
});
// valid juristic id
function isValidJuristicId(id) {
if (!id) return false;
const digits = id.replace(/\D/g, '');
if (digits.length !== 13) return false;
const nums = digits.split('').map(n => parseInt(n, 10));
let sum = 0;
for (let i = 0; i < 12; i++) {
const weight = 13 - i;
sum += nums[i] * weight;
}
const checkDigit = (11 - (sum % 11)) % 10;
return checkDigit === nums[12];
}
scope.checkJuristicId = function(inputId) {
const input = document.getElementById(inputId);
const helper_text = document.getElementById(`helper_${inputId}`);
const val = input.value.replace(/\D/g, '');
if (val.length < 13) {
input.classList.remove("valid");
input.classList.add("invalid");
if (helper_text) {
helper_text.setAttribute('data-error', 'กรุณากรอกให้ครบ 13 หลัก');
}
return;
}
if (isValidJuristicId(val)) {
input.classList.remove("invalid");
input.classList.add("valid");
if (helper_text) {
helper_text.removeAttribute('data-error');
}
} else {
input.classList.remove("valid");
input.classList.add("invalid");
if (helper_text) {
helper_text.setAttribute('data-error', 'เลขทะเบียนนิติบุคคลไม่ถูกต้อง');
}
}
};
// dropdown address
// scope.service.member.address().then(function(data) {
// scope.address = data;
//
// scope.addressChange = function(selectId) {
// scope.subdistrict_address = [];
//
// // search district by province id
// if (selectId == 'province' && scope.form.province) {
// scope.district_address = [];
//
// angular.forEach(scope.address.amphoe, function(item) {
// if (item.province_id == scope.form.province.province_id) {
// scope.district_address.push(item);
// }
// });
// }
//
// // search subdistrict by district id
// if (selectId == 'district' && scope.form.district) {
// angular.forEach(scope.address.district, function(item) {
// if (item.amphoe_id == scope.form.district.amphoe_id) {
// scope.subdistrict_address.push(item);
// }
// });
// }
//
// }
// });
$(document).ready(function() {
let data_thai_address = null;
function initProvinceSelects() {
if (!data_thai_address) return;
const provinces = data_thai_address.provinces || [];
$('[data-group][data-role="province"]').each(function() {
const $provinceSelect = $(this);
if ($provinceSelect.children('option').length <= 1) {
$provinceSelect.empty().append('');
$.each(provinces, function(index, item) {
$provinceSelect.append($('');
$subDistrictSelect.empty().append('');
const districts = data_thai_address.district.filter(d => d.province_code == provinceId);
$.each(districts, function(index, item) {
$districtSelect.append($('');
const subdistricts = data_thai_address.subdistrict.filter(d => d.district_code == districtId);
$.each(subdistricts, function(index, item) {
$subDistrictSelect.append($('