6 .controller('DemoController', DemoController);
8 DemoController.$inject = ['$q', '$http', '$sce', '$timeout'];
10 function DemoController($q, $http, $sce, $timeout) {
15 vm.currentTimeout = null;
19 vm.currentDemo = null;
21 vm.matchThreshold = 80;
23 vm.legislativeOverride = null;
24 vm.tableDiffNumber = 1;
25 vm.tableDiffing = true;
26 vm.editorOptions = {};
27 vm.ckEditorEnabled = true;
29 vm.trustHtml = trustHtml;
32 vm.swapText = swapText;
33 vm.diffDemo = diffDemo;
34 vm.diffOverride = diffOverride;
35 vm.diffTableDemo = diffTableDemo;
36 vm.updateDemo = updateDemo;
37 vm.saveNewDemo = saveNewDemo;
38 vm.toggleCkEditor = toggleCkEditor;
43 var promises = [loadDemos(), loadOverrides()];
44 return $q.all(promises).then(function() {
49 function trustHtml(text) {
50 return typeof text !== 'undefined' ? $sce.trustAsHtml(text) : '';
53 function toggleCkEditor() {
54 vm.ckEditorEnabled = !vm.ckEditorEnabled;
63 vm.currentDemo = null;
64 vm.legislativeOverride = null;
65 if (vm.currentTimeout) {
66 $timeout.cancel(vm.currentTimeout);
71 if (vm.currentTimeout) {
72 $timeout.cancel(vm.currentTimeout);
74 vm.currentTimeout = $timeout(function () {
83 var oldText = vm.oldText;
84 vm.oldText = vm.newText;
90 function diffDemo(index) {
91 if (typeof index === 'undefined') {
95 vm.oldText = vm.demos[index]['old'];
96 vm.newText = vm.demos[index]['new'];
98 vm.currentDemo = vm.demos[index];
99 vm.legislativeOverride = vm.demos[index].hasOwnProperty('legislativeOverride') ? vm.demos[index]['legislativeOverride'] : null;
102 function diffOverride(override, index) {
103 vm.oldText = override.old;
104 vm.newText = override.new;
105 vm.legislativeOverride = override.override;
107 vm.currentDemo = override;
108 if (!vm.currentDemo.name) {
109 vm.currentDemo.name = 'Override Demo ' + (index + 1);
111 vm.currentDemo.isOverride = true;
114 function diffTableDemo(index) {
116 .then(function(response) {
117 vm.oldText = response.data.old;
118 vm.newText = response.data.new;
119 vm.legislativeOverride = null;
121 vm.currentDemo = null;
128 function updateDemo() {
129 vm.currentDemo.old = vm.oldText;
130 vm.currentDemo.new = vm.newText;
132 return $http.post('save_demo.php', vm.currentDemo)
133 .then(function (response) {
138 function saveNewDemo() {
139 var newIndex = vm.demos.length + 1;
140 if (vm.diffName.length === 0) {
141 vm.diffName = 'DEMO ' + newIndex;
144 var newDemo = {'old': vm.oldText, 'new': vm.newText, 'name': vm.diffName, 'legislativeOverride': vm.legislativeOverride};
146 vm.demos.push(newDemo);
148 return $http.post('save_demo.php', newDemo)
149 .then(function (response) {
150 vm.currentDemo = newDemo;
152 return vm.currentDemo;
156 function loadTableDiff(index) {
158 url: 'load_table_diff.php',
160 data: {index: index},
161 header: {'Content-Type': 'application/json; charset=UTF-8'}
169 $http.post('index.php', {
172 matchThreshold: vm.matchThreshold,
173 tableDiffing: vm.tableDiffing
175 .then(function (response) {
176 vm.diff = response.data.hasOwnProperty('diff') ? response.data.diff : response.data;
178 addDebugOutput(response.data.debug);
180 .catch(function (response) {
181 console.error('Gists error', response.status, response.data);
185 function loadDemos() {
186 $http.get('demos.json')
187 .success(function (data) {
192 function loadOverrides() {
193 return $http.get('diff.json')
194 .then(function (response) {
195 vm.overrides = response.data;
201 function addDebugOutput(data) {
202 angular.forEach(data, function(value, key) {
209 vm.debugOutput = data;