Вход Регистрация
Файл: assets/js/common/modules/angular-mod.js
Строк: 775
<?php
/**
 * Api Factory
 *
 * @class        ApiFactory
 * @author       Anthony Pillos <dev.anthonypillos@gmail.com>
 * @copyright    Copyright (c) 2016 Anthony Pillos. (http://anthonypillos.com,http://iapdesign.com,http://developers.ph)
 * @version      v1
 */

(function() {
  
angular.module('ApiFactory', []).factory("ApiFactory", [
    
'$http''$rootScope''$q', function($http$rootScope$q) {
      return {
        
sendRequest: function(DATAURLMETHODQ_DEFERisAJAX) {
          var 
httpDataRequest;
          if (!
_h.isUndefined(METHOD)) {
            
METHOD 'POST';
          }
          
this.$$additionalHTTPHeader();
          
httpDataRequest = {
            
methodMETHOD,
            
urlURL,
            
headers: {
              
'Content-Type''application/x-www-form-urlencoded; charset=UTF-8'
            
},
            
data: $.param(DATA)
          };
          if (
Q_DEFER) {
            return 
this.$$qDeferRequest(httpDataRequestQ_DEFER);
          }
          if (
METHOD === 'GET') {
            return 
$http.get(URL);
          }
          return 
$http(httpDataRequest);
        },

        
/*
         *   X-CSRF-Token   = Site X-CSRF-Token Token
         *   X-Requested-With = Set Http Request to AJAX FORMAT
         */
        
$$additionalHTTPHeader: function() {
          
$http.defaults.headers.common['X-CSRF-Token'] = angular.element("meta[name='_token']").attr('content');
          
$http.defaults.headers.common['X-Requested-With'] = "XMLHttpRequest";
        },
        $
$qDeferRequest: function(httpDataRequestQ_DEFER) {
          var 
promise;
          if (
angular.isUndefined(this.qRequest)) {
            
this.qRequest = [];
          }
          
this.qRequest.push(Q_DEFER);
          
promise $http(angular.extend(httpDataRequest, {
            
timeoutQ_DEFER.promise
          
}));
          
promise["finally"]((function() {
            
this.qRequest _.filter(this.qRequest, function(request) {
              return 
request.url !== httpDataRequest.url;
            });
          }));
          return 
promise;
        },
        
cancelRequest: function() {
          
angular.forEach(this.qRequest, function(canceller) {
            
canceller.resolve();
          });
          if (
angular.isUndefined(this.qRequest)) {
            return 
this.qRequest = [];
          }
        }
      };
    }
  ]);

}).
call(this);


/**
 * Provide Drag and Drop Capability using this file-uploader directive
 *
 * Inside of your controller you can listen to this events( $scope.$on('listener_name') )
 * - file:unknown
 * - file:uploading
 *
 * Example:
 *   * For Single Upload with identifier
 *   * Note: identifier is just a name, for your upload
 *        in case you have 2 different uploads,
 *        identifier serve as your unique name for each upload.
 *        if you omit the identifier, it will show "fileupload" as default name
 *
 *       <div file-uploader is-multiple="false" identifier="front"></div>
 *
 *   * For Upload with inside array
 *   * Make sure you pass, the whole object from my-file and the $index, so you have control in your controller
 *        <div ng-repeat="file in uploadFiles track by $index">
 *            <div file-uploader my-file="file" index="$index"></div>
 *        </div>
 *
 *
 * @class fileUploader Directives
 * @package AngularModules
 * @author       Anthony Pillos <dev.anthonypillos@gmail.com>
 * @copyright    Copyright (c) 2016 Anthony Pillos. (http://anthonypillos.com,http://iapdesign.com,http://developers.ph)
 * @version      v1
 */

