// module var mdviewer = angular.module('mdviewer', []); function toArray (obj, key, value) { var arr = []; for (var k in obj) { var tmp = {}; tmp[key] = k; tmp[value] = obj[k]; arr.push(tmp); } return arr; } function toObject (arr, key, value) { var obj = {}; for (var i=0; i < arr.length; i++) { obj[arr[i][key]] = arr[i][value]; } return obj; } mdviewer.controller('popup', ['$scope', function ($scope) { function init () { chrome.extension.sendMessage({ message: 'settings' }, function (res) { $scope.options = toArray(res.options, 'name', 'enabled'); $scope.themes = chrome.runtime.getManifest().web_accessible_resources .filter(function (file) {return file.indexOf('/themes/') == 0;}) .map(function (file) { var name = file.replace(/\/themes\/(.*)\.css/,'$1'); if (name == res.theme) $scope.theme = {name: name}; return {name: name}; }); $scope.raw = res.raw; $scope.$digest(); }); } init(); $scope.onOptions = function () { chrome.extension.sendMessage({ message: 'options', options: toObject(JSON.parse(angular.toJson($scope.options)), 'name', 'enabled') }, function (res) { }); } $scope.onTheme = function () { chrome.extension.sendMessage({ message: 'theme', theme: $scope.theme.name }, function (res) { }); } $scope.onRaw = function () { $scope.raw = !$scope.raw; chrome.extension.sendMessage({ message: 'raw', raw: $scope.raw }, function (res) { }); } $scope.onDefaults = function () { chrome.extension.sendMessage({ message: 'defaults' }, function (res) { init(); }); } }]);