edit: lien entre player & message + mastodon
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 884 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.3 MiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,17 +1,3 @@
|
|||||||
[
|
[
|
||||||
{
|
"vega"
|
||||||
"track":"L'Inverse",
|
|
||||||
"artist":"Surprise",
|
|
||||||
"src":"./DATA/Son/1.mp3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"track":"Yummy",
|
|
||||||
"artist":"Ayesha Erotica",
|
|
||||||
"src":"./DATA/Son/2.mp3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"track":"M le Maudit",
|
|
||||||
"artist":"Mauvais Exemple",
|
|
||||||
"src":"./DATA/Son/3.mp3"
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"title": "Atelier Meetup 1/3",
|
|
||||||
"date": "21/03",
|
|
||||||
"content": "Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. \n\n Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.",
|
|
||||||
"like": 0,
|
|
||||||
"isLiked": false,
|
|
||||||
"going": 0,
|
|
||||||
"isGoing": false,
|
|
||||||
"wasRead": false,
|
|
||||||
"isSelected": false,
|
|
||||||
"isEvent": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Atelier Meetup 1/3",
|
|
||||||
"date": "21/03",
|
|
||||||
"content": "Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. \n\n Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.",
|
|
||||||
"like": 0,
|
|
||||||
"isLiked": false,
|
|
||||||
"going": 0,
|
|
||||||
"isGoing": false,
|
|
||||||
"wasRead": false,
|
|
||||||
"isSelected": false,
|
|
||||||
"isEvent": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Atelier Meetup 1/3",
|
|
||||||
"date": "21/03",
|
|
||||||
"content": "Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. \n\n Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.",
|
|
||||||
"like": 0,
|
|
||||||
"isLiked": false,
|
|
||||||
"going": 0,
|
|
||||||
"isGoing": false,
|
|
||||||
"wasRead": false,
|
|
||||||
"isSelected": false,
|
|
||||||
"isEvent": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 580 KiB |
@@ -225,7 +225,7 @@ canvas {
|
|||||||
}
|
}
|
||||||
/*==================Reaction Bar for indi pannels*/
|
/*==================Reaction Bar for indi pannels*/
|
||||||
.reactBar{
|
.reactBar{
|
||||||
margin-left: -16.1%;
|
margin-left: 3.33%;
|
||||||
width: 77%;
|
width: 77%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
|
|||||||
@@ -1,4 +1,56 @@
|
|||||||
export async function loadAudioData() {
|
function inlineContent(str){
|
||||||
const aData = await fetch('./DATA/audioData.json');
|
let data = str.split("<br>");
|
||||||
return await aData.json();
|
let content = "";
|
||||||
|
for (let line of data){
|
||||||
|
content += line + '\n';
|
||||||
|
}
|
||||||
|
return content
|
||||||
|
}
|
||||||
|
|
||||||
|
function creditsContent(str){
|
||||||
|
let data = str.split("<br>")
|
||||||
|
let credits = data[0].split(" - ");
|
||||||
|
return {
|
||||||
|
track: credits[0],
|
||||||
|
artist: credits[1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function loadAudioData() {
|
||||||
|
const audioRes = await fetch('./DATA/audioData.json');
|
||||||
|
const aData = await audioRes.json();
|
||||||
|
const res = await fetch("https://pouet.drags-nerds.net/api/v1/timelines/public?local=true&limit=40");
|
||||||
|
|
||||||
|
if(!res.ok) throw new Error(`Server responded with ${res.status} ${res.statusText}`);
|
||||||
|
|
||||||
|
const pouets = await res.json();
|
||||||
|
const filtered = pouets.filter(p => aData.some(user => p.account.display_name === user));
|
||||||
|
console.log(filtered);
|
||||||
|
const files = {};
|
||||||
|
for (const user of aData) {
|
||||||
|
files[user] = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
let audioFiles = [];
|
||||||
|
|
||||||
|
for (const pouet of filtered){
|
||||||
|
//ignorer les PJ autres que audio
|
||||||
|
if (pouet.media_attachments?.length > 0 &&
|
||||||
|
!pouet.media_attachments[0].type.includes('audio')) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(pouet.media_attachments?.length > 0){
|
||||||
|
let credits = creditsContent(pouet.content);
|
||||||
|
let entry = {
|
||||||
|
track: credits.track,
|
||||||
|
artist: credits.artist,
|
||||||
|
src: pouet.media_attachments[0].url
|
||||||
|
}
|
||||||
|
audioFiles.push(entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(audioFiles);
|
||||||
|
return audioFiles
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,51 @@
|
|||||||
//ecrire les messages dans /public/DATA/msgData.json avec 6 paramètres : title, content, likes, going, isSelected, isEvent
|
function idAndDate(str){
|
||||||
// like & going à 0 par défaut (fonctionnel)
|
let data = str.split("T");
|
||||||
// isLiked & isGoing local pour cette session: false par default (fonctionnel)
|
let date = data[0].split("-");
|
||||||
// isSelected: false par défault (fonctionnel)
|
return {
|
||||||
// wasRead: false par défault (fonctionnel)
|
date: date[2] +'/'+ date[1],
|
||||||
// isEvent: true si le message concerne un évènement
|
id: date[2] + date[1]
|
||||||
export async function loadMsgData() {
|
}
|
||||||
const data = await fetch('./DATA/msgData.json');
|
}
|
||||||
return await data.json();
|
|
||||||
|
function titleAndContent(str){
|
||||||
|
let data = str.split(" :");
|
||||||
|
let title = data[0];
|
||||||
|
let contentData = data[1].split("<br>").filter(e => e);
|
||||||
|
let content = "";
|
||||||
|
for(let line of contentData){
|
||||||
|
content += line + '\n';
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
title: title,
|
||||||
|
content: content
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function loadMsgData() {
|
||||||
|
const res = await fetch("https://pouet.drags-nerds.net/api/v1/timelines/public?local=true&limit=40");
|
||||||
|
|
||||||
|
if(!res.ok) throw new Error(`Server responded with ${res.status} ${res.statusText}`);
|
||||||
|
|
||||||
|
const pouets = await res.json();
|
||||||
|
const filtered = pouets.filter(p => p.account.display_name === 'Drags and Nerds /Live');
|
||||||
|
console.log(filtered);
|
||||||
|
|
||||||
|
let msgContent = [];
|
||||||
|
|
||||||
|
for (let pouet of filtered){
|
||||||
|
let textInfos = titleAndContent(pouet.content);
|
||||||
|
let dateInfos = idAndDate(pouet.created_at);
|
||||||
|
let entry = {
|
||||||
|
title: textInfos.title,
|
||||||
|
date: dateInfos.date,
|
||||||
|
content: textInfos.content,
|
||||||
|
like: pouet.favourites_count,
|
||||||
|
isLiked: false,
|
||||||
|
wasRead: false,
|
||||||
|
isSelected: false
|
||||||
|
}
|
||||||
|
msgContent.push(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
return msgContent;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,15 +7,6 @@ function idAndDate(str){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function inlineContent(str){
|
|
||||||
let data = str.split("<br>");
|
|
||||||
let content = "";
|
|
||||||
for (let line of data){
|
|
||||||
content += line + '\n';
|
|
||||||
}
|
|
||||||
return content
|
|
||||||
}
|
|
||||||
|
|
||||||
function titleAndContent(str){
|
function titleAndContent(str){
|
||||||
let data = str.split(" :");
|
let data = str.split(" :");
|
||||||
let title = data[0];
|
let title = data[0];
|
||||||
@@ -76,13 +67,17 @@ export async function loadPeopleData() {
|
|||||||
const username = pouet.account.display_name;
|
const username = pouet.account.display_name;
|
||||||
let infos = idAndDate(pouet.created_at);
|
let infos = idAndDate(pouet.created_at);
|
||||||
let entry;
|
let entry;
|
||||||
|
//console.log(pouet);
|
||||||
//ignorer autres que images
|
//ignorer autres que images
|
||||||
if (pouet.media_attachments?.length > 0 &&
|
if (pouet.media_attachments?.length > 0 &&
|
||||||
!pouet.media_attachments[0].type.includes('image')) {
|
!pouet.media_attachments[0].type.includes('image')) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pouet.in_reply_to_account_id) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (pouet.content.includes('http')) {
|
if (pouet.content.includes('http')) {
|
||||||
let textInfos = titleAndContent(pouet.content);
|
let textInfos = titleAndContent(pouet.content);
|
||||||
entry = {
|
entry = {
|
||||||
|
|||||||
@@ -1,17 +1,14 @@
|
|||||||
import { reactive } from 'vue'
|
import { reactive } from 'vue'
|
||||||
|
|
||||||
export const dataStorage = reactive({
|
export const dataStorage = reactive({
|
||||||
selectedMsg: { //empty msg template
|
selectedMsg: {
|
||||||
title: '',
|
title: '',
|
||||||
date: '',
|
date: '',
|
||||||
content: '',
|
content: '',
|
||||||
like: 0,
|
like: 0,
|
||||||
isLiked: false,
|
isLiked: false,
|
||||||
going: 0,
|
|
||||||
isGoing: false,
|
|
||||||
wasRead: false,
|
wasRead: false,
|
||||||
isSelected: false,
|
isSelected: false
|
||||||
isEvent: false
|
|
||||||
},
|
},
|
||||||
selectedImg: {
|
selectedImg: {
|
||||||
src: "",
|
src: "",
|
||||||
|
|||||||
@@ -22,16 +22,12 @@
|
|||||||
<CloseIcon name="close" class="icon"/>
|
<CloseIcon name="close" class="icon"/>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="windowContent">
|
<div class="windowContent" id="msgContent">
|
||||||
<div class="reactBar">
|
<div class="reactBar">
|
||||||
<p class="reactStatStyle">{{selectedMsg.like}}</p>
|
<p class="reactStatStyle">{{selectedMsg.like}}</p>
|
||||||
<button data-tooltip="j'aime bien" type="button" class="iconBtnStyle" :class="{reactedStyle: selectedMsg.isLiked}" @mousedown.capture="likeMsg" @touchstart.capture="likeMsg">
|
<button data-tooltip="j'aime bien" type="button" class="iconBtnStyle" :class="{reactedStyle: selectedMsg.isLiked}" @mousedown.capture="likeMsg" @touchstart.capture="likeMsg">
|
||||||
<LikeIcon name="test" class="icon"/>
|
<LikeIcon name="test" class="icon"/>
|
||||||
</button>
|
</button>
|
||||||
<p v-show="selectedMsg.isEvent" class="reactStatStyle">{{selectedMsg.going}}</p>
|
|
||||||
<button v-show="selectedMsg.isEvent" type="button" class="textBtnStyle" :class="{reactedStyle: selectedMsg.isGoing}" @mousedown.capture="goingToEvent" @touchstart.capture="goingToEvent">
|
|
||||||
JE PARTICIPE!
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
<p id="selectedMsgText" @touchstart.stop>{{selectedMsg.content}}</p>
|
<p id="selectedMsgText" @touchstart.stop>{{selectedMsg.content}}</p>
|
||||||
</div>
|
</div>
|
||||||
@@ -58,6 +54,14 @@
|
|||||||
width: 333px;
|
width: 333px;
|
||||||
height: 333px;
|
height: 333px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#msgContent{
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
/*================ PC LARGE*/
|
/*================ PC LARGE*/
|
||||||
@media(min-width:1000px){
|
@media(min-width:1000px){
|
||||||
#msgVisualizer{
|
#msgVisualizer{
|
||||||
@@ -107,9 +111,6 @@
|
|||||||
likeMsg(){
|
likeMsg(){
|
||||||
dataStorage.selectedMsg.isLiked = !dataStorage.selectedMsg.isLiked
|
dataStorage.selectedMsg.isLiked = !dataStorage.selectedMsg.isLiked
|
||||||
},
|
},
|
||||||
goingToEvent(){
|
|
||||||
dataStorage.selectedMsg.isGoing = !dataStorage.selectedMsg.isGoing;
|
|
||||||
},
|
|
||||||
closeMsg(){
|
closeMsg(){
|
||||||
this.$emit('close');
|
this.$emit('close');
|
||||||
dataStorage.selectedMsg.isSelected = false;
|
dataStorage.selectedMsg.isSelected = false;
|
||||||
|
|||||||
@@ -25,8 +25,6 @@
|
|||||||
<p class="reactStatStyle">{{item.like}}</p>
|
<p class="reactStatStyle">{{item.like}}</p>
|
||||||
<LikeIcon name="testLike" class="icon" :class="{reactedStyle: item.isLiked}"/>
|
<LikeIcon name="testLike" class="icon" :class="{reactedStyle: item.isLiked}"/>
|
||||||
<p class="reactStatStyle"v-show="item.isEvent">{{item.going}}</p>
|
<p class="reactStatStyle"v-show="item.isEvent">{{item.going}}</p>
|
||||||
<p v-show="item.isEvent && !item.isGoing" >PARTICIPAN.X.S</p>
|
|
||||||
<p v-show="item.isEvent && item.isGoing" class="reactedStyle">JE PARTICIPE!</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -248,11 +246,8 @@
|
|||||||
content: '',
|
content: '',
|
||||||
like: 0,
|
like: 0,
|
||||||
isLiked: false,
|
isLiked: false,
|
||||||
going: 0,
|
|
||||||
isGoing: false,
|
|
||||||
wasRead: false,
|
wasRead: false,
|
||||||
isSelected: false,
|
isSelected: false
|
||||||
isEvent: false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -162,6 +162,7 @@
|
|||||||
async mounted(){
|
async mounted(){
|
||||||
this.audioData = await loadAudioData();
|
this.audioData = await loadAudioData();
|
||||||
this.target = this.$refs.selectedAudio;
|
this.target = this.$refs.selectedAudio;
|
||||||
|
console.log('AUDIO/', this.audioData);
|
||||||
this.loadAudio();
|
this.loadAudio();
|
||||||
console.log("Music player is loaded!");
|
console.log("Music player is loaded!");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user