(function() {
  
angular.module('FileUploaderDirective', []).directive("fileUploader", [
    
'$rootScope', function($rootScope) {
      return {
        
restrict"A",
        
scope: {
          
imagePreview'=',
          
isMultiple'=',
          
myFile'=',
          
index'='
        
},
        
link: function(scopeelementattrs) {
          var 
_fileReaderloadFileonDragEndonDragOver;
          
onDragOver = function(e) {
            
e.preventDefault();
            
element.addClass("dragOver");
          };
          
onDragEnd = function(e) {
            
e.preventDefault();
            
element.removeClass("dragOver");
          };
          
loadFile = function(fileObj) {
            var 
fileObjectDataisMultiplemultipleUpload;
            
isMultiple false;
            if (!
fileObj) {
              throw 
'File Unknown';
            }
            if (
scope.isMultiple) {
              
isMultiple true;
              
multipleUpload = [];
              
angular.forEach(fileObj, function(filekey) {
                
file.isMultiple 1;
                return 
multipleUpload.push(file);
              });
              
fileObjectData multipleUpload;
            } else {
              
fileObjectData fileObj[0];
            }
            
fileObjectData.status 0;
            if (
angular.isUndefined(attrs.identifier)) {
              
attrs.identifier "fileupload";
            }
            if (
angular.isUndefined(scope.myFile) && angular.isUndefined(scope.index)) {
              return 
$rootScope.$emit('file:uploading'fileObjectDataattrs.identifierisMultiple);
            }
            
scope.myFile.file fileObjectData;
            return 
$rootScope.$emit('file:upload-in-array'scope.myFilescope.index);
          };
          
_fileReader = function(file) {
            var 
reader;
            if (
window.File && window.FileReader && window.FileList && window.Blob) {
              
reader = new FileReader;
              
reader.onload = function(evt) {
                return 
file.image_url reader.result;
              };
              return 
reader.readAsDataURL(file);
            } else {
              return 
file.image_url '#';
            }
          };
          
element.bind('change', function(e) {
            
loadFile(e.originalEvent.target.files);
            if (
!= null) {
              
e.preventDefault();
            }
            if (
!= null) {
              
e.stopPropagation();
            }
          });
          
element.bind("dragover"onDragOver).bind("dragleave"onDragEnd).bind("drop", function(e) {
            
onDragEnd(e);
            
loadFile(e.originalEvent.dataTransfer.files);
            if (
!= null) {
              
e.preventDefault();
            }
            if (
!= null) {
              
e.stopPropagation();
            }
          });
        }
      };
    }
  ]);

}).
call(this);


/**
 * Key Bind
 *
 * @author       Anthony Pillos <dev.anthonypillos@gmail.com>
 * @copyright    Copyright (c) 2016 Anthony Pillos. (http://anthonypillos.com,http://iapdesign.com,http://developers.ph)
 * @version      v1
 *
 * Ex. 
 * esc : 'clear()' instead of esc : clear()
 * <input key-bind="{ enter: 'go()', esc: 'clear()' }" type="text"
 *
 */

(function() {
  
angular.module('htmlBindDirective', []).directive('htmlBind', [
    
'$compile', function($compile) {
      return {
        
restrict'A',
        
replacetrue,
        
scope: {
          
dynamic'=htmlBind'
        
},
        
link: function(scopeelementattrs) {
          
scope.$watch('attrs.htmlBind', function(html) {
            
element.html(scope.dynamic);
            
$compile(element.contents())(scope);
          });
        }
      };
    }
  ]);

}).
call(this);


/**
 * Key Bind
 *
 * @author       Anthony Pillos <dev.anthonypillos@gmail.com>
 * @copyright    Copyright (c) 2016 Anthony Pillos. (http://anthonypillos.com,http://iapdesign.com,http://developers.ph)
 * @version      v1
 *
 * Ex. 
 * esc : 'clear()' instead of esc : clear()
 * <input key-bind="{ enter: 'go()', esc: 'clear()' }" type="text"
 *
 */

(function() {
  
angular.module('KeyBindDirective', []).constant('keyCodes', {
    
esc27,
    
space32,
    
enter13,
    
tab9,
    
backspace8,
    
shift16,
    
ctrl17,
    
alt18,
    
capslock20,
    
numlock144
  
}).directive('keyBind', [
    
'keyCodes', function(keyCodes) {
      var 
map;
      
map = function(obj) {
        var 
actionkeymapped;
        
mapped = {};
        for (
key in obj) {
          
action obj[key];
          if (
keyCodes.hasOwnProperty(key)) {
            
mapped[keyCodes[key]] = action;
          }
        }
        return 
mapped;
      };
      return function(
scopeelementattrs) {
        var 
bindings;
        
bindings map(scope.$eval(attrs.keyBind));
        return 
element.bind('keyup', function(event) {
          if (
bindings.hasOwnProperty(event.which)) {
            return 
scope.$apply(function() {
              return 
scope.$eval(bindings[event.which]);
            });
          }
        });
      };
    }
  ]);

}).
call(this);


/**
 * ListingService
 * Handle Collections of Data from AJAX Request
 *
 * @package         ListingService
 * @author       Anthony Pillos <dev.anthonypillos@gmail.com>
 * @copyright    Copyright (c) 2016 Anthony Pillos. (http://anthonypillos.com,http://iapdesign.com,http://developers.ph)
 * @version      v1
 */

