/// /// /// /// (function (angular : ng.IAngularStatic, $ : JQueryStatic) { var eventBus = EventBus.getInstance(); var myApp = angular.module('exports', ['ngSanitize', 'sudoSlider', 'ui.bootstrap', "sudoSlider"]) .controller('ImportExportController', ["$scope", "$timeout", "sudoSlider", function ($scope, $timeout, sudoSlider : SudoSliderFactory) { $scope.style = ""; $scope.optionDefinitions = []; $scope.slides = []; eventBus.register(SudoSliderUpdateOptionsEvent, function (event:SudoSliderUpdateOptionsEvent) { $scope.optionDefinitions = event.newDefinitions; if(!$scope.$$phase) { $scope.$apply(); } }, true, window); eventBus.register(SudoSliderSlidesUpdateEvent, function (event:SudoSliderSlidesUpdateEvent) { $scope.slides = event.newSlides; if(!$scope.$$phase) { $scope.$apply(); } }, true, window); eventBus.register(SliderBuilderStyleChangeEvent, function (event:SliderBuilderStyleChangeEvent) { $scope.style = event.style; if(!$scope.$$phase) { $scope.$apply(); } }, true, window); var sliderApi = sudoSlider.globalSliderApi(); $scope.importString = ""; $scope.doImport = function () { sliderApi.destroy(); var imported = JSON.parse($scope.importString); var options = imported.options; sudoSlider.insertValuesIntoOptionDefinitions($scope.optionDefinitions, options); $scope.slides = imported.slides; $scope.style = imported.style; eventBus.fireEvent(new ImportEvent($scope.slides, $scope.style, $scope.optionDefinitions)); $timeout(function () { sliderApi.init(); }, 0); }; function getNonDefaultOptionValues() { var optionDefs = sudoSlider.filterAllDefaultValueOptionDefinitions($scope.optionDefinitions); var options = {}; for (var i = 0; i < optionDefs.length; i++) { var def = optionDefs[i]; if (def.type == "function") { options[def.name] = def.stringValue; } else { options[def.name] = def.value; } } return options; } $scope.getExportOutput = function () { return JSON.stringify({ options: getNonDefaultOptionValues(), style : $scope.style + " ", slides : $.map($scope.slides, function (slide) { return { html: slide.html } }) }); }; $scope.getExportOptionsOutput = function (extraIndex:string = "") { var optionDefs = sudoSlider.filterAllDefaultValueOptionDefinitions($scope.optionDefinitions); if (optionDefs.length == 0) { return "{}"; } var result = ""; var first = true; $.each(optionDefs, function (index, def) { if (first) { first = false; } else { result += ",\n"; } result += " " + extraIndex; if (def.type == "function" || def.type == "array") { result += "\"" + def.name + "\":" + def.stringValue } else { var value = def.value; if (def.type == "number") { value = Number(value); } result += "\"" + def.name + "\":" + JSON.stringify(value) } }); return "{\n" + result + "\n" + extraIndex + "}"; }; function indent(lines, prefix) { var result = ""; for (var i = 0; i < lines.length; i++) { result += prefix + lines[i]; if (i != lines.length - 1) { result += "\n"; } } return result; } $scope.indentedStyle = function () { var lines = $scope.style.split("\n"); var prefix = " "; return indent(lines, prefix); }; $scope.getPrettySlides = function () { var prefix = " "; var lines = ""; for (var i = 0; i < $scope.slides.length; i++) { var slideObject = $scope.slides[i]; var html = indent(slideObject.html.split("\n"), " "); lines += "
\n" + html + "\n
"; if (i != $scope.slides.length - 1) { lines += "\n"; } } return indent(lines.split("\n"), prefix); } }]); }(angular, jQuery));