Instantly share code, notes, and snippets.

@evlogii /mel.js
Last active Oct 4, 2016

Embed
What would you like to do?
class BlockOfComments {
var id; // just in case
var numberOfComments;
var comments[]; //array of Comment instances
var addComment = function(text, ownerID, parent){
var comment = new Comment(text, ownerID, parent);
var indexOfComment = this.comments.indexOf(comment);
if (index != -1) {
alert("comment already exist");
} else {
this.comments.push(comment);
}
this.numberOfComments = comments.length;
}
var deleteCommentById = function(commentID) {
function findCommentByID(comment){
return comment.id === commentID;
}
var indexToDelete = this.comments.findIndex(findCommentByID);
if(indexToDelete != -1) {
this.comments.splice(indexToDelete, 1);
}
this.numberOfComments = comments.length;
}
}
class Comment {
var id;
var parentCommentID = null; //may be null (optional type)
var ownerID; //userID
var text;
var numberOfLikes;
var likes[]; //array of IDs who like this comment
construcor(text, ownerID, parentID) {
this.text = text;
this.ownerID = ownerID;
if parentID {
this.parentID = parentID;
}
}
var like = function(userID){
var indexOfUserID = this.likes.indexOf(userID)
if (index != -1) { // if user already like this then delete like from arr
this.likes.splice(index, 1)
} else { // if user not liked before then add like to arr
this.likes.push(userID);
}
this.numberOfLikes = this.likes.length;
}
}
@evlogii

This comment has been minimized.

Show comment
Hide comment
@evlogii

evlogii Oct 3, 2016

Ну общая логика вроде понятна. Класс блока с комментариями, который держит массив инстансов класса комментарий (хорошо бы ещё класс комментатора/пользователя с именем, аватаркой, айдишником etc., но на картинке нет этой инфы, так что я не добавлял). Не понял к чему замечание по поводу "элементы интерактивные и не ведут к перезагрузке страницы". Сеть можно дёргать без перезагрузки. ДОМ перестраивать тоже. Ограничение "на комментарии первого уровня можно отвечать", мне тоже неясно. Ссылка на родителя – и можно отвечать на комментарии любого уровня. Либо это же задание выдавалось кому-то покруче, либо просто лишняя информация. Если нужно сделать именно двухуровневые коменты – просто запретить комментировать комментарии, у которых parentCommentID не null.

И да, считайте, что это псевдокод, а не JS. Я прям чувствую, насколько плохо пахнет ;–)

Owner

evlogii commented Oct 3, 2016

Ну общая логика вроде понятна. Класс блока с комментариями, который держит массив инстансов класса комментарий (хорошо бы ещё класс комментатора/пользователя с именем, аватаркой, айдишником etc., но на картинке нет этой инфы, так что я не добавлял). Не понял к чему замечание по поводу "элементы интерактивные и не ведут к перезагрузке страницы". Сеть можно дёргать без перезагрузки. ДОМ перестраивать тоже. Ограничение "на комментарии первого уровня можно отвечать", мне тоже неясно. Ссылка на родителя – и можно отвечать на комментарии любого уровня. Либо это же задание выдавалось кому-то покруче, либо просто лишняя информация. Если нужно сделать именно двухуровневые коменты – просто запретить комментировать комментарии, у которых parentCommentID не null.

И да, считайте, что это псевдокод, а не JS. Я прям чувствую, насколько плохо пахнет ;–)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment