// var app=angular.module("abs", ["att.abs"]);
app.directive('afterRender', [ function() {
var def = {
restrict : 'A',
terminal : true,
transclude : false,
link : function(scope, element, attrs) {
if (attrs) { scope.$eval(attrs.afterRender) }
scope.$emit('onAfterRender')
}
};
return def;
}]);
app.directive("search", function() {
return {
// replace custom element with html5 markup
template: '
'
//+ '
'
+ '
'
+ '
'
+ '
'
+ '
'
+ '
'
+ ' '
+ '
'
+ '
'
+ ' '
+ ' '
+ ' '
+ '
'
+ '
'
+ '
'
+ '
' ,
replace: true,
// restrict usage to element only since we use attributes for APIs
restrict: 'EA',
require: 'ngModel',
// new isolate scope
scope: {
mSearch : '=ngModel'
,updateparent: '&'
,jsonForOption : '='
,jsonForOperator : '='
,searchId : '='
},
link: function(scope, iElement, iAttrs){
scope.optionsSizeArray = [];
scope.sId = '';
//scope.options = JSON.parse(JSON.stringify(iAttrs.jsonForOption));
//scope.operators = JSON.parse(iAttrs.operators);
scope.$watch("jsonForOption", function(newval, oldval) {
scope.options = JSON.parse(JSON.stringify(oldval));
console.log('1');
scope.evalRepeatIndex(scope.options.length);
console.log('2');
});
scope.evalRepeatIndex = function(size){
for(index = 0; index < size; index++) {
scope.optionsSizeArray.push(index);
}
};
scope.$watch("jsonForOperator", function(newval, oldval) {
scope.operators = JSON.parse(JSON.stringify(oldval));
});
if(getParameterByName("search")!=null && getParameterByName("search")!=''){
if((getParameterByName("location")!=null && getParameterByName("location")!='')){
scope.searchValue[0]=JSON.parse(JSON.stringify(getParameterByName("location")));
scope.valueOptions[0]={index:0,value:'Location Name',title:"Location Name",alias:'Location Name'};
scope.compareOptions[0]={index:1,value:'Contains',title:"Contains",alias:'Contains'};
}else if((getParameterByName("userLastName")!=null && getParameterByName("userLastName")!='')){
scope.searchValue[0]=JSON.parse(JSON.stringify(getParameterByName("userLastName")));
scope.valueOptions[0]= {index: 0, value: 'Last Name', title: 'Last Name', alias:'Last Name'};
scope.compareOptions[0]={index:1,value:'Contains',title:"Contains",alias:'Contains'};
}
}
scope.$watch("searchId", function(newval, oldval) {
scope.sId = oldval;
scope.hideDiv();
});
scope.showHide = function(div){
if(div != 0){
$("#s1").css('display', 'none');
}
return true;
};
scope.hideDiv = function(){
console.log('3');
console.log(scope.optionsSizeArray);
for (i = 1; i < scope.optionsSizeArray.length; i++) {
var element = "#"+scope.sId+i;
$(element).css('display', 'none');
}
console.log('4');
};
$(function() {
scope.hideDiv();
});
},
controller: function ($scope) {
$scope.addSearch = function(searchId, index, optionsLength){
console.log('5');
for(var i = 0; i<=optionsLength.length ;i++){
var element = "#"+searchId+i;
if($(element).css('display') == 'none'){
$(element).css('display', 'inline');
break;
}
};
console.log('6');
};
$scope.remove = function(searchId, index){
var remove = "#"+searchId+index;
if(index!=0)
$(remove).css("display", "none");
var v ={
index: 0,
value: '',
title: 'Select',
alias:''
};
$scope.valueOptions[index]=v;
$scope.compareOptions[index]=v;
$scope.searchValue[index]="";
};
$scope.search = function() {
var data = {
valueOptions : $scope.valueOptions,
compareOptions : $scope.compareOptions,
searchValue : $scope.searchValue
};
};
var data = {
valueOptions : $scope.valueOptions,
compareOptions : $scope.compareOptions,
searchValue : $scope.searchValue
};
$scope.mSearch = data;
$scope.valueOptions=[];
$scope.compareOptions=[];
$scope.searchValue=[];
}
}
});
app.directive('phoneNumberMask', [function(){
return {
restrict: 'A',
require: '?ngModel',
scope: {
ngModel : '='
},
link: function(scope, el, attrs){
scope.$watch(attrs.phoneNumberMask, function(newValue, oldValue) {
if(scope.ngModel)
scope.ngModel= scope.ngModel.replace(/(\+1)?(\d{3})(\d{3})(\d{4})/, '$2.$3.$4');
$(el).mask("999.999.9999");
});
scope.$watch("ngModel", function() {
var current = $(el).val();
if(scope.ngModel && /^(\+1)?\d{3,}$/.test(scope.ngModel))
scope.ngModel= scope.ngModel.replace(/(\+1)?(\d{3})(\d{3})(\d{4})/, '$2.$3.$4');
});
},
};
}]);
app.directive('allowOnlyNumber', [function(){
return {
require: 'ngModel',
link: function(scope, element, attrs, modelCtrl) {
modelCtrl.$parsers.push(function (inputValue) {
if (inputValue == undefined) return '';
var transformedInput = inputValue.replace(/[^0-9]/g, '');
if (transformedInput!=inputValue) {
modelCtrl.$setViewValue(transformedInput);
modelCtrl.$render();
}
return transformedInput;
});
}
};
}]);
app.directive('showProcessing', function(){
return {
restrict: 'A',
link: function(scope, elem, attrs) {
elem.bind('click', function() {
$(".overlayed").css("display","inline");
$(".loadingId").css("display","inline");
});
}
}
});
app.directive("searchCriteria", function() {
return {
// replace custom element with html5 markup
template: ''
+ '
'
+ '
'
+ '
'
+ '
'
+ '
'
+ ' '
+ ' '
+ ' '
+ '
'
+ '
'
+ '
' ,
replace: true,
// restrict usage to element only since we use attributes for APIs
restrict: 'EA',
require: 'ngModel',
// new isolate scope
scope: {
mSearch : '=ngModel',
updateparent: '&'
,options : '=jsonForOption'
,operators : '=jsonForOperator'
},
controller: function ($scope) {
$scope.isShown = [true];
$scope.searchCriterion = [];
$scope.valueOptions=[];
$scope.compareOptions=[];
$scope.searchValue=[];
$scope.availableOperators=[];
$scope.availableValues=[];
$scope.availableOptions = [];
//init
$scope.insertEmptyOption = function(arr){
var hasEmpty = false;
$.each(arr, function(i, a){
if(a.value ===''){
hasEmpty = true;
}
});
if(!hasEmpty){
$.each(arr, function(i, a){
a.index +=1;
});
arr.unshift({index: 0, value: '', title: 'Select', alias:'Select'});
}
};
$scope.findFirstOption = function(arr){
};
$scope.insertEmptyOption($scope.options);
$scope.insertEmptyOption($scope.operators);
for(var i = 0, l= $scope.options.length; i 0){
$.each($scope.valueOptions, function(i, a){
if(a){
var v = a.value;
if(v){
var s= $.grep(selectedOptions, function(e){ return e.value === v });
if(s.length ===1){
s[0].occurs += 1;
}else{
selectedOptions.push({value: v, occurs:1});
}
}
var o= $.grep($scope.options, function(e){ return e.value === v });
if(o.length ===1){
if("operators" in o[0]){
$scope.availableOperators[i]=o[0].operators;
$scope.insertEmptyOption($scope.availableOperators[i]);
}else{
$scope.availableOperators[i]=$scope.operators;
}
if("values" in o[0]){
$scope.availableValues[i]=o[0].values;
}else{
$scope.availableValues[i]=[];
}
}
}
});
for(var j = 0 , l = $scope.availableOptions.length; j 0 && s[0].occurs >= maxOccurs && ($scope.valueOptions[j] && $scope.valueOptions[j].value !== s[0].value)){// reach limit
}else{
newOptions.push({index: aoi, value: a.value, title: a.title, alias:a.alias});
aoi += 1;
}
});
$scope.availableOptions[j] = newOptions;
if(isFirst){
if($scope.availableValues[j].length>0)
$scope.searchValue[j]= $scope.availableValues[j][0];
else
$scope.searchValue[j]="";
$scope.compareOptions[j]= $scope.availableOperators[j][0];
}
};
}
if(typeof index !== 'undefined' && !isFirst){
if($scope.availableValues[index].length>0)
$scope.searchValue[index]= $scope.availableValues[index][0];
else
$scope.searchValue[index]="";
}
};
$scope.updateAvailableOptions(undefined, true);
$.each($scope.availableOptions, function(j, a){
$scope.valueOptions[j]= a[0];
});
$scope.addSearchCriteria = function(index){
for(var i = 0 , l =$scope.isShown.length; i '
+ ''
+ '',
replace: true,
// restrict usage to element only since we use attributes for APIs
restrict: 'EA',
// new isolate scope
scope: {
chosenIds : '=assignedUsers'
,availableUsers : '='
,userTitle : '='
,availableTitle : '='
,oneMax : '=?'
},
link: function(scope, iElement, attrs){
scope.$watch("userTitle", function(newval, oldval) {
scope.userTitle = newval;
});
scope.$watch("availableTitle", function(newval, oldval) {
scope.availableTitle = newval;
});
scope.$watch("availableUsers", function(newval, oldval) {
scope.availableUsers = newval;
scope.canditateIds= scope.getArrayRemoved(scope.availableUsers, scope.chosenIds);
});
},
controller: function ($scope) {
$scope.getArrayRemoved = function(from, removed){
var retArray = (from)? from:[];
if(retArray && retArray.length >0 && removed){
for(var i = 0, l = removed.length; i= 0; i--){
if(!$scope.chosenIds)
$scope.chosenIds=[];
$scope.chosenIds.push(dataFromTableData[i]);
$scope.canditateIds.splice(i,1);
}
var dataFromChoosonTable = $scope.chosenIds;
for (var i = dataFromChoosonTable.length - 1; i >= 0; i--){
if(dataFromChoosonTable[i].available){
$scope.chosenIds[i].available=false;
}
}
};
$scope.removeAll = function() {
var dataFromTableData = $scope.chosenIds;
for (var i = dataFromTableData.length - 1; i >= 0; i--){
$scope.canditateIds.push(dataFromTableData[i]);
$scope.chosenIds.splice(i,1);
}
var dataFromChoosonTable = $scope.canditateIds;
for (var i = dataFromChoosonTable.length - 1; i >= 0; i--){
if(dataFromChoosonTable[i].available){
$scope.canditateIds[i].available=false;
}
}
};
$scope.chooseSelected = function() {
var dataFromTableData = $scope.canditateIds;
for (var i = dataFromTableData.length - 1; i >= 0; i--){
if(dataFromTableData[i].available){
if(!$scope.chosenIds)
$scope.chosenIds=[];
$scope.chosenIds.push(dataFromTableData[i]);
$scope.canditateIds.splice(i,1);
}
}
var dataFromChoosonTable = $scope.chosenIds;
for (var i = dataFromChoosonTable.length - 1; i >= 0; i--){
if(dataFromChoosonTable[i].available){
$scope.chosenIds[i].available=false;
}
}
};
$scope.removeSelected = function() {
var dataFromTableData = $scope.chosenIds;
for (var i = dataFromTableData.length - 1; i >= 0; i--){
if(dataFromTableData[i].available){
$scope.canditateIds.push(dataFromTableData[i]);
$scope.chosenIds.splice(i,1);
}
} ;
var dataFromChoosonTable = $scope.canditateIds;
for (var i = dataFromChoosonTable.length - 1; i >= 0; i--){
if(dataFromChoosonTable[i].available){
$scope.canditateIds[i].available=false;
}
}
};
$scope.checkCanditate = function(index) {
if($scope.oneMax){
for (var i = $scope.canditateIds.length - 1; i >= 0; i--){
if(i != index)
$scope.canditateIds[i].available=false;
}
}
};
}
}
});
app.directive("selectString", function() {
return {
// replace custom element with html5 markup
template: '',
replace: true,
// restrict usage to element only since we use attributes for APIs
restrict: 'EA',
// new isolate scope
scope: {
chosenIds : '=assignedOptions'
,availableOptions : '='
,availableTitle : '@'
,assignedTitle : '@'
},
link: function(scope, iElement, attrs){
scope.$watch("availableOptions", function(newval, oldval) {
scope.availableOptions = newval;
scope.canditateIds= scope.getArrayRemoved(scope.availableOptions, scope.chosenIds);
});
},
controller: function ($scope) {
$scope.getArrayRemoved = function(from, removed){
var retArray = (from)? from:[];
if(retArray && retArray.length >0 && removed){
for(var i = 0, l = removed.length; i= 0; i--){
if(!$scope.chosenIds)
$scope.chosenIds=[];
$scope.chosenIds.push(dataFromTableData[i]);
$scope.canditateIds.splice(i,1);
}
};
$scope.removeAll = function() {
var dataFromTableData = $scope.chosenIds;
for (var i = dataFromTableData.length - 1; i >= 0; i--){
$scope.canditateIds.push(dataFromTableData[i]);
$scope.chosenIds.splice(i,1);
}
};
$scope.chooseSelected = function() {
var dataFromTableData = $scope.canditateIds;
for (var i = dataFromTableData.length - 1; i >= 0; i--){
if(dataFromTableData[i].available){
if(!$scope.chosenIds)
$scope.chosenIds=[];
$scope.chosenIds.push(dataFromTableData[i]);
$scope.canditateIds.splice(i,1);
}
}
};
$scope.removeSelected = function() {
var dataFromTableData = $scope.chosenIds;
for (var i = dataFromTableData.length - 1; i >= 0; i--){
if(dataFromTableData[i].available){
$scope.canditateIds.push(dataFromTableData[i]);
$scope.chosenIds.splice(i,1);
}
} ;
};
}
}
});
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
};
app.directive("time", function() {
return {
// replace custom element with html5 markup
template: '',
replace: true,
// restrict usage to element only since we use attributes for APIs
restrict: 'EA',
// new isolate scope
scope: {
value : '='
,validTime : '=?'
},
link: function(scope, iElement, attrs){
},
controller: function ($scope) {
$scope.timeStr='';
$scope.ampm=null;
var am ={index: 0, value: 'AM', title: 'AM', alias:'Name2'};
var pm = {index: 1, value: 'PM', title: 'PM', alias:'Name'};
$scope.ampmOptions=[
am,
pm,
]
$scope.parseTimeStr= function(str){
if(str){
try{
var date;
if(/^(\d*):(\d*)$/.test(str)){
var hh = Number(str.match(/^(\d+)/)[1]);
var mm = Number(str.match(/:(\d+)/)[1]);
date = new Date(1970, 0, 1, hh, mm, 0);
}else{
date = new Date(str);
}
var hours = date.getHours();
var minutes = date.getMinutes();
var ampm = hours >= 12 ?pm : am;
hours = hours % 12;
hours = hours ? hours : 12; // the hour '0' should be '12'
minutes = minutes < 10 ? '0'+minutes : minutes;
hours = hours < 10 ? '0'+hours : hours;
var strTime = hours + ':' + minutes ;
$scope.timeStr =strTime;
$scope.ampm = ampm;
if (typeof $scope.validTime != 'undefined'){
$scope.validTime=true;
}
}catch(err){
if (typeof $scope.validTime != 'undefined'){
$scope.validTime=false;
}
}
}else{
$scope.timeStr = "12:00";
$scope.ampm =am;
}
};
$scope.parseTimeStr($scope.value);
$scope.parseValue = function(){
try{
var date;
var hh = Number($scope.timeStr.match(/^(\d+)/)[1]);
var mm = Number($scope.timeStr.match(/:(\d+)/)[1]);
if(hh<=12 && hh>0 && mm>=0 && mm<=59){
if($scope.ampm.value=='PM'&& hh<12) hh = hh+12;
if($scope.ampm.value=='AM'&& hh==12) hh = hh-12;
mm = mm < 10 ? '0'+mm : mm;
hh = hh < 10 ? '0'+hh : hh;
$scope.value= hh+":"+mm;
if (typeof $scope.validTime != 'undefined'){
$scope.validTime=true;
}
}else{
if (typeof $scope.validTime != 'undefined'){
$scope.validTime=false;
}
}
}catch(err){
if (typeof $scope.validTime != 'undefined'){
$scope.validTime=false;
}
}
};
}
}
});