Задать вопрос
  • Ошибка "Cannot read property 'getContext' of undefined". Что это может быть?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    У вас в вотчере стоит immediate: true, и, так как он задан на самом компоненте, вызван он будет сразу перед хуком created, когда vue-компонент уже создан но ещё не примонтирован. Соответственен никакого canvas на странице в этот момент нет.
    Самое простое решение - добавлять вотчер не сразу, а в хуке mounted через this.$watch.
    Ответ написан
    Комментировать
  • [TypeScript] Можно ли создать тип из ключей объекта?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Можно, если им явно не указать тип Args, но тогда вы теряете предварительную проверку, увы:
    let a1 = {
        channelID: {
            RegExp: ["\\d+", true],
            description: "d1"
        },
        content: {
            RegExp: [".+", true],
            description: "d2"
        }
    };
    type T1 = {[K in keyof typeof a1]: string}


    Чтобы сохранить проверку - придётся воспользоваться дополнительной бессмысленной функцией для уточнения типа:
    type Args = {
        [key: string]: {
            RegExp: [string, boolean],
            description: string
        }
    }
    function createArgs<T extends Args>(args: T): T {
        return args;
    }
    
    type TStringKeys<T extends Args> = {[K in keyof T]: string};
    
    
    let a1 = createArgs({
        channelID: {
            RegExp: ["\\d+", true],
            description: "d1"
        },
        content: {
            RegExp: [".+", true],
            description: "d2"
        }
    });
    
    type T1 = TStringKeys<typeof a1>
    К сожалению на текущий момент(ts4.2.3) избавиться от функции-обёртки не получится.
    Ответ написан
    1 комментарий
  • Как внутривенно( с уже установленной без очистки диска ) установить 10 windows?

    Aetae
    @Aetae
    Тлен
    На край можно освободить места на диске, дефрагментировать, наживую отрезать от него пустой логический диск, установить туда винду новую, ручками удалить винду старую и склеить диск обратно.

    Но обновление выглядит как-то надёжнее.)
    Ответ написан
    Комментировать
  • Как полностью анонимизировать операционную систему?

    Aetae
    @Aetae
    Тлен
    Поставить в виртуалке, запускать по мере надобности, выключать без сохранения состояния.
    Ответ написан
    Комментировать
  • Как строго валидировать параметры во vue роутинге?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Во-первых: вообще непонятно как по вашему должна выглядеть "строгая" валидация. Крашить приложение?
    Во-вторых: эта валидация в компоненте, а не в роутинге.
    В-третьих: любой входной параметр маршрута - по определению строка, т.к. является частью строки - url.

    В итоге: props в свойствах маршрута может быть функцией. В эту функцию вы можете добавить как свой валидатор, так и приведение типов.
    Ответ написан
    Комментировать
  • Как сделать отдельный js файл на томже уровне что и dist?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Если юзается vue-cli - то в проекте есть папочка public, кладите туда.
    Если чистый webpack - то нужен copy webpack plugin.
    Ответ написан
    Комментировать
  • Можно ли внутри шаблона увеличить переменную в data?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Технически можно, практически - нельзя. Она будет обновляться каждую перерисовку, и в vue вы перерисовку не контролируете, vue сам перерисовывает когда считает нужным. Можно предположить сколько и когда перерисовок будет, т.к. vue не рисует лишнего, но никаких гарантий.
    Ну и в целом шаблон - он для отображения, любые изменения внутри оного - надругательство над самой идеей.
    Ответ написан
    Комментировать
  • Как реализовать спряжения при помощи VueI18n?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Ответ написан
    Комментировать
  • Как отсортировать по порядку в .xlsx в файле используя 2D массив?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    arr.sort(function(a, b) {
      return b[1] - a[1];
    })

    Вообще это можно и в экселе делать.(хз правда как:)).

    Доп инфа, если делаете для себя: эксель можно через ActiveX подключить в виндовый hta\jscript и проводить операции прям над xlsx файлом.
    Ответ написан
    2 комментария
  • Как правильно выполнить типизацию функции трансформации данных?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    interface IOrder {
        date: string,
        docTypesName: string,
        docId: number,
        image: string,
        name: string,
        price: number,
        quantity: number,
        removed: number,
    }
    
    interface  IProduct {
        image: string,
        name: string,
        price: number,
        quantity: number,
    }
    
    interface IDocument {
        date: string,
        docId: number,
        docTypesName: string,
        products: IProduct[],
    }
    
    interface IElement {
        date: string,
        documents: IDocument[]
    }
    
    interface IElementMap {
        date: string,
        documents: Record<string, IDocument>
    }
    
    type IResultMap = Record<string, IElementMap>;
    
    function f(orders: IOrder[]): IElement[] {
        const result = orders.reduce((accumulator, currentValue) => {
            const date = currentValue.date.split(' ')[0];
    
            if (!accumulator[date]) {
                accumulator[date] = {
                    date,
                    documents: {},
                }
            }
    
            if (!accumulator[date].documents[currentValue.docTypesName]) {
                accumulator[date].documents[currentValue.docTypesName] = {
                    date: currentValue.date,
                    docId: currentValue.docId,
                    docTypesName: currentValue.docTypesName,
                    products: [],
                }
            }
    
            accumulator[date].documents[currentValue.docTypesName].products.push({
                name: currentValue.name,
                price: currentValue.price,
                image: currentValue.image,
                quantity: currentValue.quantity,
            })
    
            return accumulator;
        }, {} as IResultMap)
    
        console.log('result', result);
    
        return Object.values(result).map(currentValue => {
            console.log('currentValue', currentValue);
    
            return {
                ...currentValue,
                documents: Object.values(currentValue.documents)
            }
        });
    }
    
    console.log(f(orders));
    Ответ написан
    Комментировать
  • Как использовать снипетты в vue.js?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Чувак, это называется циклы.
    Ответ написан
    Комментировать
  • Как получить корректный результат при рендеринге компонента?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Ну, всё нормально, компонент никого не ждёт и монтируется себе синхронно. Когда запрос отработает тогда значение и будет. Поскольку это геттер - то vue всё обновит когда надо. Просто показывайте какой-нить спиннер пока currentTourGetter пуст.
    Ответ написан
    Комментировать
  • Как получить елемент внутри v-bind?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Начнём с того, что вы не должны лезть внутрь компонента-ребёнка из компонента-родителя. Никогда. Компонент-ребёнок - это чёрный ящик. Вы не знаете есть ли в нём вообще firstChild и что там у него со scrollHeight. Не знаете, говорю, даже если сами тот компонент написали. Это основа компонентного подхода: содержимое любого компонента может быть полностью переписано без влияния на зависимые от него родительские компоненты. Любое управление осуществляется через props, события (и, в особых случаях, докуметированные публичные методы и свойства, получаемые через ref).

    В данном случае вам нужно для ребёнка сделать компонент-обёртку(или поправить его самого), либо добавив свойство вроде set-height-by-child, которое и будет управлять данным поведением, либо, если нужна работа с этой высотой снаружи, посылать из него событие вроде @emit('scroll-height-changed', scrollHeight) при mounted, при изменении размера экрана и прочих возможных случаях.
    Ответ написан
    Комментировать
  • Как получить список процессов windows используя node.js?

    Aetae
    @Aetae
    Тлен
    Из консольки.)
    const { exec } = require('child_process')
    
    exec(`tasklist /FO CSV`, (err, stdout, stderr) => {
      if (err || stderr)
        return console.error(err || stderr);
    
      return console.log(stdout); // csv-parser...
    })
    Ответ написан
    Комментировать
  • Как сделать блоки с автоподбором ширены с css flex без js?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    1. Использовать grid.
    2. Досыпать в конец блоков с нулевой height сколько надо на заполнение сточки.
    Ответ написан
  • Как вставить в DOM динамический компонент Vue, находящийся в полученном по xhr html?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Правильный ответ: не грузить html с сервера. Серьёзно, это противоречит самой идее SPA. С сервера должны пилетать данные, хотя-бы как-то так:
    { 
      infoBlock: [{
        type: 'text',
        value: '...'
      },{
        type: 'component',
        value: 'review'
      },{
        type: 'text',
        value: '...'
      }]
    }
    а уже SPA разложит это всё на готовую разметку.

    Вредный ответ: Vue.compile().
    Ответ написан
    Комментировать
  • Как создать v-on: события?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Что вы пристали к этим директивам. Директивы - нишевая фича, нужная в специфических общих случаях. Если вы пишите директиву для одного компонента - вы делаете что-то не так(99%).

    Так вот @transitionend="mymethod" должно работать само по себе, без лишних телодвижений. В крайнем случае @transitionend.native="mymethod" если цель - другой компонент.
    Ответ написан
    2 комментария
  • Нужно ли знать синтаксис webpack фронту?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Достаточно представлять себе принципы и возможности, углубляться стоит по мере необходимости, как и со всем остальным. В мире слишком много всего, досконально всё это знать невозможно(если вы не супермен).
    По вебпаку у меня несколько написанных плагинов, пара лоадеров, хитро-закрученные конфиги entry-point'ов с шарингом chunk'ов и множество использованных малоизвестных фич за плечам. Знаю ли я webpack? Нет, я не знаю webpack, в нём ещё тонна чего я не каслся. Но документация вот она, сорцы вон они, надо будет - разберусь.
    Ответ написан
    Комментировать
  • Как полностью избавиться от отступов, который выставляет браузер?

    Aetae
    @Aetae
    Тлен
    line-height?
    Ответ написан
    Комментировать
  • Почему slideUp() и slideDown() срабатывают несколько ршз?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Потому что при каждом resize, если $(window).width() <= 768 ты добавляешь новый обработчк клика, не удаляя старый. Подёргай окно сто раз - будет сто раз срабатывать при клике.
    Ответ написан