This reverts commit 8cb67f978c
.
This commit is contained in:
parent
3bf997ba03
commit
69c0f4da04
|
@ -152,7 +152,6 @@ import {
|
|||
} from 'naive-ui'
|
||||
|
||||
import { useAgendaStore } from './store'
|
||||
import { getUrl } from '../shared/urls'
|
||||
|
||||
// PROPS
|
||||
|
||||
|
@ -206,22 +205,10 @@ const eventDetails = computed(() => {
|
|||
title: props.event.type === 'regular' ? `${props.event.groupName} (${props.event.acronym})` : props.event.name,
|
||||
showAgenda: props.event.flags.showAgenda,
|
||||
materialsUrl: materialsUrl,
|
||||
detailsUrl: getUrl('meetingDetails', {
|
||||
meetingNumber: agendaStore.meeting.number,
|
||||
eventAcronym: props.event.acronym
|
||||
}),
|
||||
tarUrl: getUrl('meetingMaterialsTar', {
|
||||
meetingNumber: agendaStore.meeting.number,
|
||||
eventAcronym: props.event.acronym
|
||||
}),
|
||||
pdfUrl: getUrl('meetingMaterialsPdf', {
|
||||
meetingNumber: agendaStore.meeting.number,
|
||||
eventAcronym: props.event.acronym
|
||||
}),
|
||||
notepadUrl: getUrl('meetingNotes', {
|
||||
meetingNumber: agendaStore.meeting.number,
|
||||
eventAcronym: props.event.type === 'plenary' ? 'plenary' : props.event.acronym
|
||||
})
|
||||
detailsUrl: `/meeting/${agendaStore.meeting.number}/session/${props.event.acronym}/`,
|
||||
tarUrl: `/meeting/${agendaStore.meeting.number}/agenda/${props.event.acronym}-drafts.tgz`,
|
||||
pdfUrl: `/meeting/${agendaStore.meeting.number}/agenda/${props.event.acronym}-drafts.pdf`,
|
||||
notepadUrl: `https://notes.ietf.org/notes-ietf-${agendaStore.meeting.number}-${props.event.type === 'plenary' ? 'plenary' : props.event.acronym}`,
|
||||
}
|
||||
})
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ n-drawer(v-model:show='state.isShown', placement='bottom', :height='state.drawer
|
|||
)
|
||||
template(#trigger)
|
||||
span.badge BoF
|
||||
span #[a(:href='getUrl(`bofDefinition`)', target='_blank') Birds of a Feather] sessions (BoFs) are initial discussions about a particular topic of interest to the IETF community.
|
||||
span #[a(href='https://www.ietf.org/how/bofs/', target='_blank') Birds of a Feather] sessions (BoFs) are initial discussions about a particular topic of interest to the IETF community.
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
@ -77,7 +77,6 @@ import {
|
|||
} from 'naive-ui'
|
||||
|
||||
import { useAgendaStore } from './store'
|
||||
import { getUrl } from '../shared/urls'
|
||||
|
||||
// STORES
|
||||
|
||||
|
|
|
@ -32,7 +32,6 @@ import {
|
|||
|
||||
import { useAgendaStore } from './store'
|
||||
import { useSiteStore } from '../shared/store';
|
||||
import { getUrl } from '../shared/urls'
|
||||
|
||||
// MESSAGE PROVIDER
|
||||
|
||||
|
@ -65,11 +64,11 @@ function downloadIcs (key) {
|
|||
let icsUrl = ''
|
||||
if (agendaStore.pickerMode) {
|
||||
const sessionKeywords = agendaStore.scheduleAdjusted.map(s => s.sessionKeyword)
|
||||
icsUrl = `${getUrl('meetingCalIcs', { meetingNumber: agendaStore.meeting.number })}?show=${sessionKeywords.join(',')}`
|
||||
icsUrl = `/meeting/${agendaStore.meeting.number}/agenda.ics?show=${sessionKeywords.join(',')}`
|
||||
} else if (agendaStore.selectedCatSubs.length > 0) {
|
||||
icsUrl = `${getUrl('meetingCalIcs', { meetingNumber: agendaStore.meeting.number })}?show=${agendaStore.selectedCatSubs.join(',')}`
|
||||
icsUrl = `/meeting/${agendaStore.meeting.number}/agenda.ics?show=${agendaStore.selectedCatSubs.join(',')}`
|
||||
} else {
|
||||
icsUrl = `${getUrl('meetingCalIcs', { meetingNumber: agendaStore.meeting.number })}`
|
||||
icsUrl = `/meeting/${agendaStore.meeting.number}/agenda.ics`
|
||||
}
|
||||
if (key === 'subscribe') {
|
||||
window.location.assign(`webcal://${window.location.host}${icsUrl}`)
|
||||
|
|
|
@ -120,8 +120,7 @@ import {
|
|||
} from 'naive-ui'
|
||||
|
||||
import { useAgendaStore } from './store'
|
||||
import { useSiteStore } from '../shared/store'
|
||||
import { getUrl } from '../shared/urls'
|
||||
import { useSiteStore } from '../shared/store';
|
||||
|
||||
// MESSAGE PROVIDER
|
||||
|
||||
|
@ -182,11 +181,11 @@ function downloadIcs (key) {
|
|||
let icsUrl = ''
|
||||
if (agendaStore.pickerMode) {
|
||||
const sessionKeywords = agendaStore.scheduleAdjusted.map(s => s.sessionKeyword)
|
||||
icsUrl = `${getUrl('meetingCalIcs', { meetingNumber: agendaStore.meeting.number })}?show=${sessionKeywords.join(',')}`
|
||||
icsUrl = `/meeting/${agendaStore.meeting.number}/agenda.ics?show=${sessionKeywords.join(',')}`
|
||||
} else if (agendaStore.selectedCatSubs.length > 0) {
|
||||
icsUrl = `${getUrl('meetingCalIcs', { meetingNumber: agendaStore.meeting.number })}?show=${agendaStore.selectedCatSubs.join(',')}`
|
||||
icsUrl = `/meeting/${agendaStore.meeting.number}/agenda.ics?show=${agendaStore.selectedCatSubs.join(',')}`
|
||||
} else {
|
||||
icsUrl = `${getUrl('meetingCalIcs', { meetingNumber: agendaStore.meeting.number })}`
|
||||
icsUrl = `/meeting/${agendaStore.meeting.number}/agenda.ics`
|
||||
}
|
||||
if (key === 'subscribe') {
|
||||
window.location.assign(`webcal://${window.location.host}${icsUrl}`)
|
||||
|
|
|
@ -202,7 +202,6 @@ import AgendaDetailsModal from './AgendaDetailsModal.vue'
|
|||
|
||||
import { useAgendaStore } from './store'
|
||||
import { useSiteStore } from '../shared/store'
|
||||
import { getUrl } from '../shared/urls'
|
||||
|
||||
// MESSAGE PROVIDER
|
||||
|
||||
|
@ -276,20 +275,14 @@ const meetingEvents = computed(() => {
|
|||
id: `lnk-${item.id}-tar`,
|
||||
label: 'Download meeting materials as .tar archive',
|
||||
icon: 'file-zip',
|
||||
href: getUrl('meetingMaterialsTar', {
|
||||
meetingNumber: agendaStore.meeting.number,
|
||||
eventAcronym: item.acronym
|
||||
}),
|
||||
href: `/meeting/${agendaStore.meeting.number}/agenda/${item.acronym}-drafts.tgz`,
|
||||
color: 'brown'
|
||||
})
|
||||
links.push({
|
||||
id: `lnk-${item.id}-pdf`,
|
||||
label: 'Download meeting materials as PDF file',
|
||||
icon: 'file-pdf',
|
||||
href: getUrl('meetingMaterialsPdf', {
|
||||
meetingNumber: agendaStore.meeting.number,
|
||||
eventAcronym: item.acronym
|
||||
}),
|
||||
href: `/meeting/${agendaStore.meeting.number}/agenda/${item.acronym}-drafts.pdf`,
|
||||
color: 'red'
|
||||
})
|
||||
}
|
||||
|
@ -298,10 +291,7 @@ const meetingEvents = computed(() => {
|
|||
id: `lnk-${item.id}-note`,
|
||||
label: 'Notepad for note-takers',
|
||||
icon: 'journal-text',
|
||||
href: getUrl('meetingNotes', {
|
||||
meetingNumber: agendaStore.meeting.number,
|
||||
eventAcronym: item.type === 'plenary' ? 'plenary' : item.acronym
|
||||
}),
|
||||
href: `https://notes.ietf.org/notes-ietf-${agendaStore.meeting.number}-${item.type === 'plenary' ? 'plenary' : item.acronym}`,
|
||||
color: 'blue'
|
||||
})
|
||||
}
|
||||
|
@ -414,10 +404,7 @@ const meetingEvents = computed(() => {
|
|||
id: `lnk-${item.id}-rec`,
|
||||
label: 'Session recording',
|
||||
icon: 'film',
|
||||
href: getUrl('meetingMeetechoRecordings', {
|
||||
meetingNumber: agendaStore.meeting.number,
|
||||
eventAcronym: item.acronym.toUpperCase()
|
||||
}),
|
||||
href: `https://www.meetecho.com/ietf${agendaStore.meeting.number}/recordings#${item.acronym.toUpperCase()}`,
|
||||
color: 'purple'
|
||||
})
|
||||
}
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
import template from 'lodash-es/template'
|
||||
import transform from 'lodash-es/transform'
|
||||
|
||||
const urls = {
|
||||
bofDefinition: 'https://www.ietf.org/how/bofs/',
|
||||
meetingCalIcs: '/meeting/{meetingNumber}/agenda.ics',
|
||||
meetingDetails: '/meeting/{meetingNumber}/session/{eventAcronym}/',
|
||||
meetingMaterialsPdf: '/meeting/{meetingNumber}/agenda/{eventAcronym}-drafts.pdf',
|
||||
meetingMaterialsTar: '/meeting/{meetingNumber}/agenda/{eventAcronym}-drafts.tgz',
|
||||
meetingMeetechoRecordings: 'https://www.meetecho.com/ietf{meetingNumber}/recordings#{eventAcronym}',
|
||||
meetingNotes: 'https://notes.ietf.org/notes-ietf-{meetingNumber}-{eventAcronym}'
|
||||
}
|
||||
|
||||
const interpolate = /{([\s\S]+?)}/g
|
||||
const compiled = transform(urls, (result, value, key) => {
|
||||
result[key] = template(value, { interpolate })
|
||||
}, {})
|
||||
|
||||
/**
|
||||
* Get an URL and replace tokens with provided values.
|
||||
*
|
||||
* @param {string} key The key of the URL template to use.
|
||||
* @param {Object} [tokens] An object of tokens to replace in the URL template.
|
||||
* @returns {string} URL with tokens replaced with the provided values.
|
||||
*/
|
||||
export const getUrl = (key, tokens = {}) => {
|
||||
if (!key) { throw new Error('Must provide a key for getUrl()') }
|
||||
if (!compiled[key]) { throw new Error('Invalid getUrl() key') }
|
||||
return compiled[key](tokens)
|
||||
}
|
Loading…
Reference in a new issue