diff --git a/README.md b/README.md
index 1beea4c..2ebb26c 100644
--- a/README.md
+++ b/README.md
@@ -9,16 +9,16 @@ HW1
Что мы имеем на руках:
-
+
- Список кинотеатров + дополнительную информацию о каждом из них
- - Списко фильмов для каждого кинотетра + дополнительную информацию к каждому фильму.
+ - Список фильмов для каждого кинотетра + дополнительную информацию к каждому фильму.
- О пользователе мы знаем координату, где он находится в данный момент.
- О реальном мире мы знаем текущию дату и время.
Домашнее задание 1
-
+
-
Творческое
Придумать модели, которые нужны для нашего сервиса.
@@ -32,7 +32,7 @@ function createCircle(radius, position, options) {
return {
radius: radius,
position: position,
- color: options.color || "black"
+ color: options.color || "black"
};
}
@@ -75,7 +75,7 @@ collection
.getTop(10);
-
+
-
Тесты. А точнее, примеры использования.
На следующем занятии я научу вас писать тесты:
diff --git a/alltogether.js b/alltogether.js
new file mode 100644
index 0000000..9aa3065
--- /dev/null
+++ b/alltogether.js
@@ -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){
+ 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, {})
+});
diff --git a/manager.js b/manager.js
new file mode 100644
index 0000000..4de83fa
--- /dev/null
+++ b/manager.js
@@ -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);
+};
diff --git a/models.js b/models.js
new file mode 100644
index 0000000..2dd07ed
--- /dev/null
+++ b/models.js
@@ -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;
+ }
+}
+
diff --git a/tests.js b/tests.js
new file mode 100644
index 0000000..e5ad623
--- /dev/null
+++ b/tests.js
@@ -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());