Webix поддерживает все операции с буфером обмена во всех компонентах с данными. Для этих целей у библиотеки есть миксин CopyPaste.
По умолчанию, поддержка отключена. Чтобы включить её укажите свойству clipboard значение true:
Включаем поддержку буфера
webix.ui({
view:"list",
// конфиг списка
clipboard: true,
});
Related sample: List: Work with Clipboard
Этот миксин уже включён в следующие 3 компонента:
Если вам необходимо работать с буфером обмена в других компонентах с данными, расширьте функциональность желаемого компонента с помощью класса CopyPaste. Например так можно добавить поддержу для DataView:
webix.ui({
view:"dataview",
id:"myview",
// dataview конфиг
clipboard: true,
});
webix.extend($$("myview"),webix.CopyPaste);
Чтобы настроить то, как данные будут сохранены в буфер обмена (когда пользователь нажимает Ctrl+C), используйте свойство templateCopy. В этом случае перед тем, как попасть в буфер, скопированные данные будут модифицированы в соответствии с указанным темплейтом.
Чтобы у вас была возможность использовать свойство templateCopy, укажите свойству clipboard значение "custom".
Давайте рассмотрим простой пример. У вас есть список, который показывает названия ваших любимых фильмов. Предположим, что помимо названий вы хотите хранить в буфере обмена года выпуска и рейтинги.
Как это сделать:
var films_set = [
{ id:1, title:"The Shawshank Redemption", year:1994, votes:678790, rating:9.2},
{ id:2, title:"The Godfather", year:1972, votes:511495, rating:9.2},
{ id:3, title:"The Godfather: Part II", year:1974, votes:319352, rating:9.0},
{ id:5, title:"My Fair Lady", year:1964, votes:533848, rating:8.9}
];
webix.ui({
container:"box",
view:"list",
data:films_set,
template:"#title#",
clipboard: "custom",
templateCopy: function(item) {
return item.title+" (year: "+ item.year+", rating: "+item.rating+")";
}
});
Related sample: List: Work with Clipboard
Чтобы настроить то, как данные будут взяты из буфера обмена в компонент Webix, вам необходимо использовать событие onPaste.
Событие срабатывает, когда пользователь нажимает сочетание клавиш Ctrl+V. Функция-обработчик принимает текст из буфера обмена в качестве параметра.
Чтобы у вас была возможность использовать событие onPaste, укажите свойству clipboard значение "custom".
var films_set = [
{ id:1, title:"The Shawshank Redemption", year:1994, votes:678790, rating:9.2},
{ id:2, title:"The Godfather", year:1972, votes:511495, rating:9.2},
{ id:3, title:"The Godfather: Part II", year:1974, votes:319352, rating:9.0},
{ id:5, title:"My Fair Lady", year:1964, votes:533848, rating:8.9}
];
webix.ui({
view:"list",
id:"mylist",
// конфиг списка
clipboard: "custom"
});
$$("mylist").attachEvent("onPaste", function(text) {
text = text.split(" , ");
var sel = this.getSelectedId(true);
for (var i = 0; i < sel.length; i++) {
var item = this.getItem(sel[i]);
item.title = text[0];
item.year = text[1];
item.votes = text[2];
item.rating = text[3];
this.refresh(sel[i]);
}
});
Related sample: List: Work with Clipboard
tree.attachEvent("onPaste", function(text) {
webix.message("Node is pasted: " + text);
});
Related sample: Custom Clipboard Operations with Tree
Наверх