Hey,
ich bin gerade dabei mit JavaScript einen Meetingplaner zu erstellen. Nun stehe ich vor der Herausforderung wie ich einem Meetingersteller eindeutig verifizieren kann, wie ich hunderte Meetings im Localstorage abspeichern kann und wollte euch mal fragen wie ihr bisher meinen Code findet - Der Code ist noch in der Testphase - jedoch bereits in der Übergangsphase zum Live Code.
1. Verifizierung des Meetingerstellers:
Ich möchte, dass wenn ein Meetingersteller ein Meeting erstellt ihn eindeutig verifizieren, sodass ich für diesen eine eigene Seite erstellen kann in dem ich all seine geplanten Meetings anzeige. Ich dachte dabei, dass ich ein 2-Dimensionales Array erstelle mit dem eindeutigen Namen als Schlüssel und diesem dann ein weiteres Array mitgebe:
this.confirmedMeetingData = [this.creator, [this.planedAction, this.meetingPlace, this.meetingDate, this.invitedPersons]];
Dann überprüfe ich vor dem Speichern des Arrays in den LocalStorage ob es in diesem Array bereits diesen Namen gibt.
Ja?
- Dem Schlüssel mit dem Namen ein weiteres Array hinzufügen
Nein?
- Ein neuen Schlüssel mit dem neuen Namen erstellen und diesem das Array hinzufügen
Nun kann es auch sein, dass ein Ersteller ab und zu mal einen anderen Namen eingeben kann obwohl es der gleiche ist oder jemand den selben Namen eingibt wie einer bereits ihn eingegeben hat. Dann kann ich ja nicht mit JavaScript überprüfen ob es sich hier um die gleiche Person handelt.
Eine Idee von mir ist eine Meetingseite mit einer eindeutigen ID als Parameter zu erstellen und diese dann jedem in der E-Mail zu zusenden.
Wie seht ihr das? Wie würdet ihr es machen? Kann ich einen Ersteller doch sicher verifizieren?
2. Hunderte und Tausende Meetings im Localstorage abspeichern
Ich habe dabei gedacht die Meetingdaten aus dem Formular in ein Array abzuspeichern und diesem dann bei jedem neu erstellten Meeting ein neues Array zuzuweisen mit dem neuen Inhalt.
Beispiel:
1 Meeting
Array( 0: "Testname", 1: array( 0: "data1", usw..))
2 Meeting
Array( 0: "Testname", 1: array( 0: "data1", usw..), 2: "Meeting2" 3: array(....))
Oder ein 3 dimensionales Array:
Array( 0: array( 0: "Meetingname", 1: array(0: "data1", 1: "data2", 2: array("values")), usw..))
Ich weiß noch nicht sicher wie ich dies am komfortabelsten machen soll damit ich die Daten ganz einfach weiterverarbeiten kann.
Wie würdet ihr es machen? Ideen?
3. Wie findet ihr meinen aktuellen Code?
Habt ihr Verbesserungs- und/oder Optimierungsvorschläge?
"use strict";
class Meeting{
constructor(){
this.step = 0;
}
// Erstellen
create(creator, planedAction, meetingPlace, meetingDate, invitedPersons){
this.creatorId = 1;
this.creator = creator;
this.planedAction = planedAction;
this.meetingPlace = meetingPlace;
this.meetingDate = meetingDate;
this.invitedPersons = invitedPersons;
if(this.creator.trim() === "" || this.planedAction.trim() === "" || this.meetingPlace.trim() === "" || this.meetingDate === "" || this.invitedPersons.trim() === ""){
this.error = "<p class='error'>Bitte fülle das ganze Formular aus!</p>";
return this.error;
}else{
this.step = 1;
return this.step;
}
}
// Bestätigen
outputConfirmMeetingData(){
if(this.step === 1){
let confirmCreator = document.getElementById("confirmCreator");
let confirmPlanedAction = document.getElementById("confirmPlanedAction");
let confirmMeetingPlace = document.getElementById("confirmMeetingPlace");
let confirmMeetingDate = document.getElementById("confirmMeetingDate");
let confirmInvitedPersons = document.getElementById("confirmInvitedPersons");
confirmCreator.innerText = this.creator;
confirmPlanedAction.innerText = this.planedAction;
confirmMeetingPlace.innerText = this.meetingPlace;
confirmMeetingDate.innerText = this.meetingDate;
confirmInvitedPersons.innerText = this.invitedPersons;
}
}
// Speichern
confirm(){
this.confirmedMeetingData = [this.creator, [this.planedAction, this.meetingPlace, this.meetingDate, this.invitedPersons]];
//****Testscript
if(localStorage.getItem("meeting") !== null){
let issetData = localStorage.getItem("meeting");
issetData = JSON.parse(issetData);
issetData.push(this.confirmedMeetingData);
localStorage.setItem("meeting", JSON.stringify(issetData));
} else{
localStorage.setItem("meeting", JSON.stringify(this.confirmedMeetingData));
}
console.log(this.confirmedMeetingData);
//******
this.success = "<p class='success'>Treffen wurde erstellt und die eingeladenen Personen wurden via E-Mail benachrichtigt!</p>";
return this.success;
}
// Auslesen
read(){
let meetingData = [
localStorage.getItem("meeting")
/*localStorage.getItem("planedAction"),
localStorage.getItem("meetingPlace"),
localStorage.getItem("meetingDate"),
localStorage.getItem("invitedPersons")*/
];
return meetingData;
}
}
Alles anzeigen
"use strict";
class emailDispatcher{
constructor(host, username, password, sendTo, sendedFrom){
this.host = host;
this.username = username;
this.password = password;
this.sendTo = sendTo;
this.sendedFrom = sendedFrom;
}
createSubject(subject){
this.subject = String subject;
}
createBody(body){
this.body = String body;
}
send(){
Email.send({
Host: this.host,
Username: this.username,
Password: this.password,
To: this.sendTo,
From: this.sendedFrom,
Subject: this.subject,
Body: this.body
}).then(
message => console.log(message)
);
}
}
Alles anzeigen
let host = "";
let username = "";
let password = "";
let sendTo = (localStorage.getItem('invitedPerson') !== null) ? localStorage.getItem('invitedPerson') : null;
let sendedFrom = "";
let subject = "Dein Meeting";
let body = "Testbody";
"use strict";
window.addEventListener("load", function(){
let createMeetingBtn = document.getElementById("createMeeting");
let output = document.getElementById("output");
let confirmBtn = document.getElementById("confirmBtn");
let meeting = new Meeting();
createMeetingBtn.addEventListener("click", function(event){
event.preventDefault();
let creatorValue = document.getElementById("creatorName").value;
let planedActionValue = document.getElementById("meetingName").value;
let meetingPlaceValue = document.getElementById("placeOfMeeting").value;
let meetingDateValue = document.getElementById("checkTime").value;
let invitedPersonsValue = document.getElementById("invitedPerson").value;
let createResult = meeting.create(creatorValue, planedActionValue, meetingPlaceValue, meetingDateValue, invitedPersonsValue);
if(createResult !== 1){
output.innerHTML = createResult;
} else{
meeting.outputConfirmMeetingData();
confirmBtn.addEventListener("click", function(){
let confirmResult = meeting.confirm();
Email.send({
Host : host,
Username : username,
Password : ,
To : (localStorage.getItem('invitedPersons') !== null) ? localStorage.getItem('invitedPersons') : null,
From : sendedFrom,
Subject : subject,
Body : body
}).then(
message => alert(message)
);
output.innerHTML = confirmResult;
});
}
}, false);
document.getElementById("readMeetingData").addEventListener("click", function(){
let savedData = meeting.read();
console.log(savedData);
});
});
Alles anzeigen
Wäre mir eine sehr große Freunde von euch zu hören
Schöne Grüße