cleaning *1000 unix timestamp

This commit is contained in:
lesion 2019-07-27 13:05:02 +02:00
parent 03d95a4ced
commit e1afd1aeb2
11 changed files with 238 additions and 37 deletions

View file

@ -52,7 +52,7 @@ export default {
},
link () {
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
}

View file

@ -1,6 +1,6 @@
<template lang="pug">
div#list
el-divider {{title}}
el-divider(v-if='title') {{title}}
el-timeline
el-timeline-item(
v-for='event in events'
@ -26,7 +26,7 @@ export default {
methods: {
link (event) {
if (event.recurrent) {
return `${event.id}_${event.start_datetime/1000}`
return `${event.id}_${event.start_datetime}`
}
return event.id
}

View file

@ -1,3 +1,207 @@
module.exports = {
"registration_email": "registration_email"
export default {
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>
`
}

View file

@ -107,9 +107,7 @@ export default {
what_description: 'Nome evento',
description_description: 'Descrizione, dajene di copia/incolla',
tag_description: 'Tag...',
media_description: 'Puoi aggiungere un volantino',
time_start_description: 'Comincia alle',
time_end_description: 'Se vuoi puoi specificare un orario di fine.',
media_description: 'Puoi aggiungere un volantino (opzionale)',
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>. `,

View file

@ -93,9 +93,9 @@ module.exports = {
// }
// },
transpile: [/^element-ui/, /^vue-awesome/],
// splitChunks: {
// layouts: true
// },
splitChunks: {
layouts: true
},
cache: true,
}
}

View file

@ -10,10 +10,15 @@ import get from 'lodash/get'
export default {
layout: 'iframe',
components: { List },
async asyncData ({ $axios, req, res }) {
const title = get(req, 'query.title')
const tags = req && req.query && req.query.tags
const places = req && req.query && req.query.places
data () {
return {
title : ''
}
},
async asyncData ({ query, $axios }) {
const title = query.title
const tags = query.tags
const places = query.places
const now = new Date()
let params = []

View file

@ -102,9 +102,8 @@ export default {
try {
const [ id, start_datetime ] = params.id.split('_')
const event = await $axios.$get(`/event/${id}`)
event.start_datetime = start_datetime ? start_datetime*1000 : event.start_datetime*1000
event.end_datetime = event.end_datetime*1000
// event.start_datetime = start_datetime ? start_datetime*1000 : event.start
event.start_datetime = start_datetime ? start_datetime : event.start_datetime
event.end_datetime = event.end_datetime
return { event, id }
} catch(e) {
error({ statusCode: 404, message: 'Event not found'})
@ -121,7 +120,7 @@ export default {
})
if (!event) return false
if (event.recurrent) {
return `${event.id}_${event.start_datetime/1000}`
return `${event.id}_${event.start_datetime}`
}
return event.id
},
@ -133,7 +132,7 @@ export default {
})
if (!event) return false
if (event.recurrent) {
return `${event.id}_${event.start_datetime/1000}`
return `${event.id}_${event.start_datetime}`
}
return event.id
},

View file

@ -21,8 +21,8 @@ export default ({ app, store }) => {
moment.locale(store.state.locale)
//{start,end}_datetime are unix timestamp
const start = moment(event.start_datetime)
const end = moment(event.end_datetime)
const start = moment.unix(event.start_datetime)
const end = moment.unix(event.end_datetime)
const normal = `${start.format('dddd, D MMMM (HH:mm-')}${end.format('HH:mm)')}`

View file

@ -100,9 +100,6 @@ const eventController = {
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)) {
res.json(event)
} else {
@ -217,8 +214,6 @@ const eventController = {
})
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)
return e
})
@ -230,8 +225,8 @@ const eventController = {
if (!recurrent.frequency) return false
let cursor = moment(start).startOf('week')
const start_date = moment(e.start_datetime)
const duration = moment(e.end_datetime).diff(start_date, 's')
const start_date = moment.unix(e.start_datetime)
const duration = moment.unix(e.end_datetime).diff(start_date, 's')
const frequency = recurrent.frequency
const days = recurrent.days
const type = recurrent.type
@ -274,8 +269,8 @@ const eventController = {
cursor.day(d-1)
}
if (cursor.isAfter(dueTo) || cursor.isBefore(start)) return
e.start_datetime = cursor.unix()*1000
e.end_datetime = e.start_datetime+(duration*1000)// cursor.clone().hour(end_datetime.hour()).minute(end_datetime.minute()).unix()*1000
e.start_datetime = cursor.unix()
e.end_datetime = e.start_datetime+duration
events.push( Object.assign({}, e) )
})
if (cursor.isAfter(dueTo)) break

View file

@ -50,8 +50,8 @@ const exportController = {
ics(res, events) {
const eventsMap = events.map(e => {
const tmpStart = moment(e.start_datetime)
const tmpEnd = moment(e.end_datetime)
const tmpStart = moment.unix(e.start_datetime)
const tmpEnd = moment.unix(e.end_datetime)
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()]
return {

View file

@ -86,12 +86,12 @@ export const mutations = {
setEvents(state, events) {
// set`past` and `newDay` flags to event
let lastDay = null
state.events = events.map((e) => {
const currentDay = moment(e.start_datetime).date()
state.events = events.map(e => {
const currentDay = moment.unix(e.start_datetime).date()
e.newDay = (!lastDay || lastDay !== currentDay) && currentDay
lastDay = currentDay
const end_datetime = e.end_datetime || e.start_datetime+3600000*2
const past = ((moment().unix()*1000) - end_datetime) > 0
const end_datetime = e.end_datetime || e.start_datetime+3600*2
const past = ((moment().unix()) - end_datetime) > 0
e.past = !!past
return e
})