(function() {
  
angular.module('ListingService', []).service("ListingService", [
    
'ApiFactory', function(ApiFactory) {
      var 
options;
      
options = {
        
collections: [],
        
data: [],
        
range: [],
        
totalPages0,
        
currentPage1,
        
requestData: function(requestURIreqMethoddataqDefer) {
          if (
reqMethod != null) {
            
reqMethod reqMethod;
          } else {
            
reqMethod 'POST';
          }
          
data data != null data : {};
          return 
ApiFactory.sendRequest(datarequestURIreqMethodqDefer);
        },
        
dataHandler: function(responsestatus) {
          var 
ceilfloorimaxpages;
          
this.collections response;
          
this.totalPages response.last_page;
          
this.currentPage response.current_page;
          
this.data response.data != null response.data : [];
          
pages = [];
          
ceil Math.ceil((this.currentPage 1) / 10) * 10;
          
floor Math.floor((this.currentPage 1) / 10) * 10;
          if (
ceil this.totalPages) {
            
floor Math.floor((this.currentPage 1) / 10) * 10;
            
max this.totalPages;
          } else {
            
max ceil;
          }
          if (
ceil === floor) {
            
floor -= 10;
          }
          
floor floor 1;
          while (
<= max) {
            
pages.push(i);
            
i++;
          }
          return 
this.range pages;
        },
        
getCollections: function() {}
      };
      return 
options;
    }
  ]);

}).
call(this);


/**
 * Only Number Input
 *
 * @author       Anthony Pillos <dev.anthonypillos@gmail.com>
 * @copyright    Copyright (c) 2016 Anthony Pillos. (http://anthonypillos.com,http://iapdesign.com,http://developers.ph)
 * @version      v1
 */

(function() {
  
angular.module('NumberOnlyDirective', []).directive("numberOnly", function() {
    return {
      
restrict"A",
      require: 
'ngModel',
      
link: function($scope$element$attrs$model) {
        var 
filter;
        
filter = /[^0-9]/g;
        if (
angular.isDefined($attrs.allowDecimal)) {
          
filter = /[^0-9.]/g;
        }
        
$model.$parsers.push(function(inputValue) {
          var 
transformedInput;
          if (
inputValue === void 0) {
            return 
'';
          }
          
transformedInput inputValue.replace(filter'');
          if (
transformedInput !== inputValue) {
            
$model.$setViewValue(transformedInput);
            
$model.$render();
          }
          return 
transformedInput;
        });
      }
    };
  });

}).
call(this);


/**
 * __DESCRIPTIONS__
 * __SHORT_DESCRIPTION__
 *
 * @class        Pagination Directive
 * @package      AngularModules
 * @author       Anthony Pillos <dev.anthonypillos@gmail.com>
 * @copyright    Copyright (c) 2016 Anthony Pillos. (http://anthonypillos.com,http://iapdesign.com,http://developers.ph)
 * @version      v1
 */

(function() {
  
angular.module('PaginationDirective', []).directive("paginationDirective", function() {
    return {
      
restrict"E",
      
template: function(tElemtAttr) {
        if (
tAttr.mode === 'simple') {
          return 
'<ul class="pagination" ng-if="range.length > 1">' '<li ng-class="currentPage == 1 ? 'disabled' : ''">' '<button class="btn paginate-directive-btn" ng-disabled="currentPage == 1" ng-click="getCollections(currentPage-1)">&lsaquo; Prev</button>' '</li>' '<li ng-class="currentPage == totalPages ? 'disabled' : ''">' '<button class="btn paginate-directive-btn" ng-disabled="currentPage == totalPages" ng-click="getCollections(currentPage+1)">Next &rsaquo;</button>' '</li>' '</ul>';
        } else {
          return 
'<ul class="pagination" ng-if="range.length > 1">' '<li ng-show="currentPage != 1"><a href="javascript:void(0)" ng-click="getCollections(1)">&laquo;</a></li>' '<li ng-show="currentPage != 1"><a href="javascript:void(0)" ng-click="getCollections(currentPage-1)">&lsaquo; Prev</a></li>' '<li ng-repeat="i in range" ng-class="{active : currentPage == i}">' '<a href="javascript:void(0)" ng-click="getCollections(i)">{{ i }}</a>' '</li>' '<li ng-show="currentPage != totalPages"><a href="javascript:void(0)" ng-click="getCollections(currentPage+1)">Next &rsaquo;</a></li>' '<li ng-show="currentPage != totalPages"><a href="javascript:void(0)" ng-click="getCollections(totalPages)">&raquo;</a></li>' '</ul>';
        }
      }
    };
  });

}).
call(this);


