Skip to content

Commit

Permalink
Move GetBrowserLanguage service to ngeo/utils
Browse files Browse the repository at this point in the history
  • Loading branch information
fredj committed Jun 19, 2019
1 parent 7a05f98 commit f669efb
Show file tree
Hide file tree
Showing 12 changed files with 46 additions and 99 deletions.
3 changes: 1 addition & 2 deletions .eslintrc.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
extends:
- openlayers
env:
jquery: true
jasmine: true
jquery: true
parserOptions:
ecmaVersion: 2017
rules:
Expand Down
9 changes: 2 additions & 7 deletions contribs/gmf/src/controllers/AbstractAppController.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import olStyleFill from 'ol/style/Fill.js';
import olStyleStroke from 'ol/style/Stroke.js';
import olStyleStyle from 'ol/style/Style.js';
import {ThemeEventType} from 'gmf/theme/Manager.js';
import {getBrowserLanguage} from 'ngeo/utils.js';


/**
Expand Down Expand Up @@ -413,11 +414,6 @@ export function AbstractAppController(config, map, $scope, $injector) {
}
);

/**
* @type {import('ngeo/misc/getBrowserLanguage.js').miscGetBrowserLanguage}
*/
this.getBrowserLanguage = $injector.get('ngeoGetBrowserLanguage');

/**
* @type {import("ngeo/statemanager/Service.js").StatemanagerService}
*/
Expand Down Expand Up @@ -708,8 +704,7 @@ AbstractAppController.prototype.initLanguage = function() {
});
});

const browserLanguage = /** @type {string|undefined} */
(this.getBrowserLanguage(Object.keys(this.langUrls)));
const browserLanguage = getBrowserLanguage(Object.keys(this.langUrls));
const urlLanguage = /** @type {string|undefined} */
(this.stateManager.getInitialStringValue('lang'));

Expand Down
2 changes: 2 additions & 0 deletions contribs/gmf/test/.eslintrc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
env:
jasmine: true
2 changes: 1 addition & 1 deletion karma-conf.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ module.exports = function(config) {

// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine'],
frameworks: ['jasmine', 'sinon'],

// list of files / patterns to load in the browser
files: [
Expand Down
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@
"karma": "^4.1.0",
"karma-chrome-launcher": "^2.2.0",
"karma-jasmine": "^2.0.1",
"karma-sinon": "^1.0.5",
"karma-sourcemap-loader": "^0.3.7",
"karma-webpack": "^4.0.2",
"loader-utils": "^1.2.3",
Expand All @@ -115,6 +116,7 @@
"proj4": "^2.5.0",
"raven-js": "^3.27.1",
"simple-html-tokenizer": "^0.1.1",
"sinon": "^7.3.2",
"svg-inline-loader": "^0.8.0",
"svgo": "^1.2.2",
"svgo-loader": "^2.2.0",
Expand Down
2 changes: 0 additions & 2 deletions src/misc/extraModule.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import ngeoMiscFeatureHelper from 'ngeo/misc/FeatureHelper.js';
import ngeoMiscFile from 'ngeo/misc/File.js';
import ngeoMiscFilereaderComponent from 'ngeo/misc/filereaderComponent.js';
import ngeoMiscFilters from 'ngeo/misc/filters.js';
import ngeoMiscGetBrowserLanguage from 'ngeo/misc/getBrowserLanguage.js';
import ngeoMiscSortableComponent from 'ngeo/misc/sortableComponent.js';
import ngeoMiscTime from 'ngeo/misc/Time.js';
import ngeoMiscToolActivateMgr from 'ngeo/misc/ToolActivateMgr.js';
Expand All @@ -31,7 +30,6 @@ export default angular.module('ngeoMiscExtraModule', [
ngeoMiscFile.name,
ngeoMiscFilereaderComponent.name,
ngeoMiscFilters.name,
ngeoMiscGetBrowserLanguage.name,
ngeoMiscSortableComponent.name,
ngeoMiscTime.name,
ngeoMiscToolActivateMgr.name,
Expand Down
53 changes: 0 additions & 53 deletions src/misc/getBrowserLanguage.js

This file was deleted.

15 changes: 15 additions & 0 deletions src/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,21 @@ import olGeomPoint from 'ol/geom/Point.js';
import olGeomPolygon from 'ol/geom/Polygon.js';
import {getTopLeft, getTopRight, getBottomLeft, getBottomRight} from 'ol/extent.js';


/**
* @param {string[]} availableLanguages Available languages.
* @return {string} The "best" language code.
*/
export function getBrowserLanguage(availableLanguages) {
let browserLanguages = window.navigator.languages || [window.navigator.language];
browserLanguages = browserLanguages.map(item => item.substring(0, 2));
// remove duplicated language codes
browserLanguages = browserLanguages.filter((item, index, arr) => arr.indexOf(item) == index);
const supportedLanguages = browserLanguages.filter(item => availableLanguages.indexOf(item) != -1);
return supportedLanguages[0];
}


/**
* Utility method that converts a simple geometry to its multi equivalent. If
* the geometry itself is already multi, it is returned as-is.
Expand Down
4 changes: 4 additions & 0 deletions test/.eslintrc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
env:
jasmine: true
globals:
sinon: true
2 changes: 1 addition & 1 deletion test/spec/all.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ import 'jquery';
import 'angular';
import 'angular-mocks';
import 'angular-gettext';
import './ngeo/getbrowserlanguage.spec.js';
import './beforeeach.js';
import './search/createlocationsearchbloodhound.spec.js';
import './services/wmstime.spec.js';
import './services/layerHelper.spec.js';
import './services/getbrowserlanguage.spec.js';
import './services/backgroundlayermgr.spec.js';
import './services/decoratelayer.spec.js';
import './services/wfspermalink.spec.js';
Expand Down
18 changes: 18 additions & 0 deletions test/spec/ngeo/getbrowserlanguage.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import {getBrowserLanguage} from 'ngeo/utils.js';

describe('ngeo.misc.getBrowserLanguage', () => {

it('gets language from navigator.languages', () => {
const stub = sinon.stub(window.navigator, 'languages').value(['en-US', 'zh-CN', 'ja-JP', 'fr-FR']);
const langCode = getBrowserLanguage(['de', 'fr', 'it']);
expect(langCode).toBe('fr');
stub.restore();
});

it('gets language from navigator.language', () => {
const stub = sinon.stub(window.navigator, 'language').value('fr-FR');
const langCode = getBrowserLanguage(['de', 'fr', 'it']);
expect(langCode).toBe('fr');
stub.restore();
});
});
33 changes: 0 additions & 33 deletions test/spec/services/getbrowserlanguage.spec.js

This file was deleted.

0 comments on commit f669efb

Please sign in to comment.