function dtoptions(DTOptionsBuilder){ return function(opt){ var height = $(window).height() - 200; var nlen = Math.round(height/32); var lenMenu = [15, 25, 50]; //default nlen = 10; for(var i=0; i lfTgt<"pull-left"i>p' // if(!opt.dom) opt.dom = '<"pull-left"B> <"pull-right"f><"pull-right"l>Tgt<"pull-left"i>p'; if(!opt.dom) opt.dom = '<"html5buttons pull-left"B> lfTgt<"pull-left"i>p'; // opt.length = 15; // asal if(!opt.length) { opt.length = nlen; opt.len = lenMenu.concat(-1); opt.disp = lenMenu.concat("All"); } if(!opt.button || !opt.bfunction) { opt.button = []; opt.bfunction = []; } else { var btn = []; var dtb = opt.button; for(var i = 0; i < dtb.length; i++ ){ var o = dtb[i]; btn.push({ text: ' ' + o.name, action: opt.bfunction[o.action] }) } opt.button = btn; } // if(!opt.sort) opt.sort = [[0,'asc']] if(!opt.sort) opt.sort = []; return DTOptionsBuilder.newOptions() .withDOM(opt.dom) .withPaginationType('full_numbers') .withOption('order', opt.sort) // .withDOM('<"html5buttons"B>lTfgitp') .withOption("lengthMenu", [opt.len, opt.disp]) .withDisplayLength(opt.length) // .withOption('serverSide', true) .withLanguage(opt.language) .withOption('ajax',{ url: 'php/sql.php', data: opt.datapost, type: 'POST', dataSrc: function(e){ if(opt.results != undefined) { return opt.results(e); } else { return e; } }, error: function(xhr, error, thrown) { var getError = { xhr: xhr, error: error, thrown: thrown } if(opt.error != undefined) opt.error(getError); console.log(xhr.responseText); }, reloadData: function () { // if(opt.reloadData != undefined) opt.reloadData(); this.reload = true; return this; } }) .withButtons(opt.button) .withOption('fnRowCallback',opt.rowCallback) .withOption('drawCallback', function(settings){ $('[data-toggle="tooltip"]').tooltip({trigger:'hover'}); if(opt.drawcallback != undefined) opt.drawcallback(settings); }) .withOption('createdRow', function(row) { // Recompiling so we can bind Angular directive to the DT if(opt.createrow) opt.createrow(row); // $compile(angular.element(row).contents())($scope); }) .withOption('initComplete', function(){ // $('[data-toggle="tooltip"]').tooltip({trigger:'hover'}); // Do your stuff here, you could even fire your own event here with $rootScope.$broadcast('tableInitComplete'); if(opt.init != undefined) opt.init(); }); } } function file($http,$httpParamSerializerJQLike){ var dp = function(obj,url){ var urls = "php/sql.php"; var fd = new FormData(); // for (const prop in obj) { // fd.append(prop,obj[prop]); // } angular.forEach(obj, function (value, key) { if(key.indexOf('[]') != -1){ angular.forEach(value, function (file) { fd.append(key, file); }); } else { fd.append(key, value); } }); // Display the values // for (var value of fd.values()) { // console.log(value); // } // return; if(url){ urls = url; } return $http({ url: urls, method: 'POST', data: fd, // withCredentials: true, headers: {'Content-Type': undefined }, // transformRequest: angular.identity }); } return dp; // $http.post(uploadUrl, fd, { // withCredentials: true, // headers: {'Content-Type': undefined }, // transformRequest: angular.identity // }) // .success(function(e){ // console.log(e); // }) // .error(function(){ // // }); } function get($http){ var dp = function(parameter){ return $http({ url: "php/sql.php", method: 'GET', params: parameter, paramSerializer: '$httpParamSerializerJQLike' }); } return dp; } function json($http){ var dp = function(parameter){ return $http({ // headers: { 'Context-Type': 'application/json' }, headers: {'Content-Type': 'application/x-www-form-urlencoded'}, url: "php/sql.php", method: "POST", data: ngParam(parameter), }); } return dp; } function pageloading($http,$httpParamSerializerJQLike){ return function(parameter,success,fail,url){ // return $http({ // // headers: { 'Context-Type': 'application/json' }, // // url: baseUrl + 'auth' // url: "php/sql.php", // method: "POST", // data: ngParam(parameter), // headers: {'Content-Type': 'application/x-www-form-urlencoded'} // }); var urls = "php/sql.php"; if(url){ urls = url; } loading() return $http({ url: urls, method: 'POST', data: $httpParamSerializerJQLike(parameter), headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }).success(function(e){ release(); success(e); }) // .finally(function() { // // called no matter success or failure // // $scope.loading = false; // show('loading',false); // }); } } function post($http,$httpParamSerializerJQLike){ var dp = function(parameter,url){ // return $http({ // // headers: { 'Context-Type': 'application/json' }, // // url: baseUrl + 'auth' // url: "php/sql.php", // method: "POST", // data: ngParam(parameter), // headers: {'Content-Type': 'application/x-www-form-urlencoded'} // }); var urls = "php/sql.php"; if(url){ urls = url; } return $http({ url: urls, method: 'POST', data: $httpParamSerializerJQLike(parameter), headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }) // .finally(function() { // // called no matter success or failure // // $scope.loading = false; // show('loading',false); // }); } return dp; } function swa(post,$cookies,$state,SweetAlert){ var swalert = {}; swalert.searchic = function(callback){ // return SweetAlert.swal({ // type: 'success', // text: 'Hello world' // }).then(function (response) { // console.log('World says hello too!'); // }); return swal({ title: 'Kad pengenalan Ketua Rumah', text:"Tidak perlu sebarang '-' atau 'space'", input: 'text', inputPlaceholder: 'Contoh:- 123456789012', allowOutsideClick: false, showCancelButton: true, confirmButtonText: 'Cari', showLoaderOnConfirm: true, preConfirm: function(data){ return new Promise(function(resolve,reject){ /* setTimeout(function(){ if (data === 'taken@example.com') { swal.showValidationError( 'This email is already taken.' ) } resolve() }, 2000) */ if(data.length != 12){ // swal.showValidationError("Kad pengenalan tidak lengkap") reject("Kad pengenalan tidak lengkap"); } else { data = parseInt(data); if(isNaN(data) || !angular.isNumber(data)){ reject("Kad pengenalan tidak betul"); } post($.param({ rt:'search', id:data })).success(function(ret){ var dp = {}; if(ret == 'null'){ // alert('Tiada dalam rekod!'); dp.nic = data; dp.pid = 0; } else { dp = ret; } resolve(dp); }); } }) }, allowOutsideClick: function(){ return !swal.isLoading() } }).then(function(result){ callback(result); /* if (result.value) { swal({ type: 'success', title: 'Ajax request finished!', html: 'Submitted email: ' + result.value }) } */ },function(e){}) } return swalert; } // modalInstance function uiModal($uibModal){ return function(option){ if(!option.param) option.param = {}; if(!option.class) option.class = "animated bounceInDown"; if(!option.controller) option.controller = 'ModalCtrl'; if(!option.template) option.template = 'views/common/page.html'; if(!option.size) option.size = 'md'; if(!option.backdrop) option.backdrop = 'static'; // if(!option.backdrop) option.backdrop = true; // if(!option.backdropClass) option.backdropClass = 'lazur-bg'; return $uibModal.open({ templateUrl: option.template, controller: option.controller, windowClass: option.class, size: option.size, backdrop: option.backdrop, backdropClass: option.backdropClass, resolve: { // param: {rt:'studentModal',id:xuid}, param: option.param, } }).result .then(function(res){ option.close(res); }, function(e){ if(option.dismiss || option.dismiss != undefined) option.dismiss(e); }); } } function users(post,$state,$uibModal){ // function users(post,$cookies,$state,$uibModal){ var prop = {}; var headCookies = 'mzzsb-'; var loginname = headCookies + 'login'; var dataname = headCookies + 'data'; var paramsname = 'params'; prop.isLogin = function(){ // var status = $cookies.get(headCookies + 'login'); var status = localStorage[loginname]; if(status){ return true; } else { return false; } }; prop.data = function(){ // var data = $cookies.getObject(headCookies + 'data'); var data = JSON.parse(localStorage.getItem(dataname)); if(data){ return data; } else { return []; } } prop.login = function(email, password,page,callback){ var param = {rt: 'login', email:email, password: password}; post(param).success(function(res){ var isEmpty = angular.equals([], res); var isObject = angular.isObject(res); if(isObject && !isEmpty){ callback(true,res); // $cookies.put(headCookies + 'login', res.access); // $cookies.putObject(headCookies + 'data', res.data); localStorage[loginname] = res.access; // localStorage[dataname] = JSON.stringify(res.data); localStorage.setItem(dataname, JSON.stringify(res.data)); var udata = res.data; var dep = udata.cust; if((dep & 128) > 0){ } else if((dep & 1) > 0){ page = 'oths.project'; } else if ((dep & 2) > 0) { page = 'tmm.project'; } else if ((dep & 8) > 0) { page = 'tnb.project'; } // if(page !== '') $state.go(page); } else { callback(false,res); // console.log(res); } }).error(function(data, status, headers){ callback(false); console.log(data, status, headers); }); return; }; prop.logout = function(){ // $cookies.remove(headCookies + 'login'); // $cookies.remove(headCookies + 'data'); localStorage.removeItem(loginname); localStorage.removeItem(dataname); localStorage.removeItem(paramsname); }; prop.setParam = function(data){ // $cookies.putObject('param', data); localStorage.setItem(paramsname, JSON.stringify(data)); }; prop.getParam = function(){ var storedNames = JSON.parse(localStorage.getItem(paramsname)); // var data = $cookies.getObject('param'); if(storedNames){ return storedNames; } else { return null; } }; prop.destroy = function(){ localStorage.removeItem(paramsname); // var data = $cookies.getObject('param'); // if(!data) return; // $cookies.remove('param'); }; prop.changepassword = function(){ var user = prop.data(); var userid = user.userid; $uibModal.open({ templateUrl: 'views/common/page.html', controller: 'PwdModalCtrl', windowClass: "animated bounceInDown", size: 'sm', backdrop: 'static', // backdropClass: 'lazur-bg' resolve: { param: {rt:'setting.password.modal',id:userid}, } }).result.then(function(data){ }, function(){ //dismiss }); } return prop; } angular.module('mzzsetia').factory('dtoptions',dtoptions).factory('file',file).factory('get',get).factory('json',json).factory('pageloading',pageloading).factory('post',post).factory('swa',swa).factory('uiModal',uiModal).factory('users',users)