diff --git a/Gulpfile.js b/Gulpfile.js index 169c51b..9300dac 100644 --- a/Gulpfile.js +++ b/Gulpfile.js @@ -11,6 +11,7 @@ var sourcemaps = require('gulp-sourcemaps'); var assign = require('lodash.assign'); var browserSync = require('browser-sync').create(); var del = require('del'); +var flatten = require('gulp-flatten'); // add custom browserify options here var customOpts = { @@ -40,7 +41,7 @@ function bundle() { .pipe(sourcemaps.init({loadMaps: true})) // loads map from browserify file // Add transformation tasks to the pipeline here. .pipe(sourcemaps.write('./')) // writes .map file - .pipe(gulp.dest('./dist/scripts')); + .pipe(gulp.dest('./dist')); } gulp.task('dist', ['dist-node-modules'], function () { @@ -49,6 +50,7 @@ gulp.task('dist', ['dist-node-modules'], function () { 'src/**/*.css', 'src/**/*.js' ], {base: 'src'}) + .pipe(flatten()) .pipe(gulp.dest('dist')); }); diff --git a/package.json b/package.json index 9422643..27d944e 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "angular": "^1.4.7", "bootstrap": "^3.3.5", "del": "^2.0.2", + "gulp-flatten": "^0.2.0", "jquery": "^2.1.4" } } diff --git a/src/content_script.js b/src/content_script.js index 2df5148..cf95803 100644 --- a/src/content_script.js +++ b/src/content_script.js @@ -16,7 +16,7 @@ $(document).ready(function () { var s = document.createElement('script'); // TODO: add "script.js" to web_accessible_resources in manifest.json // s.src = chrome.extension.getURL('script.js'); - s.src = 'scripts/bundle.js' + s.src = 'bundle.js' s.onload = function() { this.parentNode.removeChild(this); bootStrapAndRestoreAngular(); @@ -32,4 +32,34 @@ $(document).ready(function () { }); } + document.addEventListener('click', function(evt) { + if (!document.hasFocus()) { + return true; + } + processSelection(); + // evt.stopPropagation(); + // evt.preventDefault(); + }, false); + + // Find currently selected word + function processSelection () { + var focused = document.activeElement; + var selectedText; + if (focused) { + try { + selectedText = focused.value.substring( + focused.selectionStart, focused.selectionEnd); + } catch (err) { + } + } + if (selectedText == undefined) { + var sel = window.getSelection(); + var selectedText = sel.toString(); + } + if (selectedText) { + currentlySelectedWord = selectedText; + displaySelectedWord(currentlySelectedWord); + getSensesFromServer(currentlySelectedWord); + } + } }); \ No newline at end of file diff --git a/src/data/data.service.ts b/src/data/data.service.ts index 5975063..790df97 100644 --- a/src/data/data.service.ts +++ b/src/data/data.service.ts @@ -2,7 +2,8 @@ class DataService { - $http : ng.IHttpService; + $http : ng.IHttpService + serverUrl = 'http://lexitags.dyndns.org/server/lexitags2/Semtags?data=' static $inject = ["$scope", "$log"]; constructor($http: ng.IHttpService, $log: ng.ILogService) { @@ -10,18 +11,16 @@ class DataService { } createQuery (word: string) { - return '{"word":"QUERYTOREPLACE"}'.replace(/QUERYTOREPLACE/, word); + return '{"word":"QUERYTOREPLACE"}' + .replace(/QUERYTOREPLACE/, word); } callServer (word: string) { if (!word) { return; }; - - var serverUrl = 'http://lexitags.dyndns.org/server/lexitags2/Semtags?data=' - - return this.$http.get(serverUrl + this.createQuery(word)); - + return this.$http + .get(this.serverUrl + this.createQuery(word)); } } diff --git a/src/index.ts b/src/index.ts index 42cb270..27a7e12 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,13 +4,15 @@ import $ = require('jquery'); import angular = require('angular'); import MenuCtrl = require('./menu/menu.controller'); import DataService = require('./data/data.service'); +import SelectedWordService = require('./selectedWord/selectedWord.service'); angular.module('tagIt', []) .factory('DataService', DataService) + .factory('SelectedWordService', SelectedWordService) .controller('MenuCtrl', MenuCtrl); function initAngular () { - $.get('menu/menu.tpl.html', function (htmlData) { + $.get('menu.tpl.html', function (htmlData) { $('body').children().wrapAll('
'); $('.tagit-body').before(htmlData); angular.bootstrap( diff --git a/src/menu/menu.controller.ts b/src/menu/menu.controller.ts index 787bdb1..3f64666 100644 --- a/src/menu/menu.controller.ts +++ b/src/menu/menu.controller.ts @@ -10,9 +10,11 @@ class MenuCtrl { testWord = "It's working" selectedWord = "No word yet" - static $inject = ["$scope", "$log"] - constructor($scope: any, $log: angular.ILogService) { + static $inject = ["$scope", "$log", "SelectedWordService"] + + constructor($scope: any, $log: angular.ILogService, SelectedWordService: any) { $scope.vm = this; + SelectedWordService.init(); } remove() { diff --git a/src/menu/menu.tpl.html b/src/menu/menu.tpl.html index d4a36c2..e680550 100644 --- a/src/menu/menu.tpl.html +++ b/src/menu/menu.tpl.html @@ -15,16 +15,11 @@ Currently selected word: {{vm.selectedWord}}

- + - - - -
\ No newline at end of file + \ No newline at end of file diff --git a/src/selectedWord/selectedWord.service.ts b/src/selectedWord/selectedWord.service.ts new file mode 100644 index 0000000..098847a --- /dev/null +++ b/src/selectedWord/selectedWord.service.ts @@ -0,0 +1,50 @@ +'use strict'; + +/** + * Takes care of figuring out what word + * is selected. + */ +class SelectedWordService { + + currentlySelectedWord: string + $log : ng.ILogService + + static $inject = ["$log"]; + constructor($log: ng.ILogService) { + this.$log = $log; + } + + processSelection () { + // var focused : any = document.activeElement; + // var selectedText : string; + // if (focused) { + // try { + // selectedText = focused.value.substring( + // focused.selectionStart, focused.selectionEnd); + // } catch (err) { + // } + // } + // if (selectedText == undefined) { + // var sel = window.getSelection(); + // var selectedText = sel.toString(); + // } + // if (selectedText) { + // this.currentlySelectedWord = selectedText; + // this.$log.debug('text that was selected: ' + selectedText); + // } + } + + init () { + // document.addEventListener('click', function(evt) { + // if (!document.hasFocus()) { + // return true; + // } + // this.processSelection(); + // // clicks should propagate upwards to other things + // // evt.stopPropagation(); + // // evt.preventDefault(); + // }, false); + } +} + +export = SelectedWordService; diff --git a/tsconfig.json b/tsconfig.json index 93cd338..9036598 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,8 +3,7 @@ "module": "commonjs", "noImplicitAny": true }, - "exclude": [ - "node_modules", - "testfolder" + "files": [ + "src/index.ts" ] } \ No newline at end of file