// ==UserScript==
// @name Onlinetrade Product Search
// @name:ru Onlinetrade Поиск товаров
// @namespace https://github.com/AlekPet/Onlinetrade-Product-Search
// @version 0.3.3
// @description Onlinetrade - Product search on other sites
// @description:ru Onlinetrade - Поиск товара на других сайтах
// @copyright 2021, AlekPet
// @author AlekPet
// @license MIT; https://raw.githubusercontent.com/AlekPet/Onlinetrade-Product-Search/master/LICENSE
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF8WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIxLTAyLTA5VDA5OjU2OjE3KzAzOjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIxLTAyLTA5VDA5OjU2OjE3KzAzOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMS0wMi0wOVQwOTo1NjoxNyswMzowMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDphMTcwZTVhYi1mMTVlLTg2NDYtOWJkZi04MThmNTUwMjVkMmEiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpjN2IxYmEwOC1iMmU2LTAzNDAtYWJkZS1mY2EwYmI1MGEyMDIiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpmNmNiNGI1NC05NTc2LWRiNDAtODVmNi1hNTg0NDM4YjI0YzgiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmY2Y2I0YjU0LTk1NzYtZGI0MC04NWY2LWE1ODQ0MzhiMjRjOCIgc3RFdnQ6d2hlbj0iMjAyMS0wMi0wOVQwOTo1NjoxNyswMzowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDphMTcwZTVhYi1mMTVlLTg2NDYtOWJkZi04MThmNTUwMjVkMmEiIHN0RXZ0OndoZW49IjIwMjEtMDItMDlUMDk6NTY6MTcrMDM6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMS4yIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5+sHWnAAAUzklEQVRo3s1ZB3Rc5ZW+r0/RFI1mRqNqWZJluRsXLDdEYrCBBJwlOEtJgJQDi2PibBJylrSz2c0m2YWTTV0O5SSbhd1sNqEFAiEYY0xwwR3bkiVZVrPaSNPre/PKfv+TbGwIQWSTs3lw/c88vfLde7/b/uG2bdtGf+zBcRxZlkWGYZCu6+fXaVmhqurGTCZzRS6Xi2ia1grhcI6YlEoltpo4N8Tz/DHIq/j8dLFY7GHPvPDYsGEDffCDHyQ8h0zTvOhvIv2JD0EQNgPEFyYnJ9cx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
// @match *://www.onlinetrade.ru/*
// @connect www.onlinetrade.ru
// @run-at document-end
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_addStyle
// @require https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js
// ==/UserScript==
(function() {
'use strict';
GM_addStyle(`
.services_search_item_name {
border: 1px solid silver;
padding: 5px;
background: #ffffffd1;
box-shadow: 2px 2px 8px #77d2d299;
transform: translate(-50%,0);
transition: all .5s;
font-size: 0.7em;
width: 200px;
color:#2b52e2;
font-weight: bold;
}
.menu_cat{
overflow-y: auto;
max-height: 350px;
}
.menu_cat > li {
list-style: none;
margin-bottom: 2px;
background: linear-gradient(45deg, #77d2d299, transparent);
border-radius: 0 8px 8px 0;
padding: 5px;
word-break: break-all;
}
.menu_cat > li:hover {
transition: all .5s;
background: linear-gradient(45deg, #9bffff99, transparent);
font-size: 1.1em;
}
.menu_cat > li:first-child a{
color:#f76f6f;
}
.menu_cat_list{
margin-left: 0;
display: inline-block;
margin-top: 0.8%;
}
ul.services_list li {
display: inline-block;
padding: 2px;
margin-bottom: 4px;
font-size: 8px;
cursor: pointer;
user-select:none;
}
li.service_active{
background: #c2fb8fbf;
border-left: 5px solid #09ff00;
}
.search_goods_button {
margin-right: 8px;
}
.search_goods_button:before {
background-position: -96px 0px;
}
.box_items {
top: 20px;
position: absolute;
z-index: 14;
}
.menu_cat::-webkit-scrollbar {
width: 10px;
}
.menu_cat::-webkit-scrollbar-button {
}
.menu_cat::-webkit-scrollbar-thumb {
background: #ff8100;
border-radius: 10px;
box-shadow: 0 0 6px rgba(0,0,0,0.3);
}
.menu_cat::-webkit-scrollbar-track-piece {
background: #d7d7d7;
border-radius: 10px;
box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
}
`)
const $ = window.jQuery,
debug = true
var services = {
'E-Katalog':{
s:'https://www.e-katalog.ru/ek-list.php?search_='
},
'YAMarket':{
s:'https://market.yandex.ru/search?text='
},
'OZON':{
s:'https://www.ozon.ru/search/?from_global=true&text='
},
'Citilink':{
s:'https://www.citilink.ru/search/?text='
},
'Onlinetrade':{
s:'https://www.onlinetrade.ru/sitesearch.html?query='
},
'Dns-shop':{
s:'https://www.dns-shop.ru/search/?q='
}
}
// Functions
function log(text, ...other){
if(debug){
let tip = other[0] in Object.keys(console)? other[0]: 'log'
console[tip](text, ...other)
}
}
// end - Functions
function getListGoods(){
let self = this,
list = $(".indexGoods__item"),//.not(".swiper-slide")
past = $(".catalog__displayedItem__marksLine > .floatLeft")
this.currentService = Object.keys(services)[0]
if (past.length && /\.html.*$/i.test(location.href)){
log("Модуль поиска, активирован для отдного товара...")
let name = $(".productPage__card > .name").text() || $(".productPage__card").children().eq(0).text(),
button = $("<a class='ic__hasSet search_goods_button'><span class='box_items'></span></a>").css({'margin-left': '8px', height: '24px', 'margin-right': 0}), //$("<div>Goods Find</div>").css({"font": "bold 1em monospace","margin-left": "50px",'color': '#0053b9','float': 'right','cursor':'pointer'})
pastEl = button.find('.box_items')
button.mouseenter(function(e){
self.make_menu(pastEl, name)
})
button.mouseleave(function(e){
self.del_menu(pastEl)
})
past.append(button)
}
if(list.length){
log("Модуль поиска, активирован для товаров...")
list.each(function(indx, el){
if ($(el).find(".search_goods_button").length>0) return
const name = $(el).find(".indexGoods__item__name").text(),
button = $("<a class='ic__hasSet search_goods_button'><span class='box_items'></span></a>"),
pastEl = button.find('.box_items'),
managerTop = $(el).find(".indexGoods__item__manageTop")
button.mouseenter(function(e){
self.make_menu(pastEl, name)
})
button.mouseleave(function(e){
self.del_menu(pastEl)
})
if(managerTop.length){
managerTop.children().first().before(button)
} else {
button.css({left: '50%', top: '-5%', display: 'block', 'z-index': '15','text-align':'left'})
$(el).append(button)
}
})
// Reviews
let sort = $('<div>').css('float', 'right').html(`<select id='sorted_reviews'>
<option value="none">Без сортировки</option>
<option value="dup">Дата по возр.</option>
<option value="dud">Дата по убыв.</option>
<option value="sup">Рейтинг по возр.</option>
<option value="sd">Рейтинг по убыв.</option>
</select>`), select = null
$('#tabs_feedbacks h3:eq(0)').append(sort)
select = $('#sorted_reviews')
sort.change(()=>{
const select_val = select.val()
if(select_val == 'none') return
let ritems = $('.reviewlist__item[itemprop]'),
arr_feed = [],
parent = ritems.parent().eq(0)
ritems.each((idx,item)=>{
const $item = $(item)
if($item.hasClass('noDisplay')) $item.removeClass('noDisplay')
let feedback = $item.find('.feedbacksHeader_info')
if(feedback.length){
let stars, opit, date
if(feedback.length === 3) [stars, opit, date] = [...feedback.get()]
if(feedback.length === 2) [stars, date] = [...feedback.get()]
stars = stars.children[0].title.includes('Оценка') ? +stars.children[0].title.match(/(\d+)/g) : 0
let [_date, _time] = [...date.children[1].textContent.split(' ')]
_date = _date.slice(0,10).split('.').reverse().join('-')
_date = new Date(_date+' '+_time+':00')
arr_feed.push({el:$item, stars: stars, date: _date})
}
})
if(select_val == 'dup' || select_val == 'dud'){
arr_feed.sort(function(a,b) {
var an = a.date,
bn = b.date
return an - bn;
});
if(select_val == 'dud') arr_feed.reverse()
}
if(select_val == 'sup' || select_val == 'sd'){
arr_feed.sort(function(a,b) {
var an = a.stars,
bn = b.stars
return an - bn;
});
if(select_val == 'sd') arr_feed.reverse()
}
for(let i of arr_feed){
let el = i.el
el.detach().appendTo(parent)
}
})
}
}
getListGoods.prototype.del_menu = function(el_past){
$(el_past).find(".services_search_item_name").remove()
//let c = $(el_past).find('.menu_cat').get(0)
//if(c) el_past.removeChild(c)
}
getListGoods.prototype.selectService = function(el, menu, params){
this.prevService.removeClass('service_active')
this.prevService = el
el.addClass('service_active')
this.menu_update(menu, this.split_links(params.name))
}
getListGoods.prototype.menu_update = function(menu, params){
menu.empty()
$(params.items).each(function(indx,el){
let li = $("<li></li>"),
a = $("<a></a>").attr({"href":el.href,"target":"_blank", "title":el.title}).text(el.name)
li.append(a)
menu.append(li)
})
}
getListGoods.prototype.make_menu = function(el_past, name){
const self = this
this.prevService = null
let services_search_item_name = $("<div class='services_search_item_name'></div>"),
div_items = $("<div class='services_search'></div>"),
ul = $("<ul class='services_list'></ul>"),
menu = $("<ul class='menu_cat'></ul>"),
params = self.split_links(name)
if (el_past.parentNode && el_past.parentNode.className.indexOf('floatLeft')!=-1) services_search_item_name.addClass("menu_cat_list")
for(let s in services){
const service = services[s]
let li=$(`<li></li>`).attr('title', s).text(s).click(function(){
self.currentService = s
self.selectService(li, menu, params)
})
if(s == this.currentService && !li.hasClass('service_active')){
this.prevService = li
li.addClass('service_active')
}
ul.append(li)
}
div_items.append(ul)
self.menu_update(menu, params)
services_search_item_name.append(div_items,menu)
$(el_past).append(services_search_item_name)
}
getListGoods.prototype.srez = function(text, s=0, e=30){
return text.length>e?text.slice(s,e)+"...":text
}
getListGoods.prototype.split_links = function(name){
let alllinksOrig = name.split(" "),
alllinks = [...alllinksOrig],
params = {name:name, items:[]}
while(alllinks.length){
let curPop = alllinks.join(' ')
if(/(^\d{1}$)|\.{3}/i.test(curPop)) continue
curPop = curPop.trim().replace(/,$/ig,'')
params.items.push({'href':services[this.currentService].s+encodeURI(curPop),'name':this.srez(curPop,0, 200), 'title':curPop})
curPop = alllinks.pop()
}
let advVariants = alllinksOrig.map((item)=>({'href':services[this.currentService].s+encodeURI(item),'name':this.srez(item,0, 200), 'title':item})).filter((cv)=>{
for(let x of params.items) if(x.name == cv.name) return false
return true
})
params.items = [...params.items,...advVariants]
return params
}
new getListGoods()
})();