{"version":3,"sources":["../../changedialog.controller.js","../../usync.hub.js","../../usync.service.js","../../components/usync.progressview.component.js","../../components/usync.reportview.component.js","../../settings/expansion.controller.js","../../settings/importdialog.controller.js","../../settings/settings.controller.js","../../settings/usync.controller.js","../../backoffice/usync/usync.dashboard.controller.js"],"names":["angular","module","controller","$scope","assetsService","vm","this","getTypeName","typeName","substring","lastIndexOf","item","model","loadJs","then","details","forEach","detail","index","oldValueDiff","oldValue","newValueDiff","newValue","oldValueJson","Object","JSON","stringify","newValueJson","diff","Diff","diffWords","close","pageTitle","change","itemType","name","factory","$rootScope","$q","starting","callbacks","scripts","Umbraco","Sys","ServerVariables","umbracoSettings","umbracoPath","initHub","callback","push","undefined","$","connection","promises","script","all","length","hubSetup","pop","signalR","HubConnectionBuilder","withUrl","uSync","signalRHub","withAutomaticReconnect","configureLogging","LogLevel","Warning","build","hub","active","start","cb","catch","console","warn","e","cd","on","eventName","result","$apply","invoke","methodName","done","$http","serviceRoot","uSyncService","getSettings","get","getChangedSettings","getHandlers","set","getHandlerSetSettings","getDefaultSet","getSets","getSelectableSets","report","group","clientId","post","exportItems","clean","importItems","force","put","importItem","saveSettings","settings","getActionHandlers","options","action","reportHandler","handler","importHandler","importPost","actions","exportHandler","cleanExport","startProcess","finishProcess","getLoadedHandlers","getAddOns","getAddOnSplash","getHandlerGroups","getSyncWarnings","checkVersion","downloadExport","httpPath","payload","responseType","response","success","headers","filename","disposition","indexOf","matches","exec","replace","getFileName","contentType","blob","Blob","data","type","navigator","msSaveBlob","saveBlob","webkitSaveBlob","mozSaveBlob","ex","log","urlCreator","window","URL","webkitURL","mozURL","msURL","link","document","createElement","url","createObjectURL","setAttribute","event","createEvent","initMouseEvent","dispatchEvent","location","open","resolve","reject","errorMsg","status","downloadPost","uSyncProgressViewComponent","templateUrl","application","applicationPath","bindings","update","hideLabels","controllerAs","calcPercentage","count","total","component","uSyncReportViewComponent","results","hideAction","hideLink","showAll","hideToggle","allowSelect","selection","editorService","overlayService","uSync8DashboardService","hasFailedDetail","some","showChange","getIcon","getChangeClass","classString","exception","__selected","countChanges","changes","val","key","openDetail","title","view","$onInit","apply","applyState","error","select","_","findIndex","x","splice","appPluginsPath","size","disableBackdropClick","disableEscKey","disableSubmitButton","closeButtonLabelKey","loading","addons","Upload","notificationsService","submit","errors","uploaded","buttonState","file","handleFiles","files","upload","fields","cleanImport","config","ExceptionMessage","working","readonly","docslink","umbracoVersion","version","Message","openAppSettingsOverlay","appSetting","toPascal","o","newO","origKey","newKey","value","Array","map","toCamel","hasOwnProperty","charAt","toUpperCase","slice","toString","constructor","content","hideSubmitButton","confirm","setname","defaultSet","handlerSet","sets","$controller","eventsService","localizationService","uSyncHub","fresh","versionLoaded","reported","syncing","showSpinner","showEverything","groups","perf","showAdvanced","hasuSyncForms","canHaveForms","modes","NONE","REPORT","IMPORT","EXPORT","initSet","currentSet","isSingle","keys","icon","groupInfo","toLowerCase","state","import","defaultButton","labelKey","importGroup","subButtons","importForce","export","exportGroup","everything","handlers","performAction","actionMethod","message","runHandlerAction","alias","getClientId","concat","performHandlerAction","resetStatus","getWarnings","performance","now","exceptionMessage","emit","time","duration","moment","savings","show","humanize","godo","calculateTimeSaved","localizeMany","values","submitButtonLabel","closeButtonLabel","runmode","reportAction","versionInfo","IsCurrent","umbType","Total","changeSet","downloadExportFolder","overlayView","getExportFolderAsFile","n","loadSavingsMessages","showFileActions","warnings","mode","connectionId","exportButtons","$timeout","navigationService","_settingsFolder","selectNavigationItem","page","description","navigation","disabledDashboard","syncTree","tree","path","addOnString","addOns","insertOffset","displayName"],"mappings":"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","file":"usync.10.2.1.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function changeDialogController($scope, assetsService) {\r\n\r\n var vm = this;\r\n vm.item = $scope.model.item;\r\n\r\n var jsdiff = 'lib/jsdiff/diff.js';\r\n\r\n assetsService.loadJs(jsdiff, $scope).then(function () {\r\n calcDiffs();\r\n });\r\n\r\n vm.close = close;\r\n vm.getTypeName = getTypeName;\r\n vm.pageTitle = pageTitle;\r\n\r\n function close() {\r\n if ($scope.model.close) {\r\n $scope.model.close();\r\n }\r\n }\r\n\r\n function getTypeName(typeName) {\r\n return typeName.substring(typeName.lastIndexOf('.') + 1);\r\n }\r\n\r\n function pageTitle() {\r\n return vm.item.change + ' ' + getTypeName(vm.item.itemType) + ' ' + vm.item.name;\r\n }\r\n\r\n function calcDiffs() {\r\n\r\n vm.item.details.forEach(function (detail, index) {\r\n\r\n\r\n let oldValueDiff = detail.oldValue === null ? \"\" : detail.oldValue;\r\n let newValueDiff = detail.newValue === null ? \"\" : detail.newValue;\r\n\r\n if (detail.oldValueJson instanceof Object) {\r\n oldValueDiff = JSON.stringify(detail.oldValue, null, 1);\r\n }\r\n\r\n if (detail.newValueJson instanceof Object) {\r\n newValueDiff = JSON.stringify(detail.newValue, null, 1);\r\n }\r\n\r\n detail.diff = Diff.diffWords(oldValueDiff, newValueDiff );\r\n });\r\n }\r\n }\r\n\r\n angular.module('umbraco')\r\n .controller('uSyncChangeDialogController', changeDialogController);\r\n})();","(function () {\r\n 'use strict';\r\n\r\n function uSyncHub($rootScope, $q, assetsService) {\r\n\r\n var starting = false;\r\n var callbacks = []; \r\n\r\n var scripts = [\r\n Umbraco.Sys.ServerVariables.umbracoSettings.umbracoPath + '/lib/signalr/signalr.min.js']\r\n\r\n var resource = {\r\n initHub: initHub\r\n };\r\n\r\n return resource;\r\n\r\n //////////////\r\n\r\n function initHub(callback) {\r\n\r\n callbacks.push(callback);\r\n\r\n if (!starting) {\r\n if ($.connection === undefined) {\r\n starting = true;\r\n\r\n var promises = [];\r\n scripts.forEach(function (script) {\r\n promises.push(assetsService.loadJs(script));\r\n });\r\n\r\n $q.all(promises)\r\n .then(function () {\r\n while (callbacks.length) {\r\n var cb = callbacks.pop();\r\n hubSetup(cb);\r\n }\r\n starting = false;\r\n });\r\n }\r\n else {\r\n while (callbacks.length) {\r\n var cb = callbacks.pop();\r\n hubSetup(cb);\r\n }\r\n starting = false;\r\n }\r\n }\r\n }\r\n\r\n function hubSetup(callback) {\r\n\r\n $.connection = new signalR.HubConnectionBuilder()\r\n .withUrl(Umbraco.Sys.ServerVariables.uSync.signalRHub)\r\n .withAutomaticReconnect()\r\n .configureLogging(signalR.LogLevel.Warning)\r\n .build();\r\n\r\n var hub = {};\r\n\r\n if ($.connection !== undefined) {\r\n hub = {\r\n active: true,\r\n start: function (cb) {\r\n\r\n try {\r\n $.connection.start().then(function () {\r\n // console.info('Hub started', $.connection.connectionId);\r\n if (cb) {\r\n cb(true);\r\n }\r\n }).catch(function () {\r\n console.warn('Failed to start hub');\r\n if (cb) {\r\n cb(false);\r\n }\r\n });\r\n } catch (e) {\r\n console.warn('Could not setup signalR connection', e);\r\n if (cd) {\r\n cb(false);\r\n }\r\n }\r\n\r\n },\r\n on: function (eventName, callback) {\r\n $.connection.on(eventName, function (result) {\r\n $rootScope.$apply(function () {\r\n if (callback) {\r\n callback(result);\r\n }\r\n });\r\n });\r\n },\r\n invoke: function (methodName, callback) {\r\n $.connection.invoke(methodName)\r\n .done(function (result) {\r\n $rootScope.$apply(function () {\r\n if (callback) {\r\n callback(result);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n }\r\n else {\r\n hub = {\r\n on: function () { },\r\n invoke: function () { },\r\n start: function () { console.warn('no hub to start - missing signalR library ?'); }\r\n };\r\n }\r\n\r\n return callback(hub);\r\n }\r\n }\r\n\r\n angular.module('umbraco.resources')\r\n .factory('uSyncHub', uSyncHub);\r\n})();","/**\r\n * @ngdoc\r\n * @name uSync8Service\r\n * @requires $http\r\n * \r\n * @description provides the link to the uSync api elements\r\n * required for the dashboard to function\r\n */\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n function uSyncServiceController($http, $q) {\r\n\r\n var serviceRoot = Umbraco.Sys.ServerVariables.uSync.uSyncService;\r\n\r\n var service = {\r\n getSettings: getSettings,\r\n getChangedSettings: getChangedSettings,\r\n getHandlers: getHandlers,\r\n getHandlerSetSettings: getHandlerSetSettings,\r\n\r\n getDefaultSet: getDefaultSet,\r\n getSets: getSets,\r\n getSelectableSets: getSelectableSets,\r\n\r\n report: report,\r\n exportItems: exportItems,\r\n importItems: importItems,\r\n importItem: importItem,\r\n saveSettings: saveSettings,\r\n\r\n getActionHandlers: getActionHandlers,\r\n reportHandler: reportHandler,\r\n importHandler: importHandler,\r\n importPost: importPost,\r\n exportHandler: exportHandler,\r\n cleanExport: cleanExport,\r\n\r\n startProcess: startProcess,\r\n finishProcess: finishProcess,\r\n\r\n getLoadedHandlers: getLoadedHandlers,\r\n getAddOns: getAddOns,\r\n getAddOnSplash: getAddOnSplash,\r\n\r\n getHandlerGroups: getHandlerGroups,\r\n\r\n getSyncWarnings: getSyncWarnings,\r\n\r\n checkVersion: checkVersion,\r\n\r\n downloadExport: downloadExport\r\n\r\n };\r\n\r\n return service;\r\n\r\n /////////////////////\r\n\r\n function getSettings() {\r\n return $http.get(serviceRoot + 'GetSettings');\r\n }\r\n\r\n function getDefaultSet() {\r\n return $http.get(serviceRoot + 'GetDefaultSet');\r\n }\r\n\r\n function getSets() {\r\n return $http.get(serviceRoot + 'GetSets');\r\n }\r\n\r\n function getSelectableSets() {\r\n return $http.get(serviceRoot + 'GetSelectableSets');\r\n }\r\n\r\n function getChangedSettings() {\r\n return $http.get(serviceRoot + 'GetChangedSettings');\r\n }\r\n\r\n function getHandlerSetSettings(set) {\r\n return $http.get(serviceRoot + 'GetHandlerSetSettings?id=' + set);\r\n }\r\n\r\n function getHandlers(set) {\r\n return $http.get(serviceRoot + 'GetHandlers?set=' + set);\r\n }\r\n\r\n function getLoadedHandlers() {\r\n return $http.get(serviceRoot + 'GetLoadedHandlers');\r\n }\r\n\r\n function getAddOns() {\r\n return $http.get(serviceRoot + 'GetAddOns');\r\n }\r\n\r\n function getAddOnSplash() {\r\n return $http.get(serviceRoot + 'GetAddOnSplash');\r\n }\r\n\r\n\r\n function report(group, clientId) {\r\n return $http.post(serviceRoot + 'report', { clientId: clientId, group: group });\r\n }\r\n\r\n function exportItems (clientId, clean) {\r\n return $http.post(serviceRoot + 'export', { clientId: clientId, clean: clean });\r\n }\r\n\r\n function importItems(force, set, group, clientId) {\r\n return $http.put(serviceRoot + 'import',\r\n {\r\n force: force,\r\n set: set,\r\n group: group,\r\n clientId: clientId,\r\n });\r\n }\r\n\r\n function getSyncWarnings(action, group) {\r\n return $http.post(serviceRoot + 'GetSyncWarnings?action=' + action, {\r\n group: group\r\n });\r\n }\r\n \r\n\r\n function importItem(item) {\r\n return $http.put(serviceRoot + 'importItem', item);\r\n }\r\n\r\n function saveSettings(settings) {\r\n return $http.post(serviceRoot + 'savesettings', settings);\r\n }\r\n\r\n function getHandlerGroups(set) {\r\n return $http.get(serviceRoot + 'GetHandlerGroups?set=' + set);\r\n }\r\n\r\n function checkVersion() {\r\n return $http.get(serviceRoot + 'CheckVersion');\r\n }\r\n\r\n\r\n function getActionHandlers(options) {\r\n return $http.post(serviceRoot + 'GetActionHandlers?action=' + options.action,\r\n {\r\n group: options.group,\r\n set: options.set\r\n });\r\n }\r\n\r\n function reportHandler(handler, options, clientId) {\r\n return $http.post(serviceRoot + 'ReportHandler', {\r\n handler: handler,\r\n clientId: clientId\r\n });\r\n }\r\n\r\n function importHandler(handler, options, clientId) {\r\n return $http.post(serviceRoot + 'ImportHandler', {\r\n handler: handler,\r\n clientId: clientId,\r\n force: options.force,\r\n set: options.set\r\n });\r\n }\r\n\r\n function importPost(actions, options, clientId) {\r\n return $http.post(serviceRoot + 'ImportPost', {\r\n actions: actions,\r\n clientId: clientId,\r\n set: options.set\r\n });\r\n }\r\n\r\n function exportHandler(handler, options, clientId) {\r\n return $http.post(serviceRoot + 'ExportHandler', {\r\n handler: handler,\r\n clientId: clientId,\r\n set: options.set\r\n });\r\n }\r\n\r\n function startProcess(action) {\r\n return $http.post(serviceRoot + 'StartProcess?action=' + action);\r\n }\r\n\r\n function finishProcess(action, actions) {\r\n return $http.post(serviceRoot + 'FinishProcess?action=' + action, actions);\r\n }\r\n\r\n function cleanExport() {\r\n return $http.post(serviceRoot + 'cleanExport');\r\n }\r\n\r\n function downloadExport() {\r\n return downloadPost(serviceRoot + 'downloadExport');\r\n }\r\n\r\n\r\n\r\n /*\r\n * Downloads a file to the client using AJAX/XHR\r\n * Based on an implementation here: web.student.tuwien.ac.at/~e0427417/jsdownload.html\r\n * See https://stackoverflow.com/a/24129082/694494\r\n */\r\n function downloadPost(httpPath, payload) {\r\n\r\n // Use an arraybuffer\r\n return $http.post(httpPath, payload, { responseType: 'arraybuffer' })\r\n .then(function (response) {\r\n\r\n var octetStreamMime = 'application/octet-stream';\r\n var success = false;\r\n\r\n // Get the headers\r\n var headers = response.headers();\r\n\r\n // Get the filename from the header or default to \"download.bin\"\r\n var filename = getFileName(headers);\r\n\r\n // Determine the content type from the header or default to \"application/octet-stream\"\r\n var contentType = headers['content-type'] || octetStreamMime;\r\n\r\n try {\r\n // Try using msSaveBlob if supported\r\n let blob = new Blob([response.data], { type: contentType });\r\n if (navigator.msSaveBlob)\r\n navigator.msSaveBlob(blob, filename);\r\n else {\r\n // Try using other saveBlob implementations, if available\r\n var saveBlob = navigator.webkitSaveBlob || navigator.mozSaveBlob || navigator.saveBlob;\r\n if (saveBlob === undefined) throw \"Not supported\";\r\n saveBlob(blob, filename);\r\n }\r\n success = true;\r\n } catch (ex) {\r\n console.log(\"saveBlob method failed with the following exception:\");\r\n console.log(ex);\r\n }\r\n\r\n if (!success) {\r\n // Get the blob url creator\r\n var urlCreator = window.URL || window.webkitURL || window.mozURL || window.msURL;\r\n if (urlCreator) {\r\n // Try to use a download link\r\n var link = document.createElement('a');\r\n if ('download' in link) {\r\n // Try to simulate a click\r\n try {\r\n // Prepare a blob URL\r\n let blob = new Blob([response.data], { type: contentType });\r\n let url = urlCreator.createObjectURL(blob);\r\n link.setAttribute('href', url);\r\n\r\n // Set the download attribute (Supported in Chrome 14+ / Firefox 20+)\r\n link.setAttribute(\"download\", filename);\r\n\r\n // Simulate clicking the download link\r\n var event = document.createEvent('MouseEvents');\r\n event.initMouseEvent('click', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 0, null);\r\n link.dispatchEvent(event);\r\n success = true;\r\n\r\n } catch (ex) {\r\n console.log(\"Download link method with simulated click failed with the following exception:\");\r\n console.log(ex);\r\n }\r\n }\r\n\r\n if (!success) {\r\n // Fallback to window.location method\r\n try {\r\n // Prepare a blob URL\r\n // Use application/octet-stream when using window.location to force download\r\n let blob = new Blob([response.data], { type: octetStreamMime });\r\n let url = urlCreator.createObjectURL(blob);\r\n window.location = url;\r\n success = true;\r\n } catch (ex) {\r\n console.log(\"Download link method with window.location failed with the following exception:\");\r\n console.log(ex);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n if (!success) {\r\n // Fallback to window.open method\r\n window.open(httpPath, '_blank', '');\r\n }\r\n\r\n return $q.resolve();\r\n\r\n }, function (response) {\r\n\r\n return $q.reject({\r\n errorMsg: \"An error occurred downloading the file\",\r\n data: response.data,\r\n status: response.status\r\n });\r\n });\r\n }\r\n\r\n\r\n function getFileName(headers) {\r\n var disposition = headers[\"content-disposition\"];\r\n if (disposition && disposition.indexOf('attachment') !== -1) {\r\n var filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\r\n var matches = filenameRegex.exec(disposition);\r\n if (matches != null && matches[1]) {\r\n return matches[1].replace(/['\"]/g, '');\r\n }\r\n }\r\n\r\n return \"usync_export.zip\";\r\n }\r\n\r\n }\r\n\r\n angular.module('umbraco.services')\r\n .factory('uSync8DashboardService', uSyncServiceController);\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var uSyncProgressViewComponent = {\r\n templateUrl: Umbraco.Sys.ServerVariables.application.applicationPath + 'App_Plugins/uSync/components/usync.progressview.html',\r\n bindings: {\r\n status: '<',\r\n update: '<',\r\n hideLabels: '<'\r\n },\r\n controllerAs: 'vm',\r\n controller: uSyncProgressViewController\r\n };\r\n\r\n function uSyncProgressViewController() {\r\n var vm = this;\r\n\r\n vm.calcPercentage = calcPercentage;\r\n\r\n function calcPercentage(status) {\r\n if (status !== undefined && status.count !== undefined) {\r\n return (100 * status.count) / status.total;\r\n }\r\n return 1;\r\n }\r\n }\r\n\r\n angular.module('umbraco')\r\n .component('usyncProgressView', uSyncProgressViewComponent);\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var uSyncReportViewComponent = {\r\n templateUrl: Umbraco.Sys.ServerVariables.application.applicationPath + 'App_Plugins/uSync/components/usync.reportview.html',\r\n bindings: {\r\n action: '<',\r\n results: '<',\r\n hideAction: '<',\r\n hideLink: '<',\r\n showAll: '<',\r\n hideToggle: '<',\r\n allowSelect: '<',\r\n selection: '='\r\n },\r\n controllerAs: 'vm',\r\n controller: uSyncReportViewController\r\n };\r\n\r\n function uSyncReportViewController($scope, editorService,\r\n overlayService, uSync8DashboardService) {\r\n\r\n var vm = this;\r\n\r\n vm.showChange = showChange;\r\n vm.getIcon = getIcon;\r\n vm.getChangeClass = getChangeClass;\r\n vm.getTypeName = getTypeName;\r\n vm.countChanges = countChanges;\r\n vm.openDetail = openDetail;\r\n vm.showAll = vm.showAll || false;\r\n\r\n vm.$onInit = function () {\r\n vm.hideLink = vm.hideLink ? true : false;\r\n vm.hideAction = vm.hideAction ? true : false;\r\n };\r\n\r\n\r\n vm.apply = apply;\r\n vm.status = status;\r\n\r\n /////////\r\n\r\n function showChange(change) {\r\n return vm.showAll || (change !== 'NoChange' && change !== 'Removed');\r\n }\r\n\r\n function hasFailedDetail(details) {\r\n if (details == null || details.length == 0) {\r\n return false;\r\n }\r\n\r\n return details.some(function (detail) {\r\n return !detail.success;\r\n })\r\n }\r\n\r\n function getChangeClass(result) {\r\n\r\n var classString = '';\r\n if (vm.allowSelect || result.exception != null) {\r\n classString = '-usync-can-select ';\r\n }\r\n\r\n if (result.__selected) {\r\n classString += '-selected '\r\n }\r\n\r\n if (!result.success) {\r\n return classString + 'usync-change-row-Fail';\r\n }\r\n else if (hasFailedDetail(result.details)) {\r\n return classString + ' usync-change-row-Warn';\r\n }\r\n\r\n return classString + ' usync-change-row-' + result.change;\r\n }\r\n\r\n function getIcon(result) {\r\n if (!result.success) {\r\n return \"icon-delete color-red\";\r\n }\r\n else if (hasFailedDetail(result.details)) {\r\n return \"icon-alert color-yellow\";\r\n }\r\n switch (result.change) {\r\n case 'NoChange':\r\n return 'icon-check color-grey';\r\n case 'Update':\r\n return 'icon-check color-orange';\r\n case 'Delete':\r\n return 'icon-delete color-red';\r\n case 'Import':\r\n return 'icon-check color-green';\r\n case 'Export':\r\n return 'icon-check color-green';\r\n default:\r\n return 'icon-flag color-red';\r\n }\r\n }\r\n\r\n function getTypeName(typeName) {\r\n if (typeName !== undefined) {\r\n return typeName.substring(typeName.lastIndexOf('.') + 1);\r\n }\r\n return \"??\";\r\n }\r\n\r\n function countChanges(changes) {\r\n var count = 0;\r\n angular.forEach(changes, function (val, key) {\r\n if (val.change !== 'NoChange') {\r\n count++;\r\n }\r\n });\r\n\r\n return count;\r\n }\r\n\r\n function openDetail(item) {\r\n\r\n var options = {\r\n item: item,\r\n title: 'uSync Change',\r\n view: Umbraco.Sys.ServerVariables.application.applicationPath + \"App_Plugins/uSync/changedialog.html\",\r\n close: function () {\r\n editorService.close();\r\n }\r\n };\r\n editorService.open(options);\r\n }\r\n\r\n function apply(item) {\r\n\r\n // do some application thing (apply just one item)\r\n item.applyState = 'busy';\r\n uSync8DashboardService.importItem(item)\r\n .then(function (result) {\r\n item.applyState = 'success';\r\n }, function (error) {\r\n console.error(error);\r\n item.applyState = 'error';\r\n });\r\n }\r\n\r\n vm.select = select;\r\n\r\n function select(item) {\r\n if (vm.allowSelect && vm.selection !== undefined) {\r\n var index = _.findIndex(vm.selection,\r\n (x) => (x.key == item.key && x.name == item.name)\r\n );\r\n if (index === -1) {\r\n vm.selection.push(item);\r\n item.__selected = true;\r\n }\r\n else {\r\n vm.selection.splice(index, 1);\r\n item.__selected = false; \r\n }\r\n }\r\n\r\n if (item.exception != null) {\r\n\r\n overlayService.open({\r\n view: Umbraco.Sys.ServerVariables.umbracoSettings.appPluginsPath + '/uSync/itemdialog.html',\r\n title: item.name,\r\n item: item,\r\n exception: item.exception,\r\n size: 'usync-error',\r\n disableBackdropClick: true,\r\n disableEscKey: true,\r\n disableSubmitButton: true,\r\n closeButtonLabelKey: 'general_close',\r\n close: function () {\r\n overlayService.close();\r\n }\r\n });\r\n }\r\n }\r\n\r\n function status(item) {\r\n if (item.applyState === undefined) return 'init';\r\n return item.applyState;\r\n }\r\n\r\n }\r\n\r\n angular.module('umbraco')\r\n .component('usyncReportView', uSyncReportViewComponent);\r\n})();","(function () {\r\n\r\n 'use strict';\r\n\r\n function expansionController($scope, uSync8DashboardService) {\r\n\r\n var vm = this;\r\n vm.loading = true;\r\n ///\r\n\r\n uSync8DashboardService.getAddOnSplash()\r\n .then(function (result) {\r\n vm.addons = result.data;\r\n vm.loading = false;\r\n });\r\n }\r\n\r\n angular.module('umbraco')\r\n .controller('uSyncExpansionController', expansionController);\r\n})();","(function () {\r\n 'use strict';\r\n\r\n function importDialogController($scope, Upload, notificationsService) {\r\n\r\n var vm = this;\r\n\r\n vm.close = close;\r\n vm.submit = submit;\r\n\r\n vm.errors = [];\r\n vm.uploaded = false; \r\n vm.success = false; \r\n\r\n vm.buttonState = 'init';\r\n vm.file = null;\r\n vm.handleFiles = handleFiles;\r\n vm.upload = upload;\r\n\r\n ////////\r\n\r\n function handleFiles(files, event) {\r\n if (files && files.length > 0) {\r\n vm.file = files[0];\r\n }\r\n }\r\n\r\n function upload(file) {\r\n vm.buttonState = 'busy';\r\n\r\n Upload.upload({\r\n url: Umbraco.Sys.ServerVariables.uSync.uSyncService + 'UploadImport',\r\n fields: {\r\n clean: vm.cleanImport\r\n },\r\n file: file\r\n }).success(function (data, status, headers, config) {\r\n vm.uploaded = true;\r\n vm.success = data.success;\r\n\r\n if (data.success) {\r\n vm.buttonState = 'success';\r\n }\r\n else {\r\n vm.buttonState = 'error';\r\n vm.errors = data.errors; \r\n }\r\n }).error(function (event, status, headers, config) {\r\n vm.uploaded = true;\r\n vm.success = false; \r\n vm.buttonState = 'error';\r\n notificationsService.error('error', 'Failed to upload '\r\n + status + ' ' + event.ExceptionMessage);\r\n\r\n vm.errors.push('Zip file upload error ' + \r\n '[' + status + '] ' +\r\n event.ExceptionMessage);\r\n });\r\n }\r\n\r\n\r\n ////////\r\n\r\n function close() {\r\n if ($scope.model.close) {\r\n $scope.model.close();\r\n }\r\n }\r\n\r\n function submit(action) {\r\n if ($scope.model.submit) {\r\n $scope.model.submit(action);\r\n }\r\n }\r\n\r\n }\r\n\r\n angular.module('umbraco')\r\n .controller('uSyncImportDialogController', importDialogController);\r\n})();","(function () {\r\n 'use strict';\r\n\r\n function settingsController($scope,\r\n uSync8DashboardService,\r\n overlayService,\r\n notificationsService) {\r\n\r\n var vm = this;\r\n vm.working = false;\r\n vm.loading = true;\r\n vm.readonly = true;\r\n\r\n vm.docslink = \"https://docs.jumoo.co.uk/usync/reference/config/\";\r\n\r\n vm.umbracoVersion = Umbraco.Sys.ServerVariables.application.version;\r\n\r\n vm.saveSettings = saveSettings;\r\n vm.openAppSettingsOverlay = openAppSettingsOverlay;\r\n\r\n init();\r\n\r\n ///////////\r\n\r\n function init() {\r\n getSettings();\r\n getSets();\r\n }\r\n\r\n ///////////\r\n function getSettings() {\r\n\r\n uSync8DashboardService.getSettings()\r\n .then(function (result) {\r\n vm.settings = result.data;\r\n vm.loading = false;\r\n getHandlerSetSettings(vm.settings.defaultSet);\r\n });\r\n }\r\n\r\n function getHandlerSetSettings(setname) {\r\n\r\n uSync8DashboardService.getHandlerSetSettings(setname)\r\n .then(function (result) {\r\n vm.handlerSet = result.data;\r\n });\r\n\r\n }\r\n\r\n function getSets() {\r\n uSync8DashboardService.getSets()\r\n .then(function (result) {\r\n vm.sets = result.data;\r\n // console.log(result.data);\r\n })\r\n }\r\n\r\n function saveSettings() {\r\n vm.working = false;\r\n uSync8DashboardService.saveSettings(vm.settings)\r\n .then(function (result) {\r\n vm.working = false;\r\n notificationsService.success('Saved', 'Settings updated');\r\n }, function (error) {\r\n notificationsService.error('Saving', error.data.Message);\r\n });\r\n }\r\n\r\n\r\n\r\n function openAppSettingsOverlay() {\r\n\r\n uSync8DashboardService.getChangedSettings()\r\n .then(function (result) {\r\n var appSetting = {\r\n \"uSync\": toPascal(result.data)\r\n }\r\n\r\n var options = {\r\n view: Umbraco.Sys.ServerVariables.umbracoSettings.appPluginsPath + '/uSync/settings/settings.overlay.html',\r\n title: 'appsettings.json snipped',\r\n content: JSON.stringify(appSetting, null, 4),\r\n docslink: vm.docslink,\r\n disableBackdropClick: true,\r\n disableEscKey: true,\r\n hideSubmitButton: true,\r\n submit: function () {\r\n overlayService.close();\r\n }\r\n };\r\n\r\n overlayService.confirm(options);\r\n });\r\n\r\n }\r\n\r\n\r\n function toPascal(o) {\r\n var newO, origKey, newKey, value\r\n if (o instanceof Array) {\r\n return o.map(function (value) {\r\n if (typeof value === \"object\") {\r\n value = toCamel(value)\r\n }\r\n return value\r\n })\r\n } else {\r\n newO = {}\r\n for (origKey in o) {\r\n if (o.hasOwnProperty(origKey)) {\r\n newKey = (origKey.charAt(0).toUpperCase() + origKey.slice(1) || origKey).toString()\r\n value = o[origKey]\r\n if (value instanceof Array || (value !== null && value.constructor === Object)) {\r\n value = toPascal(value)\r\n }\r\n newO[newKey] = value\r\n }\r\n }\r\n }\r\n return newO\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n angular.module('umbraco')\r\n .controller('uSyncSettingsController', settingsController);\r\n})();","(function () {\r\n 'use strict';\r\n\r\n function uSyncController($scope, $q, $controller,\r\n eventsService,\r\n overlayService,\r\n notificationsService,\r\n localizationService,\r\n editorService,\r\n uSync8DashboardService,\r\n uSyncHub) {\r\n\r\n var vm = this;\r\n vm.fresh = true;\r\n vm.loading = true;\r\n vm.versionLoaded = false;\r\n vm.working = false;\r\n vm.reported = false;\r\n vm.syncing = false;\r\n vm.hideLink = false;\r\n vm.showSpinner = false;\r\n vm.showEverything = true;\r\n\r\n vm.selection = [];\r\n\r\n vm.groups = [];\r\n vm.perf = 0;\r\n\r\n vm.showAdvanced = false;\r\n vm.hasuSyncForms = false;\r\n vm.canHaveForms = false;\r\n\r\n var modes = {\r\n NONE: 0,\r\n REPORT: 1,\r\n IMPORT: 2,\r\n EXPORT: 3\r\n };\r\n\r\n vm.runmode = modes.NONE;\r\n\r\n vm.showAll = false;\r\n vm.status = {};\r\n vm.reportAction = '';\r\n\r\n vm.everything = {\r\n icon: 'icon-paper-plane-alt color-deep-orange',\r\n name: 'Everything',\r\n group: '',\r\n state: 'init',\r\n key: 'everything'\r\n }\r\n\r\n vm.everything.import = {\r\n state: 'init',\r\n defaultButton: {\r\n labelKey: 'usync_import',\r\n handler: function () { importItems(false, vm.everything); }\r\n },\r\n subButtons: [\r\n {\r\n labelKey: 'usync_importforce',\r\n handler: function () { importForce(vm.everything); }\r\n }]\r\n };\r\n\r\n vm.everything.export = {\r\n state: 'init',\r\n defaultButton: {\r\n labelKey: 'usync_export',\r\n handler: function () { exportGroup(vm.everything); }\r\n },\r\n subButtons: [\r\n {\r\n labelKey: 'usync_exportClean',\r\n handler: function () { cleanExport(); }\r\n }\r\n ]\r\n }\r\n\r\n vm.report = report;\r\n vm.versionInfo = {\r\n IsCurrent: true\r\n };\r\n\r\n vm.importForce = importForce;\r\n vm.importItems = importItems;\r\n vm.importGroup = importGroup;\r\n vm.exportGroup = exportGroup;\r\n\r\n vm.getTypeName = getTypeName;\r\n\r\n vm.showChange = showChange;\r\n vm.countChanges = countChanges;\r\n vm.calcPercentage = calcPercentage;\r\n vm.openDetail = openDetail;\r\n\r\n vm.changeSet = changeSet;\r\n\r\n vm.downloadExportFolder = downloadExportFolder;\r\n\r\n init();\r\n\r\n function init() {\r\n InitHub();\r\n loadSavingsMessages();\r\n\r\n uSync8DashboardService.getDefaultSet()\r\n .then(function (result) {\r\n vm.currentSet = result.data;\r\n initSet(vm.currentSet);\r\n });\r\n\r\n uSync8DashboardService.getSelectableSets()\r\n .then(function (result) {\r\n vm.sets = result.data;\r\n });\r\n\r\n uSync8DashboardService.checkVersion()\r\n .then(function (result) {\r\n vm.versionLoaded = true;\r\n vm.versionInfo = result.data;\r\n });\r\n\r\n\r\n if (Umbraco.Sys.ServerVariables.uSync.showFileActions) {\r\n vm.everything.import.subButtons.push({\r\n labelKey: 'usync_importFile',\r\n handler: function () { importFile(vm.everything) }\r\n });\r\n\r\n vm.everything.export.subButtons.push({\r\n labelKey: 'usync_exportFile',\r\n handler: function () { exportFile(vm.everything); }\r\n });\r\n }\r\n\r\n }\r\n\r\n function initSet(setname) {\r\n\r\n vm.loading = true;\r\n\r\n getHandlerGroups();\r\n\r\n // just so there is something there when you start\r\n uSync8DashboardService.getHandlers(setname)\r\n .then(function (result) {\r\n vm.handlers = result.data;\r\n vm.status.handlers = vm.handlers;\r\n vm.loading = false;\r\n });\r\n }\r\n\r\n\r\n function performAction(options, actionMethod, cb) {\r\n\r\n return $q(function (resolve, reject) {\r\n uSync8DashboardService.getActionHandlers(options)\r\n .then(function (result) {\r\n vm.status.handlers = result.data;\r\n performHandlerAction(vm.status.handlers, actionMethod, options, cb)\r\n .then(function () {\r\n resolve();\r\n }, function (error) {\r\n reject(error)\r\n })\r\n });\r\n });\r\n }\r\n\r\n function performHandlerAction(handlers, actionMethod, options, cb) {\r\n\r\n\r\n return $q(function (resolve, reject) {\r\n\r\n var index = 0;\r\n vm.status.message = 'Starting ' + options.action;\r\n vm.status.total = handlers.length - 1;\r\n\r\n uSync8DashboardService.startProcess(options.action)\r\n .then(function () {\r\n runHandlerAction(handlers[index])\r\n });\r\n\r\n function runHandlerAction(handler) {\r\n\r\n vm.status.message = handler.name;\r\n\r\n handler.status = 1;\r\n actionMethod(handler.alias, options, getClientId())\r\n .then(function (result) {\r\n\r\n vm.results = vm.results.concat(result.data.actions);\r\n\r\n handler.status = 2;\r\n handler.changes = countChanges(result.data.actions);\r\n\r\n index++;\r\n vm.status.count = index;\r\n\r\n if (index < handlers.length) {\r\n runHandlerAction(handlers[index]);\r\n }\r\n else {\r\n\r\n vm.status.message = 'Finishing ' + options.action;\r\n\r\n uSync8DashboardService.finishProcess(options.action, vm.results)\r\n .then(function () {\r\n resolve();\r\n });\r\n }\r\n }, function (error) {\r\n // error in this handler ? \r\n // do we want to carry on with the other ones or just stop?\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n function report(group) {\r\n\r\n if (vm.working === true) return;\r\n\r\n vm.results = [];\r\n\r\n resetStatus(modes.REPORT);\r\n getWarnings('report');\r\n group.state = 'busy';\r\n\r\n var options = {\r\n action: 'report',\r\n group: group.group,\r\n set: vm.currentSet\r\n };\r\n\r\n var start = performance.now();\r\n\r\n performAction(options, uSync8DashboardService.reportHandler)\r\n .then(function (results) {\r\n vm.working = false;\r\n vm.reported = true;\r\n vm.perf = performance.now() - start;\r\n vm.status.message = 'Report complete';\r\n group.state = 'success';\r\n }, function (error) {\r\n vm.working = false;\r\n group.state = 'error';\r\n notificationsService.error('Error', error.data.ExceptionMessage ?? error.data.exceptionMessage);\r\n });\r\n }\r\n\r\n function importForce(group) {\r\n importItems(true, group);\r\n }\r\n\r\n function importItems(force, group) {\r\n\r\n if (vm.working === true) return;\r\n\r\n vm.results = [];\r\n resetStatus(modes.IMPORT);\r\n getWarnings('import');\r\n\r\n group.state = 'busy';\r\n\r\n var options = {\r\n action: 'import',\r\n group: group.group,\r\n force: force,\r\n set: vm.currentSet\r\n };\r\n\r\n var start = performance.now();\r\n\r\n performAction(options, uSync8DashboardService.importHandler)\r\n .then(function (results) {\r\n\r\n vm.status.message = 'Post import actions';\r\n\r\n uSync8DashboardService.importPost(vm.results, options, getClientId())\r\n .then(function (results) {\r\n vm.working = false;\r\n vm.reported = true;\r\n vm.perf = performance.now() - start;\r\n group.state = 'success';\r\n eventsService.emit('usync-dashboard.import.complete');\r\n calculateTimeSaved(vm.results);\r\n vm.status.message = 'Complete';\r\n });\r\n }, function (error) {\r\n vm.working = false;\r\n vm.group.state = 'error';\r\n notificationsService.error('Error', error.data.ExceptionMessage ?? error.data.exceptionMessage);\r\n });\r\n }\r\n\r\n function exportGroup(group, cb) {\r\n\r\n if (vm.working === true) return;\r\n\r\n vm.results = [];\r\n resetStatus(modes.EXPORT);\r\n group.state = 'busy';\r\n\r\n var options = {\r\n action: 'export',\r\n group: group.group,\r\n set: vm.currentSet\r\n };\r\n\r\n var start = performance.now();\r\n\r\n performAction(options, uSync8DashboardService.exportHandler)\r\n .then(function (results) {\r\n vm.status.message = 'Export complete';\r\n vm.working = false;\r\n vm.reported = true;\r\n vm.perf = performance.now() - start;\r\n\r\n group.state = 'success';\r\n vm.savings.show = true;\r\n vm.savings.title = 'All items exported.';\r\n vm.savings.message = 'Now go wash your hands ๐Ÿงผ!';\r\n eventsService.emit('usync-dashboard.export.complete');\r\n\r\n if (cb) { cb(); }\r\n\r\n }, function (error) {\r\n vm.working = false;\r\n group.state = 'error';\r\n notificationsService.error('Error', error.data.ExceptionMessage ?? error.data.exceptionMessage);\r\n });\r\n }\r\n\r\n function cleanExport() {\r\n\r\n localizationService.localizeMany([\"usync_cleanTitle\",\r\n \"usync_cleanMsg\", \"usync_cleanSubmit\", \"usync_cleanClose\"])\r\n .then(function (values) {\r\n\r\n\r\n overlayService.open({\r\n title: values[0],\r\n content: values[1],\r\n disableBackdropClick: true,\r\n disableEscKey: true,\r\n submitButtonLabel: values[2],\r\n closeButtonLabel: values[3],\r\n submit: function () {\r\n overlayService.close();\r\n\r\n uSync8DashboardService.cleanExport()\r\n .then(function () {\r\n exportGroup(vm.everything);\r\n });\r\n },\r\n close: function () {\r\n overlayService.close();\r\n }\r\n });\r\n });\r\n }\r\n\r\n var overlayView =\r\n Umbraco.Sys.ServerVariables.umbracoSettings.appPluginsPath + '/uSync/settings/overlay.html';\r\n\r\n\r\n function exportFile(group) {\r\n\r\n localizationService.localizeMany([\r\n \"usync_exportFile\",\r\n \"usync_exportFileMsg\",\r\n \"usync_export\", \"general_close\"])\r\n .then(function (values) {\r\n\r\n overlayService.open({\r\n view: overlayView,\r\n title: values[0],\r\n content: values[1],\r\n submitButtonLabel: values[2],\r\n closeButtonLabel: values[3],\r\n submit: function () {\r\n overlayService.close();\r\n\r\n uSync8DashboardService.cleanExport()\r\n .then(function () {\r\n exportGroup(group, function () {\r\n getExportFolderAsFile();\r\n });\r\n });\r\n },\r\n close: function () {\r\n overlayService.close();\r\n }\r\n });\r\n });\r\n }\r\n\r\n function downloadExportFolder() {\r\n\r\n localizationService.localizeMany([\r\n \"usync_downloadTitle\",\r\n \"usync_downloadMsg\",\r\n \"usync_download\", \"general_close\"])\r\n .then(function (values) {\r\n\r\n overlayService.open({\r\n view: overlayView,\r\n title: values[0],\r\n content: values[1],\r\n submitButtonLabel: values[2],\r\n closeButtonLabel: values[3],\r\n submit: function () {\r\n overlayService.close();\r\n getExportFolderAsFile();\r\n },\r\n close: function () {\r\n overlayService.close();\r\n }\r\n });\r\n });\r\n }\r\n\r\n function getExportFolderAsFile() {\r\n uSync8DashboardService.downloadExport()\r\n .then(function (result) {\r\n console.log('done');\r\n });\r\n }\r\n\r\n function importFile(group) {\r\n\r\n editorService.open({\r\n title: 'Import from file',\r\n size: 'small',\r\n view: Umbraco.Sys.ServerVariables.umbracoSettings.appPluginsPath + '/uSync/settings/importDialog.html',\r\n submit: function (action) {\r\n editorService.close();\r\n console.log(action);\r\n\r\n if (action == 'import ') {\r\n importItems(false, group);\r\n }\r\n else {\r\n report(group);\r\n }\r\n },\r\n close: function () {\r\n editorService.close();\r\n }\r\n });\r\n\r\n }\r\n\r\n // add a little joy to the process.\r\n function calculateTimeSaved(results) {\r\n var changes = countChanges(results);\r\n var time = changes * 26.5;\r\n\r\n var duration = moment.duration(time, 'seconds');\r\n\r\n if (time >= 180) {\r\n vm.savings.show = true;\r\n\r\n vm.savings.title = 'You just saved about ' + duration.humanize() + \"!\";\r\n vm.savings.message = '';\r\n\r\n for (let x = 0; x < vm.godo.length; x++) {\r\n if (vm.godo[x].time < time) {\r\n vm.savings.message = vm.godo[x].message;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n //////////////\r\n\r\n function getWarnings(action) {\r\n uSync8DashboardService.getSyncWarnings(action)\r\n .then(function (result) {\r\n vm.warnings = result.data;\r\n });\r\n }\r\n\r\n vm.importGroup = {};\r\n vm.exportButtons = {};\r\n\r\n function getHandlerGroups() {\r\n vm.showEverything = false;\r\n vm.groups = [];\r\n\r\n uSync8DashboardService.getHandlerGroups(vm.currentSet)\r\n .then(function (result) {\r\n\r\n var groups = result.data;\r\n var isSingle = Object.keys(groups).length === 1;\r\n\r\n _.forEach(groups, function (icon, group) {\r\n if (group == '_everything') {\r\n vm.showEverything = true;\r\n }\r\n else {\r\n\r\n var groupInfo = {\r\n name: group,\r\n group: group,\r\n icon: icon,\r\n key: group.toLowerCase(),\r\n state: 'init'\r\n }\r\n\r\n groupInfo.import = {\r\n defaultButton: {\r\n labelKey: 'usync_import',\r\n handler: function () { importGroup(groupInfo) }\r\n },\r\n subButtons: [{\r\n labelKey: 'usync_importforce',\r\n handler: function () { importForce(groupInfo) }\r\n }]\r\n };\r\n\r\n groupInfo.export = {\r\n defaultButton: {\r\n labelKey: 'usync_export',\r\n handler: function () { exportGroup(groupInfo) }\r\n }\r\n };\r\n\r\n\r\n if (isSingle) {\r\n groupInfo.export.subButtons = [{\r\n labelKey: 'usync_exportClean',\r\n handler: function () {\r\n cleanExport();\r\n }\r\n }];\r\n }\r\n\r\n vm.groups.push(groupInfo);\r\n\r\n if (group.toLowerCase() === \"forms\") {\r\n vm.hasuSyncForms = true;\r\n }\r\n }\r\n\r\n });\r\n\r\n if (vm.showEverything) {\r\n vm.groups.push(vm.everything);\r\n }\r\n\r\n if (!vm.hasuSyncForms) {\r\n vm.canHaveForms = canHaveForms();\r\n }\r\n\r\n vm.loading = false;\r\n }, function (error) {\r\n vm.loading = false;\r\n });\r\n }\r\n\r\n function importGroup(group) {\r\n importItems(false, group);\r\n }\r\n\r\n //////////////\r\n\r\n function openDetail(item) {\r\n\r\n var options = {\r\n item: item,\r\n title: 'uSync Change',\r\n view: \"/App_Plugins/uSync/changeDialog.html\",\r\n close: function () {\r\n editorService.close();\r\n }\r\n };\r\n editorService.open(options);\r\n }\r\n\r\n function getTypeName(typeName) {\r\n var umbType = typeName.substring(0, typeName.indexOf(','));\r\n return umbType.substring(umbType.lastIndexOf('.') + 1);\r\n }\r\n\r\n function countChanges(changes) {\r\n var count = 0;\r\n angular.forEach(changes, function (val, key) {\r\n if (val.change !== 'NoChange') {\r\n count++;\r\n }\r\n });\r\n\r\n return count;\r\n }\r\n\r\n function calcPercentage(status) {\r\n return (100 * status.count) / status.Total;\r\n }\r\n\r\n function showChange(change) {\r\n return vm.showAll || (change !== 'NoChange' && change !== 'Removed');\r\n }\r\n\r\n function setFilter(type) {\r\n\r\n if (vm.filter === type) {\r\n vm.filter = '';\r\n }\r\n else {\r\n vm.filter = type;\r\n }\r\n }\r\n\r\n ///////////\r\n\r\n /// resets all the flags, and messages to the start \r\n function resetStatus(mode) {\r\n\r\n vm.fresh = false;\r\n vm.warnings = {};\r\n\r\n vm.reported = vm.showAll = false;\r\n vm.working = true;\r\n vm.showSpinner = false;\r\n vm.runmode = mode;\r\n vm.hideLink = false;\r\n vm.savings.show = false;\r\n\r\n vm.status = {\r\n count: 0,\r\n total: 1,\r\n message: 'Initializing',\r\n handlers: vm.handlers\r\n };\r\n\r\n if (!vm.hub.active) {\r\n vm.status.Message = 'Working ';\r\n vm.showSpinner = true;\r\n }\r\n\r\n vm.update = {\r\n message: '',\r\n count: 0,\r\n total: 1\r\n };\r\n\r\n // performance timer. \r\n vm.perf = 0;\r\n\r\n\r\n switch (mode) {\r\n case modes.IMPORT:\r\n vm.action = 'Import';\r\n break;\r\n case mode.REPORT:\r\n vm.action = 'Report';\r\n break;\r\n case mode.EXPORT:\r\n vm.action = 'Export';\r\n break;\r\n }\r\n }\r\n\r\n // change the handler set\r\n function changeSet() {\r\n vm.reported = false;\r\n initSet(vm.currentSet);\r\n }\r\n\r\n ////// SignalR things \r\n function InitHub() {\r\n uSyncHub.initHub(function (hub) {\r\n\r\n vm.hub = hub;\r\n\r\n vm.hub.on('add', function (data) {\r\n vm.status = data;\r\n });\r\n\r\n vm.hub.on('update', function (update) {\r\n vm.update = update;\r\n });\r\n\r\n vm.hub.start();\r\n });\r\n }\r\n\r\n function getClientId() {\r\n if ($.connection !== undefined) {\r\n return $.connection.connectionId;\r\n }\r\n return \"\";\r\n }\r\n\r\n function canHaveForms() {\r\n if (vm.hasuSyncForms) return false;\r\n }\r\n\r\n function loadSavingsMessages() {\r\n vm.savings = { show: false, title: \"\", message: \"\" };\r\n vm.godo = [\r\n { time: 0, message: \"Worth checking\" },\r\n { time: 180, message: \"Go make a cup of tea\" },\r\n { time: 300, message: \"Go have a quick chat\" },\r\n { time: 900, message: \"Go for a nice walk outside ๐Ÿšถโ€โ™€๏ธ\" },\r\n { time: 3600, message: \"You deserve a break\" }\r\n ];\r\n\r\n var keys = [];\r\n for (let n = 0; n < 5; n++) {\r\n keys.push('usync_godo' + n);\r\n }\r\n localizationService.localizeMany(keys)\r\n .then(function (values) {\r\n for (let n = 0; n < values.length; n++) {\r\n vm.godo[n].message = values[n];\r\n }\r\n });\r\n }\r\n\r\n\r\n }\r\n\r\n angular.module('umbraco')\r\n .controller('uSync8Controller', uSyncController);\r\n})();","(function () {\r\n 'use strict';\r\n\r\n function dashboardController($controller,\r\n $scope, $timeout, navigationService, eventsService, uSync8DashboardService) {\r\n\r\n var vm = this;\r\n\r\n var _settingsFolder = Umbraco.Sys.ServerVariables.umbracoSettings.appPluginsPath + '/uSync/settings';\r\n\r\n vm.selectNavigationItem = function (item) {\r\n eventsService.emit('usync-dashboard.tab.change', item);\r\n }\r\n\r\n vm.page = {\r\n title: 'uSync',\r\n description: '...',\r\n navigation: [ ]\r\n };\r\n\r\n var uSyncSettings = Umbraco.Sys.ServerVariables.uSync;\r\n\r\n if (!uSyncSettings.disabledDashboard) {\r\n vm.page.navigation.push({\r\n 'name': 'uSync',\r\n 'alias': 'uSync',\r\n 'icon': 'icon-infinity',\r\n 'view': _settingsFolder + '/default.html',\r\n 'active': true\r\n });\r\n }\r\n\r\n vm.page.navigation.push({\r\n 'name': 'Settings',\r\n 'alias': 'settings',\r\n 'icon': 'icon-settings',\r\n 'view': _settingsFolder + '/settings.html',\r\n });\r\n\r\n\r\n $timeout(function () {\r\n navigationService.syncTree({ tree: \"uSync\", path: \"-1\" });\r\n });\r\n\r\n uSync8DashboardService.getAddOns()\r\n .then(function (result) {\r\n\r\n vm.version = 'v' + result.data.version;\r\n if (result.data.addOnString.length > 0) {\r\n vm.version += ' + ' + result.data.addOnString;\r\n }\r\n\r\n vm.page.description = vm.version;\r\n vm.addOns = result.data.addOns;\r\n\r\n var insertOffset = 1;\r\n if (vm.version.indexOf('Complete') == -1) {\r\n insertOffset = 2;\r\n vm.page.navigation.push(\r\n {\r\n 'name': 'Add ons',\r\n 'alias': 'expansion',\r\n 'icon': 'icon-box',\r\n 'view': _settingsFolder + '/expansion.html'\r\n });\r\n }\r\n\r\n vm.addOns.forEach(function (value, key) {\r\n if (value.view !== '') {\r\n vm.page.navigation.splice(vm.page.navigation.length - insertOffset, 0,\r\n {\r\n 'name': value.displayName,\r\n 'alias': value.alias,\r\n 'icon': value.icon,\r\n 'view': value.view\r\n });\r\n }\r\n });\r\n\r\n vm.page.navigation[0].active = true;\r\n });\r\n }\r\n\r\n angular.module('umbraco')\r\n .controller('uSyncSettingsDashboardController', dashboardController);\r\n})();"]}