mirror of
https://github.com/owntracks/frontend.git
synced 2026-02-25 21:53:49 +00:00
Compare commits
10 Commits
v2.0.0-bet
...
v2.0.0-bet
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
988b10de40 | ||
|
|
639e96cae8 | ||
|
|
df3dcb60d8 | ||
|
|
09ce3b7861 | ||
|
|
04f0b65480 | ||
|
|
d3e3b82a13 | ||
|
|
769185ee5a | ||
|
|
7b6641e70d | ||
|
|
2827d85865 | ||
|
|
693947c064 |
@@ -5,8 +5,8 @@ module.exports = {
|
||||
},
|
||||
extends: ["plugin:vue/essential", "@vue/prettier"],
|
||||
rules: {
|
||||
"no-console": process.env.NODE_ENV === "production" ? "error" : "off",
|
||||
"no-debugger": process.env.NODE_ENV === "production" ? "error" : "off",
|
||||
"no-console": process.env.NODE_ENV === "production" ? "error" : "warn",
|
||||
"no-debugger": process.env.NODE_ENV === "production" ? "error" : "warn",
|
||||
"prettier/prettier": [
|
||||
"error",
|
||||
{
|
||||
|
||||
@@ -3,4 +3,6 @@ node_js:
|
||||
- 10
|
||||
cache: yarn
|
||||
script:
|
||||
- yarn lint:js
|
||||
- yarn lint:md
|
||||
- yarn test
|
||||
|
||||
34
CHANGELOG.md
34
CHANGELOG.md
@@ -1,12 +1,30 @@
|
||||
# 2.0.0-beta.5 (2019-12-14)
|
||||
# Changelog
|
||||
|
||||
## 2.0.0-beta.7 (2020-01-24)
|
||||
|
||||
This release doesn't really affect end-users but greatly improves the development experience.
|
||||
|
||||
- Add `jsconfig.json`
|
||||
- Set `no-console`/`no-debugger` to `"warn"` in dev mode
|
||||
- Linting and formatting:
|
||||
- Separate npm scripts for linting and formatting
|
||||
- Lint/format Markdown files
|
||||
- Run lint on Travis CI
|
||||
- Upgrade dependencies
|
||||
|
||||
## 2.0.0-beta.6 (2019-12-14)
|
||||
|
||||
- Fix heatmap - the upgrade of `vue2-leaflet` from 2.2.1 to 2.3.0 added an `activated` attribute to layers causing the heatmap to not show
|
||||
|
||||
## 2.0.0-beta.5 (2019-12-14)
|
||||
|
||||
- Add Leaflet popup close button background color transition
|
||||
- Add $config Vue instance property
|
||||
- Add `$config` Vue instance property
|
||||
- Improve accessibility
|
||||
- Use configured locale for timestamp formatting
|
||||
- Upgrade dependencies
|
||||
|
||||
# 2.0.0-beta.4 (2019-12-14)
|
||||
## 2.0.0-beta.4 (2019-12-14)
|
||||
|
||||
- Add support for time selection
|
||||
- New date/time picker component is properly translated/localised and keyboard accessible
|
||||
@@ -15,7 +33,7 @@
|
||||
- Fix missing translation of "[date] to [date]"
|
||||
- Update i18n development notes in `README.md`
|
||||
|
||||
# 2.0.0-beta.3 (2019-12-13)
|
||||
## 2.0.0-beta.3 (2019-12-13)
|
||||
|
||||
- Add i18 support (currently English and German, `locale` config option)
|
||||
- Add custom checkbox focus style
|
||||
@@ -26,7 +44,7 @@
|
||||
- `README.md` enhancements
|
||||
- Upgrade dependencies
|
||||
|
||||
# 2.0.0-beta.2 (2019-11-02)
|
||||
## 2.0.0-beta.2 (2019-11-02)
|
||||
|
||||
- Add `onLocationChange.reloadHistory` config option
|
||||
- Add Travis CI config
|
||||
@@ -35,7 +53,7 @@
|
||||
- Fix table of content links in config documentation
|
||||
- Upgrade dependencies
|
||||
|
||||
# 2.0.0-beta.1 (2019-10-26)
|
||||
## 2.0.0-beta.1 (2019-10-26)
|
||||
|
||||
- Convert codebase to Node.js based development workflow, including:
|
||||
- Package management using yarn
|
||||
@@ -61,12 +79,12 @@
|
||||
- Add documentation for all configuration options.
|
||||
- Add more configuration options, including setting the API base URL ([#4](https://github.com/owntracks/frontend/issues/4)) and hiding the `ping/ping` location ([#12](https://github.com/owntracks/frontend/issues/12)).
|
||||
|
||||
# 1.1.0 (2019-10-26)
|
||||
## 1.1.0 (2019-10-26)
|
||||
|
||||
- Add support for Docker. [#7](https://github.com/owntracks/frontend/pull/7), [@sharkoz](https://github.com/sharkoz)
|
||||
- Move project to the OwnTracks organisation on GitHub. [#8](https://github.com/owntracks/frontend/pull/8), [@jpmens](https://github.com/jpmens)
|
||||
- Enable compression in nginx configuration used in Docker image. [#11](https://github.com/owntracks/frontend/pull/11), [@sharkoz](https://github.com/sharkoz)
|
||||
|
||||
# 1.0.0 (2019-06-18)
|
||||
## 1.0.0 (2019-06-18)
|
||||
|
||||
- Initial release
|
||||
|
||||
2
LICENSE
2
LICENSE
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2019 Linus Groh
|
||||
Copyright (c) 2019-2020 Linus Groh
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -46,7 +46,7 @@ Or you can use `docker-compose` (if you also run the OwnTracks Recorder with the
|
||||
compose config, and the service is named `otrecorder`):
|
||||
|
||||
```yaml
|
||||
version: '3'
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
owntracks-ui:
|
||||
@@ -95,7 +95,10 @@ See [`docs/config.md`](docs/config.md) for all available options.
|
||||
|
||||
- Run `yarn install` to install dependencies
|
||||
- Run `yarn serve` to compile for development and start the hot-reload server
|
||||
- Run `yarn lint` to lint and fix files
|
||||
- Run `yarn lint:js` to lint JavaScript/Vue files
|
||||
- Run `yarn lint:md` to lint Markdown files
|
||||
- Run `yarn format:js` to format JavaScript/Vue files
|
||||
- Run `yarn format:md` to format Markdown files
|
||||
- Run `yarn test` to run unit tests
|
||||
|
||||
### CORS-Proxy
|
||||
@@ -106,6 +109,7 @@ instance of OwnTracks for development without making changes to its CORS-Headers
|
||||
```console
|
||||
$ yarn cors-proxy
|
||||
```
|
||||
|
||||
If you have [basic authentication](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication#Basic_authentication_scheme)
|
||||
enabled, create a `.env` file with your credentials:
|
||||
|
||||
@@ -152,7 +156,6 @@ where German translations were added.
|
||||
<img src="https://raw.githubusercontent.com/owntracks/frontend/master/docs/images/info.png" alt="Info">
|
||||
</p>
|
||||
|
||||
|
||||
## Contributing
|
||||
|
||||
Please feel free to open an issue and discuss your ideas and report bugs. If you think
|
||||
|
||||
@@ -6,7 +6,7 @@ COPY . ./
|
||||
RUN yarn build
|
||||
|
||||
FROM nginx:1.17-alpine
|
||||
LABEL version="2.0.0-beta.5"
|
||||
LABEL version="2.0.0-beta.7"
|
||||
LABEL description="OwnTracks UI"
|
||||
LABEL maintainer="Linus Groh <mail@linusgroh.de>"
|
||||
ENV LISTEN_PORT=80 \
|
||||
|
||||
@@ -362,7 +362,8 @@ and [this Wikipedia article](https://en.wikipedia.org/wiki/Tiled_web_map).
|
||||
// Use dark HDPI tiles from Mapbox
|
||||
window.owntracks.config = {
|
||||
map: {
|
||||
url: "https://api.mapbox.com/v4/mapbox.dark/{z}/{x}/{y}@2x.png?access_token=xxxxxxxxxxxxxxxx"
|
||||
url:
|
||||
"https://api.mapbox.com/v4/mapbox.dark/{z}/{x}/{y}@2x.png?access_token=xxxxxxxxxxxxxxxx"
|
||||
}
|
||||
};
|
||||
```
|
||||
@@ -456,9 +457,9 @@ Whether to enable verbose mode or not.
|
||||
- Type: [`Boolean`]
|
||||
- Default: `false`
|
||||
|
||||
[`Boolean`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean
|
||||
[`Date`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
|
||||
[`Number`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number
|
||||
[`Object`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object
|
||||
[`String`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String
|
||||
[CSS `<color>`]: https://developer.mozilla.org/en-US/docs/Web/CSS/color_value
|
||||
[`boolean`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean
|
||||
[`date`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
|
||||
[`number`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number
|
||||
[`object`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object
|
||||
[`string`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String
|
||||
[css `<color>`]: https://developer.mozilla.org/en-US/docs/Web/CSS/color_value
|
||||
|
||||
9
jsconfig.json
Normal file
9
jsconfig.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"@/*": ["./src/*"]
|
||||
}
|
||||
},
|
||||
"exclude": ["node_modules"]
|
||||
}
|
||||
43
package.json
43
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "owntracks-ui",
|
||||
"version": "2.0.0-beta.5",
|
||||
"version": "2.0.0-beta.7",
|
||||
"author": {
|
||||
"name": "Linus Groh",
|
||||
"email": "mail@linusgroh.de"
|
||||
@@ -8,14 +8,17 @@
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint",
|
||||
"cors-proxy": "node scripts/corsProxy.js",
|
||||
"format:js": "vue-cli-service lint",
|
||||
"format:md": "prettier --write '{*.md,docs/**/*.md,src/**/*.md}'",
|
||||
"i18n:report": "vue-cli-service i18n:report --src './src/**/*.?(js|vue)' --locales './src/locales/**/*.json'",
|
||||
"lint:js": "vue-cli-service lint --no-fix",
|
||||
"lint:md": "prettier --check '{*.md,docs/**/*.md,src/**/*.md}'",
|
||||
"test": "vue-cli-service test:unit"
|
||||
},
|
||||
"dependencies": {
|
||||
"clipboard-copy": "^3.1.0",
|
||||
"core-js": "^3.5.0",
|
||||
"core-js": "^3.6.4",
|
||||
"deepmerge": "^4.2.2",
|
||||
"leaflet": "^1.6.0",
|
||||
"leaflet.heat": "^0.2.0",
|
||||
@@ -23,33 +26,33 @@
|
||||
"vue": "^2.6.11",
|
||||
"vue-ctk-date-time-picker": "^2.4.0",
|
||||
"vue-feather-icons": "^5.0.0",
|
||||
"vue-i18n": "^8.0.0",
|
||||
"vue-i18n": "^8.15.3",
|
||||
"vue-js-modal": "^1.3.31",
|
||||
"vue-outside-events": "^1.1.3",
|
||||
"vue-router": "^3.1.3",
|
||||
"vue2-leaflet": "^2.3.0",
|
||||
"vue-router": "^3.1.5",
|
||||
"vue2-leaflet": "^2.4.2",
|
||||
"vuex": "^3.1.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vue/cli-plugin-babel": "^4.1.1",
|
||||
"@vue/cli-plugin-eslint": "^4.1.1",
|
||||
"@vue/cli-plugin-unit-jest": "^4.1.1",
|
||||
"@vue/cli-service": "^4.1.1",
|
||||
"@vue/cli-plugin-babel": "^4.1.2",
|
||||
"@vue/cli-plugin-eslint": "^4.1.2",
|
||||
"@vue/cli-plugin-unit-jest": "^4.1.2",
|
||||
"@vue/cli-service": "^4.1.2",
|
||||
"@vue/eslint-config-prettier": "^6.0.0",
|
||||
"@vue/test-utils": "1.0.0-beta.30",
|
||||
"@vue/test-utils": "1.0.0-beta.31",
|
||||
"babel-core": "7.0.0-bridge.0",
|
||||
"babel-eslint": "^10.0.3",
|
||||
"babel-jest": "^24.9.0",
|
||||
"babel-jest": "^25.1.0",
|
||||
"cors-anywhere": "^0.4.1",
|
||||
"eslint": "^6.7.2",
|
||||
"eslint-plugin-prettier": "^3.1.1",
|
||||
"eslint-plugin-vue": "^6.0.1",
|
||||
"jest-fetch-mock": "^2.1.2",
|
||||
"lint-staged": "^9.5.0",
|
||||
"eslint": "^6.8.0",
|
||||
"eslint-plugin-prettier": "^3.1.2",
|
||||
"eslint-plugin-vue": "^6.1.2",
|
||||
"jest-fetch-mock": "^3.0.1",
|
||||
"lint-staged": "^10.0.2",
|
||||
"moment-locales-webpack-plugin": "^1.1.2",
|
||||
"node-sass": "^4.13.0",
|
||||
"sass-loader": "^8.0.0",
|
||||
"vue-cli-plugin-i18n": "^0.6.0",
|
||||
"node-sass": "^4.13.1",
|
||||
"sass-loader": "^8.0.2",
|
||||
"vue-cli-plugin-i18n": "^0.6.1",
|
||||
"vue-template-compiler": "^2.6.11"
|
||||
},
|
||||
"license": "MIT",
|
||||
|
||||
@@ -24,7 +24,7 @@ const fetchApi = (path, params = {}) => {
|
||||
const url = getApiUrl(path);
|
||||
Object.keys(params).forEach(key => url.searchParams.append(key, params[key]));
|
||||
log("HTTP", `GET ${url.href}`);
|
||||
return fetch(url).catch(error => log("HTTP", error, logLevels.ERROR));
|
||||
return fetch(url.href).catch(error => log("HTTP", error, logLevels.ERROR));
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -58,6 +58,11 @@ const props = {
|
||||
custom: true,
|
||||
default: true,
|
||||
},
|
||||
activated: {
|
||||
type: Boolean,
|
||||
custom: true,
|
||||
default: true,
|
||||
},
|
||||
};
|
||||
|
||||
export default {
|
||||
|
||||
@@ -12,9 +12,7 @@ describe("API", () => {
|
||||
expect(version).toBe("1.2.3");
|
||||
|
||||
expect(fetch.mock.calls.length).toEqual(1);
|
||||
expect(fetch.mock.calls[0][0].href).toEqual(
|
||||
"http://localhost/api/0/version"
|
||||
);
|
||||
expect(fetch.mock.calls[0][0]).toEqual("http://localhost/api/0/version");
|
||||
});
|
||||
|
||||
test("getUsers", async () => {
|
||||
@@ -24,7 +22,7 @@ describe("API", () => {
|
||||
expect(users).toEqual(["foo", "bar"]);
|
||||
|
||||
expect(fetch.mock.calls.length).toEqual(1);
|
||||
expect(fetch.mock.calls[0][0].href).toEqual("http://localhost/api/0/list");
|
||||
expect(fetch.mock.calls[0][0]).toEqual("http://localhost/api/0/list");
|
||||
});
|
||||
|
||||
test("getDevices", async () => {
|
||||
@@ -37,10 +35,10 @@ describe("API", () => {
|
||||
expect(devices).toEqual({ foo: ["phone", "tablet"], bar: ["laptop"] });
|
||||
|
||||
expect(fetch.mock.calls.length).toEqual(2);
|
||||
expect(fetch.mock.calls[0][0].href).toEqual(
|
||||
expect(fetch.mock.calls[0][0]).toEqual(
|
||||
"http://localhost/api/0/list?user=foo"
|
||||
);
|
||||
expect(fetch.mock.calls[1][0].href).toEqual(
|
||||
expect(fetch.mock.calls[1][0]).toEqual(
|
||||
"http://localhost/api/0/list?user=bar"
|
||||
);
|
||||
});
|
||||
@@ -68,7 +66,7 @@ describe("API", () => {
|
||||
expect(lastLocation).toEqual(response);
|
||||
|
||||
expect(fetch.mock.calls.length).toEqual(1);
|
||||
expect(fetch.mock.calls[0][0].href).toEqual("http://localhost/api/0/last");
|
||||
expect(fetch.mock.calls[0][0]).toEqual("http://localhost/api/0/last");
|
||||
});
|
||||
|
||||
test("getLastLocations with user", async () => {
|
||||
@@ -89,7 +87,7 @@ describe("API", () => {
|
||||
expect(lastLocation).toEqual(response);
|
||||
|
||||
expect(fetch.mock.calls.length).toEqual(1);
|
||||
expect(fetch.mock.calls[0][0].href).toEqual(
|
||||
expect(fetch.mock.calls[0][0]).toEqual(
|
||||
"http://localhost/api/0/last?user=foo"
|
||||
);
|
||||
});
|
||||
@@ -108,7 +106,7 @@ describe("API", () => {
|
||||
expect(lastLocation).toEqual(response);
|
||||
|
||||
expect(fetch.mock.calls.length).toEqual(1);
|
||||
expect(fetch.mock.calls[0][0].href).toEqual(
|
||||
expect(fetch.mock.calls[0][0]).toEqual(
|
||||
"http://localhost/api/0/last?user=foo&device=phone"
|
||||
);
|
||||
});
|
||||
@@ -150,7 +148,7 @@ describe("API", () => {
|
||||
expect(locationHistory).toEqual(response.data);
|
||||
|
||||
expect(fetch.mock.calls.length).toEqual(1);
|
||||
expect(fetch.mock.calls[0][0].href).toEqual(
|
||||
expect(fetch.mock.calls[0][0]).toEqual(
|
||||
"http://localhost/api/0/locations?from=1970-01-01T00%3A00%3A00&to=1970-12-31T23%3A59%3A59&user=foo&device=phone&format=json"
|
||||
);
|
||||
});
|
||||
@@ -206,13 +204,13 @@ describe("API", () => {
|
||||
});
|
||||
|
||||
expect(fetch.mock.calls.length).toEqual(3);
|
||||
expect(fetch.mock.calls[0][0].href).toEqual(
|
||||
expect(fetch.mock.calls[0][0]).toEqual(
|
||||
"http://localhost/api/0/locations?from=1970-01-01T00%3A00%3A00&to=1970-12-31T23%3A59%3A59&user=foo&device=phone&format=json"
|
||||
);
|
||||
expect(fetch.mock.calls[1][0].href).toEqual(
|
||||
expect(fetch.mock.calls[1][0]).toEqual(
|
||||
"http://localhost/api/0/locations?from=1970-01-01T00%3A00%3A00&to=1970-12-31T23%3A59%3A59&user=foo&device=tablet&format=json"
|
||||
);
|
||||
expect(fetch.mock.calls[2][0].href).toEqual(
|
||||
expect(fetch.mock.calls[2][0]).toEqual(
|
||||
"http://localhost/api/0/locations?from=1970-01-01T00%3A00%3A00&to=1970-12-31T23%3A59%3A59&user=bar&device=laptop&format=json"
|
||||
);
|
||||
});
|
||||
|
||||
@@ -1 +1 @@
|
||||
global.fetch = require("jest-fetch-mock");
|
||||
require("jest-fetch-mock").enableMocks();
|
||||
|
||||
Reference in New Issue
Block a user