Skip to content

Commit f169991

Browse files
committed
Preloader for tab list and by days
1 parent 550fd84 commit f169991

File tree

5 files changed

+59
-42
lines changed

5 files changed

+59
-42
lines changed

src/assets/css/main.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ body {
2828
text-align: center;
2929
font-size: 16px;
3030
font-weight: 600;
31+
margin-top: 30%;
3132
}
3233
.tabs {
3334
}

src/assets/icons/preloader.gif

19.9 KB
Loading

src/assets/icons/preloader.svg

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/components/ByDays.vue

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,30 @@
11
<template>
2-
<div class="no-data" v-if="countOfDays == undefined || countOfDays == 0">No data</div>
2+
<div class="no-data" v-if="isLoading">
3+
<img height="55" src="../assets/icons/preloader.gif" />
4+
</div>
35
<div v-else>
4-
<div class="stats-block block">
5-
<div class="header">Average time on selected days</div>
6-
<p>{{ convertSummaryTimeToString(tabsByDays.averageTime) }}</p>
7-
</div>
8-
<ByDaysChart :data="tabsByDays" />
9-
<div>
10-
<Expander
11-
v-for="(tabDay, i) of tabsByDays?.days"
12-
:key="i"
13-
:day="tabDay.day"
14-
:time="tabDay.time"
15-
>
16-
<TabItem
17-
v-for="(tab, i) of tabDay.tabs"
6+
<div class="no-data" v-if="countOfDays == undefined || countOfDays == 0">No data</div>
7+
<div v-else>
8+
<div class="stats-block block">
9+
<div class="header">Average time on selected days</div>
10+
<p>{{ convertSummaryTimeToString(tabsByDays.averageTime) }}</p>
11+
</div>
12+
<ByDaysChart :data="tabsByDays" />
13+
<div>
14+
<Expander
15+
v-for="(tabDay, i) of tabsByDays?.days"
1816
:key="i"
19-
:item="tab"
20-
:summaryTimeForWholeDay="tabDay.time"
21-
/>
22-
</Expander>
17+
:day="tabDay.day"
18+
:time="tabDay.time"
19+
>
20+
<TabItem
21+
v-for="(tab, i) of tabDay.tabs"
22+
:key="i"
23+
:item="tab"
24+
:summaryTimeForWholeDay="tabDay.time"
25+
/>
26+
</Expander>
27+
</div>
2328
</div>
2429
</div>
2530
</template>
@@ -40,16 +45,19 @@ import { useTabListByDays } from '../compositions/tab-list-by-days';
4045
import { convertSummaryTimeToString } from '../utils/converter';
4146
4247
const tabsByDays = ref<TabListByDays>();
48+
const isLoading = ref<boolean>();
4349
4450
const countOfDays = computed(() =>
4551
tabsByDays.value != undefined ? tabsByDays.value.days.length : 0,
4652
);
4753
4854
async function loadList() {
49-
tabsByDays.value = await useTabListByDays(new Date('06/01/2023'), new Date('06/14/2023'));
55+
tabsByDays.value = await useTabListByDays(new Date('06/03/2023'), new Date('06/14/2023'));
56+
isLoading.value = false;
5057
}
5158
5259
onMounted(async () => {
60+
isLoading.value = true;
5361
await loadList();
5462
});
5563
</script>

src/components/TabList.vue

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,31 @@
11
<template>
2-
<div class="no-data" v-if="countOfSites == undefined || countOfSites == 0">No data</div>
2+
<div class="no-data" v-if="isLoading">
3+
<img height="55" src="../assets/icons/preloader.gif" />
4+
</div>
35
<div v-else>
4-
<OverallStatistics v-if="isShowOverallStats" :data="dataForOvarallStats" />
5-
<DonutChart :time="timeForChart" :labels="sitesForChart" />
6-
<TabItemHeader
7-
:listType="type"
8-
:summaryTime="summaryTime"
9-
:countOfSites="countOfSites"
10-
:firstDay="firstDay"
11-
:countOfActiveDays="countOfActiveDays"
12-
@sortingBy="sorting"
13-
/>
14-
15-
<TabItem
16-
v-for="(tab, i) of tabs"
17-
:key="i"
18-
:item="getItem(tab)"
19-
:summaryTimeForWholeDay="summaryTime"
20-
/>
21-
22-
<div class="show-all" v-if="showOnlyFirst100Items">
23-
<button @click="showAllWebSites()">Show all websites</button>
6+
<div class="no-data" v-if="countOfSites == undefined || countOfSites == 0">No data</div>
7+
<div v-else>
8+
<OverallStatistics v-if="isShowOverallStats" :data="dataForOvarallStats" />
9+
<DonutChart :time="timeForChart" :labels="sitesForChart" />
10+
<TabItemHeader
11+
:listType="type"
12+
:summaryTime="summaryTime"
13+
:countOfSites="countOfSites"
14+
:firstDay="firstDay"
15+
:countOfActiveDays="countOfActiveDays"
16+
@sortingBy="sorting"
17+
/>
18+
19+
<TabItem
20+
v-for="(tab, i) of tabs"
21+
:key="i"
22+
:item="getItem(tab)"
23+
:summaryTimeForWholeDay="summaryTime"
24+
/>
25+
26+
<div class="show-all" v-if="showOnlyFirst100Items">
27+
<button @click="showAllWebSites()">Show all websites</button>
28+
</div>
2429
</div>
2530
</div>
2631
</template>
@@ -64,6 +69,7 @@ const firstDay = ref<Date>();
6469
const countOfActiveDays = ref<number>();
6570
6671
const countOfSites = computed(() => (tabs.value != undefined ? tabs.value.length : 0));
72+
const isLoading = ref<boolean>();
6773
6874
const showOnlyFirst100Items = ref<boolean>();
6975
@@ -94,6 +100,8 @@ async function loadList(sortingBy: SortingBy) {
94100
tabs.value = tabSummary.tabs.slice(0, 100);
95101
} else showOnlyFirst100Items.value = false;
96102
}
103+
104+
isLoading.value = false;
97105
}
98106
99107
async function sorting(sortingBy: SortingBy) {
@@ -123,6 +131,7 @@ function getItem(tab: Tab): CurrentTabItem {
123131
}
124132
125133
onMounted(async () => {
134+
isLoading.value = true;
126135
await loadList(SortingBy.UsageTime);
127136
});
128137
</script>

0 commit comments

Comments
 (0)