/**
 * SystemFactory
 *
 * @class SystemFactory
 * @package AngularModules
 * @author       Anthony Pillos <dev.anthonypillos@gmail.com>
 * @copyright    Copyright (c) 2016 Anthony Pillos. (http://anthonypillos.com,http://iapdesign.com,http://developers.ph)
 * @version      v1
 */

(function() {
  
_.mixin({
    
capitalize: function(string) {
      return 
string.charAt(0).toUpperCase() + string.substring(1).toLowerCase();
    }
  });

  
angular.module('SystemFactory', []).factory("SystemFactory", [
    
'$rootScope', function($rootScope) {
      return {

        
/**
         * validateObj()
         *
         * @return
         */
        
validateObj: function(objrequiredFields) {
          if (
_h.isEmptyObj(obj)) {
            throw 
'Empty Input, Cannot Validate';
          }
          
_.each(requiredFields, function(valkey) {
            if (
angular.isUndefined(obj[val])) {
              throw 
'Missing required input: ' val;
            }
            if (
obj[val] === '') {
              throw 
'Empty input data for : ' val;
            }
          });
          return 
true;
        },

        
/**
         * Transform Object to FormData
         * Ex.
         * data = obj: 
         *            prop: 'property value'
         *           arr: [
         *             'one'
         *             'two'
         *             'three'
         *             new File([ '' ], '')
         *           ]
         *           file: new File([ '' ], '')
         * 
         * objectToFormData(data)
         *
         *
         * @param (object) obj
         * @param (object) form
         * @param (string) namespace
         * @return void
         */
        
objectToFormData: function(objform, namespace) {
          var 
fdformKeyproperty;
          
fd form || new FormData;
          
formKey void 0;
          for (
property in obj) {
            if (
obj.hasOwnProperty(property)) {
              if (namespace) {
                
formKey = namespace + '[' property ']';
              } else {
                
formKey property;
              }
              if (
typeof obj[property] === 'object' && !(obj[property] instanceof File)) {
                
this.objectToFormData(obj[property], fdformKey);
              } else {
                
fd.append(formKeyobj[property]);
              }
            }
          }
          return 
fd;
        }
      };
    }
  ]);

}).
call(this);


/**
 * systemFilter
 *
 * @package systemFilter
 * @author       Anthony Pillos <dev.anthonypillos@gmail.com>
 * @copyright    Copyright (c) 2016 Anthony Pillos. (http://anthonypillos.com,http://iapdesign.com,http://developers.ph)
 * @version      v1
 */

(function() {
  
angular.module('SystemFilter', []).filter('groupBy', [
    
'$parse', function($parse) {
      return 
_.memoize(function(itemsfield) {
        var 
getter;
        
getter $parse(field);
        return 
_.groupBy(items, function(item) {
          return 
getter(item);
        });
      });
    }
  ]).
filter('format_bytes', function() {
    return function(
bytessi) {
      var 
threshuunits;
      
si 1024;
      
thresh si 1000 1024;
      if (
bytes thresh) {
        return 
bytes ' B';
      }
      
units si ? ['KB''MB''GB''TB''PB''EB''ZB''YB'] : ['KiB''MiB''GiB''TiB''PiB''EiB''ZiB''YiB'];
      
= -1;
      while (
true) {
        
bytes /= thresh;
        ++
u;
        if (!(
bytes >= thresh)) {
          break;
        }
      }
      return 
bytes.toFixed(1) + ' ' units[u];
    };
  }).
filter('truncateStr', function() {
    return function(
valuemaxwordwisetail) {
      var 
lastspace;
      if (!
value) {
        return 
'';
      }
      
max parseInt(max10);
      if (!
max) {
        return 
value;
      }
      if (
value.length <= max) {
        return 
value;
      }
      
value value.substr(0max);
      if (
wordwise) {
        
lastspace value.lastIndexOf(' ');
        if (
lastspace !== -1) {
          
value value.substr(0lastspace);
        }
      }
      return 
value + (tail || '...');
    };
  }).
filter('truncateMiddle', function() {
    return function(
strlengthseparator) {
      var 
endpadstart;
      if (
length == null) {
        
length 20;
      }
      if (
separator == null) {
        
separator '...';
      }
      if (
str === null) {
        return 
'';
      }
      if (
str === void 0) {
        return 
'';
      }
      if (
str.length <= length) {
        return 
str;
      }
      
pad Math.round((length separator.length) / 2);
      
start str.substr(0pad);
      
end str.substr(str.length pad);
      return [
startseparatorend].join('');
    };
  }).
filter('trusted_html', [
    
'$sce', function($sce) {
      return function(
text) {
        return 
$sce.trustAsHtml(text);
      };
    }
  ]).
filter('remove_slash', function() {
    return function(
str) {
      if (
str) {
        return 
str.replace(/\/g'');
      }
    };
  });

}).
call(this);


