
Valeriy
25.09.2018
00:38:08
1. значения фильта все равно нужно хранить в стейте
2. эти значения можно менять как из фильтра таблицы, так и из любых внешних источников
3. эти значения можно легко проносить в саму таблицу из стейта для фильтрации данных
4. эти значения из стейта можно отображать и редактировать в других внешних элементах

Google

Valeriy
25.09.2018
00:41:56
по поводу тригериться на изменения фильтра в других компонентах, так можно сохранять в редакс и подписаться на изменения фильтра в редаксе


m
25.09.2018
00:45:56
1. значения фильта все равно нужно хранить в стейте
всё верно, более того, таблица и так это делает, и позволяет поддерживать поля ввода в React-way, то есть с завязкой value на state. (что даёт бонусом корректную синхронизацию, если у нас два и более одиннаковых поля)
https://react-table.js.org/#/story/custom-filtering
2, да, но при внешнем измменении требуется идентификация поля по айди, в то время как при кастомных фильтрах у нас есть колбек.
3, +
4, +
Проблемы нет в том, чтобы их менять и редактировать снаружи. Это возможно. Но это не удобно и требует модификации (п.2), и лишает некоторых важных приемуществ, которыми я пользуюсь сейчас. К примеру, таблица сама создаёт за меня именно нужное количество фильтров. Определять отдельно вручную, какие фильтры мне нужны сейчас (а колонок у меня больше 25 , и фильтров примерно 10 видов) потребует дополнительного усложнения и большего потребления ресурсов, в то время как сейчас всё работает почти "из коробки".
Триггериться тоже не проблема - стейт фильтрации доступен. Хочу иметь доступ к пропсам фильтра откуда-то снаружи. По ref я могу их получить, и размазать по новому внешнему компоненту, но мне кажется клонировать было бы правильнее.


Valeriy
25.09.2018
00:50:24
всё верно, более того, таблица и так это делает, и позволяет поддерживать поля ввода в React-way, то есть с завязкой value на state. (что даёт бонусом корректную синхронизацию, если у нас два и более одиннаковых поля)
https://react-table.js.org/#/story/custom-filtering
2, да, но при внешнем измменении требуется идентификация поля по айди, в то время как при кастомных фильтрах у нас есть колбек.
3, +
4, +
Проблемы нет в том, чтобы их менять и редактировать снаружи. Это возможно. Но это не удобно и требует модификации (п.2), и лишает некоторых важных приемуществ, которыми я пользуюсь сейчас. К примеру, таблица сама создаёт за меня именно нужное количество фильтров. Определять отдельно вручную, какие фильтры мне нужны сейчас (а колонок у меня больше 25 , и фильтров примерно 10 видов) потребует дополнительного усложнения и большего потребления ресурсов, в то время как сейчас всё работает почти "из коробки".
Триггериться тоже не проблема - стейт фильтрации доступен. Хочу иметь доступ к пропсам фильтра откуда-то снаружи. По ref я могу их получить, и размазать по новому внешнему компоненту, но мне кажется клонировать было бы правильнее.
я по 2 пункту не совсем понял про кастомный фильтр и колбек
чего там не хватает?


m
25.09.2018
00:52:56
я по 2 пункту не совсем понял про кастомный фильтр и колбек
кастомный фильтр создаётся следующим способом (пример из доков):
Filter: ({ filter, onChange }) =>
<select
onChange={event => onChange(event.target.value)}
value={filter ? filter.value : "all"}
>
<option value="all">Show All</option>
...
</select>
filter - это обьект, по умолчанию undefined, содержащий информацию о изменении поля фильтра (айдишник, новое значение, кажется что-то еще). Подобный обьект передаётся в filterMethod
Вариант решения моей задачи - аккуратно иметь filter и onChange где-то еще (плиз, не в редаксе). По ссылке я их могу получить, но зачем ограничиваться только ими.
Ещё важно иметь всегда актуальное количество и тип фильтров - точно такой же, как в шапке таблицы. То есть я ну очень не хочу определять, какие фильтры отображены, и согласно полученной информации создавать такие же фильтры снаружи. Сейчас есть идея как-то собирать создавшиеся ссылки и потом копировать по ним необходимое количество элементов вместе с их пропсами и т.д.


