diff --git a/CHANGELOG.md b/CHANGELOG.md index ab96430..31a76ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ ### Changelog All notable changes to this project will be documented in this file. +## [1.6.0] - 2019-03-20 +### Fixed +- Error popup when trying to run more then one app instance +- Fixed typos in menu and pages +### Added +- S3 Buckets Statistics +- Support for standard storage IA in S3 explorer and statistics + ## [1.5.0] - 2019-03-12 ### Fixed - The backup 'is running' spinner remain stuck when the AWS CLI S3 generates an error diff --git a/README.md b/README.md index 623db54..934a111 100644 --- a/README.md +++ b/README.md @@ -31,17 +31,16 @@ You can find the AWS CLI installer here: [Download AWS CLI](https://aws.amazon.c After installation go to settings page and configure the AWS credentials. -In order to use the app you must set an "AWS access key ID" and an "AWS secret access key" that you can create through the [IAM service](https://docs.aws.amazon.com/en_us/IAM/latest/UserGuide/introduction.html) in the AWS console. +In order to use the app **you must set** an **"AWS access key ID"**, an **"AWS secret access key"** and an **"AWS Region"** that you can create through the [IAM service](https://docs.aws.amazon.com/en_us/IAM/latest/UserGuide/introduction.html) in the AWS console. The IAM user needs a programmatic access account with a correct read/write S3 policy attached (e.g AmazonS3FullAccess) and CloudWatch Metrics (e.g CloudWatchReadOnlyAccess). You can use any IAM S3 policy that grant access to the buckets that you want to use with the app. Here an example policy: [IAM S3 example policy](https://docs.aws.amazon.com/en_us/IAM/latest/UserGuide/reference_policies_examples_s3_rw-bucket.html) -## How to correctly quit the app +## Wiki -When you try to quit the app the normal behaviour is that the app minimize herself in the icons tray and still run. -To correctly quit the app right click on the tray icon and click "quit". +A complete and detailed documentation can be found here: [https://github.com/ulver2812/aws-s3-backup/wiki](https://github.com/ulver2812/aws-s3-backup/wiki) - + ## Windows executable (portable and installer) diff --git a/main.ts b/main.ts index 08715cc..d18d482 100644 --- a/main.ts +++ b/main.ts @@ -154,7 +154,7 @@ function checkSingleInstance() { }); if (isSecondInstance) { - app.quit(); + app.exit(); return; } } diff --git a/package-lock.json b/package-lock.json index 95981aa..69da36a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "aws-s3-backup", - "version": "1.4.0", + "version": "1.5.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1008,6 +1008,14 @@ } } }, + "angular2-chartjs": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/angular2-chartjs/-/angular2-chartjs-0.5.1.tgz", + "integrity": "sha512-bxEVxVEv7llMcgwuc9jlc5KmuOEngT7ZlUyCddmsXwQQAahrTeNgFJ1Nc1SVQnq2fl2d8efh6m70DqF5beiA+A==", + "requires": { + "chart.js": "^2.3.0" + } + }, "ansi-align": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", @@ -2380,6 +2388,39 @@ } } }, + "chart.js": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.8.0.tgz", + "integrity": "sha512-Di3wUL4BFvqI5FB5K26aQ+hvWh8wnP9A3DWGvXHVkO13D3DSnaSsdZx29cXlEsYKVkn1E2az+ZYFS4t0zi8x0w==", + "requires": { + "chartjs-color": "^2.1.0", + "moment": "^2.10.2" + } + }, + "chartjs-color": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.3.0.tgz", + "integrity": "sha512-hEvVheqczsoHD+fZ+tfPUE+1+RbV6b+eksp2LwAhwRTVXEjCSEavvk+Hg3H6SZfGlPh/UfmWKGIvZbtobOEm3g==", + "requires": { + "chartjs-color-string": "^0.6.0", + "color-convert": "^0.5.3" + }, + "dependencies": { + "color-convert": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", + "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=" + } + } + }, + "chartjs-color-string": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz", + "integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==", + "requires": { + "color-name": "^1.0.0" + } + }, "chokidar": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", @@ -2580,8 +2621,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "colors": { "version": "1.1.2", diff --git a/package.json b/package.json index d870522..4896bbf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aws-s3-backup", - "version": "1.5.0", + "version": "1.6.0", "description": "AWS S3 backup system", "homepage": "https://github.com/ulver2812/aws-s3-backup", "author": { @@ -46,6 +46,7 @@ "@trodi/electron-splashscreen": "^0.3.4", "@types/fs-extra": "^5.0.4", "@types/node-schedule": "^1.2.2", + "angular2-chartjs": "^0.5.1", "aws-sdk": "^2.335.0", "chokidar": "^2.0.4", "electron-context-menu": "^0.11.0", diff --git a/preview.gif b/preview.gif deleted file mode 100644 index b44c62e..0000000 Binary files a/preview.gif and /dev/null differ diff --git a/preview/1.PNG b/preview/1.PNG new file mode 100644 index 0000000..c81e391 Binary files /dev/null and b/preview/1.PNG differ diff --git a/preview/2.PNG b/preview/2.PNG new file mode 100644 index 0000000..4b5f9ee Binary files /dev/null and b/preview/2.PNG differ diff --git a/preview/3.PNG b/preview/3.PNG new file mode 100644 index 0000000..78b942f Binary files /dev/null and b/preview/3.PNG differ diff --git a/preview/4..PNG b/preview/4..PNG new file mode 100644 index 0000000..7e108e1 Binary files /dev/null and b/preview/4..PNG differ diff --git a/preview/5.PNG b/preview/5.PNG new file mode 100644 index 0000000..2f8ba82 Binary files /dev/null and b/preview/5.PNG differ diff --git a/preview/6.PNG b/preview/6.PNG new file mode 100644 index 0000000..28bcdcf Binary files /dev/null and b/preview/6.PNG differ diff --git a/preview/preview.gif b/preview/preview.gif new file mode 100644 index 0000000..ad820e9 Binary files /dev/null and b/preview/preview.gif differ diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 1012490..6300645 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -6,6 +6,7 @@ import {JobsListComponent} from './components/jobs-list/jobs-list.component'; import {SettingsComponent} from './components/settings/settings.component'; import {LogsComponent} from './components/logs/logs.component'; import {S3ExplorerComponent} from './components/s3-explorer/s3-explorer.component'; +import {S3StatsComponent} from './components/s3-stats/s3-stats.component'; const routes: Routes = [ { @@ -28,6 +29,10 @@ const routes: Routes = [ path: 's3-explorer', component: S3ExplorerComponent }, + { + path: 's3-stats', + component: S3StatsComponent + }, { path: 'logs', component: LogsComponent diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 48286f9..ca00a03 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -38,6 +38,8 @@ import { JobBackupManuallyComponent } from './components/dialogs/job-backup-manu import { NoInternetConnectionComponent } from './components/dialogs/no-internet-connection/no-internet-connection.component'; import {NotificationsService} from './providers/notifications.service'; import {ProcessesHandlerService} from './providers/processes-handler.service'; +import { S3StatsComponent } from './components/s3-stats/s3-stats.component'; +import { ChartModule } from 'angular2-chartjs'; // AoT requires an exported function for factories @@ -58,7 +60,8 @@ export function HttpLoaderFactory(http: HttpClient) { S3ExplorerComponent, JobAlertDialogComponent, JobBackupManuallyComponent, - NoInternetConnectionComponent + NoInternetConnectionComponent, + S3StatsComponent ], imports: [ BrowserModule, @@ -69,6 +72,7 @@ export function HttpLoaderFactory(http: HttpClient) { FlexLayoutModule, NgxElectronModule, ReactiveFormsModule, + ChartModule, TranslateModule.forRoot({ loader: { provide: TranslateLoader, diff --git a/src/app/components/menu/menu.component.html b/src/app/components/menu/menu.component.html index ee87cdf..f0b752a 100644 --- a/src/app/components/menu/menu.component.html +++ b/src/app/components/menu/menu.component.html @@ -20,6 +20,10 @@ {{ 'PAGES.S3-EXPLORER.MENU' | translate}} +