From 5c2f32e1848a95da8d38f6b25d3a64cb6f581a6e Mon Sep 17 00:00:00 2001 From: Ilya Kantor Date: Mon, 9 Mar 2015 18:48:58 +0300 Subject: [PATCH] beautify_js --- .../1-hello-alert-ext/alert.js | 2 +- .../1-debugging-chrome/debugging.view/pow.js | 4 +- .../1-debugging-chrome/error.view/pow.js | 4 +- .../1-pow-nan-spec/_js.view/solution.js | 4 +- .../1-pow-nan-spec/_js.view/source.js | 2 +- .../4-testing/1-pow-nan-spec/_js.view/test.js | 14 +- .../2-pow-test-0/_js.view/solution.js | 6 +- .../4-testing/2-pow-test-0/_js.view/source.js | 4 +- .../4-testing/2-pow-test-0/_js.view/test.js | 24 +- .../4-testing/beforeafter.view/test.js | 24 +- .../3-writing-js/4-testing/pow-1.view/test.js | 4 +- .../3-writing-js/4-testing/pow-2.view/test.js | 6 +- .../3-writing-js/4-testing/pow-3.view/test.js | 8 +- .../3-writing-js/4-testing/pow-4.view/test.js | 12 +- .../4-testing/pow-full.view/test.js | 24 +- .../4-testing/pow-min.view/test.js | 4 +- .../4-testing/pow-nan-assert.view/test.js | 16 +- .../4-testing/pow-nan.view/test.js | 16 +- .../2-get-week-day/_js.view/solution.js | 4 +- .../2-get-week-day/_js.view/test.js | 14 +- .../3-weekday/_js.view/solution.js | 8 +- .../11-datetime/3-weekday/_js.view/test.js | 16 +- .../4-get-date-ago/_js.view/solution.js | 6 +- .../4-get-date-ago/_js.view/test.js | 12 +- .../5-last-day-of-month/_js.view/solution.js | 4 +- .../5-last-day-of-month/_js.view/test.js | 6 +- .../8-format-date-ddmmyy/_js.view/solution.js | 12 +- .../8-format-date-ddmmyy/_js.view/test.js | 8 +- .../_js.view/solution.js | 30 +- .../9-format-date-relative/_js.view/test.js | 8 +- .../_js.view/solution.js | 14 +- .../_js.view/test.js | 8 +- .../5-get-decimal/_js.view/solution.js | 2 +- .../2-number/5-get-decimal/_js.view/test.js | 12 +- .../3-string/1-ucfirst/_js.view/solution.js | 2 +- .../3-string/1-ucfirst/_js.view/test.js | 8 +- .../2-check-spam/_js.view/solution.js | 2 +- .../3-string/2-check-spam/_js.view/test.js | 6 +- .../3-string/3-truncate/_js.view/solution.js | 2 +- .../3-string/3-truncate/_js.view/test.js | 6 +- .../1-is-empty/_js.view/solution.js | 6 +- .../1-is-empty/_js.view/test.js | 6 +- .../4-multiply-numeric/_js.view/solution.js | 8 +- .../4-multiply-numeric/_js.view/source.js | 2 +- .../4-multiply-numeric/_js.view/test.js | 6 +- .../10-maximal-subarray/_js.view/solution.js | 8 +- .../10-maximal-subarray/_js.view/test.js | 16 +- .../7-array/7-array-find/_js.view/solution.js | 4 +- .../7-array/7-array-find/_js.view/test.js | 14 +- .../8-filter-range/_js.view/solution.js | 2 +- .../7-array/8-filter-range/_js.view/test.js | 10 +- .../1-add-class/_js.view/solution.js | 4 +- .../1-add-class/_js.view/test.js | 14 +- .../10-filter-anagrams/_js.view/solution.js | 8 +- .../10-filter-anagrams/_js.view/test.js | 10 +- .../11-array-unique/_js.view/solution.js | 4 +- .../11-array-unique/_js.view/test.js | 9 +- .../2-camelcase/_js.view/solution.js | 2 +- .../2-camelcase/_js.view/test.js | 8 +- .../3-remove-class/_js.view/solution.js | 4 +- .../3-remove-class/_js.view/test.js | 18 +- .../4-filter-in-place/_js.view/solution.js | 12 +- .../2-partial-sums-array/_js.view/test.js | 10 +- .../2-stringbuffer/_js.view/solution.js | 6 +- .../2-stringbuffer/_js.view/test.js | 15 +- .../_js.view/solution.js | 6 +- .../_js.view/test.js | 16 +- .../_js.view/solution.js | 8 +- .../_js.view/source.js | 3 +- .../_js.view/test.js | 26 +- .../6-make-army/_js.view/solution.js | 10 +- .../6-make-army/_js.view/source.js | 4 +- .../hello-conflict.view/hello.js | 2 +- .../hello-module.view/hello.js | 2 +- .../7-calculator/_js.view/solution.js | 3 +- .../7-calculator/_js.view/test.js | 4 +- .../_js.view/solution.js | 2 +- .../2-calculator-constructor/_js.view/test.js | 4 +- .../3-accumulator/_js.view/solution.js | 2 +- .../3-accumulator/_js.view/test.js | 8 +- .../_js.view/solution.js | 4 +- .../4-calculator-extendable/_js.view/test.js | 10 +- .../1-objects-counter/_js.view/solution.js | 4 +- .../1-objects-counter/_js.view/test.js | 10 +- .../_js.view/solution.js | 2 +- .../_js.view/test.js | 6 +- .../1-logging-decorator/_js.view/solution.js | 4 +- .../1-logging-decorator/_js.view/test.js | 26 +- .../_js.view/solution.js | 12 +- .../_js.view/test.js | 30 +- .../3-caching-decorator/_js.view/solution.js | 6 +- .../3-caching-decorator/_js.view/test.js | 14 +- .../7-delay/_js.view/test.js | 13 +- .../8-debounce/_js.view/solution.js | 6 +- .../8-debounce/_js.view/test.js | 25 +- .../9-throttle/_js.view/solution.js | 24 +- .../9-throttle/_js.view/test.js | 11 +- .../3-clock-class/clock.js | 3 +- .../3-clock-class/solution.view/clock.js | 3 +- .../3-clock-class/source.view/clock.js | 2 +- .../4-clock-class-extended/extended-clock.js | 4 +- .../solution.view/clock.js | 3 +- .../solution.view/extended-clock.js | 4 +- .../source.view/clock.js | 3 +- .../source.view/extended-clock.js | 3 +- .../solution.view/menu.js | 4 +- .../5-menu-timer-animated/source.view/menu.js | 4 +- .../setImmediate.view/setImmediate.js | 27 +- .../fix-ie.view/fixIERangeObject.js | 80 +- 12-extra/9-drag-and-drop-plus/DragAvatar.js | 2 +- 12-extra/9-drag-and-drop-plus/DragManager.js | 18 +- 12-extra/9-drag-and-drop-plus/DragZone.js | 4 +- 12-extra/9-drag-and-drop-plus/DropTarget.js | 7 +- .../9-drag-and-drop-plus/TreeDragAvatar.js | 4 +- 12-extra/9-drag-and-drop-plus/TreeDragZone.js | 3 +- .../9-drag-and-drop-plus/TreeDropTarget.js | 111 +- .../dragTree.view/DragAvatar.js | 2 +- .../dragTree.view/DragManager.js | 18 +- .../dragTree.view/DragZone.js | 4 +- .../dragTree.view/DropTarget.js | 7 +- .../dragTree.view/TreeDragAvatar.js | 4 +- .../dragTree.view/TreeDragZone.js | 3 +- .../dragTree.view/TreeDropTarget.js | 111 +- .../9-drag-and-drop-plus/dragTree.view/lib.js | 36 +- .../12-multi-insert/benchmark.view/bench.js | 19 +- .../benchmark.view/documentfragment-bench.js | 14 +- .../12-multi-insert/documentfragment-bench.js | 14 +- .../12-multi-insert/insert-bench.js | 19 +- .../12-multi-insert/insertAdjacentFF.js | 28 +- .../getiecomputedstyle.js | 2 +- .../4-event-bubbling/both.view/script.js | 4 +- .../bubble-target.view/script.js | 3 +- .../4-event-bubbling/capture.view/script.js | 3 +- .../menu.view/menu.js | 2 +- .../3-script-callback/solution.view/go.js | 4 +- .../3-script-callback/source.view/go.js | 2 +- .../solution.view/hoverIntent.js | 6 +- .../2-hoverintent/source.view/hoverIntent.js | 4 +- .../script.js | 5 +- .../script.js | 5 +- .../mouseleave-table.view/script.js | 3 +- .../mouseleave.view/script.js | 3 +- .../mouseoverout-child.view/script.js | 3 +- .../mouseoverout-fast.view/script.js | 59 +- .../mouseoverout.view/script.js | 8 +- .../2-drag-heroes/solution.view/soccer.js | 18 +- .../dragDemo.view/DragManager.js | 31 +- .../keyboard-dump.view/script.js | 11 +- .../4-edit-td-click/solution.view/script.js | 28 +- .../4-edit-td-click/source.view/script.js | 1 - .../1-clock/solution.view/clock.js | 2 +- .../solution.view/listSelect.js | 11 +- .../5-voter-proto/solution.view/voter.js | 4 +- .../solution.view/step-voter.js | 2 +- .../6-voter-add-step/solution.view/voter.js | 4 +- .../2-widgets-structure/menu-dom.view/menu.js | 4 +- .../2-widgets-structure/menu.view/menu.js | 6 +- .../3-menu-template/solution.view/menu.js | 12 +- .../3-menu-template/source.view/menu.js | 12 +- .../menu-template.view/menu.js | 12 +- .../1-voter-events/solution.view/voter.js | 7 +- .../solution.view/listSelect.js | 13 +- .../solution.view/customselect.js | 6 +- .../4-slider-events/solution.view/slider.js | 8 +- .../menu-callback.view/menu.js | 12 +- .../5-custom-events/menu-event.view/menu.js | 14 +- .../10-ajax-jsonp/jsonp.view/scriptRequest.js | 21 +- 4-ajax/10-ajax-jsonp/jsonp.view/server.js | 9 +- .../eventsource.view/server.js | 8 +- .../date-activex.view/activex.js | 12 +- .../date-activex.view/server.js | 84 +- .../date-comet.view/iframeComet.js | 20 +- .../12-ajax-iframe/date-comet.view/server.js | 35 +- 4-ajax/12-ajax-iframe/date.view/iframe.js | 38 +- 4-ajax/12-ajax-iframe/date.view/server.js | 84 +- 4-ajax/2-ajax-nodejs/example/index.js | 5 +- .../1-phones-list/phones-async.view/server.js | 9 +- .../1-phones-list/phones-list.view/server.js | 9 +- .../phones-async.view/server.js | 9 +- .../phones.view/server.js | 9 +- .../readystate.view/server.js | 8 +- .../6-xhr-onprogress/progress.view/server.js | 75 +- .../7-xhr-resume/upload-resume.view/server.js | 149 +- .../upload-resume.view/uploader.js | 31 +- .../8-xhr-longpoll/longpoll.view/browser.js | 18 +- 4-ajax/8-xhr-longpoll/longpoll.view/server.js | 17 +- .../3-js-animation/width.view/animate.js | 2 +- archive/upload-2way.view/server.js | 127 +- archive/upload-2way.view/uploader.js | 29 +- .../solution.view/dateselector.js | 34 +- .../source.view/dateselector.js | 4 +- .../solution.view/draggableWindow.js | 21 +- .../solution.view/draggableWindow.js | 25 +- .../solution.view/windowManager.js | 8 +- .../solution.view/calendar.js | 35 +- .../solution.view/datepicker.js | 13 +- .../source.view/calendar.js | 35 +- .../source.view/datepicker.js | 6 +- .../5-tree-checkboxes/solution.view/fetch.js | 8 +- .../solution.view/regions.js | 2366 ++++++++++++++++- .../5-tree-checkboxes/solution.view/tree.js | 41 +- .../7-calendar/solution.view/calendar.js | 35 +- .../7-calendar/source.view/calendar-table.js | 14 +- .../7-calendar/source.view/calendar.js | 4 +- .../solution.view/autocomplete-list.js | 8 +- .../solution.view/autocomplete.js | 11 +- .../solution.view/hoverintent.js | 90 +- .../solution.view/menu.js | 16 +- 208 files changed, 3891 insertions(+), 1474 deletions(-) diff --git a/1-js/2-first-steps/2-external-script/1-hello-alert-ext/alert.js b/1-js/2-first-steps/2-external-script/1-hello-alert-ext/alert.js index 5dbc7e7b..2c4f96f5 100644 --- a/1-js/2-first-steps/2-external-script/1-hello-alert-ext/alert.js +++ b/1-js/2-first-steps/2-external-script/1-hello-alert-ext/alert.js @@ -1 +1 @@ -alert('Я - JavaScript!'); +alert('Я - JavaScript!'); \ No newline at end of file diff --git a/1-js/3-writing-js/1-debugging-chrome/debugging.view/pow.js b/1-js/3-writing-js/1-debugging-chrome/debugging.view/pow.js index 687cf273..8a9e30db 100755 --- a/1-js/3-writing-js/1-debugging-chrome/debugging.view/pow.js +++ b/1-js/3-writing-js/1-debugging-chrome/debugging.view/pow.js @@ -3,6 +3,6 @@ function pow(x, n) { return x; } - var result = x * pow(x, n-1); + var result = x * pow(x, n - 1); return result; -} +} \ No newline at end of file diff --git a/1-js/3-writing-js/1-debugging-chrome/error.view/pow.js b/1-js/3-writing-js/1-debugging-chrome/error.view/pow.js index 9ef7a1ed..5939b71b 100755 --- a/1-js/3-writing-js/1-debugging-chrome/error.view/pow.js +++ b/1-js/3-writing-js/1-debugging-chrome/error.view/pow.js @@ -3,6 +3,6 @@ function pow(x, n) { return y; } - var result = x * pow(x, n-1); + var result = x * pow(x, n - 1); return result; -} +} \ No newline at end of file diff --git a/1-js/3-writing-js/4-testing/1-pow-nan-spec/_js.view/solution.js b/1-js/3-writing-js/4-testing/1-pow-nan-spec/_js.view/solution.js index ba86c0d8..7a67dac5 100644 --- a/1-js/3-writing-js/4-testing/1-pow-nan-spec/_js.view/solution.js +++ b/1-js/3-writing-js/4-testing/1-pow-nan-spec/_js.view/solution.js @@ -1,9 +1,9 @@ function pow(x, n) { if (n < 0) return NaN; if (Math.round(n) != n) return NaN; - + var result = 1; - for(var i=0; i число 1", function() { - assert.equal( getDateAgo(new Date(2015, 0, 2), 1), 1 ); + assert.equal(getDateAgo(new Date(2015, 0, 2), 1), 1); }); it("2 день до 02.01.2015 -> число 31", function() { - assert.equal( getDateAgo(new Date(2015, 0, 2), 2), 31 ); + assert.equal(getDateAgo(new Date(2015, 0, 2), 2), 31); }); it("100 дней от 02.01.2015 -> число 24", function() { - assert.equal( getDateAgo(new Date(2015, 0, 2), 100), 24 ); + assert.equal(getDateAgo(new Date(2015, 0, 2), 100), 24); }); it("365 дней от 02.01.2015 -> число 2", function() { - assert.equal( getDateAgo(new Date(2015, 0, 2), 365), 2 ); + assert.equal(getDateAgo(new Date(2015, 0, 2), 365), 2); }); it("не меняет переданный объект Date", function() { @@ -23,5 +23,5 @@ describe("getDateAgo", function() { getDateAgo(dateCopy, 100); assert.equal(date.getTime(), dateCopy.getTime()); }); - -}); + +}); \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/5-last-day-of-month/_js.view/solution.js b/1-js/4-data-structures/11-datetime/5-last-day-of-month/_js.view/solution.js index ed998043..4463d1d7 100644 --- a/1-js/4-data-structures/11-datetime/5-last-day-of-month/_js.view/solution.js +++ b/1-js/4-data-structures/11-datetime/5-last-day-of-month/_js.view/solution.js @@ -1,4 +1,4 @@ function getLastDayOfMonth(year, month) { - var date = new Date(year, month+1, 0); + var date = new Date(year, month + 1, 0); return date.getDate(); -} +} \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/5-last-day-of-month/_js.view/test.js b/1-js/4-data-structures/11-datetime/5-last-day-of-month/_js.view/test.js index c1d174e0..f345d490 100644 --- a/1-js/4-data-structures/11-datetime/5-last-day-of-month/_js.view/test.js +++ b/1-js/4-data-structures/11-datetime/5-last-day-of-month/_js.view/test.js @@ -1,13 +1,13 @@ describe("getLastDayOfMonth", function() { it("последний день 01.01.2012 - 31", function() { - assert.equal( getLastDayOfMonth(2012, 0), 31); + assert.equal(getLastDayOfMonth(2012, 0), 31); }); it("последний день 01.02.2012 - 29 (високосный год)", function() { - assert.equal( getLastDayOfMonth(2012, 1), 29); + assert.equal(getLastDayOfMonth(2012, 1), 29); }); it("последний день 01.02.2013 - 28", function() { - assert.equal( getLastDayOfMonth(2013, 1), 28); + assert.equal(getLastDayOfMonth(2013, 1), 28); }); }); \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/_js.view/solution.js b/1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/_js.view/solution.js index df675b10..e9498c8f 100644 --- a/1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/_js.view/solution.js +++ b/1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/_js.view/solution.js @@ -1,13 +1,13 @@ function formatDate(date) { var dd = date.getDate(); - if ( dd < 10 ) dd = '0' + dd; + if (dd < 10) dd = '0' + dd; - var mm = date.getMonth()+1; - if ( mm < 10 ) mm = '0' + mm; + var mm = date.getMonth() + 1; + if (mm < 10) mm = '0' + mm; var yy = date.getFullYear() % 100; - if ( yy < 10 ) yy = '0' + yy; + if (yy < 10) yy = '0' + yy; - return dd+'.'+mm+'.'+yy; -} + return dd + '.' + mm + '.' + yy; +} \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/_js.view/test.js b/1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/_js.view/test.js index 2980944a..79c28e36 100644 --- a/1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/_js.view/test.js +++ b/1-js/4-data-structures/11-datetime/8-format-date-ddmmyy/_js.view/test.js @@ -1,13 +1,13 @@ describe("formatDate", function() { it("правильно форматирует дату 30.01.14", function() { - assert.equal( formatDate(new Date(2014, 0, 30)), '30.01.14'); + assert.equal(formatDate(new Date(2014, 0, 30)), '30.01.14'); }); it("правильно форматирует дату 01.01.01", function() { - assert.equal( formatDate(new Date(2001, 0, 1)), '01.01.01'); + assert.equal(formatDate(new Date(2001, 0, 1)), '01.01.01'); }); it("правильно форматирует дату 01.01.00", function() { - assert.equal( formatDate(new Date(2000, 0, 1)), '01.01.00'); + assert.equal(formatDate(new Date(2000, 0, 1)), '01.01.00'); }); -}); +}); \ No newline at end of file diff --git a/1-js/4-data-structures/11-datetime/9-format-date-relative/_js.view/solution.js b/1-js/4-data-structures/11-datetime/9-format-date-relative/_js.view/solution.js index e332defe..dd68b99a 100644 --- a/1-js/4-data-structures/11-datetime/9-format-date-relative/_js.view/solution.js +++ b/1-js/4-data-structures/11-datetime/9-format-date-relative/_js.view/solution.js @@ -1,34 +1,34 @@ function formatDate(date) { var diff = new Date() - date; // разница в миллисекундах - + if (diff < 1000) { // прошло менее 1 секунды return 'только что'; } - var sec = Math.floor( diff / 1000 ); // округлить diff до секунд - + var sec = Math.floor(diff / 1000); // округлить diff до секунд + if (sec < 60) { return sec + ' сек. назад'; } - - var min = Math.floor( diff / 60000 ); // округлить diff до минут + + var min = Math.floor(diff / 60000); // округлить diff до минут if (min < 60) { - return min + ' мин. назад'; + return min + ' мин. назад'; } // форматировать дату, с учетом того, что месяцы начинаются с 0 var d = date; d = [ - '0'+d.getDate(), - '0'+(d.getMonth()+1), - ''+d.getFullYear(), - '0'+d.getHours(), - '0'+d.getMinutes() + '0' + d.getDate(), + '0' + (d.getMonth() + 1), + '' + d.getFullYear(), + '0' + d.getHours(), + '0' + d.getMinutes() ]; - for(var i=0; i maxlength) ? + return (str.length > maxlength) ? str.slice(0, maxlength - 3) + '...' : str; } \ No newline at end of file diff --git a/1-js/4-data-structures/3-string/3-truncate/_js.view/test.js b/1-js/4-data-structures/3-string/3-truncate/_js.view/test.js index 8c173a49..c14666d6 100644 --- a/1-js/4-data-structures/3-string/3-truncate/_js.view/test.js +++ b/1-js/4-data-structures/3-string/3-truncate/_js.view/test.js @@ -1,14 +1,14 @@ describe("truncate", function() { it("обрезает строку до указанной длины (включая троеточие)", function() { - assert.equal( + assert.equal( truncate("Вот, что мне хотелось бы сказать на эту тему:", 20), "Вот, что мне хоте..." ); }); it("не меняет короткие строки", function() { - assert.equal( - truncate("Всем привет!", 20), + assert.equal( + truncate("Всем привет!", 20), "Всем привет!" ); }); diff --git a/1-js/4-data-structures/5-object-for-in/1-is-empty/_js.view/solution.js b/1-js/4-data-structures/5-object-for-in/1-is-empty/_js.view/solution.js index ffd029a2..7ce59096 100644 --- a/1-js/4-data-structures/5-object-for-in/1-is-empty/_js.view/solution.js +++ b/1-js/4-data-structures/5-object-for-in/1-is-empty/_js.view/solution.js @@ -1,6 +1,6 @@ -function isEmpty(obj) { - for(var key in obj) { +function isEmpty(obj) { + for (var key in obj) { return false; } return true; -} +} \ No newline at end of file diff --git a/1-js/4-data-structures/5-object-for-in/1-is-empty/_js.view/test.js b/1-js/4-data-structures/5-object-for-in/1-is-empty/_js.view/test.js index 8a1e2796..ca9ec19a 100644 --- a/1-js/4-data-structures/5-object-for-in/1-is-empty/_js.view/test.js +++ b/1-js/4-data-structures/5-object-for-in/1-is-empty/_js.view/test.js @@ -1,9 +1,11 @@ describe("isEmpty", function() { it("если объект пустой - возвращает true", function() { - assert.isTrue( isEmpty({}) ); + assert.isTrue(isEmpty({})); }); it("если у объекта есть любое свойство, не важно какое - возвращает false", function() { - assert.isFalse( isEmpty({ anything: false }) ); + assert.isFalse(isEmpty({ + anything: false + })); }); }); \ No newline at end of file diff --git a/1-js/4-data-structures/5-object-for-in/4-multiply-numeric/_js.view/solution.js b/1-js/4-data-structures/5-object-for-in/4-multiply-numeric/_js.view/solution.js index fec115e0..799afaef 100644 --- a/1-js/4-data-structures/5-object-for-in/4-multiply-numeric/_js.view/solution.js +++ b/1-js/4-data-structures/5-object-for-in/4-multiply-numeric/_js.view/solution.js @@ -1,11 +1,11 @@ -function isNumeric(n) { +function isNumeric(n) { return !isNaN(parseFloat(n)) && isFinite(n) } function multiplyNumeric(obj) { - for(var key in obj) { - if (isNumeric( obj[key] )) { + for (var key in obj) { + if (isNumeric(obj[key])) { obj[key] *= 2; } } -} +} \ No newline at end of file diff --git a/1-js/4-data-structures/5-object-for-in/4-multiply-numeric/_js.view/source.js b/1-js/4-data-structures/5-object-for-in/4-multiply-numeric/_js.view/source.js index 558ef93e..7caae25d 100644 --- a/1-js/4-data-structures/5-object-for-in/4-multiply-numeric/_js.view/source.js +++ b/1-js/4-data-structures/5-object-for-in/4-multiply-numeric/_js.view/source.js @@ -1,4 +1,4 @@ -function isNumeric(n) { +function isNumeric(n) { return !isNaN(parseFloat(n)) && isFinite(n) } diff --git a/1-js/4-data-structures/5-object-for-in/4-multiply-numeric/_js.view/test.js b/1-js/4-data-structures/5-object-for-in/4-multiply-numeric/_js.view/test.js index 8bddc36d..73a1c465 100644 --- a/1-js/4-data-structures/5-object-for-in/4-multiply-numeric/_js.view/test.js +++ b/1-js/4-data-structures/5-object-for-in/4-multiply-numeric/_js.view/test.js @@ -6,8 +6,8 @@ describe("multiplyNumeric", function() { title: "Моё меню" }; multiplyNumeric(menu); - assert.equal( menu.width, 400 ); - assert.equal( menu.height, 600 ); - assert.equal( menu.title, "Моё меню" ); + assert.equal(menu.width, 400); + assert.equal(menu.height, 600); + assert.equal(menu.title, "Моё меню"); }); }); \ No newline at end of file diff --git a/1-js/4-data-structures/7-array/10-maximal-subarray/_js.view/solution.js b/1-js/4-data-structures/7-array/10-maximal-subarray/_js.view/solution.js index 727ee23b..5835fb09 100644 --- a/1-js/4-data-structures/7-array/10-maximal-subarray/_js.view/solution.js +++ b/1-js/4-data-structures/7-array/10-maximal-subarray/_js.view/solution.js @@ -1,10 +1,10 @@ function getMaxSubSum(arr) { - var maxSum = 0, partialSum = 0; - for (var i=0; i= a && arr[i] <= b) { result.push(arr[i]); } diff --git a/1-js/4-data-structures/7-array/8-filter-range/_js.view/test.js b/1-js/4-data-structures/7-array/8-filter-range/_js.view/test.js index 0007bbbe..4cb4cbf6 100644 --- a/1-js/4-data-structures/7-array/8-filter-range/_js.view/test.js +++ b/1-js/4-data-structures/7-array/8-filter-range/_js.view/test.js @@ -1,15 +1,15 @@ describe("filterRange", function() { it("не меняет исходный массив", function() { var arr = [5, 4, 3, 8, 0]; - + filterRange(arr, 0, 10); - assert.deepEqual(arr, [5,4,3,8,0]); + assert.deepEqual(arr, [5, 4, 3, 8, 0]); }); it("оставляет только значения указанного интервала", function() { var arr = [5, 4, 3, 8, 0]; - + var result = filterRange(arr, 3, 5); - assert.deepEqual(result, [5,4,3]); + assert.deepEqual(result, [5, 4, 3]); }); -}); +}); \ No newline at end of file diff --git a/1-js/4-data-structures/8-array-methods/1-add-class/_js.view/solution.js b/1-js/4-data-structures/8-array-methods/1-add-class/_js.view/solution.js index 316e3087..ee254d29 100644 --- a/1-js/4-data-structures/8-array-methods/1-add-class/_js.view/solution.js +++ b/1-js/4-data-structures/8-array-methods/1-add-class/_js.view/solution.js @@ -1,11 +1,11 @@ function addClass(obj, cls) { var classes = obj.className ? obj.className.split(' ') : []; - for(var i=0; i b) { - arr.splice(i--, 1); - } + for (var i = 0; i < arr.length; i++) { + var val = arr[i]; + if (val < a || val > b) { + arr.splice(i--, 1); } + } -} +} \ No newline at end of file diff --git a/1-js/4-data-structures/9-array-iteration/2-partial-sums-array/_js.view/test.js b/1-js/4-data-structures/9-array-iteration/2-partial-sums-array/_js.view/test.js index 282357d9..74a170a6 100644 --- a/1-js/4-data-structures/9-array-iteration/2-partial-sums-array/_js.view/test.js +++ b/1-js/4-data-structures/9-array-iteration/2-partial-sums-array/_js.view/test.js @@ -1,18 +1,18 @@ describe("getSums", function() { it("частичные суммы [1,2,3,4,5] равны [1,3,6,10,15]", function() { - assert.deepEqual( getSums([1,2,3,4,5]), [1,3,6,10,15]); + assert.deepEqual(getSums([1, 2, 3, 4, 5]), [1, 3, 6, 10, 15]); }); it("частичные суммы [-2,-1,0,1] равны [-2,-3,-3,-2]", function() { - assert.deepEqual( getSums([-2,-1,0,1]), [-2,-3,-3,-2]); + assert.deepEqual(getSums([-2, -1, 0, 1]), [-2, -3, -3, -2]); }); it("частичные суммы [] равны []", function() { - assert.deepEqual( getSums([]), [] ); + assert.deepEqual(getSums([]), []); }); it("частичные суммы [1] равны [1]", function() { - assert.deepEqual( getSums([1]), [1] ); + assert.deepEqual(getSums([1]), [1]); }); -}); +}); \ No newline at end of file diff --git a/1-js/5-functions-closures/4-closures-usage/2-stringbuffer/_js.view/solution.js b/1-js/5-functions-closures/4-closures-usage/2-stringbuffer/_js.view/solution.js index e1f3870b..bda57778 100644 --- a/1-js/5-functions-closures/4-closures-usage/2-stringbuffer/_js.view/solution.js +++ b/1-js/5-functions-closures/4-closures-usage/2-stringbuffer/_js.view/solution.js @@ -1,10 +1,10 @@ function makeBuffer() { - var text = ''; - + var text = ''; + return function(piece) { if (arguments.length == 0) { // вызов без аргументов return text; } - text += piece; + text += piece; }; }; \ No newline at end of file diff --git a/1-js/5-functions-closures/4-closures-usage/2-stringbuffer/_js.view/test.js b/1-js/5-functions-closures/4-closures-usage/2-stringbuffer/_js.view/test.js index 45aee8dc..df3c04f9 100644 --- a/1-js/5-functions-closures/4-closures-usage/2-stringbuffer/_js.view/test.js +++ b/1-js/5-functions-closures/4-closures-usage/2-stringbuffer/_js.view/test.js @@ -4,19 +4,18 @@ beforeEach(function() { }); it("возвращает пустую строку по умолчанию", function() { - assert.strictEqual( buffer(), ""); + assert.strictEqual(buffer(), ""); }); it("добавляет аргументы в буффер", function() { - buffer('Замыкания'); - buffer(' Использовать'); - buffer(' Нужно!'); - assert.equal( buffer(), 'Замыкания Использовать Нужно!'); + buffer('Замыкания'); + buffer(' Использовать'); + buffer(' Нужно!'); + assert.equal(buffer(), 'Замыкания Использовать Нужно!'); }); it("приводит всё к строке", function() { buffer(null); buffer(false); - assert.equal( buffer(), "nullfalse"); -}); - + assert.equal(buffer(), "nullfalse"); +}); \ No newline at end of file diff --git a/1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/_js.view/solution.js b/1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/_js.view/solution.js index 6b044530..b7fbc6f6 100644 --- a/1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/_js.view/solution.js +++ b/1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/_js.view/solution.js @@ -1,11 +1,11 @@ function makeBuffer() { - var text = ''; - + var text = ''; + function buffer(piece) { if (arguments.length == 0) { // вызов без аргументов return text; } - text += piece; + text += piece; }; buffer.clear = function() { diff --git a/1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/_js.view/test.js b/1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/_js.view/test.js index e9c1b8fc..0543cc90 100644 --- a/1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/_js.view/test.js +++ b/1-js/5-functions-closures/4-closures-usage/3-stringbuffer-with-clear/_js.view/test.js @@ -5,20 +5,20 @@ beforeEach(function() { }); it("возвращает пустую строку по умолчанию", function() { - assert.strictEqual( buffer(), ""); + assert.strictEqual(buffer(), ""); }); it("добавляет аргументы в буффер", function() { - buffer('Замыкания'); - buffer(' Использовать'); - buffer(' Нужно!'); - assert.equal( buffer(), 'Замыкания Использовать Нужно!'); + buffer('Замыкания'); + buffer(' Использовать'); + buffer(' Нужно!'); + assert.equal(buffer(), 'Замыкания Использовать Нужно!'); }); it("приводит всё к строке", function() { buffer(null); buffer(false); - assert.equal( buffer(), "nullfalse"); + assert.equal(buffer(), "nullfalse"); }); it("очищает буфер вызовом clear", function() { @@ -26,5 +26,5 @@ it("очищает буфер вызовом clear", function() { buffer.clear(); buffer("первый"); buffer("второй"); - assert.equal( buffer(), "первыйвторой"); -}); + assert.equal(buffer(), "первыйвторой"); +}); \ No newline at end of file diff --git a/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/solution.js b/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/solution.js index 45f3087d..90cf2689 100644 --- a/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/solution.js +++ b/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/solution.js @@ -1,8 +1,8 @@ function filter(arr, func) { var result = []; - for(var i=0; i=a && x <= b; + return x >= a && x <= b; }; -} +} \ No newline at end of file diff --git a/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/source.js b/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/source.js index 677f2997..e512f26c 100644 --- a/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/source.js +++ b/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/source.js @@ -8,5 +8,4 @@ function inBetween(a, b) { function inArray(arr) { // ...ваш код... -} - +} \ No newline at end of file diff --git a/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/test.js b/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/test.js index 1cefcabd..f03fb743 100644 --- a/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/test.js +++ b/1-js/5-functions-closures/4-closures-usage/5-filter-through-function/_js.view/test.js @@ -10,10 +10,10 @@ describe("inArray", function() { before(function() { checkInArr = inArray(arr); }); - + it("возвращает фильтр для значений в массиве", function() { - assert.isTrue( checkInArr(5) ); - assert.isFalse( checkInArr(0) ); + assert.isTrue(checkInArr(5)); + assert.isFalse(checkInArr(0)); }); }); @@ -26,8 +26,8 @@ describe("inBetween", function() { }); it("возвращает фильтрa для значений в промежутке", function() { - assert.isTrue( checkBetween36(5) ); - assert.isFalse( checkBetween36(0) ); + assert.isTrue(checkBetween36(5)); + assert.isFalse(checkBetween36(0)); }); }); @@ -35,20 +35,24 @@ describe("inBetween", function() { describe("filter", function() { it("фильтрует через func", function() { - assert.deepEqual( filter(arr, function(a) { return a % 2 == 0; }), [2,4,6] ); + assert.deepEqual(filter(arr, function(a) { + return a % 2 == 0; + }), [2, 4, 6]); }); it("не модифицирует исходный массив", function() { - filter(arr, function(a) { return a % 2 == 0; }); - assert.deepEqual( arr, [1, 2, 3, 4, 5, 6, 7] ); + filter(arr, function(a) { + return a % 2 == 0; + }); + assert.deepEqual(arr, [1, 2, 3, 4, 5, 6, 7]); }); it("поддерживает фильтр inBetween", function() { - assert.deepEqual( filter(arr,inBetween(3,6)), [3,4,5,6]); + assert.deepEqual(filter(arr, inBetween(3, 6)), [3, 4, 5, 6]); }); it("поддерживает фильтр inArray", function() { - assert.deepEqual( filter(arr, inArray([1,2,3])), [1,2,3]); + assert.deepEqual(filter(arr, inArray([1, 2, 3])), [1, 2, 3]); }); -}); +}); \ No newline at end of file diff --git a/1-js/5-functions-closures/4-closures-usage/6-make-army/_js.view/solution.js b/1-js/5-functions-closures/4-closures-usage/6-make-army/_js.view/solution.js index b19f094d..2455c301 100644 --- a/1-js/5-functions-closures/4-closures-usage/6-make-army/_js.view/solution.js +++ b/1-js/5-functions-closures/4-closures-usage/6-make-army/_js.view/solution.js @@ -2,18 +2,18 @@ function makeArmy() { var shooters = []; - for(var i=0; i<10; i++) { + for (var i = 0; i < 10; i++) { var shooter = (function(x) { return function() { - alert( x ); + alert(x); }; })(i); - shooters.push(shooter); + shooters.push(shooter); } - return shooters; -} + return shooters; +} \ No newline at end of file diff --git a/1-js/5-functions-closures/4-closures-usage/6-make-army/_js.view/source.js b/1-js/5-functions-closures/4-closures-usage/6-make-army/_js.view/source.js index a8678c17..f9058674 100644 --- a/1-js/5-functions-closures/4-closures-usage/6-make-army/_js.view/source.js +++ b/1-js/5-functions-closures/4-closures-usage/6-make-army/_js.view/source.js @@ -2,7 +2,7 @@ function makeArmy() { var shooters = []; - for(var i=0; i<10; i++) { + for (var i = 0; i < 10; i++) { var shooter = function() { // функция-стрелок alert(i); // выводит свой номер }; @@ -10,4 +10,4 @@ function makeArmy() { } return shooters; -} +} \ No newline at end of file diff --git a/1-js/5-functions-closures/5-closures-module/hello-conflict.view/hello.js b/1-js/5-functions-closures/5-closures-module/hello-conflict.view/hello.js index 09c9f943..56fa804b 100755 --- a/1-js/5-functions-closures/5-closures-module/hello-conflict.view/hello.js +++ b/1-js/5-functions-closures/5-closures-module/hello-conflict.view/hello.js @@ -7,4 +7,4 @@ function showMessage() { } // выводим сообщение -showMessage(); +showMessage(); \ No newline at end of file diff --git a/1-js/5-functions-closures/5-closures-module/hello-module.view/hello.js b/1-js/5-functions-closures/5-closures-module/hello-module.view/hello.js index c517f401..be40a230 100755 --- a/1-js/5-functions-closures/5-closures-module/hello-module.view/hello.js +++ b/1-js/5-functions-closures/5-closures-module/hello-module.view/hello.js @@ -1,5 +1,5 @@ (function() { - + // глобальная переменная нашего скрипта var message = "Привет"; diff --git a/1-js/6-objects-more/1-object-methods/7-calculator/_js.view/solution.js b/1-js/6-objects-more/1-object-methods/7-calculator/_js.view/solution.js index ca2ca33b..5f276b9c 100644 --- a/1-js/6-objects-more/1-object-methods/7-calculator/_js.view/solution.js +++ b/1-js/6-objects-more/1-object-methods/7-calculator/_js.view/solution.js @@ -11,5 +11,4 @@ var calculator = { this.a = +prompt('a?', 0); this.b = +prompt('b?', 0); } -} - +} \ No newline at end of file diff --git a/1-js/6-objects-more/1-object-methods/7-calculator/_js.view/test.js b/1-js/6-objects-more/1-object-methods/7-calculator/_js.view/test.js index 761f881e..cd2c9b05 100644 --- a/1-js/6-objects-more/1-object-methods/7-calculator/_js.view/test.js +++ b/1-js/6-objects-more/1-object-methods/7-calculator/_js.view/test.js @@ -9,11 +9,11 @@ describe("calculator", function() { }); it("при вводе 2 и 3 сумма равна 5", function() { - assert.equal( calculator.sum(), 5 ); + assert.equal(calculator.sum(), 5); }); it("при вводе 2 и 3 произведение равно 6", function() { - assert.equal( calculator.mul(), 6 ); + assert.equal(calculator.mul(), 6); }); }); diff --git a/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/_js.view/solution.js b/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/_js.view/solution.js index 6e40b871..3b51b2e6 100644 --- a/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/_js.view/solution.js +++ b/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/_js.view/solution.js @@ -1,7 +1,7 @@ function Calculator() { this.read = function() { - this.a = +prompt('a?', 0); + this.a = +prompt('a?', 0); this.b = +prompt('b?', 0); }; diff --git a/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/_js.view/test.js b/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/_js.view/test.js index 74f1186e..ef881c45 100644 --- a/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/_js.view/test.js +++ b/1-js/6-objects-more/3-constructor-new/2-calculator-constructor/_js.view/test.js @@ -11,11 +11,11 @@ describe("calculator", function() { }); it("при вводе 2 и 3 сумма равна 5", function() { - assert.equal( calculator.sum(), 5 ); + assert.equal(calculator.sum(), 5); }); it("при вводе 2 и 3 произведение равно 6", function() { - assert.equal( calculator.mul(), 6 ); + assert.equal(calculator.mul(), 6); }); }); diff --git a/1-js/6-objects-more/3-constructor-new/3-accumulator/_js.view/solution.js b/1-js/6-objects-more/3-constructor-new/3-accumulator/_js.view/solution.js index 425f7bdd..bd744597 100644 --- a/1-js/6-objects-more/3-constructor-new/3-accumulator/_js.view/solution.js +++ b/1-js/6-objects-more/3-constructor-new/3-accumulator/_js.view/solution.js @@ -5,4 +5,4 @@ function Accumulator(startingValue) { this.value += +prompt('Сколько добавлять будем?', 0); }; -} +} \ No newline at end of file diff --git a/1-js/6-objects-more/3-constructor-new/3-accumulator/_js.view/test.js b/1-js/6-objects-more/3-constructor-new/3-accumulator/_js.view/test.js index 1ab40633..aa651b11 100644 --- a/1-js/6-objects-more/3-constructor-new/3-accumulator/_js.view/test.js +++ b/1-js/6-objects-more/3-constructor-new/3-accumulator/_js.view/test.js @@ -13,25 +13,25 @@ describe("Accumulator(1)", function() { }); it("начальное значение 1", function() { - assert.equal( accumulator.value, 1 ); + assert.equal(accumulator.value, 1); }); it("после ввода 0 значение 1", function() { prompt.returns("0"); accumulator.read(); - assert.equal( accumulator.value, 1 ); + assert.equal(accumulator.value, 1); }); it("после ввода 1 значение 2", function() { prompt.returns("1"); accumulator.read(); - assert.equal( accumulator.value, 2 ); + assert.equal(accumulator.value, 2); }); it("после ввода 2 значение 4", function() { prompt.returns("2"); accumulator.read(); - assert.equal( accumulator.value, 4 ); + assert.equal(accumulator.value, 4); }); }); \ No newline at end of file diff --git a/1-js/6-objects-more/3-constructor-new/4-calculator-extendable/_js.view/solution.js b/1-js/6-objects-more/3-constructor-new/4-calculator-extendable/_js.view/solution.js index 175c5704..4bf9f22b 100644 --- a/1-js/6-objects-more/3-constructor-new/4-calculator-extendable/_js.view/solution.js +++ b/1-js/6-objects-more/3-constructor-new/4-calculator-extendable/_js.view/solution.js @@ -16,7 +16,7 @@ function Calculator() { op = split[1], b = +split[2] - if(!methods[op] || isNaN(a) || isNaN(b)) { + if (!methods[op] || isNaN(a) || isNaN(b)) { return NaN; } @@ -26,4 +26,4 @@ function Calculator() { this.addMethod = function(name, func) { methods[name] = func; }; -} +} \ No newline at end of file diff --git a/1-js/6-objects-more/3-constructor-new/4-calculator-extendable/_js.view/test.js b/1-js/6-objects-more/3-constructor-new/4-calculator-extendable/_js.view/test.js index 50a30d5c..2c6891a9 100644 --- a/1-js/6-objects-more/3-constructor-new/4-calculator-extendable/_js.view/test.js +++ b/1-js/6-objects-more/3-constructor-new/4-calculator-extendable/_js.view/test.js @@ -4,23 +4,23 @@ before(function() { }); it("calculate(12 + 34) = 46", function() { - assert.equal( calculator.calculate("12 + 34"), 46 ); + assert.equal(calculator.calculate("12 + 34"), 46); }); it("calculate(34 - 12) = 22", function() { - assert.equal( calculator.calculate("34 - 12"), 22 ); + assert.equal(calculator.calculate("34 - 12"), 22); }); it("добавили умножение: calculate(2 * 3) = 6", function() { calculator.addMethod("*", function(a, b) { return a * b; }); - assert.equal( calculator.calculate("2 * 3"), 6 ); + assert.equal(calculator.calculate("2 * 3"), 6); }); it("добавили возведение в степень: calculate(2 ** 3) = 8", function() { calculator.addMethod("**", function(a, b) { return Math.pow(a, b); }); - assert.equal( calculator.calculate("2 ** 3"), 8 ); -}); + assert.equal(calculator.calculate("2 ** 3"), 8); +}); \ No newline at end of file diff --git a/1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/_js.view/solution.js b/1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/_js.view/solution.js index f92594e2..03b48506 100644 --- a/1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/_js.view/solution.js +++ b/1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/_js.view/solution.js @@ -1,4 +1,4 @@ -function Article() { +function Article() { this.created = new Date; Article.count++; // увеличиваем счетчик при каждом вызове @@ -8,4 +8,4 @@ Article.count = 0; // начальное значение Article.showStats = function() { alert('Всего: ' + this.count + ', Последняя: ' + this.last); -}; +}; \ No newline at end of file diff --git a/1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/_js.view/test.js b/1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/_js.view/test.js index 04f7d30b..7bf37039 100644 --- a/1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/_js.view/test.js +++ b/1-js/6-objects-more/5-static-properties-and-methods/1-objects-counter/_js.view/test.js @@ -3,7 +3,7 @@ describe("Article.showStats", function() { sinon.stub(window, "alert"); this.clock = sinon.useFakeTimers(); }); - + after(function() { window.alert.restore(); this.clock.restore(); @@ -13,9 +13,9 @@ describe("Article.showStats", function() { new Article(); this.clock.tick(100); new Article(); - Article.showStats(); - - assert( alert.calledWith('Всего: 2, Последняя: ' + new Date() ) ); + Article.showStats(); + + assert(alert.calledWith('Всего: 2, Последняя: ' + new Date())); }); it("и ещё одна статья...", function() { @@ -23,6 +23,6 @@ describe("Article.showStats", function() { new Article(); Article.showStats(); - assert( alert.calledWith('Всего: 3, Последняя: ' + new Date() ) ); + assert(alert.calledWith('Всего: 3, Последняя: ' + new Date())); }); }); \ No newline at end of file diff --git a/1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/_js.view/solution.js b/1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/_js.view/solution.js index 41cf927e..b49aeb62 100644 --- a/1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/_js.view/solution.js +++ b/1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/_js.view/solution.js @@ -1,3 +1,3 @@ function applyAll(func) { - return func.apply(this, [].slice.call(arguments, 1) ); + return func.apply(this, [].slice.call(arguments, 1)); } \ No newline at end of file diff --git a/1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/_js.view/test.js b/1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/_js.view/test.js index 7de18f29..871a19a7 100644 --- a/1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/_js.view/test.js +++ b/1-js/6-objects-more/6-call-apply/2-apply-function-skip-first-argument/_js.view/test.js @@ -2,14 +2,14 @@ describe("applyAll", function() { it("применяет функцию ко всем аргументам, начиная со 2го", function() { var min = applyAll(Math.min, 1, 2, 3); - assert.equal( min, 1 ); + assert.equal(min, 1); }); it("при отсутствии аргументов просто вызывает функцию", function() { var spy = sinon.spy(); applyAll(spy); - assert( spy.calledOnce ); - assert.equal( spy.firstCall.args.length, 0 ); + assert(spy.calledOnce); + assert.equal(spy.firstCall.args.length, 0); }); }); \ No newline at end of file diff --git a/1-js/6-objects-more/8-decorators/1-logging-decorator/_js.view/solution.js b/1-js/6-objects-more/8-decorators/1-logging-decorator/_js.view/solution.js index 22c190ed..1aa8f279 100644 --- a/1-js/6-objects-more/8-decorators/1-logging-decorator/_js.view/solution.js +++ b/1-js/6-objects-more/8-decorators/1-logging-decorator/_js.view/solution.js @@ -2,8 +2,8 @@ function makeLogging(f, log) { function wrapper(a) { log.push(a); - return f.call(this, a); + return f.call(this, a); } return wrapper; -} +} \ No newline at end of file diff --git a/1-js/6-objects-more/8-decorators/1-logging-decorator/_js.view/test.js b/1-js/6-objects-more/8-decorators/1-logging-decorator/_js.view/test.js index 67480fdc..2257ee89 100644 --- a/1-js/6-objects-more/8-decorators/1-logging-decorator/_js.view/test.js +++ b/1-js/6-objects-more/8-decorators/1-logging-decorator/_js.view/test.js @@ -4,45 +4,47 @@ describe("makeLogging", function() { var log = []; work = makeLogging(work, log); - assert.deepEqual( log, []); + assert.deepEqual(log, []); work(1); - assert.deepEqual( log, [1]); + assert.deepEqual(log, [1]); work(2); - assert.deepEqual( log, [1, 2]); + assert.deepEqual(log, [1, 2]); }); it("передаёт вызов функции, возвращает её результат", function() { var log = []; - + function work(x) { - return x*2; + return x * 2; } work = sinon.spy(work); var spy = work; work = makeLogging(work, log); - - assert.equal( work(1), 2 ); + + assert.equal(work(1), 2); assert(spy.calledWith(1)); }); - + it("сохраняет контекст вызова для методов объекта", function() { var log = []; - + var calculator = { - double: function(x) { return x*2; } + double: function(x) { + return x * 2; + } } calculator.double = sinon.spy(calculator.double); var spy = calculator.double; calculator.double = makeLogging(calculator.double, log); - assert.equal( calculator.double(1), 2 ); + assert.equal(calculator.double(1), 2); assert(spy.calledWith(1)); assert(spy.calledOn(calculator)); }); -}); +}); \ No newline at end of file diff --git a/1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/_js.view/solution.js b/1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/_js.view/solution.js index f8b18460..f7052f65 100644 --- a/1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/_js.view/solution.js +++ b/1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/_js.view/solution.js @@ -1,15 +1,9 @@ function makeLogging(f, log) { - + function wrapper() { log.push([].slice.call(arguments)); - return f.apply(this, arguments); + return f.apply(this, arguments); } return wrapper; -} - - - - - - +} \ No newline at end of file diff --git a/1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/_js.view/test.js b/1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/_js.view/test.js index 9abc8ec5..eb29c837 100644 --- a/1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/_js.view/test.js +++ b/1-js/6-objects-more/8-decorators/2-logging-decorator-arguments/_js.view/test.js @@ -1,22 +1,26 @@ - describe("makeLogging", function() { it("записывает вызовы в массив log", function() { var work = sinon.spy(); var log = []; work = makeLogging(work, log); - assert.deepEqual( log, []); + assert.deepEqual(log, []); work(1, 2); - assert.deepEqual( log, [[1, 2]]); + assert.deepEqual(log, [ + [1, 2] + ]); work(3, 4); - assert.deepEqual( log, [[1, 2], [3,4]]); + assert.deepEqual(log, [ + [1, 2], + [3, 4] + ]); }); it("передаёт вызов функции, возвращает её результат", function() { var log = []; - + function sum(a, b) { return a + b; } @@ -24,26 +28,28 @@ describe("makeLogging", function() { sum = sinon.spy(sum); var spy = sum; sum = makeLogging(sum, log); - - assert.equal( sum(1, 2), 3 ); + + assert.equal(sum(1, 2), 3); assert(spy.calledWith(1, 2)); }); - + it("сохраняет контекст вызова для методов объекта", function() { var log = []; - + var calculator = { - sum: function(a, b) { return a + b; } + sum: function(a, b) { + return a + b; + } } calculator.sum = sinon.spy(calculator.sum); var spy = calculator.sum; calculator.sum = makeLogging(calculator.sum, log); - assert.equal( calculator.sum(1, 2), 3 ); + assert.equal(calculator.sum(1, 2), 3); assert(spy.calledWith(1, 2)); assert(spy.calledOn(calculator)); }); -}); +}); \ No newline at end of file diff --git a/1-js/6-objects-more/8-decorators/3-caching-decorator/_js.view/solution.js b/1-js/6-objects-more/8-decorators/3-caching-decorator/_js.view/solution.js index 32109e18..dc865601 100644 --- a/1-js/6-objects-more/8-decorators/3-caching-decorator/_js.view/solution.js +++ b/1-js/6-objects-more/8-decorators/3-caching-decorator/_js.view/solution.js @@ -1,8 +1,8 @@ -function makeCaching(f) { - var cache = {}; +function makeCaching(f) { + var cache = {}; return function(x) { - if (!(x in cache)) { + if (!(x in cache)) { cache[x] = f.call(this, x); } return cache[x]; diff --git a/1-js/6-objects-more/8-decorators/3-caching-decorator/_js.view/test.js b/1-js/6-objects-more/8-decorators/3-caching-decorator/_js.view/test.js index 3bf702d7..aed6f0fe 100644 --- a/1-js/6-objects-more/8-decorators/3-caching-decorator/_js.view/test.js +++ b/1-js/6-objects-more/8-decorators/3-caching-decorator/_js.view/test.js @@ -1,8 +1,8 @@ describe("makeCaching", function() { it("запоминает предыдущее значение функции с таким аргументом", function() { - function f(x) { - return Math.random()*x; + function f(x) { + return Math.random() * x; } f = makeCaching(f); @@ -10,10 +10,10 @@ describe("makeCaching", function() { var a = f(1); var b = f(1); assert.equal(a, b); - - var anotherValue = f(2); + + var anotherValue = f(2); // почти наверняка другое значение - assert.notEqual( a, anotherValue ); + assert.notEqual(a, anotherValue); }); it("сохраняет контекст вызова", function() { @@ -24,8 +24,8 @@ describe("makeCaching", function() { var spy = obj.spy; obj.spy = makeCaching(obj.spy); obj.spy(123); - assert( spy.calledWith(123) ); - assert( spy.calledOn(obj) ); + assert(spy.calledWith(123)); + assert(spy.calledOn(obj)); }); }); \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/7-delay/_js.view/test.js b/1-js/7-js-misc/3-setTimeout-setInterval/7-delay/_js.view/test.js index 457ccf7f..964ccf60 100644 --- a/1-js/7-js-misc/3-setTimeout-setInterval/7-delay/_js.view/test.js +++ b/1-js/7-js-misc/3-setTimeout-setInterval/7-delay/_js.view/test.js @@ -9,11 +9,12 @@ describe("delay", function() { it("вызывает функцию через указанный таймаут", function() { var start = Date.now(); + function f(x) { assert.equal(Date.now() - start, 1000); } f = sinon.spy(f); - + var f1000 = delay(f, 1000); f1000("test"); this.clock.tick(2000); @@ -30,16 +31,16 @@ describe("delay", function() { assert.equal(Date.now() - start, 1500); } }; - + user.sayHi = sinon.spy(user.sayHi); - + var spy = user.sayHi; user.sayHi = delay(user.sayHi, 1500); - + user.sayHi("Привет", "Вася"); - + this.clock.tick(2000); - + assert(spy.calledOnce, 'проверка calledOnce не сработала'); }); }); \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/_js.view/solution.js b/1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/_js.view/solution.js index 1993b2e4..e52efb87 100644 --- a/1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/_js.view/solution.js +++ b/1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/_js.view/solution.js @@ -11,7 +11,9 @@ function debounce(f, ms) { state = COOLDOWN; - setTimeout(function() { state = null }, ms); + setTimeout(function() { + state = null + }, ms); } -} +} \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/_js.view/test.js b/1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/_js.view/test.js index 857f4dca..860cd6dd 100644 --- a/1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/_js.view/test.js +++ b/1-js/7-js-misc/3-setTimeout-setInterval/8-debounce/_js.view/test.js @@ -2,23 +2,32 @@ describe("debounce", function() { before(function() { this.clock = sinon.useFakeTimers(); }); - + after(function() { this.clock.restore(); }); it("вызывает функцию не чаще чем раз в ms миллисекунд", function() { var log = ''; - function f(a) { log += a; } + + function f(a) { + log += a; + } f = debounce(f, 1000); f(1); // выполнится сразу же f(2); // игнор - setTimeout(function() { f(3) }, 100); // игнор (рановато) - setTimeout(function() { f(4) }, 1100); // выполнится (таймаут прошёл) - setTimeout(function() { f(5) }, 1500); // игнор + setTimeout(function() { + f(3) + }, 100); // игнор (рановато) + setTimeout(function() { + f(4) + }, 1100); // выполнится (таймаут прошёл) + setTimeout(function() { + f(5) + }, 1500); // игнор this.clock.tick(5000); assert.equal(log, "14"); @@ -26,13 +35,13 @@ describe("debounce", function() { it("сохраняет контекст вызова", function() { var obj = { - f: function() { + f: function() { assert.equal(this, obj); } }; - + obj.f = debounce(obj.f, 1000); obj.f("test"); - }); + }); }); \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/_js.view/solution.js b/1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/_js.view/solution.js index 7d01975d..a8011c6b 100644 --- a/1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/_js.view/solution.js +++ b/1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/_js.view/solution.js @@ -1,29 +1,29 @@ function throttle(func, ms) { - + var isThrottled = false, savedArgs, savedThis; - + function wrapper() { - - if (isThrottled) { + + if (isThrottled) { savedArgs = arguments; savedThis = this; return; } - - func.apply(this, arguments); - + + func.apply(this, arguments); + isThrottled = true; - + setTimeout(function() { - isThrottled = false; + isThrottled = false; if (savedArgs) { wrapper.apply(savedThis, savedArgs); savedArgs = savedThis = null; } - }, ms); + }, ms); } - + return wrapper; -} +} \ No newline at end of file diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/_js.view/test.js b/1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/_js.view/test.js index c11a0f74..1627e857 100644 --- a/1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/_js.view/test.js +++ b/1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/_js.view/test.js @@ -1,7 +1,10 @@ describe("throttle(f, 1000)", function() { var f1000; var log = ""; - function f(a) { log += a; } + + function f(a) { + log += a; + } before(function() { f1000 = throttle(f, 1000); @@ -19,9 +22,9 @@ describe("throttle(f, 1000)", function() { // через 1000 мс запланирован вызов с последним аргументом assert.equal(log, "1"); // пока что сработал только первый вызов - + this.clock.tick(1000); // прошло 1000мс времени - assert.equal(log, "13"); // log==13, т.к. сработал вызов f1000(3) + assert.equal(log, "13"); // log==13, т.к. сработал вызов f1000(3) }); it("тормозит третье срабатывание до 1000мс после второго", function() { @@ -31,7 +34,7 @@ describe("throttle(f, 1000)", function() { f1000(5); // (тормозим, с последнего вызова прошло 200мс - менее 1000мс) this.clock.tick(700); f1000(6); // (тормозим, с последнего вызова прошло 900мс - менее 1000мс) - + this.clock.tick(100); // сработал вызов с 6 assert.equal(log, "136"); diff --git a/1-js/9-prototypes/5-class-inheritance/3-clock-class/clock.js b/1-js/9-prototypes/5-class-inheritance/3-clock-class/clock.js index a3b119c8..34fb026d 100755 --- a/1-js/9-prototypes/5-class-inheritance/3-clock-class/clock.js +++ b/1-js/9-prototypes/5-class-inheritance/3-clock-class/clock.js @@ -1,4 +1,3 @@ - function Clock(options) { this._template = options.template; } @@ -30,4 +29,4 @@ Clock.prototype.start = function() { this._timer = setInterval(function() { self._render(); }, 1000); -}; +}; \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/3-clock-class/solution.view/clock.js b/1-js/9-prototypes/5-class-inheritance/3-clock-class/solution.view/clock.js index a3b119c8..34fb026d 100755 --- a/1-js/9-prototypes/5-class-inheritance/3-clock-class/solution.view/clock.js +++ b/1-js/9-prototypes/5-class-inheritance/3-clock-class/solution.view/clock.js @@ -1,4 +1,3 @@ - function Clock(options) { this._template = options.template; } @@ -30,4 +29,4 @@ Clock.prototype.start = function() { this._timer = setInterval(function() { self._render(); }, 1000); -}; +}; \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/3-clock-class/source.view/clock.js b/1-js/9-prototypes/5-class-inheritance/3-clock-class/source.view/clock.js index bb9662fc..87f457c6 100755 --- a/1-js/9-prototypes/5-class-inheritance/3-clock-class/source.view/clock.js +++ b/1-js/9-prototypes/5-class-inheritance/3-clock-class/source.view/clock.js @@ -29,4 +29,4 @@ function Clock(options) { timer = setInterval(render, 1000); } -} +} \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/extended-clock.js b/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/extended-clock.js index 75a8478d..3e0bf9bd 100755 --- a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/extended-clock.js +++ b/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/extended-clock.js @@ -1,5 +1,3 @@ - - function ExtendedClock(options) { Clock.apply(this, arguments); this._precision = +options.precision || 1000; @@ -13,4 +11,4 @@ ExtendedClock.prototype.start = function() { this._timer = setInterval(function() { self._render(); }, this._precision); -}; +}; \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.view/clock.js b/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.view/clock.js index a3b119c8..34fb026d 100755 --- a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.view/clock.js +++ b/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.view/clock.js @@ -1,4 +1,3 @@ - function Clock(options) { this._template = options.template; } @@ -30,4 +29,4 @@ Clock.prototype.start = function() { this._timer = setInterval(function() { self._render(); }, 1000); -}; +}; \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.view/extended-clock.js b/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.view/extended-clock.js index 75a8478d..3e0bf9bd 100755 --- a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.view/extended-clock.js +++ b/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/solution.view/extended-clock.js @@ -1,5 +1,3 @@ - - function ExtendedClock(options) { Clock.apply(this, arguments); this._precision = +options.precision || 1000; @@ -13,4 +11,4 @@ ExtendedClock.prototype.start = function() { this._timer = setInterval(function() { self._render(); }, this._precision); -}; +}; \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/source.view/clock.js b/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/source.view/clock.js index a3b119c8..34fb026d 100755 --- a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/source.view/clock.js +++ b/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/source.view/clock.js @@ -1,4 +1,3 @@ - function Clock(options) { this._template = options.template; } @@ -30,4 +29,4 @@ Clock.prototype.start = function() { this._timer = setInterval(function() { self._render(); }, 1000); -}; +}; \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/source.view/extended-clock.js b/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/source.view/extended-clock.js index 05d93d88..3b3efe1e 100755 --- a/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/source.view/extended-clock.js +++ b/1-js/9-prototypes/5-class-inheritance/4-clock-class-extended/source.view/extended-clock.js @@ -3,10 +3,11 @@ function extend(Child, Parent) { Child.prototype.constructor = Child; Child.parent = Parent.prototype; } + function inherit(proto) { function F() {} F.prototype = proto; return new F; } -// ваш код \ No newline at end of file +// ваш код \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/solution.view/menu.js b/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/solution.view/menu.js index 9180dec9..9a91f30e 100755 --- a/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/solution.view/menu.js +++ b/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/solution.view/menu.js @@ -14,7 +14,7 @@ Menu.prototype.close = function() { }; Menu.prototype._stateAsString = function() { - switch(this._state) { + switch (this._state) { case this.STATE_OPEN: return 'открыто'; @@ -24,5 +24,5 @@ Menu.prototype._stateAsString = function() { }; Menu.prototype.showState = function() { - alert( this._stateAsString() ); + alert(this._stateAsString()); } \ No newline at end of file diff --git a/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/source.view/menu.js b/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/source.view/menu.js index 9de39aa5..996329ad 100755 --- a/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/source.view/menu.js +++ b/1-js/9-prototypes/5-class-inheritance/5-menu-timer-animated/source.view/menu.js @@ -14,7 +14,7 @@ Menu.prototype.close = function() { }; Menu.prototype._stateAsString = function() { - switch(this._state) { + switch (this._state) { case Menu.STATE_OPEN: return 'открыто'; @@ -24,5 +24,5 @@ Menu.prototype._stateAsString = function() { }; Menu.prototype.showState = function() { - alert( this._stateAsString() ); + alert(this._stateAsString()); }; \ No newline at end of file diff --git a/12-extra/5-setImmediate/setImmediate.view/setImmediate.js b/12-extra/5-setImmediate/setImmediate.view/setImmediate.js index bde5f522..771fa684 100644 --- a/12-extra/5-setImmediate/setImmediate.view/setImmediate.js +++ b/12-extra/5-setImmediate/setImmediate.view/setImmediate.js @@ -1,27 +1,30 @@ if (!window.setImmediate) window.setImmediate = (function() { - var head = { }, tail = head; // очередь вызовов, 1-связный список + var head = {}, + tail = head; // очередь вызовов, 1-связный список var ID = Math.random(); // уникальный идентификатор function onmessage(e) { - if(e.data != ID) return; // не наше сообщение + if (e.data != ID) return; // не наше сообщение head = head.next; var func = head.func; delete head.func; - func(); + func(); } - if(window.addEventListener) { // IE9+, другие браузеры + if (window.addEventListener) { // IE9+, другие браузеры window.addEventListener('message', onmessage); } else { // IE8 - window.attachEvent( 'onmessage', onmessage ); + window.attachEvent('onmessage', onmessage); } return window.postMessage ? function(func) { - tail = tail.next = { func: func }; - window.postMessage(ID, "*"); - } : - function(func) { // IE7- - setTimeout(func, 0); - }; -}()); + tail = tail.next = { + func: func + }; + window.postMessage(ID, "*"); + } : + function(func) { // IE7- + setTimeout(func, 0); + }; +}()); \ No newline at end of file diff --git a/12-extra/8-range-textrange-selection/fix-ie.view/fixIERangeObject.js b/12-extra/8-range-textrange-selection/fix-ie.view/fixIERangeObject.js index 8e92eaf6..7137ab3c 100644 --- a/12-extra/8-range-textrange-selection/fix-ie.view/fixIERangeObject.js +++ b/12-extra/8-range-textrange-selection/fix-ie.view/fixIERangeObject.js @@ -9,79 +9,85 @@ * @param {window object} [win] Optional prameter. You could send an IFrame.contentWindow too. */ function fixIERangeObject(range, win) { //Only for IE8 and below. - win=win || window; + win = win || window; - if(!range) return null; - if(!range.startContainer && win.document.selection) { //IE8 and below + if (!range) return null; + if (!range.startContainer && win.document.selection) { //IE8 and below - var _findTextNode=function(parentElement,text) { + var _findTextNode = function(parentElement, text) { //Iterate through all the child text nodes and check for matches //As we go through each text node keep removing the text value (substring) from the beginning of the text variable. - var container=null,offset=-1; - for(var node=parentElement.firstChild; node; node=node.nextSibling) { - if(node.nodeType==3) {//Text node - var find=node.nodeValue; - var pos=text.indexOf(find); - if(pos==0 && text!=find) { //text==find is a special case - text=text.substring(find.length); + var container = null, + offset = -1; + for (var node = parentElement.firstChild; node; node = node.nextSibling) { + if (node.nodeType == 3) { //Text node + var find = node.nodeValue; + var pos = text.indexOf(find); + if (pos == 0 && text != find) { //text==find is a special case + text = text.substring(find.length); } else { - container=node; - offset=text.length-1; //Offset to the last character of text. text[text.length-1] will give the last character. + container = node; + offset = text.length - 1; //Offset to the last character of text. text[text.length-1] will give the last character. break; } } } //Debug Message //alert(container.nodeValue); - return {node: container,offset: offset}; //nodeInfo + return { + node: container, + offset: offset + }; //nodeInfo } - var rangeCopy1=range.duplicate(), rangeCopy2=range.duplicate(); //Create a copy - var rangeObj1=range.duplicate(), rangeObj2=range.duplicate(); //More copies :P + var rangeCopy1 = range.duplicate(), + rangeCopy2 = range.duplicate(); //Create a copy + var rangeObj1 = range.duplicate(), + rangeObj2 = range.duplicate(); //More copies :P rangeCopy1.collapse(true); //Go to beginning of the selection - rangeCopy1.moveEnd('character',1); //Select only the first character + rangeCopy1.moveEnd('character', 1); //Select only the first character rangeCopy2.collapse(false); //Go to the end of the selection - rangeCopy2.moveStart('character',-1); //Select only the last character + rangeCopy2.moveStart('character', -1); //Select only the last character //Debug Message // alert(rangeCopy1.text); //Should be the first character of the selection - var parentElement1=rangeCopy1.parentElement(), parentElement2=rangeCopy2.parentElement(); + var parentElement1 = rangeCopy1.parentElement(), + parentElement2 = rangeCopy2.parentElement(); //If user clicks the input button without selecting text, then moveToElementText throws an error. - if(parentElement1 instanceof HTMLInputElement || parentElement2 instanceof HTMLInputElement) { + if (parentElement1 instanceof HTMLInputElement || parentElement2 instanceof HTMLInputElement) { return null; } rangeObj1.moveToElementText(parentElement1); //Select all text of parentElement - rangeObj1.setEndPoint('EndToEnd',rangeCopy1); //Set end point to the first character of the 'real' selection + rangeObj1.setEndPoint('EndToEnd', rangeCopy1); //Set end point to the first character of the 'real' selection rangeObj2.moveToElementText(parentElement2); - rangeObj2.setEndPoint('EndToEnd',rangeCopy2); //Set end point to the last character of the 'real' selection + rangeObj2.setEndPoint('EndToEnd', rangeCopy2); //Set end point to the last character of the 'real' selection - var text1=rangeObj1.text; //Now we get all text from parentElement's first character upto the real selection's first character - var text2=rangeObj2.text; //Here we get all text from parentElement's first character upto the real selection's last character + var text1 = rangeObj1.text; //Now we get all text from parentElement's first character upto the real selection's first character + var text2 = rangeObj2.text; //Here we get all text from parentElement's first character upto the real selection's last character - var nodeInfo1=_findTextNode(parentElement1,text1); - var nodeInfo2=_findTextNode(parentElement2,text2); + var nodeInfo1 = _findTextNode(parentElement1, text1); + var nodeInfo2 = _findTextNode(parentElement2, text2); //Finally we are here - range.startContainer=nodeInfo1.node; - range.startOffset=nodeInfo1.offset; - range.endContainer=nodeInfo2.node; - range.endOffset=nodeInfo2.offset+1; //End offset comes 1 position after the last character of selection. + range.startContainer = nodeInfo1.node; + range.startOffset = nodeInfo1.offset; + range.endContainer = nodeInfo2.node; + range.endOffset = nodeInfo2.offset + 1; //End offset comes 1 position after the last character of selection. } return range; } function getRangeObject(win) { //Gets the first range object - win=win || window; + win = win || window; if (win.getSelection) { // Firefox/Chrome/Safari/Opera/IE9 try { return win.getSelection().getRangeAt(0); //W3C DOM Range Object - } catch(e) {/*If no text is selected an exception might be thrown*/} - } - else if(win.document.selection) { // IE8 - var range=win.document.selection.createRange(); //Microsoft TextRange Object - return fixIERangeObject(range,win); + } catch (e) { /*If no text is selected an exception might be thrown*/ } + } else if (win.document.selection) { // IE8 + var range = win.document.selection.createRange(); //Microsoft TextRange Object + return fixIERangeObject(range, win); } return null; -} +} \ No newline at end of file diff --git a/12-extra/9-drag-and-drop-plus/DragAvatar.js b/12-extra/9-drag-and-drop-plus/DragAvatar.js index 30cf95c2..66752b6e 100644 --- a/12-extra/9-drag-and-drop-plus/DragAvatar.js +++ b/12-extra/9-drag-and-drop-plus/DragAvatar.js @@ -80,4 +80,4 @@ DragAvatar.prototype.onDragCancel = function() { */ DragAvatar.prototype.onDragEnd = function() { /* override */ -}; +}; \ No newline at end of file diff --git a/12-extra/9-drag-and-drop-plus/DragManager.js b/12-extra/9-drag-and-drop-plus/DragManager.js index 3da60c4e..a4db4468 100644 --- a/12-extra/9-drag-and-drop-plus/DragManager.js +++ b/12-extra/9-drag-and-drop-plus/DragManager.js @@ -5,16 +5,16 @@ var dragManager = new function() { var self = this; - function onMouseDown(e){ + function onMouseDown(e) { - if (e.which != 1 ) { // не левой кнопкой + if (e.which != 1) { // не левой кнопкой return false; } dragZone = findDragZone(e); if (!dragZone) { - return; + return; } // запомним, что элемент нажат на текущих координатах pageX/pageY @@ -27,8 +27,8 @@ var dragManager = new function() { function onMouseMove(e) { if (!dragZone) return; // элемент не зажат - if ( !avatar ) { // элемент нажат, но пока не начали его двигать - if ( Math.abs(e.pageX-downX) < 3 && Math.abs(e.pageY-downY) < 3 ) { + if (!avatar) { // элемент нажат, но пока не начали его двигать + if (Math.abs(e.pageX - downX) < 3 && Math.abs(e.pageY - downY) < 3) { return; } // попробовать захватить элемент @@ -63,7 +63,7 @@ var dragManager = new function() { function onMouseUp(e) { - if (e.which != 1 ) { // не левой кнопкой + if (e.which != 1) { // не левой кнопкой return false; } @@ -89,7 +89,7 @@ var dragManager = new function() { function findDragZone(event) { var elem = event.target; - while(elem != document && !elem.dragZone) { + while (elem != document && !elem.dragZone) { elem = elem.parentNode; } return elem.dragZone; @@ -99,7 +99,7 @@ var dragManager = new function() { // получить элемент под аватаром var elem = avatar.getTargetElem(); - while(elem != document && !elem.dropTarget) { + while (elem != document && !elem.dropTarget) { elem = elem.parentNode; } @@ -117,4 +117,4 @@ var dragManager = new function() { document.onmousemove = onMouseMove; document.onmouseup = onMouseUp; document.onmousedown = onMouseDown; -}; +}; \ No newline at end of file diff --git a/12-extra/9-drag-and-drop-plus/DragZone.js b/12-extra/9-drag-and-drop-plus/DragZone.js index 33c1a28f..a2ffd9b6 100644 --- a/12-extra/9-drag-and-drop-plus/DragZone.js +++ b/12-extra/9-drag-and-drop-plus/DragZone.js @@ -36,6 +36,4 @@ DragZone.prototype.onDragStart = function(downX, downY, event) { } return avatar; -}; - - +}; \ No newline at end of file diff --git a/12-extra/9-drag-and-drop-plus/DropTarget.js b/12-extra/9-drag-and-drop-plus/DropTarget.js index 0ddde8de..b812f087 100644 --- a/12-extra/9-drag-and-drop-plus/DropTarget.js +++ b/12-extra/9-drag-and-drop-plus/DropTarget.js @@ -74,8 +74,7 @@ DropTarget.prototype.onDragEnd = function(avatar, event) { /** * Вход аватара в DropTarget */ -DropTarget.prototype.onDragEnter = function(fromDropTarget, avatar, event) { -}; +DropTarget.prototype.onDragEnter = function(fromDropTarget, avatar, event) {}; /** * Выход аватара из DropTarget @@ -83,6 +82,4 @@ DropTarget.prototype.onDragEnter = function(fromDropTarget, avatar, event) { DropTarget.prototype.onDragLeave = function(toDropTarget, avatar, event) { this._hideHoverIndication(); this._targetElem = null; -}; - - +}; \ No newline at end of file diff --git a/12-extra/9-drag-and-drop-plus/TreeDragAvatar.js b/12-extra/9-drag-and-drop-plus/TreeDragAvatar.js index 6682983c..7273712f 100644 --- a/12-extra/9-drag-and-drop-plus/TreeDragAvatar.js +++ b/12-extra/9-drag-and-drop-plus/TreeDragAvatar.js @@ -1,4 +1,3 @@ - function TreeDragAvatar(dragZone, dragElem) { DragAvatar.apply(this, arguments); } @@ -41,5 +40,4 @@ TreeDragAvatar.prototype.onDragCancel = function() { TreeDragAvatar.prototype.onDragEnd = function() { this._destroy(); -}; - +}; \ No newline at end of file diff --git a/12-extra/9-drag-and-drop-plus/TreeDragZone.js b/12-extra/9-drag-and-drop-plus/TreeDragZone.js index 2022f64f..4d91806b 100644 --- a/12-extra/9-drag-and-drop-plus/TreeDragZone.js +++ b/12-extra/9-drag-and-drop-plus/TreeDragZone.js @@ -1,4 +1,3 @@ - function TreeDragZone(elem) { DragZone.apply(this, arguments); } @@ -7,4 +6,4 @@ extend(TreeDragZone, DragZone); TreeDragZone.prototype._makeAvatar = function() { return new TreeDragAvatar(this, this._elem); -}; +}; \ No newline at end of file diff --git a/12-extra/9-drag-and-drop-plus/TreeDropTarget.js b/12-extra/9-drag-and-drop-plus/TreeDropTarget.js index e54b378e..1245be65 100644 --- a/12-extra/9-drag-and-drop-plus/TreeDropTarget.js +++ b/12-extra/9-drag-and-drop-plus/TreeDropTarget.js @@ -1,73 +1,72 @@ - -function TreeDropTarget(elem) { - TreeDropTarget.parent.constructor.apply(this, arguments); -} + function TreeDropTarget(elem) { + TreeDropTarget.parent.constructor.apply(this, arguments); + } -extend(TreeDropTarget, DropTarget); + extend(TreeDropTarget, DropTarget); -TreeDropTarget.prototype._showHoverIndication = function() { - this._targetElem && this._targetElem.classList.add('hover'); -}; + TreeDropTarget.prototype._showHoverIndication = function() { + this._targetElem && this._targetElem.classList.add('hover'); + }; -TreeDropTarget.prototype._hideHoverIndication = function() { - this._targetElem && this._targetElem.classList.remove('hover'); -}; + TreeDropTarget.prototype._hideHoverIndication = function() { + this._targetElem && this._targetElem.classList.remove('hover'); + }; -TreeDropTarget.prototype._getTargetElem = function(avatar, event) { - var target = avatar.getTargetElem(); - if (target.tagName != 'SPAN') { - return; - } + TreeDropTarget.prototype._getTargetElem = function(avatar, event) { + var target = avatar.getTargetElem(); + if (target.tagName != 'SPAN') { + return; + } - // проверить, может быть перенос узла внутрь самого себя или в себя? - var elemToMove = avatar.getDragInfo(event).dragZoneElem.parentNode; + // проверить, может быть перенос узла внутрь самого себя или в себя? + var elemToMove = avatar.getDragInfo(event).dragZoneElem.parentNode; - var elem = target; - while(elem) { - if (elem == elemToMove) return; // попытка перенести родителя в потомка - elem = elem.parentNode; - } + var elem = target; + while (elem) { + if (elem == elemToMove) return; // попытка перенести родителя в потомка + elem = elem.parentNode; + } - return target; -}; + return target; + }; -TreeDropTarget.prototype.onDragEnd = function(avatar, event) { + TreeDropTarget.prototype.onDragEnd = function(avatar, event) { - if (!this._targetElem) { - // перенос закончился вне подходящей точки приземления - avatar.onDragCancel(); - return; - } + if (!this._targetElem) { + // перенос закончился вне подходящей точки приземления + avatar.onDragCancel(); + return; + } - this._hideHoverIndication(); + this._hideHoverIndication(); - // получить информацию об объекте переноса - var avatarInfo = avatar.getDragInfo(event); + // получить информацию об объекте переноса + var avatarInfo = avatar.getDragInfo(event); - avatar.onDragEnd(); // аватар больше не нужен, перенос успешен + avatar.onDragEnd(); // аватар больше не нужен, перенос успешен - // вставить элемент в детей в отсортированном порядке - var elemToMove = avatarInfo.dragZoneElem.parentNode; //
  • - var title = avatarInfo.dragZoneElem.innerHTML; // переносимый заголовок + // вставить элемент в детей в отсортированном порядке + var elemToMove = avatarInfo.dragZoneElem.parentNode; //
  • + var title = avatarInfo.dragZoneElem.innerHTML; // переносимый заголовок - // получить контейнер для узлов дерева, соответствующий точке преземления - var ul = this._targetElem.parentNode.getElementsByTagName('UL')[0]; - if (!ul) { // нет детей, создадим контейнер - ul = document.createElement('UL'); - this._targetElem.parentNode.appendChild(ul); - } + // получить контейнер для узлов дерева, соответствующий точке преземления + var ul = this._targetElem.parentNode.getElementsByTagName('UL')[0]; + if (!ul) { // нет детей, создадим контейнер + ul = document.createElement('UL'); + this._targetElem.parentNode.appendChild(ul); + } - // вставить новый узел в нужное место среди потомков, в алфавитном порядке - var li = null; - for(var i=0; i < ul.children.length; i++) { - li = ul.children[i]; - var childTitle = li.children[0].innerHTML; - if (childTitle > title) { - break; - } - } + // вставить новый узел в нужное место среди потомков, в алфавитном порядке + var li = null; + for (var i = 0; i < ul.children.length; i++) { + li = ul.children[i]; + var childTitle = li.children[0].innerHTML; + if (childTitle > title) { + break; + } + } - ul.insertBefore(elemToMove, li); + ul.insertBefore(elemToMove, li); - this._targetElem = null; -}; + this._targetElem = null; + }; \ No newline at end of file diff --git a/12-extra/9-drag-and-drop-plus/dragTree.view/DragAvatar.js b/12-extra/9-drag-and-drop-plus/dragTree.view/DragAvatar.js index 30cf95c2..66752b6e 100644 --- a/12-extra/9-drag-and-drop-plus/dragTree.view/DragAvatar.js +++ b/12-extra/9-drag-and-drop-plus/dragTree.view/DragAvatar.js @@ -80,4 +80,4 @@ DragAvatar.prototype.onDragCancel = function() { */ DragAvatar.prototype.onDragEnd = function() { /* override */ -}; +}; \ No newline at end of file diff --git a/12-extra/9-drag-and-drop-plus/dragTree.view/DragManager.js b/12-extra/9-drag-and-drop-plus/dragTree.view/DragManager.js index 3da60c4e..a4db4468 100644 --- a/12-extra/9-drag-and-drop-plus/dragTree.view/DragManager.js +++ b/12-extra/9-drag-and-drop-plus/dragTree.view/DragManager.js @@ -5,16 +5,16 @@ var dragManager = new function() { var self = this; - function onMouseDown(e){ + function onMouseDown(e) { - if (e.which != 1 ) { // не левой кнопкой + if (e.which != 1) { // не левой кнопкой return false; } dragZone = findDragZone(e); if (!dragZone) { - return; + return; } // запомним, что элемент нажат на текущих координатах pageX/pageY @@ -27,8 +27,8 @@ var dragManager = new function() { function onMouseMove(e) { if (!dragZone) return; // элемент не зажат - if ( !avatar ) { // элемент нажат, но пока не начали его двигать - if ( Math.abs(e.pageX-downX) < 3 && Math.abs(e.pageY-downY) < 3 ) { + if (!avatar) { // элемент нажат, но пока не начали его двигать + if (Math.abs(e.pageX - downX) < 3 && Math.abs(e.pageY - downY) < 3) { return; } // попробовать захватить элемент @@ -63,7 +63,7 @@ var dragManager = new function() { function onMouseUp(e) { - if (e.which != 1 ) { // не левой кнопкой + if (e.which != 1) { // не левой кнопкой return false; } @@ -89,7 +89,7 @@ var dragManager = new function() { function findDragZone(event) { var elem = event.target; - while(elem != document && !elem.dragZone) { + while (elem != document && !elem.dragZone) { elem = elem.parentNode; } return elem.dragZone; @@ -99,7 +99,7 @@ var dragManager = new function() { // получить элемент под аватаром var elem = avatar.getTargetElem(); - while(elem != document && !elem.dropTarget) { + while (elem != document && !elem.dropTarget) { elem = elem.parentNode; } @@ -117,4 +117,4 @@ var dragManager = new function() { document.onmousemove = onMouseMove; document.onmouseup = onMouseUp; document.onmousedown = onMouseDown; -}; +}; \ No newline at end of file diff --git a/12-extra/9-drag-and-drop-plus/dragTree.view/DragZone.js b/12-extra/9-drag-and-drop-plus/dragTree.view/DragZone.js index 33c1a28f..a2ffd9b6 100644 --- a/12-extra/9-drag-and-drop-plus/dragTree.view/DragZone.js +++ b/12-extra/9-drag-and-drop-plus/dragTree.view/DragZone.js @@ -36,6 +36,4 @@ DragZone.prototype.onDragStart = function(downX, downY, event) { } return avatar; -}; - - +}; \ No newline at end of file diff --git a/12-extra/9-drag-and-drop-plus/dragTree.view/DropTarget.js b/12-extra/9-drag-and-drop-plus/dragTree.view/DropTarget.js index 0ddde8de..b812f087 100644 --- a/12-extra/9-drag-and-drop-plus/dragTree.view/DropTarget.js +++ b/12-extra/9-drag-and-drop-plus/dragTree.view/DropTarget.js @@ -74,8 +74,7 @@ DropTarget.prototype.onDragEnd = function(avatar, event) { /** * Вход аватара в DropTarget */ -DropTarget.prototype.onDragEnter = function(fromDropTarget, avatar, event) { -}; +DropTarget.prototype.onDragEnter = function(fromDropTarget, avatar, event) {}; /** * Выход аватара из DropTarget @@ -83,6 +82,4 @@ DropTarget.prototype.onDragEnter = function(fromDropTarget, avatar, event) { DropTarget.prototype.onDragLeave = function(toDropTarget, avatar, event) { this._hideHoverIndication(); this._targetElem = null; -}; - - +}; \ No newline at end of file diff --git a/12-extra/9-drag-and-drop-plus/dragTree.view/TreeDragAvatar.js b/12-extra/9-drag-and-drop-plus/dragTree.view/TreeDragAvatar.js index 6682983c..7273712f 100644 --- a/12-extra/9-drag-and-drop-plus/dragTree.view/TreeDragAvatar.js +++ b/12-extra/9-drag-and-drop-plus/dragTree.view/TreeDragAvatar.js @@ -1,4 +1,3 @@ - function TreeDragAvatar(dragZone, dragElem) { DragAvatar.apply(this, arguments); } @@ -41,5 +40,4 @@ TreeDragAvatar.prototype.onDragCancel = function() { TreeDragAvatar.prototype.onDragEnd = function() { this._destroy(); -}; - +}; \ No newline at end of file diff --git a/12-extra/9-drag-and-drop-plus/dragTree.view/TreeDragZone.js b/12-extra/9-drag-and-drop-plus/dragTree.view/TreeDragZone.js index 2022f64f..4d91806b 100644 --- a/12-extra/9-drag-and-drop-plus/dragTree.view/TreeDragZone.js +++ b/12-extra/9-drag-and-drop-plus/dragTree.view/TreeDragZone.js @@ -1,4 +1,3 @@ - function TreeDragZone(elem) { DragZone.apply(this, arguments); } @@ -7,4 +6,4 @@ extend(TreeDragZone, DragZone); TreeDragZone.prototype._makeAvatar = function() { return new TreeDragAvatar(this, this._elem); -}; +}; \ No newline at end of file diff --git a/12-extra/9-drag-and-drop-plus/dragTree.view/TreeDropTarget.js b/12-extra/9-drag-and-drop-plus/dragTree.view/TreeDropTarget.js index e54b378e..1245be65 100644 --- a/12-extra/9-drag-and-drop-plus/dragTree.view/TreeDropTarget.js +++ b/12-extra/9-drag-and-drop-plus/dragTree.view/TreeDropTarget.js @@ -1,73 +1,72 @@ - -function TreeDropTarget(elem) { - TreeDropTarget.parent.constructor.apply(this, arguments); -} + function TreeDropTarget(elem) { + TreeDropTarget.parent.constructor.apply(this, arguments); + } -extend(TreeDropTarget, DropTarget); + extend(TreeDropTarget, DropTarget); -TreeDropTarget.prototype._showHoverIndication = function() { - this._targetElem && this._targetElem.classList.add('hover'); -}; + TreeDropTarget.prototype._showHoverIndication = function() { + this._targetElem && this._targetElem.classList.add('hover'); + }; -TreeDropTarget.prototype._hideHoverIndication = function() { - this._targetElem && this._targetElem.classList.remove('hover'); -}; + TreeDropTarget.prototype._hideHoverIndication = function() { + this._targetElem && this._targetElem.classList.remove('hover'); + }; -TreeDropTarget.prototype._getTargetElem = function(avatar, event) { - var target = avatar.getTargetElem(); - if (target.tagName != 'SPAN') { - return; - } + TreeDropTarget.prototype._getTargetElem = function(avatar, event) { + var target = avatar.getTargetElem(); + if (target.tagName != 'SPAN') { + return; + } - // проверить, может быть перенос узла внутрь самого себя или в себя? - var elemToMove = avatar.getDragInfo(event).dragZoneElem.parentNode; + // проверить, может быть перенос узла внутрь самого себя или в себя? + var elemToMove = avatar.getDragInfo(event).dragZoneElem.parentNode; - var elem = target; - while(elem) { - if (elem == elemToMove) return; // попытка перенести родителя в потомка - elem = elem.parentNode; - } + var elem = target; + while (elem) { + if (elem == elemToMove) return; // попытка перенести родителя в потомка + elem = elem.parentNode; + } - return target; -}; + return target; + }; -TreeDropTarget.prototype.onDragEnd = function(avatar, event) { + TreeDropTarget.prototype.onDragEnd = function(avatar, event) { - if (!this._targetElem) { - // перенос закончился вне подходящей точки приземления - avatar.onDragCancel(); - return; - } + if (!this._targetElem) { + // перенос закончился вне подходящей точки приземления + avatar.onDragCancel(); + return; + } - this._hideHoverIndication(); + this._hideHoverIndication(); - // получить информацию об объекте переноса - var avatarInfo = avatar.getDragInfo(event); + // получить информацию об объекте переноса + var avatarInfo = avatar.getDragInfo(event); - avatar.onDragEnd(); // аватар больше не нужен, перенос успешен + avatar.onDragEnd(); // аватар больше не нужен, перенос успешен - // вставить элемент в детей в отсортированном порядке - var elemToMove = avatarInfo.dragZoneElem.parentNode; //
  • - var title = avatarInfo.dragZoneElem.innerHTML; // переносимый заголовок + // вставить элемент в детей в отсортированном порядке + var elemToMove = avatarInfo.dragZoneElem.parentNode; //
  • + var title = avatarInfo.dragZoneElem.innerHTML; // переносимый заголовок - // получить контейнер для узлов дерева, соответствующий точке преземления - var ul = this._targetElem.parentNode.getElementsByTagName('UL')[0]; - if (!ul) { // нет детей, создадим контейнер - ul = document.createElement('UL'); - this._targetElem.parentNode.appendChild(ul); - } + // получить контейнер для узлов дерева, соответствующий точке преземления + var ul = this._targetElem.parentNode.getElementsByTagName('UL')[0]; + if (!ul) { // нет детей, создадим контейнер + ul = document.createElement('UL'); + this._targetElem.parentNode.appendChild(ul); + } - // вставить новый узел в нужное место среди потомков, в алфавитном порядке - var li = null; - for(var i=0; i < ul.children.length; i++) { - li = ul.children[i]; - var childTitle = li.children[0].innerHTML; - if (childTitle > title) { - break; - } - } + // вставить новый узел в нужное место среди потомков, в алфавитном порядке + var li = null; + for (var i = 0; i < ul.children.length; i++) { + li = ul.children[i]; + var childTitle = li.children[0].innerHTML; + if (childTitle > title) { + break; + } + } - ul.insertBefore(elemToMove, li); + ul.insertBefore(elemToMove, li); - this._targetElem = null; -}; + this._targetElem = null; + }; \ No newline at end of file diff --git a/12-extra/9-drag-and-drop-plus/dragTree.view/lib.js b/12-extra/9-drag-and-drop-plus/dragTree.view/lib.js index 09cdae74..441f8619 100644 --- a/12-extra/9-drag-and-drop-plus/dragTree.view/lib.js +++ b/12-extra/9-drag-and-drop-plus/dragTree.view/lib.js @@ -1,20 +1,22 @@ - function getCoords(elem) { - var box = elem.getBoundingClientRect(); + var box = elem.getBoundingClientRect(); - var body = document.body; - var docElem = document.documentElement; + var body = document.body; + var docElem = document.documentElement; - var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop; - var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft; + var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop; + var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft; - var clientTop = docElem.clientTop || body.clientTop || 0; - var clientLeft = docElem.clientLeft || body.clientLeft || 0; + var clientTop = docElem.clientTop || body.clientTop || 0; + var clientLeft = docElem.clientLeft || body.clientLeft || 0; - var top = box.top + scrollTop - clientTop; - var left = box.left + scrollLeft - clientLeft; + var top = box.top + scrollTop - clientTop; + var left = box.left + scrollLeft - clientLeft; - return { top: Math.round(top), left: Math.round(left) }; + return { + top: Math.round(top), + left: Math.round(left) + }; } function getElementUnderClientXY(elem, clientX, clientY) { @@ -33,9 +35,9 @@ function getElementUnderClientXY(elem, clientX, clientY) { } function extend(Child, Parent) { - function F() { } - F.prototype = Parent.prototype - Child.prototype = new F() - Child.prototype.constructor = Child - Child.parent = Parent.prototype -} + function F() {} + F.prototype = Parent.prototype + Child.prototype = new F() + Child.prototype.constructor = Child + Child.parent = Parent.prototype +} \ No newline at end of file diff --git a/2-ui/1-document/12-multi-insert/benchmark.view/bench.js b/2-ui/1-document/12-multi-insert/benchmark.view/bench.js index 48e96f7d..e06acecb 100644 --- a/2-ui/1-document/12-multi-insert/benchmark.view/bench.js +++ b/2-ui/1-document/12-multi-insert/benchmark.view/bench.js @@ -1,12 +1,11 @@ - function bench(test, times) { - var sum = 0; - for(var i=0; i 500) { - message = '------------------------------\n' + message; - } + var time = new Date(); - if (message === lastMessage) { - repeatCounter++; - if (repeatCounter == 2) { - text.value = text.value.trim() + ' x 2\n'; - } else { - text.value = text.value.slice(0, text.value.lastIndexOf('x') + 1) + repeatCounter + "\n"; - } + if (time - lastMessageTime > 500) { + message = '------------------------------\n' + message; + } - } else { - repeatCounter = 1; - text.value += message + "\n"; - } + if (message === lastMessage) { + repeatCounter++; + if (repeatCounter == 2) { + text.value = text.value.trim() + ' x 2\n'; + } else { + text.value = text.value.slice(0, text.value.lastIndexOf('x') + 1) + repeatCounter + "\n"; + } - text.scrollTop = text.scrollHeight; + } else { + repeatCounter = 1; + text.value += message + "\n"; + } - lastMessageTime = time; - lastMessage = message; -} \ No newline at end of file + text.scrollTop = text.scrollHeight; + + lastMessageTime = time; + lastMessage = message; + } \ No newline at end of file diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout.view/script.js b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout.view/script.js index ce86e0b2..001f0b2a 100755 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout.view/script.js +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout.view/script.js @@ -8,14 +8,14 @@ function handler(event) { } log.value += event.type + ': ' + - 'target=' + str(event.target) + - ', relatedTarget=' + str(event.relatedTarget) + "\n"; + 'target=' + str(event.target) + + ', relatedTarget=' + str(event.relatedTarget) + "\n"; log.scrollTop = 1e9; - + if (event.type == 'mouseover') { event.target.style.background = 'pink' } if (event.type == 'mouseout') { event.target.style.background = '' } -} +} \ No newline at end of file diff --git a/2-ui/3-event-details/4-drag-and-drop/2-drag-heroes/solution.view/soccer.js b/2-ui/3-event-details/4-drag-and-drop/2-drag-heroes/solution.view/soccer.js index a6f29316..e0998e7a 100644 --- a/2-ui/3-event-details/4-drag-and-drop/2-drag-heroes/solution.view/soccer.js +++ b/2-ui/3-event-details/4-drag-and-drop/2-drag-heroes/solution.view/soccer.js @@ -1,5 +1,3 @@ - - document.onmousedown = function(e) { var dragElement = e.target; @@ -7,7 +5,7 @@ document.onmousedown = function(e) { if (!dragElement.classList.contains('draggable')) return; var coords, shiftX, shiftY; - + startDrag(e.clientX, e.clientY); document.onmousemove = function(e) { @@ -25,10 +23,10 @@ document.onmousedown = function(e) { shiftX = clientX - dragElement.getBoundingClientRect().left; shiftY = clientY - dragElement.getBoundingClientRect().top; - + dragElement.style.position = 'fixed'; - document.body.appendChild(dragElement); + document.body.appendChild(dragElement); moveAt(clientX, clientY); }; @@ -44,8 +42,8 @@ document.onmousedown = function(e) { function moveAt(clientX, clientY) { // новые координаты - var newX = clientX - shiftX; - var newY = clientY - shiftY; + var newX = clientX - shiftX; + var newY = clientY - shiftY; // ------- обработаем вынос за нижнюю границу окна ------ // новая нижняя граница элемента @@ -60,11 +58,11 @@ document.onmousedown = function(e) { // обычно скроллим на 10px // но если расстояние от newBottom до docBottom меньше, то меньше var scrollY = Math.min(docBottom - newBottom, 10); - + // ошибки округления при полностью прокрученной странице // могут привести к отрицательному scrollY, что будет означать прокрутку вверх // поправим эту ошибку - if (scrollY < 0) scrollY = 0; + if (scrollY < 0) scrollY = 0; window.scrollBy(0, scrollY); @@ -83,7 +81,7 @@ document.onmousedown = function(e) { window.scrollBy(0, -scrollY); // при резком движении мыши элемент мог "вылететь" сильно вверх, поправим его - newY = Math.max(newY, 0); + newY = Math.max(newY, 0); } diff --git a/2-ui/3-event-details/5-drag-and-drop-objects/dragDemo.view/DragManager.js b/2-ui/3-event-details/5-drag-and-drop-objects/dragDemo.view/DragManager.js index 955c28fb..4f0625b8 100644 --- a/2-ui/3-event-details/5-drag-and-drop-objects/dragDemo.view/DragManager.js +++ b/2-ui/3-event-details/5-drag-and-drop-objects/dragDemo.view/DragManager.js @@ -8,12 +8,12 @@ var DragManager = new function() { * downX/downY - координаты, на которых был mousedown * shiftX/shiftY - относительный сдвиг курсора от угла элемента * } - */ + */ var dragObject = {}; var self = this; - function onMouseDown(e){ + function onMouseDown(e) { if (e.which != 1) return; @@ -32,12 +32,12 @@ var DragManager = new function() { function onMouseMove(e) { if (!dragObject.elem) return; // элемент не зажат - if ( !dragObject.avatar ) { // если перенос не начат... + if (!dragObject.avatar) { // если перенос не начат... var moveX = e.pageX - dragObject.downX; var moveY = e.pageY - dragObject.downY; // если мышь передвинулась в нажатом состоянии недостаточно далеко - if ( Math.abs(moveX) < 3 && Math.abs(moveY) < 3 ) { + if (Math.abs(moveX) < 3 && Math.abs(moveY) < 3) { return; } @@ -75,17 +75,17 @@ var DragManager = new function() { } function finishDrag(e) { - var dropElem = findDroppable(e); + var dropElem = findDroppable(e); - if (!dropElem) { - self.onDragCancel(dragObject); - } else { - self.onDragEnd(dragObject, dropElem); - } + if (!dropElem) { + self.onDragCancel(dragObject); + } else { + self.onDragEnd(dragObject, dropElem); + } } function createAvatar(e) { - + // запомнить старые свойства, чтобы вернуться к ним при отмене переноса var avatar = dragObject.elem; var old = { @@ -140,13 +140,13 @@ var DragManager = new function() { document.onmouseup = onMouseUp; document.onmousedown = onMouseDown; - this.onDragEnd = function(dragObject, dropElem) { }; - this.onDragCancel = function(dragObject) { }; + this.onDragEnd = function(dragObject, dropElem) {}; + this.onDragCancel = function(dragObject) {}; }; -function getCoords(elem) { // кроме IE8- +function getCoords(elem) { // кроме IE8- var box = elem.getBoundingClientRect(); return { @@ -154,5 +154,4 @@ function getCoords(elem) { // кроме IE8- left: box.left + pageXOffset }; -} - +} \ No newline at end of file diff --git a/2-ui/3-event-details/9-keyboard-events/keyboard-dump.view/script.js b/2-ui/3-event-details/9-keyboard-events/keyboard-dump.view/script.js index 0dd0952d..b5253c39 100644 --- a/2-ui/3-event-details/9-keyboard-events/keyboard-dump.view/script.js +++ b/2-ui/3-event-details/9-keyboard-events/keyboard-dump.view/script.js @@ -1,14 +1,13 @@ - kinput.onkeydown = kinput.onkeyup = kinput.onkeypress = handle; var lastTime = Date.now(); function handle(e) { if (form.elements[e.type + 'Ignore'].checked) return; - - var text = event.type + - ' keyCode=' + e.keyCode + - ' which=' + e.which + + + var text = event.type + + ' keyCode=' + e.keyCode + + ' which=' + e.which + ' charCode=' + e.charCode + ' char=' + String.fromCharCode(e.keyCode || e.charCode) + (e.shiftKey ? ' +shift' : '') + @@ -26,4 +25,4 @@ function handle(e) { if (form.elements[e.type + 'Stop'].checked) { e.preventDefault(); } -} +} \ No newline at end of file diff --git a/2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/solution.view/script.js b/2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/solution.view/script.js index 7573fa1d..49cebc33 100644 --- a/2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/solution.view/script.js +++ b/2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/solution.view/script.js @@ -1,4 +1,3 @@ - var table = document.getElementById('bagua-table'); var editingTd; @@ -7,22 +6,22 @@ table.onclick = function(event) { var target = event.target; - while(target != table) { + while (target != table) { if (target.className == 'edit-cancel') { - finishTdEdit(editingTd.elem, false); - return; + finishTdEdit(editingTd.elem, false); + return; } if (target.className == 'edit-ok') { - finishTdEdit(editingTd.elem, true); - return; + finishTdEdit(editingTd.elem, true); + return; } if (target.nodeName == 'TD') { if (editingTd) return; // already editing - makeTdEditable(target); - return; + makeTdEditable(target); + return; } target = target.parentNode; @@ -30,15 +29,15 @@ table.onclick = function(event) { } function makeTdEditable(td) { - editingTd = { - elem: td, - data: td.innerHTML + editingTd = { + elem: td, + data: td.innerHTML }; td.classList.add('edit-td'); // td, not textarea! the rest of rules will cascade var textArea = document.createElement('textarea'); - textArea.style.width = td.clientWidth + 'px'; + textArea.style.width = td.clientWidth + 'px'; textArea.style.height = td.clientHeight + 'px'; textArea.className = 'edit-area'; @@ -47,7 +46,7 @@ function makeTdEditable(td) { td.appendChild(textArea); textArea.focus(); - td.insertAdjacentHTML("beforeEnd", + td.insertAdjacentHTML("beforeEnd", '
    ' ); } @@ -60,5 +59,4 @@ function finishTdEdit(td, isOk) { } td.classList.remove('edit-td'); // remove edit class editingTd = null; -} - +} \ No newline at end of file diff --git a/2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/source.view/script.js b/2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/source.view/script.js index 639f8019..e4da643f 100644 --- a/2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/source.view/script.js +++ b/2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/source.view/script.js @@ -1,4 +1,3 @@ - var table = document.getElementById('bagua-table'); /* ваш код */ \ No newline at end of file diff --git a/2-ui/5-widgets/2-widgets-structure/1-clock/solution.view/clock.js b/2-ui/5-widgets/2-widgets-structure/1-clock/solution.view/clock.js index 56a2f576..949b581a 100755 --- a/2-ui/5-widgets/2-widgets-structure/1-clock/solution.view/clock.js +++ b/2-ui/5-widgets/2-widgets-structure/1-clock/solution.view/clock.js @@ -28,4 +28,4 @@ function Clock(options) { timer = setInterval(render, 1000); }; -} +} \ No newline at end of file diff --git a/2-ui/5-widgets/2-widgets-structure/3-selectable-list-component/solution.view/listSelect.js b/2-ui/5-widgets/2-widgets-structure/3-selectable-list-component/solution.view/listSelect.js index f65bdc4f..d5d4778e 100755 --- a/2-ui/5-widgets/2-widgets-structure/3-selectable-list-component/solution.view/listSelect.js +++ b/2-ui/5-widgets/2-widgets-structure/3-selectable-list-component/solution.view/listSelect.js @@ -1,4 +1,3 @@ - function ListSelect(options) { var elem = options.elem; @@ -12,7 +11,7 @@ function ListSelect(options) { var li = e.target.closest('li'); if (!li) return; - if(e.metaKey || e.ctrlKey) { // для Mac проверяем Cmd, т.к. Ctrl + click там контекстное меню + if (e.metaKey || e.ctrlKey) { // для Mac проверяем Cmd, т.к. Ctrl + click там контекстное меню toggleSelect(li); } else if (e.shiftKey) { selectFromLast(li); @@ -45,17 +44,17 @@ function ListSelect(options) { if (startElem == target) { // клик на том же элементе, что и раньше // это особый случай - return; + return; } var isLastClickedBefore = startElem.compareDocumentPosition(target) & 4; if (isLastClickedBefore) { - for(var elem = startElem; elem != target; elem = elem.nextElementSibling) { + for (var elem = startElem; elem != target; elem = elem.nextElementSibling) { elem.classList.add('selected'); } } else { - for(var elem = startElem; elem != target; elem = elem.previousElementSibling) { + for (var elem = startElem; elem != target; elem = elem.previousElementSibling) { elem.classList.add('selected'); } } @@ -66,4 +65,4 @@ function ListSelect(options) { return li.innerHTML; }); }; -} +} \ No newline at end of file diff --git a/2-ui/5-widgets/2-widgets-structure/5-voter-proto/solution.view/voter.js b/2-ui/5-widgets/2-widgets-structure/5-voter-proto/solution.view/voter.js index 1341b1b5..00475db9 100755 --- a/2-ui/5-widgets/2-widgets-structure/5-voter-proto/solution.view/voter.js +++ b/2-ui/5-widgets/2-widgets-structure/5-voter-proto/solution.view/voter.js @@ -1,4 +1,3 @@ - function Voter(options) { var elem = this._elem = options.elem; this._voteElem = elem.querySelector('.vote'); @@ -29,5 +28,4 @@ Voter.prototype._voteDecrease = function() { Voter.prototype.setVote = function(vote) { this._voteElem.innerHTML = +vote; -}; - +}; \ No newline at end of file diff --git a/2-ui/5-widgets/2-widgets-structure/6-voter-add-step/solution.view/step-voter.js b/2-ui/5-widgets/2-widgets-structure/6-voter-add-step/solution.view/step-voter.js index 4f66923c..4f21784d 100644 --- a/2-ui/5-widgets/2-widgets-structure/6-voter-add-step/solution.view/step-voter.js +++ b/2-ui/5-widgets/2-widgets-structure/6-voter-add-step/solution.view/step-voter.js @@ -10,4 +10,4 @@ StepVoter.prototype._voteIncrease = function() { StepVoter.prototype._voteDecrease = function() { this._voteElem.innerHTML = +this._voteElem.innerHTML - this._step; -}; +}; \ No newline at end of file diff --git a/2-ui/5-widgets/2-widgets-structure/6-voter-add-step/solution.view/voter.js b/2-ui/5-widgets/2-widgets-structure/6-voter-add-step/solution.view/voter.js index 1341b1b5..00475db9 100644 --- a/2-ui/5-widgets/2-widgets-structure/6-voter-add-step/solution.view/voter.js +++ b/2-ui/5-widgets/2-widgets-structure/6-voter-add-step/solution.view/voter.js @@ -1,4 +1,3 @@ - function Voter(options) { var elem = this._elem = options.elem; this._voteElem = elem.querySelector('.vote'); @@ -29,5 +28,4 @@ Voter.prototype._voteDecrease = function() { Voter.prototype.setVote = function(vote) { this._voteElem.innerHTML = +vote; -}; - +}; \ No newline at end of file diff --git a/2-ui/5-widgets/2-widgets-structure/menu-dom.view/menu.js b/2-ui/5-widgets/2-widgets-structure/menu-dom.view/menu.js index 99b3fd21..56d4dec2 100644 --- a/2-ui/5-widgets/2-widgets-structure/menu-dom.view/menu.js +++ b/2-ui/5-widgets/2-widgets-structure/menu-dom.view/menu.js @@ -15,8 +15,8 @@ function Menu(options) { titleElem.className = "title"; titleElem.textContent = options.title; - elem.onmousedown = function() { - return false; + elem.onmousedown = function() { + return false; }; elem.onclick = function(event) { diff --git a/2-ui/5-widgets/2-widgets-structure/menu.view/menu.js b/2-ui/5-widgets/2-widgets-structure/menu.view/menu.js index f705ef41..847a72fd 100644 --- a/2-ui/5-widgets/2-widgets-structure/menu.view/menu.js +++ b/2-ui/5-widgets/2-widgets-structure/menu.view/menu.js @@ -1,7 +1,9 @@ function Menu(options) { var elem = options.elem; - elem.onmousedown = function() { return false; } + elem.onmousedown = function() { + return false; + } elem.onclick = function(event) { if (event.target.closest('.title')) { @@ -9,4 +11,4 @@ function Menu(options) { } }; -} +} \ No newline at end of file diff --git a/2-ui/5-widgets/4-template-lodash/3-menu-template/solution.view/menu.js b/2-ui/5-widgets/4-template-lodash/3-menu-template/solution.view/menu.js index 17abb1ae..8f1b2aea 100755 --- a/2-ui/5-widgets/4-template-lodash/3-menu-template/solution.view/menu.js +++ b/2-ui/5-widgets/4-template-lodash/3-menu-template/solution.view/menu.js @@ -7,7 +7,9 @@ function Menu(options) { } function render() { - var html = options.template({title: options.title}); + var html = options.template({ + title: options.title + }); elem = document.createElement('div'); elem.innerHTML = html; @@ -32,8 +34,10 @@ function Menu(options) { function renderItems() { if (elem.querySelector('ul')) return; - - var listHtml = options.listTemplate({items: options.items}); + + var listHtml = options.listTemplate({ + items: options.items + }); elem.insertAdjacentHTML("beforeEnd", listHtml); } @@ -59,4 +63,4 @@ function Menu(options) { this.toggle = toggle; this.close = close; this.open = open; -} +} \ No newline at end of file diff --git a/2-ui/5-widgets/4-template-lodash/3-menu-template/source.view/menu.js b/2-ui/5-widgets/4-template-lodash/3-menu-template/source.view/menu.js index 440c6345..a34d2931 100755 --- a/2-ui/5-widgets/4-template-lodash/3-menu-template/source.view/menu.js +++ b/2-ui/5-widgets/4-template-lodash/3-menu-template/source.view/menu.js @@ -7,7 +7,9 @@ function Menu(options) { } function render() { - var html = options.template({title: options.title}); + var html = options.template({ + title: options.title + }); elem = document.createElement('div'); elem.innerHTML = html; @@ -26,8 +28,10 @@ function Menu(options) { function renderItems() { if (elem.querySelector('ul')) return; - - var listHtml = options.listTemplate({items: options.items}); + + var listHtml = options.listTemplate({ + items: options.items + }); elem.insertAdjacentHTML("beforeEnd", listHtml); } @@ -49,4 +53,4 @@ function Menu(options) { this.toggle = toggle; this.close = close; this.open = open; -} +} \ No newline at end of file diff --git a/2-ui/5-widgets/4-template-lodash/menu-template.view/menu.js b/2-ui/5-widgets/4-template-lodash/menu-template.view/menu.js index 440c6345..a34d2931 100644 --- a/2-ui/5-widgets/4-template-lodash/menu-template.view/menu.js +++ b/2-ui/5-widgets/4-template-lodash/menu-template.view/menu.js @@ -7,7 +7,9 @@ function Menu(options) { } function render() { - var html = options.template({title: options.title}); + var html = options.template({ + title: options.title + }); elem = document.createElement('div'); elem.innerHTML = html; @@ -26,8 +28,10 @@ function Menu(options) { function renderItems() { if (elem.querySelector('ul')) return; - - var listHtml = options.listTemplate({items: options.items}); + + var listHtml = options.listTemplate({ + items: options.items + }); elem.insertAdjacentHTML("beforeEnd", listHtml); } @@ -49,4 +53,4 @@ function Menu(options) { this.toggle = toggle; this.close = close; this.open = open; -} +} \ No newline at end of file diff --git a/2-ui/5-widgets/5-custom-events/1-voter-events/solution.view/voter.js b/2-ui/5-widgets/5-custom-events/1-voter-events/solution.view/voter.js index 81a9bfde..9992275e 100644 --- a/2-ui/5-widgets/5-custom-events/1-voter-events/solution.view/voter.js +++ b/2-ui/5-widgets/5-custom-events/1-voter-events/solution.view/voter.js @@ -28,9 +28,12 @@ function Voter(options) { function setVote(vote) { voteElem.innerHTML = +vote; - var widgetEvent = new CustomEvent("change", { bubbles: true, detail: +vote }); + var widgetEvent = new CustomEvent("change", { + bubbles: true, + detail: +vote + }); elem.dispatchEvent(widgetEvent); }; this.setVote = setVote; -} +} \ No newline at end of file diff --git a/2-ui/5-widgets/5-custom-events/2-selectable-list-evented/solution.view/listSelect.js b/2-ui/5-widgets/5-custom-events/2-selectable-list-evented/solution.view/listSelect.js index 2b437b05..eb5337cb 100644 --- a/2-ui/5-widgets/5-custom-events/2-selectable-list-evented/solution.view/listSelect.js +++ b/2-ui/5-widgets/5-custom-events/2-selectable-list-evented/solution.view/listSelect.js @@ -1,4 +1,3 @@ - function ListSelect(options) { var elem = options.elem; @@ -12,7 +11,7 @@ function ListSelect(options) { var li = e.target.closest('li'); if (!li) return; - if(e.metaKey || e.ctrlKey) { // для Mac проверяем Cmd, т.к. Ctrl + click там контекстное меню + if (e.metaKey || e.ctrlKey) { // для Mac проверяем Cmd, т.к. Ctrl + click там контекстное меню toggleSelect(li); } else if (e.shiftKey) { selectFromLast(li); @@ -47,17 +46,17 @@ function ListSelect(options) { if (startElem == target) { // клик на том же элементе, что и раньше // это особый случай - return; + return; } var isLastClickedBefore = startElem.compareDocumentPosition(target) & 4; if (isLastClickedBefore) { - for(var elem = startElem; elem != target; elem = elem.nextElementSibling) { + for (var elem = startElem; elem != target; elem = elem.nextElementSibling) { elem.classList.add('selected'); } } else { - for(var elem = startElem; elem != target; elem = elem.previousElementSibling) { + for (var elem = startElem; elem != target; elem = elem.previousElementSibling) { elem.classList.add('selected'); } } @@ -65,7 +64,7 @@ function ListSelect(options) { function dispatchEvent() { var widgetEvent = new CustomEvent("select", { - bubbles: true, + bubbles: true, detail: getSelected() }); elem.dispatchEvent(widgetEvent); @@ -78,4 +77,4 @@ function ListSelect(options) { }; this.getSelected = getSelected; -} +} \ No newline at end of file diff --git a/2-ui/5-widgets/5-custom-events/3-custom-select/solution.view/customselect.js b/2-ui/5-widgets/5-custom-events/3-custom-select/solution.view/customselect.js index 4db2d3a6..c04b611c 100755 --- a/2-ui/5-widgets/5-custom-events/3-custom-select/solution.view/customselect.js +++ b/2-ui/5-widgets/5-custom-events/3-custom-select/solution.view/customselect.js @@ -25,11 +25,11 @@ function CustomSelect(options) { elem.querySelector('.title').innerHTML = title; var widgetEvent = new CustomEvent('select', { - bubbles: true, + bubbles: true, detail: { title: title, value: value - } + } }); elem.dispatchEvent(widgetEvent); @@ -53,4 +53,4 @@ function CustomSelect(options) { isOpen = false; } -} +} \ No newline at end of file diff --git a/2-ui/5-widgets/5-custom-events/4-slider-events/solution.view/slider.js b/2-ui/5-widgets/5-custom-events/4-slider-events/solution.view/slider.js index 21fd7ebe..8a46981a 100644 --- a/2-ui/5-widgets/5-custom-events/4-slider-events/solution.view/slider.js +++ b/2-ui/5-widgets/5-custom-events/4-slider-events/solution.view/slider.js @@ -38,11 +38,11 @@ function Slider(options) { var newLeft = clientX - shiftX - sliderCoords.left; // курсор ушёл вне слайдера - if(newLeft < 0) { + if (newLeft < 0) { newLeft = 0; } var rightEdge = elem.offsetWidth - thumbElem.offsetWidth; - if(newLeft > rightEdge) { + if (newLeft > rightEdge) { newLeft = rightEdge; } @@ -59,7 +59,7 @@ function Slider(options) { } function positionToValue(left) { - return Math.round( left / pixelsPerValue); + return Math.round(left / pixelsPerValue); } function onDocumentMouseMove(e) { @@ -85,4 +85,4 @@ function Slider(options) { } this.setValue = setValue; -} +} \ No newline at end of file diff --git a/2-ui/5-widgets/5-custom-events/menu-callback.view/menu.js b/2-ui/5-widgets/5-custom-events/menu-callback.view/menu.js index d11120b4..80c79054 100755 --- a/2-ui/5-widgets/5-custom-events/menu-callback.view/menu.js +++ b/2-ui/5-widgets/5-custom-events/menu-callback.view/menu.js @@ -7,7 +7,9 @@ function Menu(options) { } function render() { - var html = options.template({title: options.title}); + var html = options.template({ + title: options.title + }); elem = document.createElement('div'); elem.innerHTML = html; @@ -32,8 +34,10 @@ function Menu(options) { function renderItems() { if (elem.querySelector('ul')) return; - - var listHtml = options.listTemplate({items: options.items}); + + var listHtml = options.listTemplate({ + items: options.items + }); elem.insertAdjacentHTML("beforeEnd", listHtml); } @@ -59,4 +63,4 @@ function Menu(options) { this.toggle = toggle; this.close = close; this.open = open; -} +} \ No newline at end of file diff --git a/2-ui/5-widgets/5-custom-events/menu-event.view/menu.js b/2-ui/5-widgets/5-custom-events/menu-event.view/menu.js index 61d489bc..757e2d9c 100755 --- a/2-ui/5-widgets/5-custom-events/menu-event.view/menu.js +++ b/2-ui/5-widgets/5-custom-events/menu-event.view/menu.js @@ -7,7 +7,9 @@ function Menu(options) { } function render() { - var html = options.template({title: options.title}); + var html = options.template({ + title: options.title + }); elem = document.createElement('div'); elem.innerHTML = html; @@ -32,13 +34,15 @@ function Menu(options) { function renderItems() { if (elem.querySelector('ul')) return; - - var listHtml = options.listTemplate({items: options.items}); + + var listHtml = options.listTemplate({ + items: options.items + }); elem.insertAdjacentHTML("beforeEnd", listHtml); } function select(link) { - var widgetEvent = new CustomEvent("select", { + var widgetEvent = new CustomEvent("select", { bubbles: true, detail: link.getAttribute('href').slice(1) }); @@ -63,4 +67,4 @@ function Menu(options) { this.toggle = toggle; this.close = close; this.open = open; -} +} \ No newline at end of file diff --git a/4-ajax/10-ajax-jsonp/jsonp.view/scriptRequest.js b/4-ajax/10-ajax-jsonp/jsonp.view/scriptRequest.js index acca02eb..9e2deeea 100644 --- a/4-ajax/10-ajax-jsonp/jsonp.view/scriptRequest.js +++ b/4-ajax/10-ajax-jsonp/jsonp.view/scriptRequest.js @@ -10,10 +10,10 @@ function scriptRequest(url, onSuccess, onError) { // укажем это имя в URL запроса url += ~url.indexOf('?') ? '&' : '?'; - url += 'callback=CallbackRegistry.'+callbackName; + url += 'callback=CallbackRegistry.' + callbackName; // ..и создадим саму функцию в реестре - CallbackRegistry[callbackName] = function(data) { + CallbackRegistry[callbackName] = function(data) { scriptOk = true; // обработчик вызвался, указать что всё ок delete CallbackRegistry[callbackName]; // можно очистить реестр onSuccess(data); // и вызвать onSuccess @@ -21,21 +21,21 @@ function scriptRequest(url, onSuccess, onError) { // эта функция сработает при любом результате запроса // важно: при успешном результате - всегда после JSONP-обработчика - function checkCallback() { + function checkCallback() { if (scriptOk) return; // сработал обработчик? - delete CallbackRegistry[callbackName]; - onError(url); // нет - вызвать onError + delete CallbackRegistry[callbackName]; + onError(url); // нет - вызвать onError } - var script = document.createElement('script'); + var script = document.createElement('script'); // в старых IE поддерживается только событие, а не onload/onerror // в теории 'readyState=loaded' означает "скрипт загрузился", // а 'readyState=complete' -- "скрипт выполнился", но иногда // почему-то случается только одно из них, поэтому проверяем оба - script.onreadystatechange = function() { - if (this.readyState == 'complete' || this.readyState == 'loaded'){ - this.onreadystatechange = null; + script.onreadystatechange = function() { + if (this.readyState == 'complete' || this.readyState == 'loaded') { + this.onreadystatechange = null; setTimeout(checkCallback, 0); // Вызвать checkCallback - после скрипта } } @@ -45,5 +45,4 @@ function scriptRequest(url, onSuccess, onError) { script.src = url; document.body.appendChild(script); -} - +} \ No newline at end of file diff --git a/4-ajax/10-ajax-jsonp/jsonp.view/server.js b/4-ajax/10-ajax-jsonp/jsonp.view/server.js index 1f2103df..76a540dc 100644 --- a/4-ajax/10-ajax-jsonp/jsonp.view/server.js +++ b/4-ajax/10-ajax-jsonp/jsonp.view/server.js @@ -1,7 +1,9 @@ var http = require('http'); var url = require('url'); var static = require('node-static'); -var file = new static.Server('.', { cache: 0 }); +var file = new static.Server('.', { + cache: 0 +}); function accept(req, res) { @@ -24,7 +26,7 @@ function accept(req, res) { } else { file.serve(req, res); } - + } @@ -34,5 +36,4 @@ if (!module.parent) { http.createServer(accept).listen(8080); } else { exports.accept = accept; -} - +} \ No newline at end of file diff --git a/4-ajax/11-server-sent-events/eventsource.view/server.js b/4-ajax/11-server-sent-events/eventsource.view/server.js index d078282a..e9ef800f 100644 --- a/4-ajax/11-server-sent-events/eventsource.view/server.js +++ b/4-ajax/11-server-sent-events/eventsource.view/server.js @@ -2,7 +2,7 @@ var http = require('http'); var url = require('url'); var querystring = require('querystring'); -var fileServer = new (require('node-static')).Server('.'); +var fileServer = new(require('node-static')).Server('.'); function onDigits(req, res) { res.writeHead(200, { @@ -10,7 +10,7 @@ function onDigits(req, res) { 'Cache-Control': 'no-cache' }); - var i=0; + var i = 0; var timer = setInterval(write, 1000); write(); @@ -26,7 +26,7 @@ function onDigits(req, res) { } res.write('data: ' + i + '\n\n'); - + } } @@ -51,4 +51,4 @@ if (!module.parent) { http.createServer(accept).listen(8080); } else { exports.accept = accept; -} +} \ No newline at end of file diff --git a/4-ajax/12-ajax-iframe/date-activex.view/activex.js b/4-ajax/12-ajax-iframe/date-activex.view/activex.js index b1fc3299..b09ec2c8 100644 --- a/4-ajax/12-ajax-iframe/date-activex.view/activex.js +++ b/4-ajax/12-ajax-iframe/date-activex.view/activex.js @@ -6,15 +6,15 @@ function iframeActiveXGet(url, onSuccess, onError) { var iframeName = Math.random(); var iframe = createActiveXFrame(iframeName, url); - + CallbackRegistry[iframeName] = function(data) { - iframeOk = true; + iframeOk = true; onSuccess(data); } - iframe.onload = function() { + iframe.onload = function() { iframe.parentNode.removeChild(iframe); // очистка - delete CallbackRegistry[iframeName]; + delete CallbackRegistry[iframeName]; if (!iframeOk) onError(); // если коллбэк не вызвался - что-то не так } @@ -32,6 +32,6 @@ function createActiveXFrame(name, src) { } src = src || 'javascript:false'; // пустой src - htmlfile.body.insertAdjacentHTML('beforeEnd', ""); + htmlfile.body.insertAdjacentHTML('beforeEnd', ""); return htmlfile.body.lastChild; // window in .document.parentWindow -} +} \ No newline at end of file diff --git a/4-ajax/12-ajax-iframe/date-activex.view/server.js b/4-ajax/12-ajax-iframe/date-activex.view/server.js index 353dc5b1..3ae07ea8 100644 --- a/4-ajax/12-ajax-iframe/date-activex.view/server.js +++ b/4-ajax/12-ajax-iframe/date-activex.view/server.js @@ -1,42 +1,42 @@ -var http = require('http'); -var url = require('url'); -var static = require('node-static'); -var file = new static.Server('.', { cache: 0 }); -var multiparty = require('multiparty'); - -function accept(req, res) { - - var urlParsed = url.parse(req.url, true); - res.setHeader('Cache-Control', 'no-cache'); - - if (urlParsed.pathname == '/server') { - res.end(wrap(new Date())); - return; - } else if (urlParsed.pathname == '/diff') { - - var form = new multiparty.Form(); - form.parse(req, function(err, fields, files) { - var diff = new Date() - fields.clientDate[0]; - res.end(wrap(diff)); - }); - - } else { - file.serve(req, res); - } - -} - -function wrap(data) { - return ''; -} - - -// ------ запустить сервер ------- - -if (!module.parent) { - http.createServer(accept).listen(8080); -} else { - exports.accept = accept; -} - - +var http = require('http'); +var url = require('url'); +var static = require('node-static'); +var file = new static.Server('.', { + cache: 0 +}); +var multiparty = require('multiparty'); + +function accept(req, res) { + + var urlParsed = url.parse(req.url, true); + res.setHeader('Cache-Control', 'no-cache'); + + if (urlParsed.pathname == '/server') { + res.end(wrap(new Date())); + return; + } else if (urlParsed.pathname == '/diff') { + + var form = new multiparty.Form(); + form.parse(req, function(err, fields, files) { + var diff = new Date() - fields.clientDate[0]; + res.end(wrap(diff)); + }); + + } else { + file.serve(req, res); + } + +} + +function wrap(data) { + return ''; +} + + +// ------ запустить сервер ------- + +if (!module.parent) { + http.createServer(accept).listen(8080); +} else { + exports.accept = accept; +} \ No newline at end of file diff --git a/4-ajax/12-ajax-iframe/date-comet.view/iframeComet.js b/4-ajax/12-ajax-iframe/date-comet.view/iframeComet.js index bbab5310..ddec0049 100644 --- a/4-ajax/12-ajax-iframe/date-comet.view/iframeComet.js +++ b/4-ajax/12-ajax-iframe/date-comet.view/iframeComet.js @@ -1,11 +1,11 @@ - var IframeComet = new function() { var self = this; - var connectTries = 0, reconnectTimer; + var connectTries = 0, + reconnectTimer; var htmlfile; // for ie only var iframe; - + this.onConnected = function() { connectTries = 0; clearTimeout(reconnectTimer); @@ -15,10 +15,10 @@ var IframeComet = new function() { this.onError = function(err) { /* ... */ }; - this.open = function(url) { + this.open = function(url) { connectTries++; - if(connectTries > 3) { + if (connectTries > 3) { self.onError("Unable to connect"); } @@ -29,11 +29,11 @@ var IframeComet = new function() { } reconnectTimer = setTimeout(function() { - if (!self.isConnected()) { + if (!self.isConnected()) { self.open(url); } }, connectTries * 2000); - + // в Chrome не срабатывает при обрыве соединения, // так что используем там другой =) транспорт iframe.onload = function() { @@ -46,7 +46,7 @@ var IframeComet = new function() { return connectTries == 0; // onConnect обнуляет connectTries } - function cleanIframe() { + function cleanIframe() { if (iframe) { iframe.src = "javascript:false"; iframe.parentNode.removeChild(iframe); // очистка @@ -59,7 +59,7 @@ var IframeComet = new function() { iframe = document.createElement('iframe'); iframe.src = src || 'javascript:false'; iframe.style.display = 'none'; - + document.body.appendChild(iframe); } @@ -76,7 +76,7 @@ var IframeComet = new function() { } src = src || 'javascript:false'; // пустой src - htmlfile.body.insertAdjacentHTML('beforeEnd', ""); + htmlfile.body.insertAdjacentHTML('beforeEnd', ""); iframe = htmlfile.body.lastChild; // window in .document.parentWindow } diff --git a/4-ajax/12-ajax-iframe/date-comet.view/server.js b/4-ajax/12-ajax-iframe/date-comet.view/server.js index 5a11ef88..87d56747 100644 --- a/4-ajax/12-ajax-iframe/date-comet.view/server.js +++ b/4-ajax/12-ajax-iframe/date-comet.view/server.js @@ -1,33 +1,36 @@ - var http = require('http'); var url = require('url'); var static = require('node-static'); -var file = new static.Server('.', { cache: 0 }); +var file = new static.Server('.', { + cache: 0 +}); function accept(req, res) { - if (req.url == '/comet') { - res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'}); + if (req.url == '/comet') { + res.writeHead(200, { + 'Content-Type': 'text/html; charset=utf-8' + }); - res.write(' \ - \ + res.write(' \ + \ \ '); - setInterval(function() { - var now = new Date(); - var timeStr = now.getHours()+':'+now.getMinutes()+':'+now.getSeconds(); - res.write(''); - }, 1000); + setInterval(function() { + var now = new Date(); + var timeStr = now.getHours() + ':' + now.getMinutes() + ':' + now.getSeconds(); + res.write(''); + }, 1000); - return; - } else { + return; + } else { file.serve(req, res); } - + } @@ -37,6 +40,4 @@ if (!module.parent) { http.createServer(accept).listen(8080); } else { exports.accept = accept; -} - - +} \ No newline at end of file diff --git a/4-ajax/12-ajax-iframe/date.view/iframe.js b/4-ajax/12-ajax-iframe/date.view/iframe.js index 23ae640e..cf1ab33f 100644 --- a/4-ajax/12-ajax-iframe/date.view/iframe.js +++ b/4-ajax/12-ajax-iframe/date.view/iframe.js @@ -1,12 +1,10 @@ - - function createIframe(name, src, debug) { src = src || 'javascript:false'; // пустой src var tmpElem = document.createElement('div'); // в старых IE нельзя присвоить name после создания iframe, поэтому создаём через innerHTML - tmpElem.innerHTML = '