Initial commit
This commit is contained in:
commit
4f415b6190
77 changed files with 52208 additions and 0 deletions
128
src/model/event.js
Normal file
128
src/model/event.js
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
/**
|
||||
* La konzceptado de eventoj.
|
||||
* Vidi mobilizon/lib/graphql/event.ts pri la datumoj.
|
||||
*/
|
||||
class Event {
|
||||
|
||||
/**
|
||||
* La plata datumoj el la servilo.
|
||||
*/
|
||||
data;
|
||||
|
||||
constructor(host) {
|
||||
this.host = host;
|
||||
this.data = {};
|
||||
}
|
||||
|
||||
/**
|
||||
* Konstrui evento per datumoj elde servilo.
|
||||
* @param host La servilo kie la evento estas registra.
|
||||
* @param content La datumoj elde la servilo.
|
||||
* @return {Object} La evento.
|
||||
*/
|
||||
static fromData(host, content) {
|
||||
if (typeof content === "string") {
|
||||
content = JSON.parse(content);
|
||||
}
|
||||
var event = new Event(host);
|
||||
event.data = content;
|
||||
return event;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ricevi la URL pri la rubando de la evento.
|
||||
* @return {String} La URL pri la rubando de la evento, aŭ null.
|
||||
*/
|
||||
getPictureUrl() {
|
||||
return this.data.picture?.url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ricevi la komenca dato de la evento.
|
||||
* @return {Date} La komenka dato pri la evento, aŭ null.
|
||||
*/
|
||||
getBeginDate() {
|
||||
if (this.data.beginsOn) {
|
||||
return new Date(this.data.beginsOn);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
/**
|
||||
* Ricevi la fina dato de la evento.
|
||||
* @return {Date} La fina dato pri la evento, aŭ null.
|
||||
*/
|
||||
getEndDate() {
|
||||
if (this.data.endsOn) {
|
||||
return new Date(this.data.endsOn);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ricevi la kompleta adreso de la evento.
|
||||
* @return {String} La kompleta adreso.
|
||||
*/
|
||||
getPhysicalAddressString() {
|
||||
if (this.data.physicalAddress) {
|
||||
var addr = this.data.physicalAddress.description;
|
||||
if (this.data.physicalAddress.locality) {
|
||||
return addr += ", " + this.data.physicalAddress.locality;
|
||||
}
|
||||
return addr;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
getTags() {
|
||||
var tags = [];
|
||||
this.data.tags?.forEach(t => {
|
||||
tags.push({slug: t.slug, title: t.title});
|
||||
});
|
||||
return tags;
|
||||
}
|
||||
|
||||
getDescription(cutAtChar = 0) {
|
||||
let desc = this.data?.description;
|
||||
if (desc == null) {
|
||||
return null;
|
||||
}
|
||||
if (cutAtChar <= 0) {
|
||||
return desc;
|
||||
} else {
|
||||
let wordCut = 0;
|
||||
let i = 0;
|
||||
while (i < Math.min(desc.length, cutAtChar)) {
|
||||
if (desc.charAt(i) == " " || desc.charAt(i) == "\n") {
|
||||
wordCut = i;
|
||||
}
|
||||
i++;
|
||||
if (i == desc.length) {
|
||||
wordCut = i;
|
||||
}
|
||||
}
|
||||
if (wordCut < desc.length) {
|
||||
return desc.substring(0, wordCut) + "…";
|
||||
} else {
|
||||
return desc;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
getTicketUri() {
|
||||
if (this.data.metadata) {
|
||||
var ticket = this.data.metadata.find(m => m.key === "mz:ticket:external_uri");
|
||||
if (ticket) {
|
||||
return ticket.value;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Recivi la URL de la evento en la originala servilo.
|
||||
* @return {String} La URL de la evento en la originala servilo.
|
||||
*/
|
||||
getOnInstanceUrl() {
|
||||
return "https://" + encodeURIComponent(this.host) + "/events/" + encodeURIComponent(this.data.uuid);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue