@tasenor/common-plugins 1.10.35 → 1.10.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
1
 
2
- > @tasenor/common-plugins@1.10.34 build /home/ci/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
2
+ > @tasenor/common-plugins@1.10.35 build /home/ci/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
3
3
  > rm -fr dist && tsc
4
4
 
@@ -1,14 +1,14 @@
1
1
 
2
- > @tasenor/common-plugins@1.10.34 ci /home/ci/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
2
+ > @tasenor/common-plugins@1.10.35 ci /home/ci/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
3
3
  > pnpm run lint
4
4
 
5
5
 
6
- > @tasenor/common-plugins@1.10.34 lint /home/ci/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
6
+ > @tasenor/common-plugins@1.10.35 lint /home/ci/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
7
7
  > eslint 'src/**/*.{ts,tsx}' 'data/**/*.mjs'
8
8
 
9
9
 
10
10
  /home/ci/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins/src/GitBackup/ui/index.tsx
11
- 2:58 warning 'Title' is defined but never used @typescript-eslint/no-unused-vars
11
+ 7:10 warning 't' is defined but never used @typescript-eslint/no-unused-vars
12
12
 
13
13
  ✖ 1 problem (0 errors, 1 warning)
14
14
 
@@ -12,6 +12,7 @@ declare class Finnish extends LanguagePlugin {
12
12
  getLanguages(): Set<string>;
13
13
  flag(): string;
14
14
  date2str(date: any): string;
15
+ time2str(date: any): string;
15
16
  str2date(str: any, sample?: null | Date): string | undefined;
16
17
  }
17
18
  export default Finnish;
