Revert "not able to reach typescript code from chrome popup.js will need to revert."
This reverts commit 9ab2035133
.
This commit is contained in:
parent
9ab2035133
commit
7a23f0217b
6 changed files with 75 additions and 87 deletions
|
@ -1,6 +1,6 @@
|
|||
/// <reference path="../typings/tsd.d.ts" />
|
||||
|
||||
import { BackendService } from './services/backend.service';
|
||||
import { DataService } from './services/data.service';
|
||||
import { SelectedWordService } from './services/selectedWord.service';
|
||||
import { MenuCtrl } from './menu/menu.controller';
|
||||
|
||||
|
@ -8,7 +8,7 @@ export function init (callback: () => void) {
|
|||
var $ = jQuery;
|
||||
|
||||
angular.module('tagit', [])
|
||||
.service('BackendService', BackendService)
|
||||
.service('DataService', DataService)
|
||||
.service('SelectedWordService', SelectedWordService)
|
||||
.controller('MenuCtrl', MenuCtrl);
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
'use strict';
|
||||
|
||||
import { BackendService } from '../services/backend.service';
|
||||
import { DataService } from '../services/data.service';
|
||||
import { SelectedWordService } from '../services/selectedWord.service';
|
||||
import { ISense, IVMScope, ISynset } from '../index.interfaces';
|
||||
|
||||
|
@ -8,19 +8,19 @@ export class MenuCtrl {
|
|||
|
||||
selectedWord = "";
|
||||
senses : Object[];
|
||||
backendService : BackendService;
|
||||
dataService : DataService;
|
||||
selectedWordService : SelectedWordService;
|
||||
$log : ng.ILogService;
|
||||
$scope: ng.IScope;
|
||||
|
||||
/* @ngInject */
|
||||
constructor ($scope: IVMScope, $log: angular.ILogService,
|
||||
BackendService: BackendService,
|
||||
DataService: DataService,
|
||||
SelectedWordService: SelectedWordService) {
|
||||
$scope.vm = this;
|
||||
this.$log = $log;
|
||||
this.$scope = $scope;
|
||||
this.backendService = BackendService;
|
||||
this.dataService = DataService;
|
||||
this.selectedWordService = SelectedWordService;
|
||||
|
||||
// Wire up clicklistener
|
||||
|
@ -30,16 +30,15 @@ export class MenuCtrl {
|
|||
|
||||
onTagSelect (sense: ISense) {
|
||||
this.selectedWordService.addTagToPage(sense);
|
||||
this.backendService.storeTaggingInformation(
|
||||
sense, this.selectedWordService.getClonedSelectionRange());
|
||||
this.dataService.storeTaggingInformation({});
|
||||
}
|
||||
|
||||
onWordSelected = (newWord : string) => {
|
||||
this.selectedWord = newWord;
|
||||
this.backendService.callServer(newWord)
|
||||
this.dataService.callServer(newWord)
|
||||
.then((synsets : Object) => {
|
||||
this.$log.debug(synsets);
|
||||
this.senses = this.backendService.processSynsets(<ISynset> synsets);
|
||||
this.senses = this.dataService.processSynsets(<ISynset> synsets);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -50,6 +49,14 @@ export class MenuCtrl {
|
|||
this.$scope.$apply();
|
||||
}
|
||||
|
||||
selectWord (sense : ISense) {
|
||||
this.dataService.storeTaggingInformation({
|
||||
mail: "mail@nilsnh.no",
|
||||
sentence: "whole sentence",
|
||||
senseid: sense.senseid,
|
||||
});
|
||||
}
|
||||
|
||||
removeMenu() {
|
||||
$('.tagit-body').children().unwrap();
|
||||
$('.tagit-menu').remove();
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
<title>Popup menu for TagIt plugin</title>
|
||||
|
||||
<script src="vendor/lodash/index.js"></script>
|
||||
<script src="vendor/requirejs/require.js"></script>
|
||||
<script src="popup.js"></script>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="vendor/bootstrap/dist/css/bootstrap.min.css">
|
||||
|
|
|
@ -1,46 +0,0 @@
|
|||
'use strict';
|
||||
|
||||
import { ISynset, ISense } from '../index.interfaces';
|
||||
|
||||
export class BackendService {
|
||||
|
||||
$http : ng.IHttpService;
|
||||
$log : ng.ILogService;
|
||||
private serverUrl = 'http://lexitags.dyndns.org/server/lexitags2/Semtags?data=';
|
||||
|
||||
/* @ngInject */
|
||||
constructor($http: ng.IHttpService, $log: ng.ILogService) {
|
||||
this.$http = $http;
|
||||
this.$log = $log;
|
||||
}
|
||||
|
||||
callServer (word: string) {
|
||||
if (!word) {
|
||||
return;
|
||||
};
|
||||
return this.$http.get(this.serverUrl + this.createQuery(word));
|
||||
}
|
||||
|
||||
processSynsets (synsets: ISynset) : string[] {
|
||||
return synsets.data.senses;
|
||||
}
|
||||
|
||||
// save tagging information
|
||||
storeTaggingInformation (sense: ISense, range: Range ) {
|
||||
this.$log.debug('storeTaggingInformation() was called');
|
||||
return this.buildTagResponse(sense, range);
|
||||
}
|
||||
|
||||
buildTagResponse (sense: ISense, range: Range) {
|
||||
debugger;
|
||||
return {
|
||||
"sense": sense,
|
||||
"selectionRange": range
|
||||
}
|
||||
}
|
||||
|
||||
private createQuery (word: string) {
|
||||
return '{"word":"QUERYTOREPLACE"}'
|
||||
.replace(/QUERYTOREPLACE/, word);
|
||||
}
|
||||
}
|
39
src/services/data.service.ts
Normal file
39
src/services/data.service.ts
Normal file
|
@ -0,0 +1,39 @@
|
|||
'use strict';
|
||||
|
||||
import { ISynset } from '../index.interfaces';
|
||||
|
||||
export class DataService {
|
||||
|
||||
$http : ng.IHttpService;
|
||||
$log : ng.ILogService;
|
||||
private serverUrl = 'http://lexitags.dyndns.org/server/lexitags2/Semtags?data=';
|
||||
|
||||
/* @ngInject */
|
||||
constructor($http: ng.IHttpService, $log: ng.ILogService) {
|
||||
this.$http = $http;
|
||||
this.$log = $log;
|
||||
}
|
||||
|
||||
callServer (word: string) {
|
||||
if (!word) {
|
||||
return;
|
||||
};
|
||||
return this.$http.get(this.serverUrl + this.createQuery(word));
|
||||
}
|
||||
|
||||
processSynsets (synsets: ISynset) : string[] {
|
||||
return synsets.data.senses;
|
||||
}
|
||||
|
||||
// save tagging information
|
||||
// Params: email, tagging, sentence
|
||||
storeTaggingInformation (tag : Object) {
|
||||
this.$log.debug('storeTaggingInformation() was called');
|
||||
this.$log.debug(tag);
|
||||
}
|
||||
|
||||
private createQuery (word: string) {
|
||||
return '{"word":"QUERYTOREPLACE"}'
|
||||
.replace(/QUERYTOREPLACE/, word);
|
||||
}
|
||||
}
|
|
@ -24,16 +24,17 @@ export class SelectedWordService {
|
|||
if (!document.hasFocus()) {
|
||||
return true;
|
||||
}
|
||||
if(this.getSelection()) {
|
||||
this.currentSelectionRange = this.getClonedSelectionRange();
|
||||
callbackOnSelectFunc(joinLongWords(this.getSelection().toString()));
|
||||
} else {
|
||||
callbackOnDeSelectFunc();
|
||||
}
|
||||
// clicks should propagate upwards to other things
|
||||
// evt.stopPropagation();
|
||||
// evt.preventDefault();
|
||||
}, false);
|
||||
var selection = that.findSelection();
|
||||
if(selection) {
|
||||
this.currentSelectionRange = selection.getRangeAt(0).cloneRange();
|
||||
callbackOnSelectFunc(joinLongWords(selection.toString()));
|
||||
} else {
|
||||
callbackOnDeSelectFunc();
|
||||
}
|
||||
// clicks should propagate upwards to other things
|
||||
// evt.stopPropagation();
|
||||
// evt.preventDefault();
|
||||
}, false);
|
||||
function joinLongWords (possiblyLongWord: string) {
|
||||
return possiblyLongWord.replace(" ","_");
|
||||
}
|
||||
|
@ -41,30 +42,18 @@ export class SelectedWordService {
|
|||
|
||||
// place spans around a tagged word.
|
||||
addTagToPage (sense : ISense) {
|
||||
function createSpan () {
|
||||
var span : HTMLSpanElement = document.createElement('span');
|
||||
span.id = sense.senseid;
|
||||
span.title = sense.explanation;
|
||||
span.className = 'tagit-tag';
|
||||
return span;
|
||||
}
|
||||
|
||||
var windowSelection = window.getSelection();
|
||||
var originalRange = this.getClonedSelectionRange();
|
||||
var rangeToChange = this.getClonedSelectionRange();
|
||||
rangeToChange.surroundContents(createSpan());
|
||||
windowSelection.removeAllRanges(); // unselect from page
|
||||
var range = this.currentSelectionRange;
|
||||
var span : HTMLSpanElement = document.createElement('span');
|
||||
span.id = sense.senseid;
|
||||
span.title = sense.explanation;
|
||||
span.className = 'tagit-tag';
|
||||
range.surroundContents(span);
|
||||
windowSelection.removeAllRanges();
|
||||
// windowSelection.addRange(range);
|
||||
this.$log.debug('addTagToPage');
|
||||
}
|
||||
|
||||
public getSelection () {
|
||||
return this.findSelection();
|
||||
}
|
||||
|
||||
public getClonedSelectionRange () {
|
||||
return this.findSelection().getRangeAt(0).cloneRange();
|
||||
}
|
||||
|
||||
private findSelection () {
|
||||
var focused : any = document.activeElement;
|
||||
var selectedText : string;
|
||||
|
|
Loading…
Reference in a new issue