Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,16 @@ HW1

<h4>Что мы имеем на руках:</h4>

<ul>
<ul>
<li>Список кинотеатров + дополнительную информацию о каждом из них</li>
<li>Списко фильмов для каждого кинотетра + дополнительную информацию к каждому фильму.</li>
<li>Список фильмов для каждого кинотетра + дополнительную информацию к каждому фильму.</li>
<li>О пользователе мы знаем координату, где он находится в данный момент.</li>
<li>О реальном мире мы знаем текущию дату и время.</li>
</ul>

<h4>Домашнее задание 1</h4>

<ol>
<ol>
<li>
<div>Творческое</div>
Придумать модели, которые нужны для нашего сервиса.
Expand All @@ -32,7 +32,7 @@ function createCircle(radius, position, options) {
return {
radius: radius,
position: position,
color: options.color || "black"
color: options.color || "black"
};
}
</pre>
Expand Down Expand Up @@ -75,7 +75,7 @@ collection
.getTop(10);
</pre>
</li>

<li>
<div>Тесты. А точнее, примеры использования.</div>
На следующем занятии я научу вас писать тесты:
Expand Down
69 changes: 69 additions & 0 deletions alltogether.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
function createCinema(name, location, movies, options) {
return {
name: name,
location: location,
description: options.description || "",
movies: movies || []
};
}

function createMovie(name, description, timetable, options) {
return {
name: name,
description: {
annotation: description.annotation || "",
artists: description.artists || []
},
timetable: timetable || [],
raiting: options.raiting || 0
};
}

var manager = {};

manager.findByMovieName = function (movies, name) {
return movies.filter(function(movie){
return movie.name.contains(name);
});
}

manager.sortByRaiting = function (movies) {
return movies.slice(0).sort(function(a,b){
return a.raiting - b.raiting;
});
}

manager.getWithRaitingMoreThan = function(movies, raiting){
return movies.filter(function(movie){
return movie.raiting >= raiting;
});
}

Array.prototype.findByMovieName = function(name){
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

расширять прототип базовых объектов плохая практика

return manager.findByMovieName(this, name);
};
Array.prototype.sortByRaiting = function(){
return manager.sortByRaiting(this);
};
Array.prototype.getWithRaitingMoreThan = function(raiting){
return manager.getWithRaitingMoreThan(this, raiting);
};


var artists = ["Tom Cruse", "scarlett Johansson", "Spike Jonze", "Joaquin Phoenix", "Amy Adams", "Olivia Wilde", "Don Jon"];

var movies = ["Kill Bill", "Sin City", "Avatar", "Death Proof", "Pink Panther"].map(function(name, index) {
var timetable = [1, 2, 3].map(function(number) {
return number * (index + 1) * 123 % 24 + ":" + number * (index + 1) * 321 % 60;
});
var selectedArtists = [];
artists.forEach(function(artist, i) {
if ((index + i) % 3 == 0)
selectedArtists.push(artist);
});
return createMovie(name, { annotation: name, artists: selectedArtists}, timetable, {raiting: index * 23 % 10 + 1 });
});

var cinemas = ["Cinema Park", "Roliks", "Titanic"].map(function(name, index) {
return createCinema(name, { x: index * 2, y: index * 3 + 4}, movies, {})
});
29 changes: 29 additions & 0 deletions manager.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
var manager = {};

manager.findByMovieName = function (movies, name) {
return movies.filter(function(movie){
return movie.name.contains(name);
});
}

manager.sortByRaiting = function (movies) {
return movies.slice(0).sort(function(a,b){
return a.raiting - b.raiting;
});
}

manager.getWithRaitingMoreThan = function(movies, raiting){
return movies.filter(function(movie){
return movie.raiting >= raiting;
});
}

Array.prototype.findByMovieName = function(name){
return manager.findByMovieName(this, name);
};
Array.prototype.sortByRaiting = function(){
return manager.sortByRaiting(this);
};
Array.prototype.getWithRaitingMoreThan = function(raiting){
return manager.getWithRaitingMoreThan(this, raiting);
};
21 changes: 21 additions & 0 deletions models.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
function createCinema(name, location, movies, options) {
return {
name: name,
location: location,
description: options.description || "",
movies: movies || []
}
}

function createMovie(name, description, timetable, options) {
return {
name: name,
description: {
annotation: description.annotation || "",
artists: description.artists || []
},
timetable: timetable || [],
raiting: options.raiting || 0;
}
}

19 changes: 19 additions & 0 deletions tests.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
var artists = ["Tom Cruse", "scarlett Johansson", "Spike Jonze", "Joaquin Phoenix", "Amy Adams", "Olivia Wilde", "Don Jon"];

var movies = ["Kill Bill", "Sin City", "Avatar", "Death Proof", "Pink Panther"].map(function(name, index) {
var timetable = [1, 2, 3].map(function(number) {
return number * (index + 1) * 123 % 24 + ":" + number * (index + 1) * 321 % 60;
});
var selectedArtists = [];
artists.forEach(function(artist, i) {
if ((index + i) % 3 == 0)
selectedArtists.push(artist);
});
return createMovie(name, { annotation: name, artists: selectedArtists}, timetable, {raiting: index * 23 % 10 + 1 });
});

var cinemas = ["Cinema Park", "Roliks", "Titanic"].map(function(name, index) {
return createCinema(name, { x: index * 2, y: index * 3 + 4}, movies, {})
});

console.log(movies.findByMovieName("a").getWithRaitingMoreThan(5).sortByRaiting());