{"version":3,"sources":["app/techs/techs.js","scripts/app.js","index.js","app/techs/tech.js","app/components/step3.js","app/components/step2.js","app/components/step1.js","app/components/main.js","app/components/formValueFactory.js","app/components/formErrors.js","app/components/currencyFactory.js","app/components/categoryFactory.js","templateCacheHtml.js"],"names":["TechsController","$http","vm","this","get","then","response","techs","data","$inject","angular","module","config","$translateProvider","useStaticFilesLoader","prefix","suffix","preferredLanguage","component","templateUrl","controller","bindings","tech","$scope","CategoryFactory","$uibModal","formValueFactory","$window","$translate","fbShare","url","title","descr","image","winWidth","winHeight","winTop","screen","height","winLeft","width","window","open","pencentage","amount","_100","appStep3","categories","getAll","values","percentage_by_category","i","closeModal","modalInstance","close","totalperHour","monthlySalary","getAdjustedMonthlySalary","monthlyBillableHours","getMonthlyBillableHoursTotal","parseFloat","toFixed","value","getBillableYearHoursTotal","Math","floor","getPercentageOfValue","buildPercentages","category","totalAmount","category_max_amount","amounts","step1","currency","code","percentages","categoryAmount","plan","mailto_url","subject","console","log","mail_body","encodeURIComponent","mailto","body","sharePopup","type","text","translationId","$on","current_salary","currentSalary","office","internet","software","phone","new_laptop","newLaptop","marketing","insurance","accountant","health_insurance","healthInsurance","taxes","others","yearly_billable_hours","step2","yearlyBillableHours","sick_days","sickDays","business_days_of_vacation","businessDaysOfVacation","nonbillable_hours_percentage","nonbillableHoursPercentage","holidays","monthly_billable_hours","hour_value","method","headers","Content-Type","transformRequest","jQuery","param","success","http","setTimeout","showFinalModal","animation","animationsEnabled","openedClass","$uibModalInstance","cancel","dismiss","size","controllerAs","nextStep","form2","$setSubmitted","$valid","$emit","frelancerCost","CurrencyFactory","$timeout","appConfig","activeTab","form1_1","form1_2","form1_3","$element","animate","scrollTop","offset","top","focus","prevStep","currencies","default_currency","$rootScope","appMain","$broadcast","languages","es","pt","en","languageSelectedName","lang","currentDate","Date","$watch","factory","vars","sumatory","is_all","isNumber","getLivingCost","expensesAsFreelancer","freelancerCost","livingCost","getBillableHours","billable","nonBillablepercent","nonBillablepercentUnit","nombillabeHours","ceil","monthlyexpensesAsFreelancer","directive","restrict","transclude","scope","errField","errForm","name","symbol","amounts_text","amount_cat_order","amount_currency_order","amount_plan_order","amount_rows","split","amounts_all","cat_index","currency_index","plan_index","j","iron","bronze","silver","gold","platinum","hero","row","trim","parseInt","run","$templateCache","put"],"mappings":"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","file":"../../scripts/app-8b7630e04b.js","sourcesContent":["angular\n .module('app')\n .component('fountainTechs', {\n templateUrl: 'app/techs/techs.html',\n controller: TechsController\n });\n\n/** @ngInject */\nfunction TechsController($http) {\n var vm = this;\n\n $http\n .get('app/techs/techs.json')\n .then(function (response) {\n vm.techs = response.data;\n });\n}\n","\r\nTechsController.$inject = [\"$http\"];angular\n .module('app', ['ui.router', 'ngAnimate', 'ui.bootstrap', 'pascalprecht.translate', 'ngSanitize'])\n .config(['$translateProvider', function ($translateProvider) {\n $translateProvider.useStaticFilesLoader({\n prefix: 'app/i18n/',\n suffix: '.json'\n });\n\n var default_lang = \"es\";\n\n $translateProvider.preferredLanguage('es');\n }]);\n\nangular\n .module('app')\n .component('fountainTechs', {\n templateUrl: 'app/techs/techs.html',\n controller: TechsController\n });\n\n/** @ngInject */\nfunction TechsController($http) {\n var vm = this;\n\n $http\n .get('app/techs/techs.json')\n .then(function (response) {\n vm.techs = response.data;\n });\n}\n\nangular\n .module('app')\n .component('fountainTech', {\n templateUrl: 'app/techs/tech.html',\n bindings: {\n tech: '<'\n }\n });\n\nangular\n .module(\"app\")\n .component(\"appStep3\", {\n templateUrl: \"app/templates/step3.html\",\n controller: [\"$scope\", \"CategoryFactory\", \"$uibModal\", \"formValueFactory\", '$window', \"$http\", \"$translate\", function ($scope, CategoryFactory, $uibModal, formValueFactory, $window, $http, $translate) {\n var appStep3 = this;\n this.categories = CategoryFactory.getAll();\n this.values = formValueFactory;\n this.percentage_by_category = 100;\n\n for (var i in this.categories) {\n this.values[\"category\"] = this.categories[i];\n break;\n }\n\n this.closeModal = function () {\n modalInstance.close();\n };\n\n this.totalperHour = function () {\n var monthlySalary = this.getAdjustedMonthlySalary();\n var monthlyBillableHours = this.getMonthlyBillableHoursTotal();\n if (null != monthlySalary && null != monthlyBillableHours) {\n return parseFloat(monthlySalary / monthlyBillableHours).toFixed(2);\n }\n };\n this.getMonthlyBillableHoursTotal = function () {\n var value = formValueFactory.getBillableYearHoursTotal();\n if (value != null) {\n return Math.floor(value / 12);\n }\n },\n this.getAdjustedMonthlySalary = function () {\n return formValueFactory.getAdjustedMonthlySalary()\n };\n this.getPercentageOfValue = function (value) {\n\n };\n\n\n this.buildPercentages = function () {\n var category = this.values.category;\n var totalAmount = this.totalperHour();\n var category_max_amount = 0;\n if (null != category && null != totalAmount) {\n for (var i in category.amounts) {\n if (category.amounts[i][formValueFactory.step1.currency.code] > category_max_amount) {\n category_max_amount = category.amounts[i][formValueFactory.step1.currency.code];\n }\n }\n if (totalAmount > category_max_amount) {\n category_max_amount = totalAmount;\n }\n category.percentages = {};\n for (var i in category.amounts) {\n category.percentages[i] = pencentage(category.amounts[i][formValueFactory.step1.currency.code], category_max_amount);\n }\n this.percentage_by_category = pencentage(totalAmount, category_max_amount)\n }\n };\n\n this.categoryAmount = function (plan) {\n return this.values.category.amounts[plan][this.formValueFactory.step1.currency.code];\n };\n this.mailto_url = \"\";\n\n $translate(\"MAILTO_SUBJECT\").then(function (subject) {\n console.log(subject);\n $translate(\"MAILTO_BODY\").then(function (mail_body) {\n console.log(mail_body);\n\n appStep3.mailto_url = \"mailto:?subject=\" + encodeURIComponent(subject) + \"&body=\" + encodeURIComponent(mail_body);\n }, function () { });\n }, function () { });\n\n\n this.mailto = function () {\n var body = \"Hola,\\n\" +\n \"Entra a www.calculadorafreela.com y podrás saber (gratis) cuánto cobrar tu hora como freelancer. \";\n return \"mailto:?subject=\" + encodeURIComponent(\"Con esta web podrás saber cuánto cobrar como freelancer!\") + \"&body=\" + encodeURIComponent(body);\n };\n\n this.sharePopup = function (type) {\n var url = null;\n if (\"twitter\" == type) {\n $translate(\"TWITTER_POST\").then(function (text) {\n text = encodeURIComponent(text);\n url = \"https://twitter.com/intent/tweet?text=\" + text;\n $window.open(url, \"\", \"width=670,height=462,top=100,left=100\");\n }, function (translationId) {\n text = encodeURIComponent(translationId);\n url = \"https://twitter.com/intent/tweet?text=\" + text;\n $window.open(url, \"\", \"width=670,height=462,top=100,left=100\");\n });\n\n\n } else if ('facebook' == type) {\n fbShare(\"https://www.calculadorafreela.com/\", \"\", \"\", \"\", 670, 0);\n }\n\n };\n\n function fbShare(url, title, descr, image, winWidth, winHeight) {\n var winTop = (screen.height / 2) - (winHeight / 2);\n var winLeft = (screen.width / 2) - (winWidth / 2);\n window.open('http://www.facebook.com/sharer.php?s=100&p[title]=' + title + '&p[summary]=' + descr + '&p[url]=' + url + '&p[images][0]=' + image, 'sharer', 'top=' + winTop + ',left=' + winLeft + ',toolbar=0,status=0,width=' + winWidth + ',height=' + winHeight);\n }\n\n function pencentage(amount, _100) {\n return amount * 100 / _100\n }\n\n $scope.$on(\"selectStep3\", function () {\n //$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';\n\n var values = {\n currency: formValueFactory.step1.currency.code,\n current_salary: formValueFactory.step1.currentSalary,\n office: formValueFactory.step1.office,\n internet: formValueFactory.step1.internet,\n software: formValueFactory.step1.software,\n phone: formValueFactory.step1.phone,\n new_laptop: formValueFactory.step1.newLaptop,\n marketing: formValueFactory.step1.marketing,\n insurance: formValueFactory.step1.insurance,\n accountant: formValueFactory.step1.accountant,\n health_insurance: formValueFactory.step1.healthInsurance,\n taxes: formValueFactory.step1.taxes,\n others: formValueFactory.step1.others,\n\n yearly_billable_hours: formValueFactory.step2.yearlyBillableHours,\n sick_days: formValueFactory.step2.sickDays,\n business_days_of_vacation: formValueFactory.step2.businessDaysOfVacation,\n nonbillable_hours_percentage: formValueFactory.step2.nonbillableHoursPercentage,\n holidays: formValueFactory.step2.holidays,\n monthly_billable_hours: appStep3.getMonthlyBillableHoursTotal(),\n hour_value: appStep3.totalperHour()\n\n };\n\n $http({\n method: \"post\",\n data: values,\n url: \"/calculate-hour\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded;charset=utf-8\"\n },\n transformRequest: function (data, headers) {\n console.log(data);;\n return jQuery.param(data);\n }\n }).success(function (http, data) {\n console.log(http);\n console.log(data);\n });\n\n $window.setTimeout(function () {\n appStep3.showFinalModal();\n }, 15000);\n\n });\n\n this.showFinalModal = function () {\n var modalInstance = $uibModal.open({\n animation: $scope.animationsEnabled,\n templateUrl: 'app/templates/step3Modal.html',\n //windowTemplateUrl: \"app/templates/step3ModalWindow.html\",\n openedClass: \"modal-open modal-workana\",\n controller: [\"$scope\", \"$uibModalInstance\", function ($scope, $uibModalInstance) {\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }],\n size: \"lg\",\n controllerAs: \"modalCtl\"\n });\n };\n\n\n }],\n controllerAs: \"appStep3\"\n });\n\nangular\n .module(\"app\")\n .component(\"appStep2\", {\n templateUrl: \"app/templates/step2.html\",\n controller: [\"$scope\", \"formValueFactory\", function ($scope, formValueFactory) {\n this.nextStep = nextStep;\n this.values = formValueFactory.step2;\n function nextStep() {\n this.form2.$setSubmitted();\n if (this.form2.$valid) {\n $scope.$emit(\"nextStep\");\n formValueFactory.frelancerCost();\n }\n }\n }],\n controllerAs: \"appStep2\"\n });\n\nangular\n .module(\"app\")\n .component(\"appStep1\", {\n templateUrl: \"app/templates/step1.html\",\n controller: ['CurrencyFactory', 'formValueFactory', '$scope', \"$timeout\", \"appConfig\", function (CurrencyFactory, formValueFactory, $scope, $timeout, appConfig) {\n\n this.activeTab = 0;\n this.currencies = CurrencyFactory.getAll();\n this.nextStep = nextStep;\n this.prevStep = prevStep;\n this.values = formValueFactory.step1;\n\n for (var i in this.currencies) {\n if (appConfig.default_currency == this.currencies[i].code) {\n this.values[\"currency\"] = this.currencies[i];\n break;\n }\n }\n function nextStep() {\n switch (this.activeTab) {\n case 0:\n // validar el primer formulario\n\n this.form1_1.$setSubmitted();\n if (!this.form1_1.$valid) {\n return;\n }\n break;\n case 1:\n // validar el segundo formulario\n\n this.form1_2.$setSubmitted();\n if (!this.form1_2.$valid) {\n return;\n }\n break;\n case 2:\n // validar el tercer formulario\n this.form1_3.$setSubmitted();\n if (!this.form1_3.$valid) {\n return;\n }\n break;\n default:\n return false;\n }\n if (this.activeTab < 2) {\n this.activeTab++;\n if (1 == this.activeTab) {\n var $element = jQuery(\"#input_office\");\n } else if (2 == this.activeTab) {\n $element = jQuery(\"#healthInsurance_id\");\n }\n $timeout(function () {\n jQuery('body').animate({ scrollTop: jQuery(\"#tab-1\").offset().top - 61 }, '200');\n $element.focus();\n }, 300);\n\n } else {\n $scope.$emit(\"nextStep\");\n }\n }\n\n function prevStep() {\n if (this.activeTab > 0) {\n this.activeTab--;\n }\n }\n }],\n controllerAs: \"appStep1\"\n });\n\nangular\n .module(\"app\")\n .component(\"appMain\", {\n templateUrl: \"app/templates/main.html\",\n controller: [\"$scope\", \"$rootScope\", \"appConfig\", \"$timeout\", function ($scope, $rootScope, appConfig, $timeout) {\n var appMain = this;\n\n this.languages = { \"es\": \"Español\", \"pt\": \"Português\", \"en\": \"English\" };\n this.languageSelectedName = this.languages[appConfig.lang];\n appMain.currentDate = new Date();\n appMain.activeTab = 0;\n var old_tab = appMain.activeTab;\n appMain.nextStep = nextStep;\n $scope.$on(\"nextStep\", function () {\n appMain.nextStep();\n });\n\n $scope.$watch(\"appMain.activeTab\", function () {\n\n });\n\n function nextStep() {\n\n switch (appMain.activeTab) {\n case 0:\n // validar el primer formulario\n $timeout(function () {\n jQuery('body').animate({ scrollTop: jQuery(\"#tab-2\").offset().top - 61 }, '200');\n jQuery(\"#input_sickDays\").focus();\n }, 300);\n break;\n case 1:\n // validar el segundo formulario\n $rootScope.$broadcast(\"selectStep3\");\n break;\n case 2:\n\n // validar el segundo formulario\n break;\n default:\n return false;\n }\n if (appMain.activeTab < 2) {\n appMain.activeTab++;\n }\n }\n }],\n controllerAs: \"appMain\"\n });\n\nangular.module('app')\n .factory(\"formValueFactory\", function () {\n return {\n step1: {\n currency: null,\n currentSalary: null,\n office: null,\n internet: null,\n software: null,\n phone: null,\n newLaptop: null,\n marketing: null,\n insurance: null,\n accountant: null,\n healthInsurance: null,\n taxes: null,\n others: null\n },\n step2: {\n yearlyBillableHours: 2080,\n sickDays: null,\n businessDaysOfVacation: null,\n nonbillableHoursPercentage: null,\n holidays: null\n },\n frelancerCost: function () {\n var vars = [\n \"office\",\n \"internet\",\n \"software\",\n \"phone\",\n \"newLaptop\",\n \"insurance\",\n \"accountant\"\n ];\n var sumatory = 0;\n var is_all = true;\n for (var i in vars) {\n var value = this.step1[vars[i]];\n if (value != null && angular.isNumber(value) && value >= 0) {\n sumatory += value;\n } else {\n is_all = false;\n }\n }\n if (is_all) {\n return sumatory;\n } else {\n return null;\n }\n\n },\n getLivingCost: function () {\n var vars = [\n \"healthInsurance\",\n \"taxes\",\n \"others\"\n ];\n var sumatory = 0;\n var is_all = true;\n for (var i in vars) {\n var value = this.step1[vars[i]];\n if (value != null && angular.isNumber(value) && value >= 0) {\n sumatory += value;\n } else {\n is_all = false;\n }\n }\n if (is_all) {\n return sumatory;\n } else {\n return null;\n }\n },\n expensesAsFreelancer: function () {\n var freelancerCost = this.frelancerCost();\n var livingCost = this.getLivingCost();\n if (null != freelancerCost && null != livingCost) {\n return freelancerCost + livingCost;\n }\n },\n getBillableHours: function () {\n var vars = [\n \"sickDays\",\n \"businessDaysOfVacation\",\n \"holidays\"\n ];\n var sumatory = 0;\n var is_all = true;\n for (var i in vars) {\n var value = this.step2[vars[i]];\n if (value != null && angular.isNumber(value) && value >= 0) {\n sumatory += value * 8;\n } else {\n is_all = false;\n }\n }\n if (is_all) {\n return this.step2.yearlyBillableHours - sumatory;\n } else {\n return null;\n }\n },\n getBillableYearHoursTotal: function () {\n var billable = this.getBillableHours();\n var nonBillablepercent = this.step2.nonbillableHoursPercentage;\n if (null != billable && angular.isNumber(nonBillablepercent) && nonBillablepercent > 0) {\n var nonBillablepercentUnit = nonBillablepercent / 100;\n var nombillabeHours = nonBillablepercentUnit * billable;\n return billable - Math.ceil(nombillabeHours);\n } else {\n\n return null;\n }\n },\n getAdjustedMonthlySalary: function () {\n var monthlyexpensesAsFreelancer = this.expensesAsFreelancer();\n var monthlySalary = this.step1.currentSalary;\n\n if (null != monthlySalary && null != monthlyexpensesAsFreelancer) {\n return monthlySalary + monthlyexpensesAsFreelancer;\n }\n\n }\n };\n });\n\n\nangular.module(\"app\")\n .directive('formErrors', function () {\n return {\n restrict: 'E',\n transclude: true,\n scope: {\n errField: '=',\n errForm: '='\n },\n templateUrl: 'app/templates/form-errors.html'\n\n };\n });\nangular\n .module(\"app\")\n .factory(\"CurrencyFactory\", function () {\n return {\n getAll: function () {\n return [\n { code: \"ARS\", name: \"CURRENCY_ARS\", symbol: \"AR$\" },\n { code: \"BRL\", name: \"CURRENCY_BRL\", symbol: \"BRL\" },\n { code: \"CLP\", name: \"CURRENCY_CLP\", symbol: \"CLP\" },\n { code: \"COP\", name: \"CURRENCY_COP\", symbol: \"COP\" },\n { code: \"EUR\", name: \"CURRENCY_EUR\", symbol: \"EUR\" },\n { code: \"MXN\", name: \"CURRENCY_MXN\", symbol: \"MXN\" },\n { code: \"PEN\", name: \"CURRENCY_PEN\", symbol: \"PEN\" },\n { code: \"USD\", name: \"CURRENCY_USD\", symbol: \"USD\" },\n { code: \"UYU\", name: \"CURRENCY_UYU\", symbol: \"UYU\" }\n ];\n }\n };\n });\n\nangular\n .module(\"app\")\n .factory(\"CategoryFactory\", function () {\n return {\n getAll: function () {\n var amounts_text =\n \"IT & Programación\tUSD\tARS\tReais\tpesos chilenos\tpesos colombianos\teuros\tpesos mexicanos\tsoles peruanos\tpesos uruguayos\\n\" +\n \"iron - $9\t9\t133\t29\t5859\t26288\t8\t163\t30\t260\\n\" +\n \"bronze $10.5\t10.5\t155\t34\t6835\t30670\t10\t191\t35\t303\\n\" +\n \"silver $17\t17\t250\t55\t11066\t49655\t16\t308\t57\t490\\n\" +\n \"gold $25\t25\t367\t81\t16273\t73022\t23\t453\t83\t720\\n\" +\n \"platinum $32\t32\t470\t103\t20829\t93468\t29\t580\t106\t922\\n\" +\n \"hero $38\t38\t558\t122\t24735\t110994\t34\t688\t126\t1095\\n\" +\n \"\t\t\t\t\t\t\t\t\t\\n\" +\n \"Diseño y Multimedia\t\t\t\t\t\t\t\t\t\\n\" +\n \"iron - $7\t7\t103\t23\t4557\t20447\t7\t127\t24\t202\\n\" +\n \"bronze $8\t8\t118\t26\t5208\t23367\t8\t145\t27\t231\\n\" +\n \"silver $12\t12\t177\t39\t7811\t35051\t11\t218\t40\t346\\n\" +\n \"gold $17\t17\t250\t55\t11066\t49655\t16\t308\t57\t490\\n\" +\n \"platinum $30\t30\t441\t97\t19527\t87627\t27\t543\t100\t864\\n\" +\n \"hero $35\t35\t514\t113\t22782\t102231\t32\t634\t116\t1008\\n\" +\n \"\t\t\t\t\t\t\t\t\t\\n\" +\n \"Traducción y Contenidos\t\t\t\t\t\t\t\t\t\\n\" +\n \"iron - $6\t6\t89\t20\t3906\t17526\t6\t109\t20\t173\\n\" +\n \"bronze $7\t7\t103\t23\t4557\t20447\t7\t127\t24\t202\\n\" +\n \"silver $9\t9\t133\t29\t5859\t26288\t8\t163\t30\t260\\n\" +\n \"gold $11\t11\t162\t36\t7160\t32130\t10\t200\t37\t317\\n\" +\n \"platinum $13\t13\t191\t42\t8462\t37972\t12\t236\t44\t375\\n\" +\n \"hero $18\t18\t265\t58\t11717\t52576\t16\t326\t60\t519\\n\" +\n \" \t\t\t\t\t\t\t\t\t\\n\" +\n \"Marketing y Ventas\t\t\t\t\t\t\t\t\t\\n\" +\n \"iron - $8\t8\t118\t26\t5208\t23367\t8\t145\t27\t231\\n\" +\n \"bronze $10\t10\t147\t33\t6509\t29209\t9\t181\t34\t288\\n\" +\n \"silver $11\t11\t162\t36\t7160\t32130\t10\t200\t37\t317\\n\" +\n \"gold $17\t17\t250\t55\t11066\t49655\t16\t308\t57\t490\\n\" +\n \"platinum $22\t22\t323\t71\t14320\t64260\t20\t399\t73\t634\\n\" +\n \"hero $30\t30\t441\t97\t19527\t87627\t27\t543\t100\t864\\n\" +\n \"\t\t\t\t\t\t\t\t\t\\n\" +\n \"Soporte Administrativo\t\t\t\t\t\t\t\t\t\\n\" +\n \"iron - $7\t7\t103\t23\t4557\t20447\t7\t127\t24\t202\\n\" +\n \"bronze $7\t7\t103\t23\t4557\t20447\t7\t127\t24\t202\\n\" +\n \"silver $9\t9\t133\t29\t5859\t26288\t8\t163\t30\t260\\n\" +\n \"gold $12\t12\t177\t39\t7811\t35051\t11\t218\t40\t346\\n\" +\n \"platinum $14\t14\t206\t45\t9113\t40893\t13\t254\t47\t404\\n\" +\n \"hero $17\t17\t250\t55\t11066\t49655\t16\t308\t57\t490\\n\" +\n \"\t\t\t\t\t\t\t\t\t\\n\" +\n \"Ingeniería y Manufactura\t\t\t\t\t\t\t\t\t\\n\" +\n \"iron - $10\t10\t147\t33\t6509\t29209\t9\t181\t34\t288\\n\" +\n \"bronze $12\t12\t177\t39\t7811\t35051\t11\t218\t40\t346\\n\" +\n \"silver $19\t19\t279\t61\t12368\t55497\t17\t344\t63\t548\\n\" +\n \"gold $22\t22\t323\t71\t14320\t64260\t20\t399\t73\t634\\n\" +\n \"platinum $28\t28\t411\t90\t18226\t81785\t25\t507\t93\t807\\n\" +\n \"hero $36\t36\t529\t116\t23433\t105152\t32\t652\t120\t1037\\n\" +\n \"\t\t\t\t\t\t\t\t\t\\n\" +\n \"Finanzas y Administración\t\t\t\t\t\t\t\t\t\\n\" +\n \"iron - $9\t9\t133\t29\t5859\t26288\t8\t163\t30\t260\\n\" +\n \"bronze $10\t10\t147\t33\t6509\t29209\t9\t181\t34\t288\\n\" +\n \"silver $14\t14\t206\t45\t9113\t40893\t13\t254\t47\t404\\n\" +\n \"gold $17\t17\t250\t55\t11066\t49655\t16\t308\t57\t490\\n\" +\n \"platinum $25\t25\t367\t81\t16273\t73022\t23\t453\t83\t720\\n\" +\n \"hero $30\t30\t441\t97\t19527\t87627\t27\t543\t100\t864\\n\" +\n \"\t\t\t\t\t\t\t\t\t\\n\" +\n \"Legales\t\t\t\t\t\t\t\t\t\\n\" +\n \"iron - $15\t15\t221\t49\t9764\t43814\t14\t272\t50\t432\\n\" +\n \"bronze $17\t17\t250\t55\t11066\t49655\t16\t308\t57\t490\\n\" +\n \"silver $19\t19\t279\t61\t12368\t55497\t17\t344\t63\t548\\n\" +\n \"gold $25\t25\t367\t81\t16273\t73022\t23\t453\t83\t720\\n\" +\n \"platinum $29\t29\t426\t93\t18876\t84706\t26\t525\t96\t836\\n\" +\n \"hero $33\t33\t485\t106\t21480\t96389\t30\t598\t110\t951\";\n\n var amount_cat_order = [\"IT\",\n \"D_M\",\n \"T_C\",\n \"M_S\",\n \"A_S\",\n \"E_M\",\n \"F_A\",\n \"L\"\n ];\n var amount_currency_order = [\"USD\", \"ARS\", \"BRL\", \"CLP\", \"COP\", \"EUR\", \"MXN\", \"PEN\", \"UYU\"];\n var amount_plan_order = [\"iron\", \"bronze\", \"silver\", \"gold\", \"platinum\", \"hero\"];\n var amount_rows = amounts_text.split(\"\\n\");\n var amounts_all = {};\n\n var cat_index = 0;\n var currency_index = 0;\n var plan_index = 0;\n\n for (var j in amount_cat_order) {\n amounts_all[amount_cat_order[j]] = { iron: {}, bronze: {}, silver: {}, gold: {}, platinum: {}, hero: {} };\n }\n for (var i in amount_rows) {\n if (i == 0) continue;\n var row = amount_rows[i].split(\"\\t\");\n if (row[1].trim() == \"\") continue;\n\n for (var currency_index in amount_currency_order) {\n currency_index = parseInt(currency_index);\n amounts_all[amount_cat_order[cat_index]][amount_plan_order[plan_index]][amount_currency_order[currency_index]] = parseFloat(row[currency_index + 1])\n }\n plan_index++;\n if (plan_index == 6) {\n plan_index = 0;\n cat_index++;\n }\n }\n return [\n {\n code: \"IT\",\n name: \"CAT_IT_AND_PROGRAMMING\",\n amounts: amounts_all[\"IT\"]\n },\n {\n code: \"D_M\",\n name: \"CAT_DESIGN_AND_MULTIMEDIA\",\n amounts: amounts_all[\"D_M\"]\n\n },\n {\n code: \"T_C\",\n name: \"CAT_TRANSLATE_CONTENT\",\n amounts: amounts_all[\"T_C\"]\n },\n {\n code: \"M_S\",\n name: \"CAT_MARKETING_AND_SALES\",\n amounts: amounts_all[\"M_S\"]\n },\n {\n code: \"A_S\",\n name: \"CAT_ADMINISTRATION_SUPPORT\",\n amounts: amounts_all[\"A_S\"]\n },\n {\n code: \"E_M\",\n name: \"CAT_ENGINEERING_AND_MANUFACTURING\",\n amounts: amounts_all[\"E_M\"]\n },\n {\n code: \"F_A\",\n name: \"CAT_FINANCE_AND_ADMINISTRATION\",\n amounts: amounts_all[\"F_A\"]\n },\n {\n code: \"L\",\n name: \"CAT_LEGAL\",\n amounts: amounts_all[\"L\"]\n }\n ];\n }\n };\n });\n\n\n/**\n * Traducción y Contenidos\nMarketing y Ventas\nSoporte Administrativo\nIngeniería y Manufactura\nFinanzas y Administración\nLegales\n */\nangular.module(\"app\").run([\"$templateCache\", function($templateCache) {$templateCache.put(\"app/techs/tech.html\",\"
{{ $ctrl.tech.text1 }}
\\n{{ $ctrl.tech.text2 }}
\\n\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n {{ \\\"SEE_OFFERS_WORKANA\\\" | translate }}\\r\\n
\\r\\n{{ \\\"YOU\\\" | translate }} | \\r\\n\\r\\n | \\r\\n | {{ appStep3.totalperHour() }} | \\r\\n
{{ (\\\"GAMIFICATION_\\\" + item) | translate }} | \\r\\n\\r\\n | \\r\\n | {{ appStep3.values.category.amounts[item][appStep3.values.step1.currency.code]}} | \\r\\n
{{ \\\"FINAL_MODAL_TEXT\\\" | translate }}
\\r\\n \\r\\n{{ $ctrl.tech.text1 }}
\\n{{ $ctrl.tech.text2 }}
\\n\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n {{ \\\"SEE_OFFERS_WORKANA\\\" | translate }}\\r\\n
\\r\\n{{ \\\"YOU\\\" | translate }} | \\r\\n\\r\\n | \\r\\n | {{ appStep3.totalperHour() }} | \\r\\n
{{ (\\\"GAMIFICATION_\\\" + item) | translate }} | \\r\\n\\r\\n | \\r\\n | {{ appStep3.values.category.amounts[item][appStep3.values.step1.currency.code]}} | \\r\\n
{{ \\\"FINAL_MODAL_TEXT\\\" | translate }}
\\r\\n \\r\\n