onomad 2.0.4 → 3.0.0
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.
- package/README.md +24 -24
- package/package.json +1 -1
- package/src/vue/TimeAgo.vue +11 -2
package/README.md
CHANGED
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
TypeScript/JavaScript biblioteka za prikaz vremena u formatu optimizovanom za srpski jezik (npr: "pre 5 minuta"). Radi u browseru i na serveru (node.js / deno / bun).
|
|
4
4
|
|
|
5
|
+
## Čemu sve ovo?
|
|
6
|
+
|
|
7
|
+
JavaScript već ima ugrađeni Intl API za formatiranje vremena, ali rezultati nisu u potpunosti prilagođeni srpskom jeziku. Evo poređenja:
|
|
8
|
+
|
|
9
|
+
| Intl.RelativeTimeFormat | Onomad |
|
|
10
|
+
|-------------------------|--------|
|
|
11
|
+
| pre 30 sekundi | malopre |
|
|
12
|
+
| pre 1 minut | pre minut |
|
|
13
|
+
| pre 5 minuta | pre 5 minuta |
|
|
14
|
+
| pre 30 minuta | pre pola sata |
|
|
15
|
+
| pre 1 sat | pre sat vremena |
|
|
16
|
+
| pre 24 sata | juče |
|
|
17
|
+
| pre 7 dana | pre nedelju dana |
|
|
18
|
+
| pre 30 dana | pre mesec dana |
|
|
19
|
+
| pre 365 dana | pre godinu dana |
|
|
20
|
+
|
|
21
|
+
Onomad koristi prirodnije izraze koji su uobičajeni u svakodnevnom srpskom jeziku, kao što su `malopre`, `juče`, `pre pola sata` i `pre nedelju dana`, umesto doslovnih brojčanih prikaza.
|
|
22
|
+
|
|
5
23
|
## Instalacija
|
|
6
24
|
|
|
7
25
|
```bash
|
|
@@ -33,14 +51,6 @@ console.log(timeago(lastWeek)); // "pre nedelju dana"
|
|
|
33
51
|
|
|
34
52
|
Onomad dolazi sa gotovom Vue komponentom koja automatski ažurira prikaz vremena.
|
|
35
53
|
|
|
36
|
-
#### Instalacija
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
npm install onomad vue
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
#### Upotreba komponente
|
|
43
|
-
|
|
44
54
|
```vue
|
|
45
55
|
<script setup lang="ts">
|
|
46
56
|
import { TimeAgo } from 'onomad/vue';
|
|
@@ -55,28 +65,18 @@ const postDate = new Date(Date.now() - 5 * 60 * 1000);
|
|
|
55
65
|
</template>
|
|
56
66
|
```
|
|
57
67
|
|
|
58
|
-
Komponenta automatski ažurira
|
|
68
|
+
Komponenta automatski ažurira prikazani tekst svakih 60 sekundi (podrazumevano). Možete prilagoditi interval ažuriranja u sekundama:
|
|
59
69
|
|
|
60
70
|
```vue
|
|
61
|
-
|
|
71
|
+
<!-- Ažuriraj na svakih 30 sekundi -->
|
|
72
|
+
<TimeAgo :date="postDate" :update-interval="120" />
|
|
62
73
|
```
|
|
63
74
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
U Nuxt projektima, komponenta automatski radi bez dodatne konfiguracije:
|
|
75
|
+
Možete takođe kontrolisati kada se automatsko ažuriranje zaustavlja koristeći `max-age-update` prop. Ako je vreme starije od određenog praga (u sekundama), interval neće biti pokrenut (podrazumevano: bez ograničenja):
|
|
67
76
|
|
|
68
77
|
```vue
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const postDate = new Date(Date.now() - 5 * 60 * 1000);
|
|
73
|
-
</script>
|
|
74
|
-
|
|
75
|
-
<template>
|
|
76
|
-
<div>
|
|
77
|
-
<p>Objavljeno <TimeAgo :date="postDate" /></p>
|
|
78
|
-
</div>
|
|
79
|
-
</template>
|
|
78
|
+
<!-- Samo ažuriraj ako je vreme mlađe od 1 sat (3600 sekundi) -->
|
|
79
|
+
<TimeAgo :date="postDate" :max-age-update="3600" />
|
|
80
80
|
```
|
|
81
81
|
|
|
82
82
|
Za server-side rendering (SSR), komponenta će prikazati inicijalno vreme, a zatim će nastaviti sa ažuriranjem na klijentskoj strani.
|
package/package.json
CHANGED
package/src/vue/TimeAgo.vue
CHANGED
|
@@ -5,8 +5,10 @@ import { timeago } from 'onomad';
|
|
|
5
5
|
const props = withDefaults(defineProps<{
|
|
6
6
|
date: Date | string;
|
|
7
7
|
updateInterval?: number;
|
|
8
|
+
maxAgeUpdate?: number;
|
|
8
9
|
}>(), {
|
|
9
|
-
updateInterval:
|
|
10
|
+
updateInterval: 60,
|
|
11
|
+
maxAgeUpdate: Infinity
|
|
10
12
|
});
|
|
11
13
|
|
|
12
14
|
const formattedTime = ref(timeago(new Date(props.date)));
|
|
@@ -16,8 +18,15 @@ const updateTime = () => {
|
|
|
16
18
|
formattedTime.value = timeago(new Date(props.date));
|
|
17
19
|
};
|
|
18
20
|
|
|
21
|
+
const getAgeInMs = () => {
|
|
22
|
+
return Date.now() - new Date(props.date).getTime();
|
|
23
|
+
};
|
|
24
|
+
|
|
19
25
|
onMounted(() => {
|
|
20
|
-
|
|
26
|
+
const ageInMs = getAgeInMs();
|
|
27
|
+
if (ageInMs <= props.maxAgeUpdate * 1000) {
|
|
28
|
+
intervalId = setInterval(updateTime, props.updateInterval * 1000);
|
|
29
|
+
}
|
|
21
30
|
});
|
|
22
31
|
|
|
23
32
|
onUnmounted(() => {
|