Skip to content

Commit

Permalink
#39 Вынос в контроллеры логики работы с UI
Browse files Browse the repository at this point in the history
  • Loading branch information
xaota committed Jul 11, 2017
1 parent f4ae0e6 commit cd11297
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 72 deletions.
69 changes: 4 additions & 65 deletions script.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,82 +38,21 @@

/** загружает теги в список тегов */
Tag.all()
.then(tags);
.then(ui.tag.save);

/** загружает анекдоты в список анекдотов */
Anekdot.all()
.then(anekdots)
.then(ui.anekdot.save)
.then(ui.anekdot.event.rand);

/** добавляем событие загрузки следующего анекдота */
$(ui.anekdot.form.next).on({click: ui.anekdot.event.rand});

/** добавляет событие сохранения анекдота */
$(ui.anekdot.form.add.form).on({ submit: saveAnekdotEvent })
$(ui.anekdot.form.add.form).on({ submit: ui.anekdot.event.add })

/** добавляет событие сохранения тега */
$(ui.tag.form.add.form).on({submit: saveTagEvent})

/** Событие сохранения анекдота */
function saveAnekdotEvent(e) {
saveAnekdot(getName(), 100, getText(), getName());
return false;
}

/** событие сохранения тега */
function saveTagEvent(e) {
let item = getInputText(ui.tag.form.add.name);
saveTag(item);
return false;
}

/** загрузка анекдота по id */
function loadAnekdot(id) {
return ui.anekdot.get(id);
}
/** сохраняет тег */
function saveTag(name) {
Tag.add(name)
.then(tags)
.then(_ => $(ui.tag.form.add.name).value(''))
}
function getInputText(item) {
return $(item).val();
}
/** получает название анекдота из формы */
function getName() {
return getInputText(ui.anekdot.form.add.name);
}
/** получает текст анекдота из формы */
function getText() {
return getInputText(ui.anekdot.form.add.text);
}

/** сохраняет анекдот */
function saveAnekdot(caption, number, text, name) {
let anekdot = {caption, number, text, name};
return Anekdot.add(anekdot)
.then(anekdots);
}

function tags(tags) {
UI.list(tags, ui.tag.view.list);
UI.list(tags, ui.tag.view.edit);
return tags;
}
function anekdots(anekdots) {
return UI.list(anekdots, ui.anekdot.view.list, callback);

function callback(item, node) {
node.data({anekdot: item.id}).on({click});
}
function click(event) {
let anekdot = this.data('anekdot');
loadAnekdot(anekdot);
return false;
}
}

$(ui.tag.form.add.form).on({ submit: ui.tag.event.add });
});

})(window, document);
2 changes: 1 addition & 1 deletion script/ui.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class UI {
}

static value(input) { // ?
return input.val();
return $(input).val();
}
}

Expand Down
49 changes: 43 additions & 6 deletions script/ui/anekdot.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,48 @@
class AnekdotUI extends Controller {

get(id) {
let self = this;
$(self.view.list + ' li[data-anekdot="' + id + '"]').onceClass('active');
Anekdot.get(id).then(function(response) {
$(self.view.name, self.view.text).clear();
$(self.view.name).html(response.title);
var textArr = response.version[0].text.split('\n');
textArr.forEach(string => $(self.view.text).add('p').text(string));
});
Anekdot.get(id).then(self.show);
}

show(anekdot) {
$(self.view.name, self.view.text).clear();
$(self.view.name).html(anekdot.title);
let textArr = anekdot.version[0].text.split('\n');
let view = $(self.view.text);
textArr.forEach(string => view.add('p').text(string));
}

rand() {
let anekdot = Anekdot.rand();
return this.get(anekdot.id);
}

/** сохраняет анекдот */
add(caption, number, text, name) {
let self = this;
let anekdot = {caption, number, text, name};
return Anekdot.add(anekdot)
.then(self.save);
}

save(anekdots) {
let self = this;
return UI.list(anekdots, self.view.list, callback);

function callback(item, node) {
node.data({anekdot: item.id}).on({click});
}

function click(event) {
let anekdot = this.data('anekdot');
self.get(anekdot);
return false;
}
}

/** @section События */
Event() {
let self = this;

Expand All @@ -22,6 +51,14 @@ class AnekdotUI extends Controller {
rand(event) {
self.rand();
return false;
},

/** Событие сохранения анекдота */
add(e) {
let name = UI.value(self.form.add.name);
let text = UI.value(self.form.add.text);
self.add(name, 100, text, name);
return false;
}
}
}
Expand Down
27 changes: 27 additions & 0 deletions script/ui/tag.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,30 @@
class TagUI extends Controller {
/** сохраняет тег */
add(name) {
let self = this;
Tag.add(name)
.then(self.save)
.then(_ => $(self.form.add.name).value(''))
}

save(tags) {
let self = this;
UI.list(tags, self.view.list);
UI.list(tags, self.view.edit);
return tags;
}

/** @section События */
Event() {
let self = this;

return {
/** событие сохранения тега */
add(e) {
let item = getInputText(sekf.form.add.name);
self.add(item);
return false;
}
}
}
}

0 comments on commit cd11297

Please sign in to comment.