diff --git a/public/index.css b/public/index.css
new file mode 100644
index 0000000..6c620de
--- /dev/null
+++ b/public/index.css
@@ -0,0 +1,4 @@
+div#appVersion {
+ display: none
+ }
+
\ No newline at end of file
diff --git a/public/index.html b/public/index.html
index f22fed5..1de80fa 100644
--- a/public/index.html
+++ b/public/index.html
@@ -3,6 +3,7 @@
+
Version %REACT_APP_FULL_VERSION_INFO%
diff --git a/src/PoliciesTable.jsx b/src/PoliciesTable.jsx
index c7aac11..bc5102b 100644
--- a/src/PoliciesTable.jsx
+++ b/src/PoliciesTable.jsx
@@ -24,7 +24,7 @@ export class PoliciesTable extends Component {
constructor() {
super();
this.state = {
- items: [],
+ policies: [],
isLoading: false,
error: null,
editorTarget: null,
@@ -64,7 +64,7 @@ export class PoliciesTable extends Component {
fetchPolicies() {
axios.get('/api/v1/policies').then(result => {
this.setState({
- items: result.data.policies,
+ policies: result.data.policies,
isLoading: false,
});
}).catch(error => {
@@ -166,7 +166,7 @@ export class PoliciesTable extends Component {
}
render() {
- let { items, sources, isLoading, error } = this.state;
+ let { policies, sources, isLoading, error } = this.state;
if (error) {
return
{error.message}
;
}
@@ -189,31 +189,31 @@ export class PoliciesTable extends Component {
break;
case globalPolicy:
- items = items.filter(x => this.isGlobalPolicy(x));
+ policies = policies.filter(x => this.isGlobalPolicy(x));
break;
case localPolicies:
- items = items.filter(x => this.isLocalUserPolicy(x));
+ policies = policies.filter(x => this.isLocalUserPolicy(x));
break;
case applicablePolicies:
- items = items.filter(x => this.isLocalUserPolicy(x) || this.isLocalHostPolicy(x) || this.isGlobalPolicy(x));
+ policies = policies.filter(x => this.isLocalUserPolicy(x) || this.isLocalHostPolicy(x) || this.isGlobalPolicy(x));
break;
case perUserPolicies:
- items = items.filter(x => !!x.target.userName && !!x.target.host && !x.target.path);
+ policies = policies.filter(x => !!x.target.userName && !!x.target.host && !x.target.path);
break;
case perHostPolicies:
- items = items.filter(x => !x.target.userName && !!x.target.host && !x.target.path);
+ policies = policies.filter(x => !x.target.userName && !!x.target.host && !x.target.path);
break;
default:
- items = items.filter(x => ownerName(x.target) === this.state.selectedOwner);
+ policies = policies.filter(x => ownerName(x.target) === this.state.selectedOwner);
break;
};
- items.sort((l,r) => {
+ policies.sort((l,r) => {
const hc = compare(l.target.host,r.target.host);
if (hc) {
return hc;
@@ -242,7 +242,7 @@ export class PoliciesTable extends Component {
accessor: x => this.policySummary(x),
}, {
id: 'edit',
- Header: '',
+ Header: 'Actions',
width: 50,
Cell: x =>
}]
@@ -284,9 +284,9 @@ export class PoliciesTable extends Component {
}
- {items.length > 0 ?
-
Found {items.length} policies matching criteria.
-
+ {policies.length > 0 ?
+
Found {policies.length} policies matching criteria.
+
: ((this.state.selectedOwner === localPolicies && this.state.policyPath) ?
No policy found for directory {this.state.policyPath}
. Click Set Policy to define it.
:
No policies found.
)}
diff --git a/src/PolicyEditor/index.jsx b/src/PolicyEditor/index.jsx
index 5f2d1b6..f2b06f1 100644
--- a/src/PolicyEditor/index.jsx
+++ b/src/PolicyEditor/index.jsx
@@ -300,8 +300,8 @@ export class PolicyEditor extends Component {
-
- {StringList(this, "policy.files.ignore")}
+ List of file and directory names to ignore.
(See documentation on ignoring files).>} />
+ {StringList(this, "policy.files.ignore", { placeholder: "e.g. /file.txt" })}
{EffectiveTextAreaValue(this, "files.ignore")}
@@ -311,7 +311,7 @@ export class PolicyEditor extends Component {
- {StringList(this, "policy.files.ignoreDotFiles")}
+ {StringList(this, "policy.files.ignoreDotFiles", { placeholder: "e.g. .kopiaignore" })}
{EffectiveTextAreaValue(this, "files.ignoreDotFiles")}
@@ -382,14 +382,14 @@ export class PolicyEditor extends Component {
- {StringList(this, "policy.compression.onlyCompress")}
+ {StringList(this, "policy.compression.onlyCompress", { placeholder: "e.g. *.txt" })}
{EffectiveTextAreaValue(this, "compression.onlyCompress")}
- {StringList(this, "policy.compression.neverCompress")}
+ {StringList(this, "policy.compression.neverCompress", { placeholder: "e.g. *.mp4" })}
{EffectiveTextAreaValue(this, "compression.neverCompress")}
@@ -420,19 +420,17 @@ export class PolicyEditor extends Component {
{EffectiveValue(this, "scheduling.intervalSeconds")}
-
+
- {TimesOfDayList(this, "policy.scheduling.timeOfDay")}
+ {TimesOfDayList(this, "policy.scheduling.timeOfDay", { placeholder: "e.g. 17:00" })}
{EffectiveTimesOfDayValue(this, "scheduling.timeOfDay")}
Snapshot schedules using UNIX crontab syntax (one per line):
-
minute hour day month weekday #comment
-
- See supported format details.>} />
+
See supported format details.>} />
- {StringList(this, "policy.scheduling.cron")}
+ {StringList(this, "policy.scheduling.cron", { placeholder: "minute hour day month weekday #comment" })}
{EffectiveListValue(this, "scheduling.cron")}
@@ -572,8 +570,6 @@ export class PolicyEditor extends Component {
>}
- {/* {JSON.stringify(this.state, null, 4)}
-
*/}
>;
}
diff --git a/src/PreferencesView.jsx b/src/PreferencesView.jsx
index 8f80918..ea13d2a 100644
--- a/src/PreferencesView.jsx
+++ b/src/PreferencesView.jsx
@@ -8,7 +8,7 @@ export class PreferencesView extends Component {