Valeriy
25.09.2018
01:03:23
кастомный фильтр создаётся следующим способом (пример из доков):
Filter: ({ filter, onChange }) =>
<select
onChange={event => onChange(event.target.value)}
value={filter ? filter.value : "all"}
>
<option value="all">Show All</option>
...
</select>
filter - это обьект, по умолчанию undefined, содержащий информацию о изменении поля фильтра (айдишник, новое значение, кажется что-то еще). Подобный обьект передаётся в filterMethod
Вариант решения моей задачи - аккуратно иметь filter и onChange где-то еще (плиз, не в редаксе). По ссылке я их могу получить, но зачем ограничиваться только ими.
Ещё важно иметь всегда актуальное количество и тип фильтров - точно такой же, как в шапке таблицы. То есть я ну очень не хочу определять, какие фильтры отображены, и согласно полученной информации создавать такие же фильтры снаружи. Сейчас есть идея как-то собирать создавшиеся ссылки и потом копировать по ним необходимое количество элементов вместе с их пропсами и т.д.
columns для таблицы где формируется?


m
25.09.2018
01:04:12

Valeriy
25.09.2018
01:04:45
это я по поводу определения сколько там фильтров и названий полей
вся эта инфа есть вэтом массивчике же

m
25.09.2018
01:05:46

Valeriy
25.09.2018
01:06:42
ну хз... завтра понадобится на странице 10 разных таблиц выводить и переключаться табами между их фильтрами :)))
и будет попа

m
25.09.2018
01:08:29
это я по поводу определения сколько там фильтров и названий полей
более того, у колонки есть аттрибут show, который если false, скрывает и колонку и фильтр автоматически. Вот еще бы мне попроверять на кучу условий необходимость создания фильтра для колонки, а потом его тип, а потом отдельный колбек для него, отдельный api - нет нет, увольте.

Google

m
25.09.2018
01:08:49

Valeriy
25.09.2018
01:08:59
кроме того, если вдруг таблица размаунтится раньше твоего внешнего фильтра тоже могут быть вопросы
т.к. свойства filter и onChange переданные в компонент фильтра будут забиндены на табличный компонент

m
25.09.2018
01:10:10

Valeriy
25.09.2018
01:10:20
есть подозрение, что имеет место быть не совсем правильная композиция компонентов просто
отсюда и проблема на ровном месте

m
25.09.2018
01:11:31

Valeriy
25.09.2018
01:12:11
не хочешь через редакс прокидывать фильтры, сделай через context api новый
воткни провайдера над обеими компонентами
а в них консумеров и все

m
25.09.2018
01:12:42

Valeriy
25.09.2018
01:13:17
ну так чтобы провайдер был выше и внешнего фильтра и выше таблицы по иерархии
в провайдере уже храни сам фильтр и методы его меняющие

m
25.09.2018
01:14:37

Valeriy
25.09.2018
01:15:05
можешь
можешь там фабрику даже сделать для создания таблицы и фильтра
и методы управления колонками и фильтрами, чтобы синкались они ровно

m
25.09.2018
01:16:47

Valeriy
25.09.2018
01:16:57
и все же сложно понять как фильтр от таблицы может оказаться в каком-то совсем далеком месте от самой таблицы

Google

Mark
25.09.2018
01:28:31
Привет
Как заменить env var в файле, который импортируется в таску gulp? В самой таске переменные правильные, а вот файл, который я импортирую - класс, дата хендлер, мне нужно оттуда запустить пару методов, чтобы получить данные с сервера, но для дева - нужно запрос на локальный сервер, для stg - на stg, а для продакшена - на прод
Кто нибудь сталкивался??

Valeriy
25.09.2018
01:34:29
Привет
Как заменить env var в файле, который импортируется в таску gulp? В самой таске переменные правильные, а вот файл, который я импортирую - класс, дата хендлер, мне нужно оттуда запустить пару методов, чтобы получить данные с сервера, но для дева - нужно запрос на локальный сервер, для stg - на stg, а для продакшена - на прод
Кто нибудь сталкивался??
странно, а почему ты этот вопрос в чатике по vue не задал?

Mark
25.09.2018
01:35:28
Эт просто:
1) Я там не сижу
2) В чатике ноды меня просили пройти на фронт
3) Галп - фронт
И да, я бы галп не юзал, но я сейчас в офисе, это моя работа, а если работа требует - нужно сделать

Valeriy
25.09.2018
01:36:35
с каких пор task manager gulp стал фронтом ? ):))

Mark
25.09.2018
01:39:44
Его на сервер не крутят (насколько мне известно)
И чувак, мне помощь нужна, а не философские обсуждения о галпе

Valeriy
25.09.2018
01:40:56
тут чатик по реакту, о галпе тут конечно слышали издалека многие, но давно уже сменили его либо на вебпак, либо еще на что-нибудь хипсторское

Mark
25.09.2018
01:41:41
Надо мне работу сменить
Хорошо, даже убрав галп, суть вопроса даже не столько в нем, а сколько в том, как менять evn var в импортируемом файле