/**
 * __DESCRIPTIONS__
 * __SHORT_DESCRIPTION__
 *
 * @class UploadFactory
 * @package AngularModules
 * @author       Anthony Pillos <dev.anthonypillos@gmail.com>
 * @copyright    Copyright (c) 2016 Anthony Pillos. (http://anthonypillos.com,http://iapdesign.com,http://developers.ph)
 * @version      v1
 */

(function() {
  
angular.module('UploadFactory', []).factory("UploaderFactory", [
    
'$rootScope''$timeout', function($rootScope$timeout) {
      return {
        
dataObj: [],
        
xhr: [],
        
defaultIndex0,

        
/**
         * __DESCRIPTIONS
         *
         * @params void
         */
        
httpRequest: function(index) {
          var 
ex;
          if (
window.XMLHttpRequest) {
            try {
              return 
this.xhr[index] = new XMLHttpRequest;
            } catch (
error) {
              
ex error;
              return 
this.xhr[index] = new window.ActiveXObject('Microsoft.XMLHTTP');
            }
          } else {
            return 
false;
          }
        },

        
/**
         * __DESCRIPTIONS
         *
         * @params void
         */
        
upload: function(urlformObjdataObjindex) {
          var 
_this;
          if (
angular.isUndefined(index)) {
            
index this.defaultIndex;
          }
          
this.xhr[index] = this.httpRequest(index);
          if (!
this.xhr[index]) {
            
$rootScope.$emit('upload:bad');
            return 
false;
          }
          
this.dataObj[index] = dataObj;
          
this.xhr[index].open("POST"url);
          
this.dataObj[index].xhr this.xhr[index];
          
this.xhr[index].setRequestHeader("X-CSRF-Token"angular.element("meta[name='_token']").attr('content'));
          
this.xhr[index].setRequestHeader("X-Requested-With"'XMLHttpRequest');
          
_this this;
          
_this.xhr[index].upload.onprogress = function(evt) {
            return 
_this.progress(evtindex);
          };
          
_this.xhr[index].onabort = function() {
            return 
_this.abort(index);
          };
          
_this.xhr[index].onerror = function() {
            return 
_this.abort(index);
          };
          
_this.xhr[index].onload = function(evt) {
            return 
_this.complete(evtindex);
          };
          
_this.xhr[index].onreadystatechange = function(evt) {
            if (
_this.xhr[index].readyState === 4) {
              return 
$timeout(function() {
                var 
ref;
                if ((
ref _this.xhr[index]) != null ref.response void 0) {
                  
_this.dataObj[index].response JSON.parse(_this.xhr[index].response);
                  
_this.dataObj[index].status _this.dataObj[index].response.status === "error" 2;
                  return 
_this.dataObj[index].xhr[index] = false;
                }
              });
            }
          };
          return 
_this.xhr[index].send(formObj);
        },

        
/**
         * __DESCRIPTIONS
         *
         * @params void
         */
        
progress: function(evtindex) {
          var 
_this;
          
_this this;
          if (
evt.type === 'progress') {
            return 
$timeout(function() {
              
_this.dataObj[index].status 1;
              if (
evt.lengthComputable) {
                return 
_this.dataObj[index].progress Math.round(evt.loaded 100 evt.total);
              } else {
                return 
_this.dataObj[index].progress 0;
              }
            });
          }
        },

        
/**
         * __DESCRIPTIONS
         *
         * @params void
         */
        
abort: function(index) {
          var 
_this;
          
_this this;
          return 
$timeout(function() {
            
_this.dataObj[index].status 0;
            
_this.dataObj[index].xhr.abort();
            return 
$rootScope.$emit('upload:abort'index);
          });
        },

        
/**
         * __DESCRIPTIONS
         *
         * @params void
         */
        
complete: function(evtindex) {
          return 
$rootScope.$emit('upload:complete'this.dataObj[index]);
        }
      };
    }
  ]);

}).
call(this);
?>
Онлайн: 1
Реклама