summaryrefslogtreecommitdiffstats
path: root/src/components/ImportScreen.vue
blob: 711e68366680b640afde5f6a8321f8a6c797c02b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<!--
 * @copyright Copyright (c) 2018 Team Popcorn <teampopcornberlin@gmail.com>
 *
 * @author Team Popcorn <teampopcornberlin@gmail.com>
 *
 * @license GNU AGPL version 3 or any later version
  -
  - This program is free software: you can redistribute it and/or modify
  - it under the terms of the GNU Affero General Public License as
  - published by the Free Software Foundation, either version 3 of the
  - License, or (at your option) any later version.
  -
  - This program is distributed in the hope that it will be useful,
  - but WITHOUT ANY WARRANTY; without even the implied warranty of
  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  - GNU Affero General Public License for more details.
  -
  - You should have received a copy of the GNU Affero General Public License
  - along with this program. If not, see <http://www.gnu.org/licenses/>.
  -
  -->

<template>
	<div class="emptycontent import-screen">
		<p class="icon-upload" />
		<h3 class="import-screen__header">
			{{ t('contacts', 'Importing {total} contacts into', { total }) }} {{ addressbook }}
		</h3>
		<progress :max="total" :value="progress" class="import-screen__progress" />
		<p class="import-screen__tracker">
			<span>{{ percentage }} %</span>
			<span v-if="failed === 0">
				{{ t('contacts', 'No errors') }}
			</span>
			<span v-else v-tooltip.auto="t('contacts', 'Open your browser console for more details')">
				{{ n('contacts',
					'{failedCount} faulty contact',
					'{failedCount} faulty contacts',
					failed,
					{ failedCount: failed }
				) }}
			</span>
		</p>
	</div>
</template>

<script>
export default {
	name: 'ImportScreen',
	computed: {
		importState() {
			return this.$store.getters.getImportState
		},
		addressbook() {
			return this.importState.addressbook
		},
		total() {
			return this.importState.total
		},
		accepted() {
			return this.importState.accepted
		},
		failed() {
			return this.importState.denied
		},
		progress() {
			return this.accepted + this.failed
		},
		percentage() {
			return this.total <= 0
				? 0
				: Math.floor(this.progress / this.total * 100)
		}
	}
}
</script>