====== Javascript verzia smartSearch-u z flash-u ======
**GIT vetva je 727.git duch/merge7 / 3514b1a**
V tejto vetve sa nachádza aj ukážkový modul testss, v ktorom je kompletné funkčné demo SmartSearchu
**Súbory** \\
//js/js_smartSearch.js//\\
//css/jsSmartSearch/ssearch.css//\\
//include/jsSmartSearch/jsSmartSearch.class.php//\\
//images/ss///
V adresári images sú obrázky vo formáte png optimálne 256*256 veľkosť s transparetným pozadím, určené pre smartSearch
Nutné ďalšie súbory sú **jquery**, **jquery.ui.js** a komunikačná trieda pre komunikáciu s php **js_comunication.js**
===== Inicializácia smartSearchu v html stránke =====
===== Inicializácia data-tooltip =====
Následne je nutné v javascriptovom súbore inicializovať jsSmartSearch funkcionalitu\\ Ako prvé pre správne fungovanie html tooltipu je inicializácia nového attribútu **data-tooltip** Toto je dôležité preto, lebo klasický tooltip dokáže zobrazovať len čistý text a aby sme mohli použiť html v tooltipe je toto nutné.
$( document ).tooltip({
items:"[data-tooltip]",
content:function(){
return $(this).attr("data-tooltip");
}
});
$(document).ready(function(){
init();
});
===== Nastavenie tlačidiel smartSearchu =====
Do inicailizačnej funkcie je nutné nastaviť ešte stav jednotlivých tlačidiel, t.j.
$("#categoryIcon").on("click",function(){
jsSmartSearch.ss.showCategories('smartSearchSelect'); // odkaz na select kde su smartsearche
});
$("#ss_delete_btn").on("click",function(){
jsSmartSearch.ss.close('ss_container','hint'); //odkaz na ss_container a textove pole hint
});
$("#smartSearchSelect").on("change",function(){
jsSmartSearch.ss.close('ss_container','hint'); // pri zmene zavolaj reset smartsearchu
jsSmartSearch.ss.setCategories('smartSearchSelect'); //nastav kategoriu ak je to mozne
});
===== Vytvorenie kategorií smartSearchu =====
V prípade, že používame pre spresnenie smartSearchu kategórie, je nutné ako prvé nainicializovať výber kategórie. Ak máme viacero smartSearchov na jednej stránke je nutné
jsSmartSearch.helper._categorySelectionData = {
ss_info:"ss_info",
ss_categoryContainer:"ss_categoryContainer",
selectedCategory:"selectedCategory",
categoryList:"categoryList",
ss_categoryListResult:"ss_categoryListResult",
selectedCategoryLabel:"selectedCategoryLabel",
smartSearchSelect:"smartSearchSelect",
ss_container:"ss_container",
image_url:"images/ss/",
server_url:"http://studio2.local/",
categoryIconId:"categoryIcon",
symbol:"category.png"
}
* **ss_info** (css class) = je ikona pred smartSearchom na výber kategórie
* **ss_categoryContainer** (css id) = je zakladný kontainer kde sa budú zobrazovať dané kategórie
* **selectedCategory** (css id, type hidden) = uloženie aktuálne vybranej kategórie do typu hidden
* **categoryList** (css class) = je div kde sa už načítajú dané kategórie...
* **ss_categoryListResult** = je dynamicky vytvorený div, v ktorom sa zobrazujú jednotlivé klikateľné kategórie
* **selectedCategoryLabel** = obsahuje textovú informáciu o aktuálne vybranej kategórii
* **smartSearchSelect** je idečko selectu v prípade ak máme zoznam smartSearchov
* **ss_container** je názov id ečka hlavného smartSearch kontainera
* **image_url** je cesta k obrázkom pre smartSearch
* **server_url** je url servera na ktorom beží omega
* **symbol** je názov obrázka pre daný výber kategórie (musí byť uložený v images/ss)
Jednotlivé položky kategórie je nutné uviesť v základnej triede js_smartSearch.js a to v Namespace jsSmartSearch a triede helper, vytvorením metódy, ktorá vracia požadované pole
jsSmartSearch.helper = {
_mainStructure:function(){
return [
{type:"category_group", s_id:"project",title:"Projekty",symbol:"project.png"},
{type:"category_group", s_id:"project_active",title:"Aktívne projekty",symbol:"active_project.png"},
{type:"category_group", s_id:"technology",title:"Technologie",symbol:"technology.png"},
{type:"category_group", s_id:"resource",title:"Zdroje",symbol:"resource.png"},
{type:"category_group", s_id:"resource_technology",title:"Zdrojová tehnológia",symbol:"tech_res.png"},
{type:"category_group", s_id:"goods",title:"Tovar",symbol:"goods.png"},
{type:"category_group", s_id:"folder",title:"Adresár",symbol:"folder.png"},
{type:"category_group", s_id:"location",title:"Lokácia",symbol:"location.png"},
];
},
}
**Symbol** je názov png, ktorý musí byť uložený v adresári s obrázkami pre smartSearch. Nutné je dodržanie štruktúru objektového poľa a to **type**, **s_id**, **title**, **symbol**.
Následne je nutné rozšíriť funkcie showCategories a setCategories a daný smartSearch a tým sa zobrazia pri výbere.
===== Vytvorenie smartSearch požiadavky =====
function ss_medicClService(id,text){
var data = {
divClassSmartSearch:"smart_search_lite",
divIdForResult: "rr_res", //toto je riadok kam sa budu ukladat uz sparsovane vysledky
divClassForResult: "smart_search_lite_result", //toto je class pripojenia na div id vysledku
onSelectCallBack:"getData", //toto je kam sa zavola uz vysledok
ssContainer:"ss_container", //meno kontainer celeho smartSearchu
hintName:"hint",
loadIcon:"loader",
searchType:"all",
fMethod:"default",
extraSettings:[],
partiallyOffset:0,
partiallyLimit:52,
partiallyPass:1,
topHitsIdf:"",
topHitsMaxCount:5,
dynSettings:{
methodSettings:{
labelCut:{
labelFillStr:"...",
labelCutEnd:10,
labelCutStart:100
},
languageId:"sk",
all:1,
mode:"dynamic",
broadCastIdf:"medic/medicClService",
file:"module:medic/smartSearch/sMedicClService"
}
}
}
switch (id){
case "click":
data.searchTerms="*";
break;
case "type":
data.searchTerms = text;
break;
}
jsSmartSearch.ss.search(
__ss_url__+"testssearch",
"jsSmartSearch/jsSmartSearch/sMedicClService",
these,
data
);
}
**Prvá časť** je nutná na to aby sa naformátovala časť pre zobrazenie výsledkov,
* **divIdForResult** je názov kam sa budú liať dynamicky generované výsledky
* **divClassForResult** je kontainer do ktorého sa dáva divIdForResult
* **hintName** je hint id pre zobrazenie hintov
* **ssContainer** je hlavný kontainer smartSearchu
* **loadIcon** je ikonka animácie loadovania dát
* **onSelectCallBack** je názov funkcie kam sa má výsledok po výberu výsledku vyhľadávania vrátiť
divClassSmartSearch:"smart_search_lite",
divIdForResult: "rr_res", //toto je riadok kam sa budu ukladat uz sparsovane vysledky
divClassForResult: "smart_search_lite_result", //toto je class pripojenia na div id vysledku
onSelectCallBack:"getData", //toto je kam sa zavola uz vysledok
ssContainer:"ss_container", //meno kontainer celeho smartSearchu
hintName:"hint",
loadIcon:"loader",
**Druhá časť** je už tá, v ktorej sa nastavuje už objekt odosielaný do smartSearch-u, tento je špecifický pre každý smartSearch, ale v základe
* searchType je spôsob hľadania
* fMethod default/begin znamená či sa bude hľadať v častaich slov alebo len odzačiatku(rýchlejšia)
* partiallyOffset a partiallyLimit je pravidlo LIMIT offset,Limit v MySQL
* dynSettings je object kam sa zadávajú nastavenia LabelCut a to start a end, dľa nastavenia smartSearchu
Dôležite je rozdelenie na click a type, t.j. keď sa prvý raz klikne do input boxu začnú sa hľadať všetky nálezy, písaním už prebieha aktívne vyhľadávanie...
Potom už stačí zavolať funkciu
jsSmartSearch.ss.search(
__ss_url__+"testssearch",
"jsSmartSearch/jsSmartSearch/smartSearchDiagnosis",
these,
data
);
__ss_url__ je adresa servera a route-u pre daný modul a reťazec už názov cesty