@@ -5,7 +5,7 @@ import { LanguagePlugin } from '@tasenor/common-ui';
5
5
  class Finnish extends LanguagePlugin {
6
6
  static code = 'Finnish';
7
7
  static title = 'Finnish';
8
- static version = '1.0.65';
8
+ static version = '1.0.66';
9
9
  static icon = '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M12.36 6H7v6h7.24l.4 2H18V8h-5.24z" opacity=".3"/><path d="M14.4 6L14 4H5v17h2v-7h5.6l.4 2h7V6h-5.6zm3.6 8h-3.36l-.4-2H7V6h5.36l.4 2H18v6z"/></svg>';
10
10
  static releaseDate = '2023-06-10';
11
11
  static use = 'ui';
@@ -26,6 +26,9 @@ class Finnish extends LanguagePlugin {
26
26
  date2str(date) {
27
27
  return dayjs(date).format('DD.MM.YYYY');
28
28
  }
29
+ time2str(date) {
30
+ return dayjs(date).format('HH.mm.ss');
31
+ }
29
32
  str2date(str, sample = null) {
30
33
  sample = sample ? new Date(sample) : new Date();
31
34
  let year, month, day;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Finnish/ui/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,MAAM,OAAQ,SAAQ,cAAc;IAElC,MAAM,CAAC,IAAI,GAAG,SAAS,CAAA;IACvB,MAAM,CAAC,KAAK,GAAG,SAAS,CAAA;IACxB,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAA;IACzB,MAAM,CAAC,IAAI,GAAG,2SAA2S,CAAA;IACzT,MAAM,CAAC,WAAW,GAAG,YAAY,CAAA;IACjC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAA;IACjB,MAAM,CAAC,IAAI,GAAG,UAAU,CAAA;IACxB,MAAM,CAAC,WAAW,GAAG,yCAAyC,CAAA;IAE9D;QACE,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,SAAS,GAAG;YACf,EAAE,EAAE,EAAE;SACP,CAAA;IACH,CAAC;IAED,YAAY;QACV,OAAO,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACxB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,QAAQ,CAAC,IAAI;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACzC,CAAC;IAED,QAAQ,CAAC,GAAG,EAAE,SAAsB,IAAI;QACtC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAA;QAC/C,IAAI,IAAI,EAAE,KAAK,EAAE,GAAG,CAAA;QACpB,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAClD,OAAO,SAAS,CAAA;SACjB;QACD,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACnC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;QACnB,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;QAClD,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAA;QAC7C,IAAI,IAAI,GAAG,GAAG,EAAE;YACd,IAAI,IAAI,IAAI,CAAA;SACb;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;QAC/D,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC/D,CAAC;;AAGH,eAAe,OAAO,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Finnish/ui/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,MAAM,OAAQ,SAAQ,cAAc;IAElC,MAAM,CAAC,IAAI,GAAG,SAAS,CAAA;IACvB,MAAM,CAAC,KAAK,GAAG,SAAS,CAAA;IACxB,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAA;IACzB,MAAM,CAAC,IAAI,GAAG,2SAA2S,CAAA;IACzT,MAAM,CAAC,WAAW,GAAG,YAAY,CAAA;IACjC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAA;IACjB,MAAM,CAAC,IAAI,GAAG,UAAU,CAAA;IACxB,MAAM,CAAC,WAAW,GAAG,yCAAyC,CAAA;IAE9D;QACE,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,SAAS,GAAG;YACf,EAAE,EAAE,EAAE;SACP,CAAA;IACH,CAAC;IAED,YAAY;QACV,OAAO,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACxB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,QAAQ,CAAC,IAAI;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACzC,CAAC;IAED,QAAQ,CAAC,IAAI;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IACvC,CAAC;IAED,QAAQ,CAAC,GAAG,EAAE,SAAsB,IAAI;QACtC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAA;QAC/C,IAAI,IAAI,EAAE,KAAK,EAAE,GAAG,CAAA;QACpB,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAClD,OAAO,SAAS,CAAA;SACjB;QACD,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACnC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;QACnB,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;QAClD,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAA;QAC7C,IAAI,IAAI,GAAG,GAAG,EAAE;YACd,IAAI,IAAI,IAAI,CAAA;SACb;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;QAC/D,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC/D,CAAC;;AAGH,eAAe,OAAO,CAAA"}
@@ -18,6 +18,10 @@ declare class GitBackup extends ToolPlugin {
18
18
  * List of the latest backup commits.
19
19
  */
20
20
  GET(db: KnexDatabase, data: any): Promise<unknown>;
21
+ /**
22
+ * Restore from the backup.
23
+ */
24
+ PUT(db: KnexDatabase, data: any): Promise<unknown>;
21
25
  /**
22
26
  * A helper to check settings and set up repository for further use.
23
27
  */
@@ -2,6 +2,7 @@ import { GitRepo, systemPiped, TasenorExporter, ToolPlugin } from '@tasenor/comm
2
2
  import { error, log, note, validGitRepoName } from '@tasenor/common';
3
3
  import fs from 'fs';
4
4
  import path from 'path';
5
+ const ALLOW_BAD_REPOSITORY = true;
5
6
  class GitBackup extends ToolPlugin {
6
7
  constructor() {
7
8
  super();
@@ -49,6 +50,16 @@ class GitBackup extends ToolPlugin {
49
50
  }
50
51
  return { success: false };
51
52
  }
53
+ /**
54
+ * Restore from the backup.
55
+ */
56
+ async PUT(db, data) {
57
+ if (typeof data === 'object' && data !== null && !!data.commit) {
58
+ console.log('TODO: hash', data.commit);
59
+ return { success: true };
60
+ }
61
+ return { success: false };
62
+ }
52
63
  /**
53
64
  * A helper to check settings and set up repository for further use.
54
65
  */
@@ -63,7 +74,7 @@ class GitBackup extends ToolPlugin {
63
74
  return null;
64
75
  }
65
76
  // Check repo URL.
66
- if (!validGitRepoName(repository)) {
77
+ if (!ALLOW_BAD_REPOSITORY && !validGitRepoName(repository)) {
67
78
  error(`Bad repository address ${JSON.stringify(repository)}.`);
68
79
  return null;
69
80
  }
@@ -101,6 +112,7 @@ class GitBackup extends ToolPlugin {
101
112
  * Get a list of commits.
102
113
  */
103
114
  async collectCommits(db, limit) {
115
+ // TODO: Would it work if we define types in ../common instead of unknown[]?
104
116
  const setup = await this.setupRepository(db);
105
117
  if (!setup) {
106
118
  return [];
@@ -108,13 +120,19 @@ class GitBackup extends ToolPlugin {
108
120
  const { repo } = setup;
109
121
  log(`Fetching commit list for DB '${db.client.config.connection.database}'.`);
110
122
  await repo.update();
111
- const gitLog = await repo.git.log({ maxCount: limit });
112
- return gitLog.all.map(e => ({
113
- hash: e.hash,
114
- date: e.date,
115
- message: e.message,
116
- author: `${e.author_name} ${e.author_email ? '<' + e.author_email + '>' : ''}`.trim()
117
- }));
123
+ try {
124
+ const gitLog = await repo.git.log({ maxCount: limit });
125
+ return gitLog.all.map(e => ({
126
+ hash: e.hash,
127
+ date: e.date,
128
+ message: e.message,
129
+ author: `${e.author_name} ${e.author_email ? '<' + e.author_email + '>' : ''}`.trim()
130
+ }));
131
+ }
132
+ catch (err) {
133
+ error(`Failed to get log from git repository for DB '${db.client.config.connection.database}'.`);
134
+ return [];
135
+ }
118
136
  }
119
137
  /**
120
138
  * Execute backup making for a database.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/GitBackup/backend/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/GitBackup/backend/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import React, { useState, useEffect, useRef } from 'react';
2
- import { Note, IconButton, SubPanel, ToolPlugin, Dialog } from '@tasenor/common-ui';
2
+ import { Note, IconButton, SubPanel, ToolPlugin, Dialog, Localize } from '@tasenor/common-ui';
3
3
  import { makeObservable, observable, runInAction } from 'mobx';
4
4
  import { Trans, useTranslation } from 'react-i18next';
5
5
  import { Box, Table, TableBody, TableCell, TableContainer, TableRow, TextField, Typography } from '@mui/material';
@@ -17,24 +17,53 @@ function MakeBackupIcon(props) {
17
17
  function BackupCommitList(props) {
18
18
  const { store, backups } = props;
19
19
  const [commits, setCommits] = useState([]);
20
+ const [fetched, setFetched] = useState(false);
21
+ const [restore, setRestore] = useState(null);
22
+ const { t } = useTranslation();
20
23
  useEffect(() => {
21
24
  if (!store.db) {
22
25
  return;
23
26
  }
24
27
  store.request(`/db/${store.db}/tools/${GitBackup.code}`, 'GET', { type: 'commits', count: 20 }).then((res) => {
28
+ setFetched(true);
25
29
  if (res.success) {
26
30
  setCommits(res.data.commits);
27
31
  }
28
32
  });
29
33
  }, [store.db, backups]);
30
- return React.createElement(TableContainer, null,
31
- React.createElement(Table, null,
32
- React.createElement(TableBody, null, commits.map((commit, idx) => React.createElement(TableRow, { key: idx },
33
- React.createElement(TableCell, null,
34
- React.createElement(Box, null,
35
- React.createElement(Typography, { color: "secondary" }, commit.hash)),
36
- React.createElement(Typography, { variant: "body1" }, commit.message),
37
- React.createElement(Typography, { variant: "caption" }, commit.author)))))));
34
+ const onRestore = (commit) => {
35
+ store.request(`/db/${store.db}/tools/${GitBackup.code}`, 'PUT', { commit: commit.hash }).then((res) => {
36
+ if (res && res.success) {
37
+ store.addMessage(t('Backup restored successfully.'));
38
+ }
39
+ else {
40
+ store.addError(t('Restoring backup failed.'));
41
+ }
42
+ });
43
+ };
44
+ if (fetched && commits.length === 0) {
45
+ return React.createElement(Box, null,
46
+ React.createElement(Trans, null, "Not able to find any commits from the repository."));
47
+ }
48
+ return React.createElement(Box, null,
49
+ React.createElement(TableContainer, null,
50
+ React.createElement(Table, null,
51
+ React.createElement(TableBody, null, commits.map((commit, idx) => React.createElement(TableRow, { key: idx },
52
+ React.createElement(TableCell, null,
53
+ React.createElement(IconButton, { id: "Restore", icon: "update", title: "restore", onClick: () => setRestore(commit) })),
54
+ React.createElement(TableCell, null,
55
+ React.createElement(Typography, { color: "secondary" }, commit.hash),
56
+ React.createElement(Typography, { variant: "body1" }, commit.message),
57
+ React.createElement(Typography, { variant: "caption" }, commit.author)),
58
+ React.createElement(TableCell, null,
59
+ React.createElement(Localize, { date: commit.date, withTime: true }))))))),
60
+ React.createElement(Dialog, { isVisible: !!restore, title: t('Restore this backup?'), wider: true, onClose: () => setRestore(null), onConfirm: () => onRestore(restore) }, restore && React.createElement(Box, null,
61
+ React.createElement(Typography, { variant: "caption" },
62
+ React.createElement(Localize, { date: restore.date, withTime: true }),
63
+ " ",
64
+ restore.hash),
65
+ React.createElement(Typography, { variant: "body1" }, restore.message),
66
+ React.createElement(Typography, { variant: "caption" }, restore.author))));
38
67
  }
39
68
  class GitBackup extends ToolPlugin {
40
69
  busy = false;
@@ -61,17 +90,25 @@ class GitBackup extends ToolPlugin {
61
90
  'label-repository': 'Repository URL',
62
91
  'label-subDirectory': 'Subdirectory inside the repository',
63
92
  'label-sshPrivateKey': 'SSH private key',
64
- 'icon-summarize-make-backup': 'Make a backup'
93
+ 'icon-restore': 'Restore this backup',
94
+ 'icon-summarize-make-backup': 'Make a backup',
65
95
  },
66
96
  fi: {
67
97
  'label-repository': 'Git-säilön URL',
68
98
  'label-subDirectory': 'Alihakemiston nimi säilön sisällä',
69
99
  'label-sshPrivateKey': 'SSH yksityinen avain',
100
+ 'icon-restore': 'Palauta tältä varmuuskopiolta',
70
101
  'icon-summarize-make-backup': 'Tee varmuuskopio',
71
102
  'Backup for Git': 'Git-pohjainen Varmuuskopiointi',
72
103
  'Manual backup by GitBackup {version}': 'Ylimääräinen varmuuskopio GitBackup {version}',
73
104
  'Backup created successfully.': 'Varmuuskopion luominen onnistui.',
74
- 'Creating backup failed.': 'Varmuuskopion luominen ei onnistunut.'
105
+ 'Creating backup failed.': 'Varmuuskopion luominen ei onnistunut.',
106
+ 'Not able to find any commits from the repository.': 'Varmuuskopio vaikuttaisi olevan tyhjä.',
107
+ 'This tool takes every night automatically one backup.': 'Tämä työkalu tekee yhden varmuuskopion joka yö.',
108
+ 'You can also make immediately backup from the icon above.': 'Lisäksi voit tehdä ylimääräisen varmuuskopion halutessasi ylläolevasta ikonista.',
109
+ 'Existing backups are listed below and can be restored from the icon next to them.': 'Aiemmat varmuuskopiot ovat alla listattuna. Niistä voi palauttaa minkä tahansa klikkaamalla niiden vieressä olevaa ikonia.',
110
+ 'Backup restored successfully.': 'Varmuuskopion palautus onnistui.',
111
+ 'Restoring backup failed.': 'Varmuuskopion palauttaminen epäonnistui.'
75
112
  }
76
113
  };
77
114
  }
@@ -91,10 +128,10 @@ class GitBackup extends ToolPlugin {
91
128
  this.backups = this.backups + 1;
92
129
  });
93
130
  if (success) {
94
- this.store.addMessage(this.t('Backup created successfully.'));
131
+ this.store.addMessage(this.t('Backup restored successfully.'));
95
132
  }
96
133
  else {
97
- this.store.addError(this.t('Creating backup failed.'));
134
+ this.store.addError(this.t('Restoring backup failed.'));
98
135
  }
99
136
  });
100
137
  }
@@ -114,6 +151,8 @@ class GitBackup extends ToolPlugin {
114
151
  React.createElement(Trans, null, "This tool takes every night automatically one backup."),
115
152
  React.createElement(React.Fragment, null, " "),
116
153
  React.createElement(Trans, null, "You can also make immediately backup from the icon above."),
154
+ React.createElement(React.Fragment, null, " "),
155
+ React.createElement(Trans, null, "Existing backups are listed below and can be restored from the icon next to them."),
117
156
  React.createElement(React.Fragment, null, " ")),
118
157
  React.createElement(Box, { sx: { m: 2 } },
119
158
  React.createElement(BackupCommitList, { backups: this.backups, store: this.store })));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/GitBackup/ui/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/GitBackup/ui/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAC1D,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7F,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AASjH,SAAS,cAAc,CAAC,KAA0B;IAChD,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,KAAK,CAAA;IACxC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC1C,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAA;IAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA,CAAC,8EAA8E;IAE1G,OAAO;QAEH,oBAAC,MAAM,IACL,KAAK,QACL,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,CAAC,CAAC,wBAAwB,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAChD,aAAa,CAAC,KAAK,CAAC,EACtB,SAAS,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAEjD,oBAAC,SAAS,IAAC,SAAS,QAAC,SAAS,QAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAA,CAAC,CAAC,GAAG,CAC5H;QAEX,oBAAC,UAAU,IAAC,EAAE,EAAC,aAAa,EAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAC,uBAAuB,EAAC,IAAI,EAAC,MAAM,GAAG,CAChI,CAAA;AACL,CAAC;AAcD,SAAS,gBAAgB,CAAC,KAA4B;IACpD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;IAChC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAoB,EAAE,CAAC,CAAA;IAC7D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAuB,IAAI,CAAC,CAAA;IAClE,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAA;IAE9B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE;YACb,OAAM;SACP;QACD,KAAK,CAAC,OAAO,CAAiC,OAAO,KAAK,CAAC,EAAE,UAAU,SAAS,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YAC3I,UAAU,CAAC,IAAI,CAAC,CAAA;YAChB,IAAI,GAAG,CAAC,OAAO,EAAE;gBACf,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;aAC7B;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;IAEvB,MAAM,SAAS,GAAG,CAAC,MAAuB,EAAE,EAAE;QAC5C,KAAK,CAAC,OAAO,CAAiC,OAAO,KAAK,CAAC,EAAE,UAAU,SAAS,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACpI,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE;gBACtB,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAA;aACrD;iBAAM;gBACL,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAA;aAC9C;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;QACnC,OAAO,oBAAC,GAAG;YACT,oBAAC,KAAK,4DAA0D,CAC5D,CAAA;KACP;IAED,OAAO,oBAAC,GAAG;QACT,oBAAC,cAAc;YACb,oBAAC,KAAK;gBACJ,oBAAC,SAAS,QACP,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,oBAAC,QAAQ,IAAC,GAAG,EAAE,GAAG;oBAC9C,oBAAC,SAAS;wBACR,oBAAC,UAAU,IAAC,EAAE,EAAC,SAAS,EAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,SAAS,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CACjF;oBACZ,oBAAC,SAAS;wBACR,oBAAC,UAAU,IAAC,KAAK,EAAC,WAAW,IAAE,MAAM,CAAC,IAAI,CAAc;wBACxD,oBAAC,UAAU,IAAC,OAAO,EAAC,OAAO,IAAE,MAAM,CAAC,OAAO,CAAc;wBACzD,oBAAC,UAAU,IAAC,OAAO,EAAC,SAAS,IAAE,MAAM,CAAC,MAAM,CAAc,CAChD;oBACZ,oBAAC,SAAS;wBACR,oBAAC,QAAQ,IAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,SAAE,CAC7B,CACH,CAAC,CACF,CACN,CACO;QAEjB,oBAAC,MAAM,IAAC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,sBAAsB,CAAC,EAAE,KAAK,QAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IACtI,OAAO,IAAI,oBAAC,GAAG;YACf,oBAAC,UAAU,IAAC,OAAO,EAAC,SAAS;gBAAC,oBAAC,QAAQ,IAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,SAAE;;gBAAE,OAAO,CAAC,IAAI,CAAc;YAClG,oBAAC,UAAU,IAAC,OAAO,EAAC,OAAO,IAAE,OAAO,CAAC,OAAO,CAAc;YAC1D,oBAAC,UAAU,IAAC,OAAO,EAAC,SAAS,IAAE,OAAO,CAAC,MAAM,CAAc,CACvD,CACC,CACL,CAAA;AACR,CAAC;AAED,MAAM,SAAU,SAAQ,UAAU;IAEhC,IAAI,GAAG,KAAK,CAAA;IACZ,OAAO,GAAG,EAAE,CAAA;IACZ,OAAO,GAAG,CAAC,CAAA;IAEX,MAAM,CAAC,IAAI,GAAG,WAAW,CAAA;IACzB,MAAM,CAAC,KAAK,GAAG,gBAAgB,CAAA;IAC/B,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,MAAM,CAAC,IAAI,GAAG,oTAAoT,CAAA;IAClU,MAAM,CAAC,WAAW,GAAG,YAAY,CAAA;IACjC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAA;IACnB,MAAM,CAAC,IAAI,GAAG,MAAM,CAAA;IACpB,MAAM,CAAC,WAAW,GAAG,qDAAqD,CAAA;IAE1E;QACE,KAAK,EAAE,CAAA;QAEP,cAAc,CAAC,IAAI,EAAE;YACnB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,UAAU;SACpB,CAAC,CAAA;QAEF,IAAI,CAAC,SAAS,GAAG;YACf,sEAAsE;YACtE,EAAE,EAAE;gBACF,kBAAkB,EAAE,gBAAgB;gBACpC,oBAAoB,EAAE,oCAAoC;gBAC1D,qBAAqB,EAAE,iBAAiB;gBACxC,cAAc,EAAE,qBAAqB;gBACrC,4BAA4B,EAAE,eAAe;aAC9C;YACD,EAAE,EAAE;gBACF,kBAAkB,EAAE,gBAAgB;gBACpC,oBAAoB,EAAE,mCAAmC;gBACzD,qBAAqB,EAAE,sBAAsB;gBAC7C,cAAc,EAAE,+BAA+B;gBAC/C,4BAA4B,EAAE,kBAAkB;gBAEhD,gBAAgB,EAAE,gCAAgC;gBAClD,sCAAsC,EAAE,+CAA+C;gBACvF,8BAA8B,EAAE,kCAAkC;gBAClE,yBAAyB,EAAE,uCAAuC;gBAClE,mDAAmD,EAAE,wCAAwC;gBAC7F,uDAAuD,EAAE,iDAAiD;gBAC1G,2DAA2D,EAAE,kFAAkF;gBAC/I,mFAAmF,EAAE,4HAA4H;gBACjN,+BAA+B,EAAE,kCAAkC;gBACnE,0BAA0B,EAAE,0CAA0C;aACvE;SACF,CAAA;IACH,CAAC;IAED,QAAQ;QACN,OAAO,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;IACtE,CAAC;IAED,SAAS;QACP,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAe;QAChC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAA;QACrC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAyB,CAAA;QAC9K,WAAW,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,IAAI,GAAG,KAAK,CAAA;YACjB,WAAW,CAAC,GAAG,EAAE;gBACf,mBAAmB;gBACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA;YACjC,CAAC,CAAC,CAAA;YACF,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAA;aAC/D;iBAAM;gBACL,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAA;aACxD;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,YAAY;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;QAC1C,OAAO,oBAAC,cAAc,IAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAI,CAAA;IACxG,CAAC;IAED,aAAa;QACX,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;QAC1C,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;gBACL,oBAAC,IAAI;oBAAC,oBAAC,KAAK,6EAA2E,CAAO,CAC7F,CAAA;SACJ;QAED,OAAO;YACL,oBAAC,QAAQ;gBACP,oBAAC,KAAK,gEAA8D;gBAAA,8CAAM;gBAC1E,oBAAC,KAAK,oEAAkE;gBAAA,8CAAM;gBAC9E,oBAAC,KAAK,4FAA0F;gBAAA,8CAAM,CAC7F;YACX,oBAAC,GAAG,IAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;gBACf,oBAAC,gBAAgB,IAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,CACzD,CACL,CAAA;IACL,CAAC;IAED,WAAW;QACT,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,EAAE;iBACZ;gBACD;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,EAAE;iBACZ;gBACD;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,eAAe;oBACrB,SAAS,EAAE,IAAI;oBACf,OAAO,EAAE,EAAE;iBACZ;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,MAAM;oBACb,OAAO,EAAE;wBACP,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE;qBACvD;iBACF;aACF;SACF,CAAA;IACH,CAAC;;AAGH,eAAe,SAAS,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tasenor/common-plugins",
3
- "version": "1.10.35",
3
+ "version": "1.10.36",
4
4
  "description": "Shared common plugins of Tasenor project",
5
5
  "repository": "git@github.com:dataplugoy/tasenor-bookkeeper.git",
6
6
  "author": "Tommi Ronkainen <tommi.ronkainen@gmail.com>",
@@ -13,9 +13,9 @@
13
13
  "dayjs": "1.10.8",
14
14
  "sprintf-js": "^1.1.2",
15
15
  "tsx": "^4.7.0",
16
- "@tasenor/common": "1.10.35",
17
- "@tasenor/common-node": "1.10.35",
18
- "@tasenor/common-ui": "1.10.35"
16
+ "@tasenor/common": "1.10.36",
17
+ "@tasenor/common-ui": "1.10.36",
18
+ "@tasenor/common-node": "1.10.36"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@mui/icons-material": "^5.14.1",
@@ -31,7 +31,7 @@
31
31
  "react-i18next": "^13.0.2",
32
32
  "react-router-dom": "^6.14.1",
33
33
  "typescript": "^5.1.6",
34
- "@tasenor/config": "1.10.35",
34
+ "@tasenor/config": "1.10.36",
35
35
  "eslint-config-tasenor": "0.0.0"
36
36
  },
37
37
  "peerDependencies": {
@@ -7,7 +7,7 @@ class Finnish extends LanguagePlugin {
7
7
 
8
8
  static code = 'Finnish'
9
9
  static title = 'Finnish'
10
- static version = '1.0.65'
10
+ static version = '1.0.66'
11
11
  static icon = '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M12.36 6H7v6h7.24l.4 2H18V8h-5.24z" opacity=".3"/><path d="M14.4 6L14 4H5v17h2v-7h5.6l.4 2h7V6h-5.6zm3.6 8h-3.36l-.4-2H7V6h5.36l.4 2H18v6z"/></svg>'
12
12
  static releaseDate = '2023-06-10'
13
13
  static use = 'ui'
@@ -33,6 +33,10 @@ class Finnish extends LanguagePlugin {
33
33
  return dayjs(date).format('DD.MM.YYYY')
34
34
  }
35
35
 
36
+ time2str(date) {
37
+ return dayjs(date).format('HH.mm.ss')
38
+ }
39
+
36
40
  str2date(str, sample: null | Date = null) {
37
41
  sample = sample ? new Date(sample) : new Date()
38
42
  let year, month, day
@@ -3,6 +3,8 @@ import { DirectoryPath, Email, error, FilePath, log, note, PluginCode, Url, vali
3
3
  import fs from 'fs'
4
4
  import path from 'path'
5
5
 
6
+ const ALLOW_BAD_REPOSITORY = true
7
+
6
8
  class GitBackup extends ToolPlugin {
7
9
  constructor() {
8
10
  super()
@@ -59,6 +61,17 @@ class GitBackup extends ToolPlugin {
59
61
  return { success: false }
60
62
  }
61
63
 
64
+ /**
65
+ * Restore from the backup.
66
+ */
67
+ async PUT(db: KnexDatabase, data): Promise<unknown> {
68
+ if (typeof data === 'object' && data !== null && !!data.commit) {
69
+ console.log('TODO: hash', data.commit)
70
+ return { success: true }
71
+ }
72
+ return { success: false }
73
+ }
74
+
62
75
  /**
63
76
  * A helper to check settings and set up repository for further use.
64
77
  */
@@ -83,7 +96,7 @@ class GitBackup extends ToolPlugin {
83
96
  }
84
97
 
85
98
  // Check repo URL.
86
- if (!validGitRepoName(repository)) {
99
+ if (!ALLOW_BAD_REPOSITORY && !validGitRepoName(repository)) {
87
100
  error(`Bad repository address ${JSON.stringify(repository)}.`)
88
101
  return null
89
102
  }
@@ -129,6 +142,7 @@ class GitBackup extends ToolPlugin {
129
142
  * Get a list of commits.
130
143
  */
131
144
  async collectCommits(db: KnexDatabase, limit: number): Promise<unknown[]> {
145
+ // TODO: Would it work if we define types in ../common instead of unknown[]?
132
146
  const setup = await this.setupRepository(db)
133
147
  if (!setup) {
134
148
  return []
@@ -137,13 +151,18 @@ class GitBackup extends ToolPlugin {
137
151
 
138
152
  log(`Fetching commit list for DB '${db.client.config.connection.database}'.`)
139
153
  await repo.update()
140
- const gitLog = await repo.git.log({ maxCount: limit })
141
- return gitLog.all.map(e => ({
142
- hash: e.hash,
143
- date: e.date,
144
- message: e.message,
145
- author: `${e.author_name} ${e.author_email ? '<' + e.author_email + '>' : ''}`.trim()
146
- }))
154
+ try {
155
+ const gitLog = await repo.git.log({ maxCount: limit })
156
+ return gitLog.all.map(e => ({
157
+ hash: e.hash,
158
+ date: e.date,
159
+ message: e.message,
160
+ author: `${e.author_name} ${e.author_email ? '<' + e.author_email + '>' : ''}`.trim()
161
+ }))
162
+ } catch (err) {
163
+ error(`Failed to get log from git repository for DB '${db.client.config.connection.database}'.`)
164
+ return []
165
+ }
147
166
  }
148
167
 
149
168
  /**
@@ -1,9 +1,10 @@
1
1
  import React, { useState, useEffect, useRef } from 'react'
2
- import { Note, IconButton, SubPanel, ToolPlugin, Dialog, Title } from '@tasenor/common-ui'
2
+ import { Note, IconButton, SubPanel, ToolPlugin, Dialog, Localize } from '@tasenor/common-ui'
3
3
  import { makeObservable, observable, runInAction } from 'mobx'
4
4
  import { Trans, useTranslation } from 'react-i18next'
5
5
  import { Box, Table, TableBody, TableCell, TableContainer, TableRow, TextField, Typography } from '@mui/material'
6
6
  import { Store, Timestring } from '@tasenor/common'
7
+ import { t } from 'i18next'
7
8
 
8
9
  interface MakeBackupIconProps {
9
10
  disabled: boolean
@@ -47,32 +48,68 @@ interface BackupCommitListProps {
47
48
 
48
49
  function BackupCommitList(props: BackupCommitListProps): React.ReactNode {
49
50
  const { store, backups } = props
50
- const [commits, setCommits] = useState<GitBackupCommit>([])
51
+ const [commits, setCommits] = useState<GitBackupCommit[]>([])
52
+ const [fetched, setFetched] = useState(false)
53
+ const [restore, setRestore] = useState<GitBackupCommit|null>(null)
54
+ const { t } = useTranslation()
51
55
 
52
56
  useEffect(() => {
53
57
  if (!store.db) {
54
58
  return
55
59
  }
56
60
  store.request<{ commits: GitBackupCommit[] }>(`/db/${store.db}/tools/${GitBackup.code}`, 'GET', { type: 'commits', count: 20 }).then((res) => {
61
+ setFetched(true)
57
62
  if (res.success) {
58
63
  setCommits(res.data.commits)
59
64
  }
60
65
  })
61
66
  }, [store.db, backups])
62
67
 
63
- return <TableContainer>
64
- <Table>
65
- <TableBody>
66
- {commits.map((commit, idx) => <TableRow key={idx}>
67
- <TableCell>
68
- <Box><Typography color="secondary">{commit.hash}</Typography></Box>
69
- <Typography variant="body1">{commit.message}</Typography>
70
- <Typography variant="caption">{commit.author}</Typography>
71
- </TableCell>
72
- </TableRow>)}
73
- </TableBody>
74
- </Table>
75
- </TableContainer>
68
+ const onRestore = (commit: GitBackupCommit) => {
69
+ store.request<{ commits: GitBackupCommit[] }>(`/db/${store.db}/tools/${GitBackup.code}`, 'PUT', { commit: commit.hash }).then((res) => {
70
+ if (res && res.success) {
71
+ store.addMessage(t('Backup restored successfully.'))
72
+ } else {
73
+ store.addError(t('Restoring backup failed.'))
74
+ }
75
+ })
76
+ }
77
+
78
+ if (fetched && commits.length === 0) {
79
+ return <Box>
80
+ <Trans>Not able to find any commits from the repository.</Trans>
81
+ </Box>
82
+ }
83
+
84
+ return <Box>
85
+ <TableContainer>
86
+ <Table>
87
+ <TableBody>
88
+ {commits.map((commit, idx) => <TableRow key={idx}>
89
+ <TableCell>
90
+ <IconButton id="Restore" icon="update" title="restore" onClick={() => setRestore(commit)}/>
91
+ </TableCell>
92
+ <TableCell>
93
+ <Typography color="secondary">{commit.hash}</Typography>
94
+ <Typography variant="body1">{commit.message}</Typography>
95
+ <Typography variant="caption">{commit.author}</Typography>
96
+ </TableCell>
97
+ <TableCell>
98
+ <Localize date={commit.date} withTime/>
99
+ </TableCell>
100
+ </TableRow>)}
101
+ </TableBody>
102
+ </Table>
103
+ </TableContainer>
104
+
105
+ <Dialog isVisible={!!restore} title={t('Restore this backup?')} wider onClose={() => setRestore(null)} onConfirm={() => onRestore(restore)}>
106
+ { restore && <Box>
107
+ <Typography variant="caption"><Localize date={restore.date} withTime/> {restore.hash}</Typography>
108
+ <Typography variant="body1">{restore.message}</Typography>
109
+ <Typography variant="caption">{restore.author}</Typography>
110
+ </Box>}
111
+ </Dialog>
112
+ </Box>
76
113
  }
77
114
 
78
115
  class GitBackup extends ToolPlugin {
@@ -105,21 +142,28 @@ class GitBackup extends ToolPlugin {
105
142
  'label-repository': 'Repository URL',
106
143
  'label-subDirectory': 'Subdirectory inside the repository',
107
144
  'label-sshPrivateKey': 'SSH private key',
108
- 'icon-summarize-make-backup': 'Make a backup'
145
+ 'icon-restore': 'Restore this backup',
146
+ 'icon-summarize-make-backup': 'Make a backup',
109
147
  },
110
148
  fi: {
111
149
  'label-repository': 'Git-säilön URL',
112
150
  'label-subDirectory': 'Alihakemiston nimi säilön sisällä',
113
151
  'label-sshPrivateKey': 'SSH yksityinen avain',
152
+ 'icon-restore': 'Palauta tältä varmuuskopiolta',
114
153
  'icon-summarize-make-backup': 'Tee varmuuskopio',
115
154
 
116
155
  'Backup for Git': 'Git-pohjainen Varmuuskopiointi',
117
156
  'Manual backup by GitBackup {version}': 'Ylimääräinen varmuuskopio GitBackup {version}',
118
157
  'Backup created successfully.': 'Varmuuskopion luominen onnistui.',
119
- 'Creating backup failed.': 'Varmuuskopion luominen ei onnistunut.'
158
+ 'Creating backup failed.': 'Varmuuskopion luominen ei onnistunut.',
159
+ 'Not able to find any commits from the repository.': 'Varmuuskopio vaikuttaisi olevan tyhjä.',
160
+ 'This tool takes every night automatically one backup.': 'Tämä työkalu tekee yhden varmuuskopion joka yö.',
161
+ 'You can also make immediately backup from the icon above.': 'Lisäksi voit tehdä ylimääräisen varmuuskopion halutessasi ylläolevasta ikonista.',
162
+ 'Existing backups are listed below and can be restored from the icon next to them.': 'Aiemmat varmuuskopiot ovat alla listattuna. Niistä voi palauttaa minkä tahansa klikkaamalla niiden vieressä olevaa ikonia.',
163
+ 'Backup restored successfully.': 'Varmuuskopion palautus onnistui.',
164
+ 'Restoring backup failed.': 'Varmuuskopion palauttaminen epäonnistui.'
120
165
  }
121
166
  }
122
-
123
167
  }
124
168
 
125
169
  toolMenu() {
@@ -140,9 +184,9 @@ class GitBackup extends ToolPlugin {
140
184
  this.backups = this.backups + 1
141
185
  })
142
186
  if (success) {
143
- this.store.addMessage(this.t('Backup created successfully.'))
187
+ this.store.addMessage(this.t('Backup restored successfully.'))
144
188
  } else {
145
- this.store.addError(this.t('Creating backup failed.'))
189
+ this.store.addError(this.t('Restoring backup failed.'))
146
190
  }
147
191
  })
148
192
  }
@@ -164,6 +208,7 @@ class GitBackup extends ToolPlugin {
164
208
  <SubPanel>
165
209
  <Trans>This tool takes every night automatically one backup.</Trans><> </>
166
210
  <Trans>You can also make immediately backup from the icon above.</Trans><> </>
211
+ <Trans>Existing backups are listed below and can be restored from the icon next to them.</Trans><> </>
167
212
  </SubPanel>
168
213
  <Box sx={{ m: 2 }}>
169
214
  <BackupCommitList backups={this.backups} store={this.store}/>