(function () { 'use strict'; var app = angular.module('eventFactorAdmin'); var templatePath = modulesSharedResourcesUrl + 'Modules/EventFactorAdmin/Views/'; app.directive('eventFactorList', ['eventFactorAdminDataContext', 'eventFactorAdminService', 'common', '$location', '$modal', '$upload', '$rootScope', function (eventFactorAdminDataContext, eventFactorAdminService, common, $location, $modal, $upload, $rootScope) { return { restrict: 'E', templateUrl: templatePath + 'eventfactorlist.html', link: link }; function link($scope, elem, attrs) { // Set the log notifiers up var getLogFn = common.logger.getLogFn; var logSuccess = getLogFn("eventAdmin", "success"); var logError = getLogFn("eventAdmin", "error"); eventFactorAdminService.setCurrentFactor(null); function getFactors() { eventFactorAdminDataContext.getAllFactors().then(function (data) { $scope.factors = data; $scope.factorsLoaded = true; }); } $scope.updateFactors = function (factor) { eventFactorAdminDataContext.updateFactor(role).then(function (data) { logSuccess("Event factor " + factor.name + " updated"); }); } $scope.removeFactor = function (factor) { eventFactorAdminDataContext.deleteFactor(factor).then(function (data) { logSuccess("Event factor " + factor.name + " Deleted"); getFactors(); $rootScope.$broadcast('UpdateFactors'); }); } $scope.manageFactor = function (factor) { eventFactorAdminService.setCurrentFactor(factor); $location.path('/eventfactors/manage'); } getFactors(); } }]); app.directive('manageEventFactor', ['eventFactorAdminDataContext', 'eventFactorAdminService', 'common', '$location', '$modal', '$routeParams', '$upload', '$rootScope', '$filter', function (eventFactorAdminDataContext, eventFactorAdminService, common, $location, $modal, $routeParams, $upload, $rootScope, $filter) { return { restrict: 'E', templateUrl: templatePath + 'manageeventfactor.html', link: link }; function link($scope, elem, attrs) { // Set the log notifiers up var getLogFn = common.logger.getLogFn; var logSuccess = getLogFn("rolesAdmin", "success"); var logError = getLogFn("rolesAdmin", "error"); $scope.goBack = function () { $location.path('/eventfactors'); }; $scope.factor = eventFactorAdminService.getCurrentFactor(); if (!$scope.factor) { $scope.factor = eventFactorAdminService.createBlankFactor(); } else { if ($scope.factor.additionalLinks) { $scope.factor.additionalLinks = $filter('orderBy')($scope.factor.additionalLinks, 'name'); } } $scope.saveFactor = function () { // Set the translucent secondary colour $scope.factor.color.secondary = hexToRgbA($scope.factor.color.secondary, '0.2'); if ($scope.factor.id) { eventFactorAdminDataContext.updateFactor($scope.factor).then(function (data) { logSuccess("Event factor " + $scope.factor.name + " updated"); $location.path('/eventfactors'); $rootScope.$broadcast('UpdateFactors'); }); } else { eventFactorAdminDataContext.createFactor($scope.factor).then(function (data) { logSuccess("Event factor " + $scope.factor.name + " created"); $location.path('/eventfactors'); $rootScope.$broadcast('UpdateFactors'); }); } }; $scope.idealTextColor = function (bgColor) { if (bgColor === 'transparent') return; var nThreshold = 105; var components = getRGBComponents(bgColor); var bgDelta = (components.R * 0.299) + (components.G * 0.587) + (components.B * 0.114); return ((255 - bgDelta) < nThreshold) ? "#000000" : "#ffffff"; }; // Convert the hex to an translucent rgba function hexToRgbA(hex, opacity) { var c; if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)) { c = hex.substring(1).split(''); if (c.length == 3) { c = [c[0], c[0], c[1], c[1], c[2], c[2]]; } c = '0x' + c.join(''); return 'rgba(' + [(c >> 16) & 255, (c >> 8) & 255, c & 255].join(',') + ',' + opacity + ')'; } // It's already in rgba format return hex; } function getRGBComponents(color) { var r = color.substring(1, 3); var g = color.substring(3, 5); var b = color.substring(5, 7); return { R: parseInt(r, 16), G: parseInt(g, 16), B: parseInt(b, 16) }; } $scope.addSection = function () { $scope.factor.sections.push({ title: 'Section ' + ($scope.factor.sections.length + 1), content: '', order: $scope.factor.sections.length + 1 }); }; $scope.removeSection = function (section) { for (i in $scope.factor.sections) { if ($scope.factor.sections[i].title == section.title) { $scope.factor.sections.splice(i, 1); } } }; $scope.addLink = function () { $scope.factor.additionalLinks.push({ name: '', description: '', url: '' }); }; $scope.removeLink = function (link) { var index = $scope.factor.additionalLinks.indexOf(link); $scope.factor.additionalLinks.splice(index, 1) }; } }]); })();