-
- /**
- * Image Picker
- * Is a simple front-end interface that connects to an ImageManager if present.
- */
- ngApp.directive('imagePicker', ['$http', 'imageManagerService', function ($http, imageManagerService) {
- return {
- restrict: 'E',
- template: imagePickerTemplate,
- scope: {
- name: '@',
- resizeHeight: '@',
- resizeWidth: '@',
- resizeCrop: '@',
- showRemove: '=',
- currentImage: '@',
- currentId: '@',
- defaultImage: '@',
- imageClass: '@'
- },
- link: function (scope, element, attrs) {
- let usingIds = typeof scope.currentId !== 'undefined' || scope.currentId === 'false';
- scope.image = scope.currentImage;
- scope.value = scope.currentImage || '';
- if (usingIds) scope.value = scope.currentId;
-
- function setImage(imageModel, imageUrl) {
- scope.image = imageUrl;
- scope.value = usingIds ? imageModel.id : imageUrl;
- }
-
- scope.reset = function () {
- setImage({id: 0}, scope.defaultImage);
- };
-
- scope.remove = function () {
- scope.image = 'none';
- scope.value = 'none';
- };
-
- scope.showImageManager = function () {
- imageManagerService.show((image) => {
- scope.updateImageFromModel(image);
- });
- };
-
- scope.updateImageFromModel = function (model) {
- let isResized = scope.resizeWidth && scope.resizeHeight;
-
- if (!isResized) {
- scope.$apply(() => {
- setImage(model, model.url);
- });
- return;
- }
-
- let cropped = scope.resizeCrop ? 'true' : 'false';
- let requestString = '/images/thumb/' + model.id + '/' + scope.resizeWidth + '/' + scope.resizeHeight + '/' + cropped;
- requestString = window.baseUrl(requestString);
- $http.get(requestString).then((response) => {
- setImage(model, response.data.url);
- });
- };
-
- }
- };
- }]);
-