Valeriy
25.09.2018
01:42:30
единственный нормальный кейс использования галпа, это когда один из его тасков запускает вебпак :))))

Mark
25.09.2018
01:43:02
Мне не нравится галп, но никто не станет сейчас переписывать проект только потому-что мне он не нравится
Меня нахуй скорее пошлют ?

Bugs
25.09.2018
03:56:21

Artyom
25.09.2018
04:20:41

GreenMan
25.09.2018
04:21:45
Привет)
Как прикрутить валидацию на checkbox
проверять checked true||false

Set
25.09.2018
05:00:41
привет! подскажите пожалуйста почему он ругается на Access-Control-Allow-Origin хотя я его указал.
Ошибка:
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8081' is therefore not allowed access.
axios({
method: "POST",
url: `${ROOT_URL}/auth`,
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods' : 'POST',
'Content-Type': 'application/json;charset=UTF-8',
'App-Token': AppToken,
},
data: {
email: values.email,
password: values.password
},
})

shut up
25.09.2018
05:01:00
Я перечитал все первые ссылки про сессии и куки. Со вторыми более-менее все понятно, но с сессиями - совсем плохо.
Как я понял, это просто файл с ID, в втором хранится пользовательская инфа? Эта инфа берётся из северной бд, верно? Но разве это целесообразно? Придётся создавать файлы для сессии.


Artyom
25.09.2018
05:01:23
привет! подскажите пожалуйста почему он ругается на Access-Control-Allow-Origin хотя я его указал.
Ошибка:
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8081' is therefore not allowed access.
axios({
method: "POST",
url: `${ROOT_URL}/auth`,
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods' : 'POST',
'Content-Type': 'application/json;charset=UTF-8',
'App-Token': AppToken,
},
data: {
email: values.email,
password: values.password
},
})
Во первых корсы настраиваются на сервере, во вторых никогда не ставьте '*'

shut up
25.09.2018
05:01:58
Пока писал, понял, что Сессии + куки == сеансовый протокол

Set
25.09.2018
05:06:41

Google

Admin
ERROR: S client not available

Set
25.09.2018
05:16:53

Artyom
25.09.2018
05:17:04

Set
25.09.2018
05:18:25
и?
поэтому думал нужно указать
'Access-Control-Allow-Origin': '*',
теперь буду знать

Max
25.09.2018
05:18:44
и?
не шаришь ты, вот что “и” ) хаха) доброе утро.

Artyom
25.09.2018
05:21:14
поэтому думал нужно указать
'Access-Control-Allow-Origin': '*',
в Access-Control-Allow-Origin перечисленные доверенные ресурсы. Этот заголовок указывает сервер с которого хостится статика собственно. * - означает доверять ВСЕМ, что является серьёзной потенциальной дырой в безопасности. Просто либо укажи там путь к api серверу, либо закрой сделай на хостинге проксю к апи и с клиента ходи на эту "локальную" проксю.
(второй вариант предпочтительней)

Set
25.09.2018
05:21:19

Artyom
25.09.2018
05:22:08

Max
25.09.2018
05:22:13
значит надо попросить “программиста” другого сайта проставить заголовки

Artyom
25.09.2018
05:23:08

Set
25.09.2018
05:23:32
тогда не понимаю почему он ругается

Max
25.09.2018
05:23:37

dima
25.09.2018
05:25:06

Artyom
25.09.2018
05:25:26

Max
25.09.2018
05:26:18

Set
25.09.2018
05:27:55
так у меня до этого заходило! но сейчас нет!
апп токен верный и логин с паролем правельный

Google

Artyom
25.09.2018
05:28:22
Опиши одним сообщением. Не нужно по всему чату разбрасывать куски информации

Set
25.09.2018
05:30:58
сначала я сделал так
let axiosConfig = {
headers: {
'Content-Type': 'application/json;charset=UTF-8',
'App-Token': AppToken,
}
};
let formData = {
email: email,
password: password
};
const request = axios.post(`${ROOT_URL}/auth`,formData, axiosConfig);
request
.then(response => {
// -Save the JWT token
localStorage.setItem('token', response.data['auth_token']);
все работало! после решил сделать его норм
после чего выводится такая ошибка

Artyom
25.09.2018
05:32:11
"его норм"?

Павел
25.09.2018
05:49:09
Парни,сталкивался кто, что ref положенный в store redux вешает redux devtools?

Artyom
25.09.2018
05:49:39
?♂️?♂️?♂️

Павел
25.09.2018
05:50:29
Через попсы очень далеко, общий предок далеко