Last active
October 4, 2016 06:57
-
-
Save evlogiy/816b2fb3fdb84483ed9fe2b20350d49b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Ну общая логика вроде понятна. Класс блока с комментариями, который держит массив инстансов класса комментарий (хорошо бы ещё класс комментатора/пользователя с именем, аватаркой, айдишником etc., но на картинке нет этой инфы, так что я не добавлял). Не понял к чему замечание по поводу "элементы интерактивные и не ведут к перезагрузке страницы". Сеть можно дёргать без перезагрузки. ДОМ перестраивать тоже. Ограничение "на комментарии первого уровня можно отвечать", мне тоже неясно. Ссылка на родителя – и можно отвечать на комментарии любого уровня. Либо это же задание выдавалось кому-то покруче, либо просто лишняя информация. Если нужно сделать именно двухуровневые коменты – просто запретить комментировать комментарии, у которых parentCommentID не null.
И да, считайте, что это псевдокод, а не JS. Я прям чувствую, насколько плохо пахнет ;–)