mirror of
https://framagit.org/les/gancio.git
synced 2025-01-31 16:42:22 +01:00
cleaning *1000 unix timestamp
This commit is contained in:
parent
03d95a4ced
commit
e1afd1aeb2
11 changed files with 238 additions and 37 deletions
|
@ -52,7 +52,7 @@ export default {
|
||||||
},
|
},
|
||||||
link () {
|
link () {
|
||||||
if (this.event.recurrent) {
|
if (this.event.recurrent) {
|
||||||
return `${this.event.id}_${this.event.start_datetime/1000}`
|
return `${this.event.id}_${this.event.start_datetime}`
|
||||||
}
|
}
|
||||||
return this.event.id
|
return this.event.id
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
div#list
|
div#list
|
||||||
el-divider {{title}}
|
el-divider(v-if='title') {{title}}
|
||||||
el-timeline
|
el-timeline
|
||||||
el-timeline-item(
|
el-timeline-item(
|
||||||
v-for='event in events'
|
v-for='event in events'
|
||||||
|
@ -26,7 +26,7 @@ export default {
|
||||||
methods: {
|
methods: {
|
||||||
link (event) {
|
link (event) {
|
||||||
if (event.recurrent) {
|
if (event.recurrent) {
|
||||||
return `${event.id}_${event.start_datetime/1000}`
|
return `${event.id}_${event.start_datetime}`
|
||||||
}
|
}
|
||||||
return event.id
|
return event.id
|
||||||
}
|
}
|
||||||
|
|
208
locales/en.js
208
locales/en.js
|
@ -1,3 +1,207 @@
|
||||||
module.exports = {
|
export default {
|
||||||
"registration_email": "registration_email"
|
common: {
|
||||||
|
add_event: 'Add event',
|
||||||
|
next: 'Next',
|
||||||
|
export: 'Export',
|
||||||
|
send: 'Send',
|
||||||
|
where: 'Where',
|
||||||
|
address: 'Address',
|
||||||
|
when: 'When',
|
||||||
|
what: 'What',
|
||||||
|
media: 'Media',
|
||||||
|
login: 'Login',
|
||||||
|
email: 'Email',
|
||||||
|
password: 'Password',
|
||||||
|
register: 'Register',
|
||||||
|
description: 'Description',
|
||||||
|
remove: 'Remove',
|
||||||
|
hide: 'Hide',
|
||||||
|
search: 'Search',
|
||||||
|
edit: 'Edit',
|
||||||
|
info: 'Info',
|
||||||
|
confirm: 'Confirm',
|
||||||
|
admin: 'Admin',
|
||||||
|
users: 'Users',
|
||||||
|
events: 'Events',
|
||||||
|
places: 'Places',
|
||||||
|
settings: 'Options',
|
||||||
|
actions: 'Actions',
|
||||||
|
deactivate: 'Disable',
|
||||||
|
remove_admin: 'Remove admin',
|
||||||
|
activate: 'Activate',
|
||||||
|
save: 'Save',
|
||||||
|
preview: 'Preview',
|
||||||
|
logout: 'Logout',
|
||||||
|
share: 'Share',
|
||||||
|
name: 'Name',
|
||||||
|
associate: 'Associate',
|
||||||
|
edit_event: 'Edit event',
|
||||||
|
related: 'Related',
|
||||||
|
add: 'Add',
|
||||||
|
logout_ok: 'Logged out',
|
||||||
|
copy: 'Copy',
|
||||||
|
recover_password: 'Recover password',
|
||||||
|
new_password: 'New password',
|
||||||
|
new_user: 'New user',
|
||||||
|
ok: 'Ok',
|
||||||
|
cancel: 'Cancel',
|
||||||
|
enable: 'Enable',
|
||||||
|
disable: 'Disable',
|
||||||
|
me: 'You',
|
||||||
|
password_updated: 'Password updated!'
|
||||||
|
},
|
||||||
|
|
||||||
|
login: {
|
||||||
|
description: `By logging in you can publish new events.`,
|
||||||
|
check_email: 'Check your mailbox (spam too)',
|
||||||
|
not_registered: 'Aren\'t registered',
|
||||||
|
forgot_password: 'Forgot the password?',
|
||||||
|
error: 'Error: ',
|
||||||
|
insert_email: 'Insert your email',
|
||||||
|
ok: 'Logged in'
|
||||||
|
},
|
||||||
|
|
||||||
|
recover: {
|
||||||
|
not_valid_code: 'Something goes wrong...'
|
||||||
|
},
|
||||||
|
|
||||||
|
export: {
|
||||||
|
intro: ``,
|
||||||
|
email_description: ``,
|
||||||
|
insert_your_address: 'Insert your email address.',
|
||||||
|
feed_description: `
|
||||||
|
Per seguire gli aggiornamenti da computer o smartphone senza la necessità di aprire periodicamente il sito, il metodo consigliato è quello dei Feed RSS.</p>
|
||||||
|
|
||||||
|
<p>Con i feed rss utilizzi un'apposita applicazione per ricevere aggiornamenti dai siti che più ti interessano. È un buon metodo per seguire anche molti siti in modo molto rapido, senza necessità di creare un account o altre complicazioni.</p>
|
||||||
|
|
||||||
|
<li>Se hai Android, ti consigliamo <a href="https://play.google.com/store/apps/details?id=net.frju.flym">Flym</a> o Feeder</li>
|
||||||
|
<li>Per iPhone/iPad puoi usare <a href="https://itunes.apple.com/ua/app/feeds4u/id1038456442?mt=8">Feed4U</a></li>
|
||||||
|
<li>Per il computer fisso/portatile consigliamo Feedbro, da installare all'interno <a href="https://addons.mozilla.org/en-GB/firefox/addon/feedbroreader/">di Firefox </a>o <a href="https://chrome.google.com/webstore/detail/feedbro/mefgmmbdailogpfhfblcnnjfmnpnmdfa">di Chrome</a> e compatibile con tutti i principali sistemi operativi.</li>
|
||||||
|
<br/>
|
||||||
|
Aggiungendo questo link al tuo lettore di feed, rimarrai aggiornata.`,
|
||||||
|
ical_description: `I computer e gli smartphone sono comunemente attrezzati con un'applicazione per gestire un calendario. A questi programmi solitamente è possibile far importare un calendario remoto.`,
|
||||||
|
list_description: `Se hai un sito web e vuoi mostrare una lista di eventi, puoi usare il seguente codice`
|
||||||
|
},
|
||||||
|
|
||||||
|
register: {
|
||||||
|
description: `I movimenti hanno bisogno di organizzarsi e autofinanziarsi. <br/>Questo è un dono per voi, usatelo solo per eventi non commerciali e ovviamente antifascisti, antisessisti, antirazzisti.
|
||||||
|
<br/>Prima di poter pubblicare <strong>dobbiamo approvare l'account</strong>, considera che <strong>dietro questo sito ci sono delle persone</strong> di
|
||||||
|
carne e sangue, scrivici quindi due righe per farci capire che eventi vorresti pubblicare.`,
|
||||||
|
error: 'Errore: ',
|
||||||
|
admin_complete: 'Sei il primo utente e quindi sei amministratore!',
|
||||||
|
complete: 'Confermeremo la registrazione quanto prima.',
|
||||||
|
request: 'Richiesta di registrazione',
|
||||||
|
registration_email: `Ciao,
|
||||||
|
ci è arrivata una richiesta di registrazione su gancio, la confermeremo quanto prima.`
|
||||||
|
},
|
||||||
|
|
||||||
|
event: {
|
||||||
|
anon: 'Anon',
|
||||||
|
anon_description: `Puoi inserire un evento senza registrarti o fare il login,
|
||||||
|
ma in questo caso dovrai aspettare che qualcuno lo legga confermando che si
|
||||||
|
tratta di un evento adatto a questo spazio, delegando questa scelta. Inoltre non sarà possibile modificarlo.<br/><br/>
|
||||||
|
Puoi invece fare il <a href='/login'>login</a> o <a href='/registrarti'>registrarti</a>,
|
||||||
|
altrimenti vai avanti e riceverai una risposta il prima possibile. `,
|
||||||
|
same_day: 'Same day',
|
||||||
|
what_description: 'Event\' name',
|
||||||
|
description_description: 'Description',
|
||||||
|
tag_description: 'Tag...',
|
||||||
|
media_description: 'Puoi aggiungere un volantino',
|
||||||
|
added: 'Evento aggiunto',
|
||||||
|
added_anon: 'Evento aggiunto, verrà confermato quanto prima.',
|
||||||
|
where_description: `Dov'è il gancio? Se il posto non è presente, scrivilo e <b>premi invio</b>. `,
|
||||||
|
confirmed: 'Evento confermato',
|
||||||
|
not_found: 'Evento non trovato',
|
||||||
|
remove_confirmation: `Sicura di voler eliminare questo evento?`,
|
||||||
|
recurrent: `Ricorrente`,
|
||||||
|
recurrent_description: 'Scegli la frequenza e seleziona i giorni',
|
||||||
|
multidate_description: 'Un festival o una tre giorni? Scegli quando comincia e quando finisce.',
|
||||||
|
multidate: 'Più giorni',
|
||||||
|
normal: 'Normale',
|
||||||
|
normal_description: 'Scegli il giorno.',
|
||||||
|
recurrent_1w_days: 'Ogni {days}',
|
||||||
|
recurrent_2w_days: 'Un {days} ogni due',
|
||||||
|
recurrent_1m_days: '|Il giorno {days} di ogni mese|I giorni {days} di ogni mese',
|
||||||
|
recurrent_2m_days: '|Il giorno {days} ogni due mesi|I giorni {days} ogni due mesi',
|
||||||
|
recurrent_1m_ordinal: 'Il {n} {days} di ogni mese',
|
||||||
|
recurrent_2m_ordinal: '|Il {n} {days} un mese sì e uno no|Il {n} {days} un mese sì e uno no',
|
||||||
|
due: 'alle',
|
||||||
|
from: 'Dalle',
|
||||||
|
image_too_big: 'Immagine troppo grande! Massimo 4M'
|
||||||
|
},
|
||||||
|
|
||||||
|
admin: {
|
||||||
|
mastodon_instance: 'Istanza',
|
||||||
|
mastodon_description: 'Puoi associare un account mastodon a questa istanza di gancio, ogni evento verrà pubblicato lì.',
|
||||||
|
place_description: `Nel caso in cui un luogo sia errato o cambi indirizzo, puoi modificarlo. <br/>Considera che tutti gli eventi associati a questo luogo cambieranno indirizzo (anche quelli passati!)`,
|
||||||
|
event_confirm_description: 'Puoi confermare qui gli eventi inseriti da utenti anonimi',
|
||||||
|
delete_user: 'Elimina',
|
||||||
|
remove_admin: 'Rimuovi admin',
|
||||||
|
delete_user_confirm: 'Sicura di rimuovere questo utente?',
|
||||||
|
user_remove_ok: 'Utente eliminato',
|
||||||
|
user_create_ok: 'Utente creato',
|
||||||
|
allow_registration_description : 'Vuoi abilitare la registrazione?',
|
||||||
|
allow_anon_event: 'Si possono inserire eventi anonimi (previa conferma)?',
|
||||||
|
allow_comments: 'Abilita commenti',
|
||||||
|
allow_recurrent_event: 'Abilita eventi fissi',
|
||||||
|
recurrent_event_visible: 'Appuntamenti fissi visibili di default',
|
||||||
|
federation: 'Federazione / ActivityPub'
|
||||||
|
},
|
||||||
|
|
||||||
|
auth: {
|
||||||
|
not_confirmed: 'Non abbiamo ancora confermato questa mail...',
|
||||||
|
fail: 'Autenticazione fallita. Sicura la password è giusta? E la mail?'
|
||||||
|
},
|
||||||
|
|
||||||
|
settings: {
|
||||||
|
change_password: 'Cambia password',
|
||||||
|
password_updated: 'Password modificata',
|
||||||
|
danger_section: 'Sezione pericolosa',
|
||||||
|
remove_account: 'Premendo il seguente tasto il tuo utente verrà eliminato. Gli eventi da te pubblicati invece no.',
|
||||||
|
remove_account_confirm: 'Stai per eliminare definitivamente il tuo account',
|
||||||
|
},
|
||||||
|
|
||||||
|
err: {
|
||||||
|
register_error: 'Errore nella registrazione'
|
||||||
|
},
|
||||||
|
|
||||||
|
ordinal: {
|
||||||
|
1: 'primo',
|
||||||
|
2: 'secondo',
|
||||||
|
3: 'terzo',
|
||||||
|
4: 'quarto',
|
||||||
|
5: 'quinto',
|
||||||
|
[-1]: 'ultimo',
|
||||||
|
},
|
||||||
|
|
||||||
|
about: `
|
||||||
|
<p>
|
||||||
|
Gancio e' un progetto dell'<a href='https://autistici.org/underscore'>underscore hacklab</a> e uno dei
|
||||||
|
servizi di <a href='https://cisti.org'>cisti.org</a>.</p>
|
||||||
|
|
||||||
|
<h5> Cos'è gancio?</h5>
|
||||||
|
<p>Uno strumento di condivisione di eventi per comunità radicali.
|
||||||
|
Dentro gancio puoi trovare e inserire eventi.
|
||||||
|
Gancio, come tutto <a href='https://cisti.org'>cisti.org</a> è uno strumento
|
||||||
|
antisessista, antirazzista, antifascista e anticapitalista, riflettici quando
|
||||||
|
pubblichi un evento.</p>
|
||||||
|
|
||||||
|
<h5>Ok, ma cosa vuol dire gancio?</h5>
|
||||||
|
<p>
|
||||||
|
Se vieni a Torino e dici: "ehi, ci diamo un gancio alle 8?" nessuno si presenterà con i guantoni per fare a mazzate.
|
||||||
|
Darsi un gancio vuol dire beccarsi alle ore X in un posto Y.</p>
|
||||||
|
<code>
|
||||||
|
<ul>
|
||||||
|
<li> a che ora è il gancio in radio per andare al presidio?</li>
|
||||||
|
<li> non so ma domani non posso venire, ho gia' un gancio per caricare il bar.</li>
|
||||||
|
</ul>
|
||||||
|
</code>
|
||||||
|
|
||||||
|
<h5> Contatti</h5>
|
||||||
|
<p>
|
||||||
|
Hai scritto una nuova interfaccia per gancio? Vuoi aprire un nuovo nodo di gancio nella tua città?
|
||||||
|
C'è qualcosa che vorresti migliorare? Per contribuire i sorgenti sono liberi e disponibili
|
||||||
|
<a href='https://git.lattuga.net/cisti/gancio'>qui</a>. Aiuti e suggerimenti sono sempre benvenuti, puoi scriverci
|
||||||
|
su underscore chicciola autistici.org</p>
|
||||||
|
`
|
||||||
}
|
}
|
||||||
|
|
|
@ -107,9 +107,7 @@ export default {
|
||||||
what_description: 'Nome evento',
|
what_description: 'Nome evento',
|
||||||
description_description: 'Descrizione, dajene di copia/incolla',
|
description_description: 'Descrizione, dajene di copia/incolla',
|
||||||
tag_description: 'Tag...',
|
tag_description: 'Tag...',
|
||||||
media_description: 'Puoi aggiungere un volantino',
|
media_description: 'Puoi aggiungere un volantino (opzionale)',
|
||||||
time_start_description: 'Comincia alle',
|
|
||||||
time_end_description: 'Se vuoi puoi specificare un orario di fine.',
|
|
||||||
added: 'Evento aggiunto',
|
added: 'Evento aggiunto',
|
||||||
added_anon: 'Evento aggiunto, verrà confermato quanto prima.',
|
added_anon: 'Evento aggiunto, verrà confermato quanto prima.',
|
||||||
where_description: `Dov'è il gancio? Se il posto non è presente, scrivilo e <b>premi invio</b>. `,
|
where_description: `Dov'è il gancio? Se il posto non è presente, scrivilo e <b>premi invio</b>. `,
|
||||||
|
|
|
@ -93,9 +93,9 @@ module.exports = {
|
||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
transpile: [/^element-ui/, /^vue-awesome/],
|
transpile: [/^element-ui/, /^vue-awesome/],
|
||||||
// splitChunks: {
|
splitChunks: {
|
||||||
// layouts: true
|
layouts: true
|
||||||
// },
|
},
|
||||||
cache: true,
|
cache: true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,10 +10,15 @@ import get from 'lodash/get'
|
||||||
export default {
|
export default {
|
||||||
layout: 'iframe',
|
layout: 'iframe',
|
||||||
components: { List },
|
components: { List },
|
||||||
async asyncData ({ $axios, req, res }) {
|
data () {
|
||||||
const title = get(req, 'query.title')
|
return {
|
||||||
const tags = req && req.query && req.query.tags
|
title : ''
|
||||||
const places = req && req.query && req.query.places
|
}
|
||||||
|
},
|
||||||
|
async asyncData ({ query, $axios }) {
|
||||||
|
const title = query.title
|
||||||
|
const tags = query.tags
|
||||||
|
const places = query.places
|
||||||
const now = new Date()
|
const now = new Date()
|
||||||
|
|
||||||
let params = []
|
let params = []
|
||||||
|
|
|
@ -102,9 +102,8 @@ export default {
|
||||||
try {
|
try {
|
||||||
const [ id, start_datetime ] = params.id.split('_')
|
const [ id, start_datetime ] = params.id.split('_')
|
||||||
const event = await $axios.$get(`/event/${id}`)
|
const event = await $axios.$get(`/event/${id}`)
|
||||||
event.start_datetime = start_datetime ? start_datetime*1000 : event.start_datetime*1000
|
event.start_datetime = start_datetime ? start_datetime : event.start_datetime
|
||||||
event.end_datetime = event.end_datetime*1000
|
event.end_datetime = event.end_datetime
|
||||||
// event.start_datetime = start_datetime ? start_datetime*1000 : event.start
|
|
||||||
return { event, id }
|
return { event, id }
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
error({ statusCode: 404, message: 'Event not found'})
|
error({ statusCode: 404, message: 'Event not found'})
|
||||||
|
@ -121,7 +120,7 @@ export default {
|
||||||
})
|
})
|
||||||
if (!event) return false
|
if (!event) return false
|
||||||
if (event.recurrent) {
|
if (event.recurrent) {
|
||||||
return `${event.id}_${event.start_datetime/1000}`
|
return `${event.id}_${event.start_datetime}`
|
||||||
}
|
}
|
||||||
return event.id
|
return event.id
|
||||||
},
|
},
|
||||||
|
@ -133,7 +132,7 @@ export default {
|
||||||
})
|
})
|
||||||
if (!event) return false
|
if (!event) return false
|
||||||
if (event.recurrent) {
|
if (event.recurrent) {
|
||||||
return `${event.id}_${event.start_datetime/1000}`
|
return `${event.id}_${event.start_datetime}`
|
||||||
}
|
}
|
||||||
return event.id
|
return event.id
|
||||||
},
|
},
|
||||||
|
|
|
@ -21,8 +21,8 @@ export default ({ app, store }) => {
|
||||||
moment.locale(store.state.locale)
|
moment.locale(store.state.locale)
|
||||||
|
|
||||||
//{start,end}_datetime are unix timestamp
|
//{start,end}_datetime are unix timestamp
|
||||||
const start = moment(event.start_datetime)
|
const start = moment.unix(event.start_datetime)
|
||||||
const end = moment(event.end_datetime)
|
const end = moment.unix(event.end_datetime)
|
||||||
|
|
||||||
const normal = `${start.format('dddd, D MMMM (HH:mm-')}${end.format('HH:mm)')}`
|
const normal = `${start.format('dddd, D MMMM (HH:mm-')}${end.format('HH:mm)')}`
|
||||||
|
|
||||||
|
|
|
@ -100,9 +100,6 @@ const eventController = {
|
||||||
order: [ [Comment, 'id', 'DESC'] ]
|
order: [ [Comment, 'id', 'DESC'] ]
|
||||||
})
|
})
|
||||||
|
|
||||||
// event.start_datetime = event.start_datetime*1000
|
|
||||||
// event.end_datetime = event.end_datetime*1000
|
|
||||||
|
|
||||||
if (event && (event.is_visible || is_admin)) {
|
if (event && (event.is_visible || is_admin)) {
|
||||||
res.json(event)
|
res.json(event)
|
||||||
} else {
|
} else {
|
||||||
|
@ -217,8 +214,6 @@ const eventController = {
|
||||||
})
|
})
|
||||||
|
|
||||||
events = events.map(e => e.get()).map(e => {
|
events = events.map(e => e.get()).map(e => {
|
||||||
e.start_datetime = e.start_datetime*1000
|
|
||||||
e.end_datetime = e.end_datetime*1000
|
|
||||||
e.tags = e.tags.map(t => t.tag)
|
e.tags = e.tags.map(t => t.tag)
|
||||||
return e
|
return e
|
||||||
})
|
})
|
||||||
|
@ -230,8 +225,8 @@ const eventController = {
|
||||||
if (!recurrent.frequency) return false
|
if (!recurrent.frequency) return false
|
||||||
|
|
||||||
let cursor = moment(start).startOf('week')
|
let cursor = moment(start).startOf('week')
|
||||||
const start_date = moment(e.start_datetime)
|
const start_date = moment.unix(e.start_datetime)
|
||||||
const duration = moment(e.end_datetime).diff(start_date, 's')
|
const duration = moment.unix(e.end_datetime).diff(start_date, 's')
|
||||||
const frequency = recurrent.frequency
|
const frequency = recurrent.frequency
|
||||||
const days = recurrent.days
|
const days = recurrent.days
|
||||||
const type = recurrent.type
|
const type = recurrent.type
|
||||||
|
@ -274,8 +269,8 @@ const eventController = {
|
||||||
cursor.day(d-1)
|
cursor.day(d-1)
|
||||||
}
|
}
|
||||||
if (cursor.isAfter(dueTo) || cursor.isBefore(start)) return
|
if (cursor.isAfter(dueTo) || cursor.isBefore(start)) return
|
||||||
e.start_datetime = cursor.unix()*1000
|
e.start_datetime = cursor.unix()
|
||||||
e.end_datetime = e.start_datetime+(duration*1000)// cursor.clone().hour(end_datetime.hour()).minute(end_datetime.minute()).unix()*1000
|
e.end_datetime = e.start_datetime+duration
|
||||||
events.push( Object.assign({}, e) )
|
events.push( Object.assign({}, e) )
|
||||||
})
|
})
|
||||||
if (cursor.isAfter(dueTo)) break
|
if (cursor.isAfter(dueTo)) break
|
||||||
|
|
|
@ -50,8 +50,8 @@ const exportController = {
|
||||||
|
|
||||||
ics(res, events) {
|
ics(res, events) {
|
||||||
const eventsMap = events.map(e => {
|
const eventsMap = events.map(e => {
|
||||||
const tmpStart = moment(e.start_datetime)
|
const tmpStart = moment.unix(e.start_datetime)
|
||||||
const tmpEnd = moment(e.end_datetime)
|
const tmpEnd = moment.unix(e.end_datetime)
|
||||||
const start = [tmpStart.year(), tmpStart.month() + 1, tmpStart.date(), tmpStart.hour(), tmpStart.minute()]
|
const start = [tmpStart.year(), tmpStart.month() + 1, tmpStart.date(), tmpStart.hour(), tmpStart.minute()]
|
||||||
const end = [tmpEnd.year(), tmpEnd.month() + 1, tmpEnd.date(), tmpEnd.hour(), tmpEnd.minute()]
|
const end = [tmpEnd.year(), tmpEnd.month() + 1, tmpEnd.date(), tmpEnd.hour(), tmpEnd.minute()]
|
||||||
return {
|
return {
|
||||||
|
|
|
@ -86,12 +86,12 @@ export const mutations = {
|
||||||
setEvents(state, events) {
|
setEvents(state, events) {
|
||||||
// set`past` and `newDay` flags to event
|
// set`past` and `newDay` flags to event
|
||||||
let lastDay = null
|
let lastDay = null
|
||||||
state.events = events.map((e) => {
|
state.events = events.map(e => {
|
||||||
const currentDay = moment(e.start_datetime).date()
|
const currentDay = moment.unix(e.start_datetime).date()
|
||||||
e.newDay = (!lastDay || lastDay !== currentDay) && currentDay
|
e.newDay = (!lastDay || lastDay !== currentDay) && currentDay
|
||||||
lastDay = currentDay
|
lastDay = currentDay
|
||||||
const end_datetime = e.end_datetime || e.start_datetime+3600000*2
|
const end_datetime = e.end_datetime || e.start_datetime+3600*2
|
||||||
const past = ((moment().unix()*1000) - end_datetime) > 0
|
const past = ((moment().unix()) - end_datetime) > 0
|
||||||
e.past = !!past
|
e.past = !!past
|
||||||
return e
|
return e
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue