Skip to content

Instantly share code, notes, and snippets.

View dosandk's full-sized avatar

Volodymyr Shevchuk dosandk

View GitHub Profile
describe('async-code-fetch-api-part-1/column-chart', () => {
let columnChart;
beforeEach(() => {
fetchMock
.once(JSON.stringify(ordersData));
columnChart = new ColumnChart({
label: '',
link: '',
import fetchJson from './utils/fetch-json.js';
const BACKEND_URL = 'https://course-js.javascript.ru';
export default class ColumnChart {
element;
subElements = {};
chartHeight = 50;
constructor({
export default class RangePicker {
element = {};
constructor({from, to}) {
this.from = from;
this.to = to;
this.selectionStart = from.getTime();
this.selectionEnd = to.getTime();
this.clickOnRangePicker = 0;
this.firstShow = false;
@dosandk
dosandk / index.js
Created November 23, 2020 20:05
ColumnChart v2
import fetchJson from './utils/fetch-json.js';
const BACKEND_URL = 'https://course-js.javascript.ru';
export default class ColumnChart {
element;
subElements = {};
chartHeight = 50;
constructor({
import fetchJson from './utils/fetch-json.js';
export default class ColumnChart {
element;
chartHeight = 50;
subElements = {};
constructor({
data = {},
url = '',

В JavaScript Значение this вычисляется во время выполнения кода и не зависит от того, где этот метод был объявлен, а зависит от того, какой объект вызывает метод (какой объект стоит «перед точкой»).

Рассмотрим пример:

function sayHi () {
  console.log(`hi ${this.nickname}`);
};
@dosandk
dosandk / index.js
Created July 27, 2020 08:20
SortableTable
export default class SortableTable {
element;
subElements = {};
headersConfig = [];
data = [];
sortByClick = event =>{
const column = event.target.closest('[data-sortable="true"]');
if (column) {
function snail (array) {
const result = [];
function doStep (array) {
result.push(...array.splice(0, 1))
if (array.length) {
doStep(rotateMatrix(array));
}
}
class Tooltip {
element = null;
targetForTooltip = null;
tooltipIsCreated = false;
_showTooltip = (event) => {
if (event.target.dataset.hasOwnProperty('tooltip')) {
this.render(event.target.dataset.tooltip);
this.element.setAttribute('style', `top: ${event.clientY}px; left: ${event.clientX}px;`);
class Todo {
element;
subElements = {};
constructor() {
this.render();
this.getSubElements();
this.addEventListeners();
}