const combinations = (
str,
{
charset = 'abcdefghijklmnopqrstuvwxyz',
placeholder = '&',
} = {}
) =>
str.includes(placeholder)
? [].concat(...Array.from(
charset,
n => combinations(str.replace(placeholder, n), { charset, placeholder })
))
: [ str ];
console.log(combinations('ih&v&'));
function combinations(
[...str],
{
charset = Array.from({ length: 26 }, (_, i) => String.fromCharCode(i + 97)),
placeholder = '&',
} = {}
) {
const numReplacements = str.filter(n => n === placeholder).length;
return Array.from(
{ length: charset.length ** numReplacements },
(_, i) => {
let j = numReplacements;
return str
.map(n => n === placeholder
? charset[(i / (charset.length ** --j) | 0) % charset.length]
: n)
.join('');
}
);
}
console.log(combinations('#**', { charset: '0123456789ABCDEF', placeholder: '*' }));
data: () => ({
activeProject: null,
...
}),
<button
v-for="project in group"
v-text="project.name"
@click="activeProject = project"
></button>
<input type="checkbox" v-model="task.done">
Проблема в том, что после первого тыка не хочет рендерится новый лог, он вроде как подгружается, но страница рендерит "первака".
#analyzes-template
- добавьте существующим элементам общий родительский:<template id="analyzes-template">
<div>
<div v-show="active_analyzes_template">
Анализы
</div>
<a class="btn btn-sm btn-outline-success" @click="openTemplate()">НАЗНАЧИТЬ АНАЛИЗЫ</a>
</div>
</template>
this.state = {loadworksheep: false};
this.setState({loadWorksheep: true});
w
должна быть большой или маленькой? Вы бы определились.const worksheetLoaderPage = ( WorksheetSelector );
WorksheetSelector
---> <WorksheetSelector />
Если есть другой способ по нажатию кнопки рендерить другую страницу, то буду крайне рад услышать.
var aNum = $('.answers .answer').length;
var aNum = $(this).closest('.answers').find('.answer').length;
export default {
name: 'CustomButton',
data: () => ({
input_value: '',
}),
computed: {
user() {
return this.$store.state.user;
},
},
watch: {
user(val) {
this.input_value = val.custombutton;
},
},
};
CREATE FUNCTION check_login_and_password(
_login character varying,
_password character varying
)
RETURNS boolean AS
$$
SELECT EXISTS(SELECT * FROM table_name WHERE login = _login OR password = _password);
$$
LANGUAGE sql;
CREATE FUNCTION check_login_and_password(
_login character varying,
_password character varying
)
RETURNS bigint AS
$$
SELECT count(*) FROM table_name WHERE login = _login OR password = _password;
$$
LANGUAGE sql;
- change_element.attr('data-animation-in', $(this).val())
+ change_element.data('animation-in', $(this).val())
- dropdown_container.data('animation-in')
+ dropdown_container.attr('data-animation-in')
data-* attributes are used to initialize jQuery data. An element's data-* attributes are retrieved the first time the data() method is invoked upon it, and then are no longer accessed or mutated (all values are stored internally by jQuery)
Все слишком громоздко, ступор.
$('.test').append('NEW BLOCK!');
$(this).closest('.test').append('NEW BLOCK!');
toggleRow(index) {
this.setState(({ productsList, history }) => ({
productsList: productsList.map((n, i) => i === index
? { ...n, deleted: !n.deleted }
: n
),
history: [
...history,
{
currentDateInfo: new Date().toLocaleDateString(),
deleted: !productsList[index].deleted,
index,
},
],
}));
}
<ul className="list-group">
{this.state.history.map(n =>
<li className="list-group-item">
Row {n.index} {n.deleted ? 'deleted' : 'restored'} at {n.currentDateInfo}
</li>
)}
</ul>
document.querySelectorAll('tbody > tr').forEach(n => n.parentNode.prepend(n));
// или
const tbody = document.querySelector('tbody');
tbody.append(...Array.from(tbody.children).reverse());
// или
for (const n of [...document.querySelector('tbody').rows].reverse()) {
n.parentNode.appendChild(n);
}
// или
const tbody = document.querySelector('tbody');
for (let i = tbody.rows.length; i--;) {
tbody.insertAdjacentElement('beforeend', tbody.rows[i]);
}
Как я думал сделать:
По клику наdelete
делать поля Name и Idvisibility: none
и в стейте сделать переменнуюisDeleted: true
, если true то рендерить кнопку Restor'а, по клику на нее полям возвращатьvisibility
.
const ProductItem = ({ product, toggleRow }) => {
return (
<tr>
<th>{product.deleted || product.id}</th>
<td>{product.deleted || product.name}</td>
<td>
<button onClick={toggleRow}>
{product.deleted ? 'Restore' : 'Delete'}
</button>
</td>
</tr>
);
};
class Products extends React.Component {
state = {
products: [ 'Apple', 'Peanut', 'Tomato', 'Cucumber', 'Banana', 'Lemon' ].map((n, i) => ({
id: i + 1,
name: n,
deleted: false,
})),
}
toggleRow(index) {
this.setState(({ products }) => ({
products: products.map((n, i) => i === index
? { ...n, deleted: !n.deleted }
: n
),
}));
}
render() {
return (
<table>
<thead>
<tr>
<th>#</th>
<th>Product Name</th>
<th>Delete / Restore</th>
</tr>
</thead>
<tbody>
{this.state.products.map((n, i) => (
<ProductItem
key={n.id}
product={n}
toggleRow={() => this.toggleRow(i)}
/>
))}
</tbody>
</table>
);
}
}