/* global painter */ if(painter == 'pageleteditor') { painter = 'pagelet'; } var parameters = { portlet: {title:'Open portlet', hasDescription: true}, decorators: {title:'Open decorator', hasDescription: false}, pagelet: {title:'Open pagelet', hasDescription: true}, pageleteditor: {title:'Open pagelet editor', hasDescription: true}, plan: {title:'Open plan', hasDescription: true}, visualquery: {title:'Open portlet', custom: false, offlinemode: false, hasDescription: true }, portalzoom: {title:'Open portalzoom', custom: false, hasDescription: true}, chart: {title:'Open chart', custom: false, hasDescription: true}, manualjsp: {title:'Open manual jsp', hasDescription: true}, html: {title:'Open html', hasDescription: false}, templates: {title:'Open templates', hasDescription: false}, menu: {title:'Open menu file', custom: false, offlinemode: false, hasDescription: false}, css: {title:'Open css', hasDescription: false}, cssclass: {title:'Open css class', hasDescription: false}, module: {title:'Open module', hasDescription: true}, scandoc: {title:'Open scandoc', hasDescription: false}, report: {title:'Open report', custom: false, hasDescription: true}, maskparameters: {title:'Open mask parameter', custom: false, hasDescription: true}, smartreport: {title:'Open smart report', custom: false, hasDescription: true}, interfaces: {title:'Open interface', custom: false, hasDescription: false, altInterfaceFor:window.altInterfaceFor}, css_class: {title:'Open css class', typeObj: window.cssType, hasDescription: false}, queryParms: {title:'Select query fields',offline: 'false', queryname: window.queryName, hasDescription: true}, variable_field_picker: {title:'Variable',offline: 'false', hasDescription: false, clientSide:true}, formstyle: {title:'Select a css file', hasDescription: false}, procedures: {title: 'Select a procedure', offline: window.isOffline, hasDescription: true}, getportletctrls: {title: 'Select '+window.ctrlsToBeListed+' from '+window.fromPortletName, ctrlname: window.ctrlsToBeListed, portlet_name: window.fromPortletName, hasDescription: false}, parametersSources: {title: 'Parameter sources', hasDescription: true, clientSide:true}, visualpivot: {title:'Open VisualPivot editor', custom: false, hasDescription: true} }; var wheretofind; document.onkeydown = function (e) { if(e.keyCode === 27) { // ESC: chiudi finestra window.close(); } }; function getOpener() { return(window.opener ? window.opener : (window.caller ? window.caller : window.parent)); } var skin_selected = ""; var pos_list = 0; function openFile(name) { if(painter == 'planpages') painter = "plan"; var path_tmp = getPainterPath(parameters[painter].folder_path || '', painter); if(painter == 'pagelet') { var type = new JSURL('../servlet/JSPReader?action=getType&name=' + name + '&folder_path=' + path_tmp, true, function (response) { type = response.Response().toLowerCase(); getOpener().newCurrentObj(name, type, JSON.stringify(parameters[painter])); window.close(); }); } else { if(painter == 'smartreport') getOpener().newCurrentObj(name, painter, JSON.stringify(parameters[painter]), onetool); else getOpener().newCurrentObj(name, painter, JSON.stringify(parameters[painter])); if(!Empty(SPModalLayerId)) getOpener().closeSPModalLayer(); else window.close(); } } function hideSidebar() { document.querySelector('.tools-container') .classList .add('hide-element'); } window.addEventListener('DOMContentLoaded', function () { if(document.getElementById(painter)) document.getElementById(painter).classList.add('active'); if(window.closeSidebar) hideSidebar(); updateList(); if(onetool == true) { document.getElementById('open-default').classList.add('hide-element'); document.getElementById('open-tag').classList.add('hide-element'); } if(painter != 'portlet') { document.getElementById('open-tag').classList.add('hide-element'); document.getElementById('open-default').classList.add('hide-element'); } if(painter != 'plan') { document.getElementById('open-plan').classList.add('hide-element'); document.getElementById('open-page').classList.add('hide-element'); } if(!parameters[painter].hasDescription) { document.getElementById('search-description').classList.add('hide-element'); document.getElementById('search-title').classList.add('hide-element'); wheretofind = 'name'; document.getElementById('search-file').classList.add('only-search'); } document.querySelectorAll('.tab').forEach(function (el) { el.addEventListener('click', function () { /*cambio del tab dei painter*/ if(!this.classList.contains('active') && onetool == false) { painter = this.id; if(!parameters[painter].hasDescription) { document.getElementById('search-description').classList.add('hide-element'); document.getElementById('search-title').classList.add('hide-element'); wheretofind = 'name'; document.getElementById('search-file').classList.add('only-search'); } else { document.getElementById('search-description').classList.remove('hide-element'); document.getElementById('search-title').classList.remove('hide-element'); wheretofind = 'name'; document.getElementById('search-file').classList.remove('only-search'); } var activeEl = document.getElementById('tools').querySelector('.active'); activeEl.classList.remove('active'); this.classList.add('active'); if(painter == 'decorators' || painter == 'css' || painter == "cssclass") { if(!Empty(skin_selected)) //Se almeno una skin è attiva parameters[painter].folder_path = document.getElementById('skin-list').querySelector('.active').innerText; else delete parameters[painter].folder_path; } else if(painter == 'pagelet' || painter == 'pageleteditor') { if(!Empty(skin_selected)) //Se almeno una skin è attiva parameters[painter].folder_path = document.getElementById('skin-list').querySelector('.active').innerText; else delete parameters[painter].folder_path; } else if(painter == 'menu' || painter == 'visualquery' || painter == "chart") { /*Passaggio della proprietà di offline tra i painter*/ if(document.querySelector('#offline input[type=checkbox]').checked == true) { parameters[painter].offlinemode = true; } else { parameters[painter].offlinemode = false; } } else if(painter == 'menu' || painter == 'portalzoom' || painter == 'visualquery' || painter == 'report' || painter == 'maskparameters' || painter == "chart" || painter == "smartreport" || painter == "interfaces") { /*Passaggio della proprietà di custom tra i painter*/ if(document.querySelector('#custom input[type=checkbox]').checked == true) { parameters[painter].custom = true; } else { parameters[painter].custom = false; } } if(painter != 'portlet') { document.getElementById('open-tag').classList.add('hide-element'); document.getElementById('open-default').classList.add('hide-element'); } else { document.getElementById('open-tag').classList.remove('hide-element'); document.getElementById('open-default').classList.remove('hide-element'); } if(painter != 'plan') { document.getElementById('open-plan').classList.add('hide-element'); document.getElementById('open-page').classList.add('hide-element'); } else { document.getElementById('open-plan').classList.remove('hide-element'); document.getElementById('open-page').classList.remove('hide-element'); document.getElementById('open-plan').classList.add('active'); document.getElementById('open-page').classList.remove('active'); } updateList(); } } ); }); /*Offline value*/ document.querySelector('#offline input[type=checkbox]').addEventListener('change', function () { if(painter == 'visualquery' || painter == 'menu') { if(this.checked == true) { parameters[painter].offlinemode = true; } else { parameters[painter].offlinemode = false; } } updateList(); }); /*Custom value*/ document.querySelector('#custom input[type=checkbox]').addEventListener('change', function () { if(this.checked == true) { parameters[painter].custom = true; } else { parameters[painter].custom = false; } if (painter == 'interfaces') parameters[painter].folder_path = ''; updateList(); }); search = document.getElementById('search-file'); search.value = ''; search.focus(); var searchTimer = null; currValue = ""; wheretofind = 'name'; search.addEventListener('keyup', function(){ if(currValue != search.value) { clearTimeout(searchTimer); if(search.value.length > 2 || search.value.length == 0) searchTimer = setTimeout(searchP, 500); } }); search.addEventListener('keydown', function(e){ if(e.key == 'down') { e.preventDefault(); slideList('down'); } if(e.key == 'up') { e.preventDefault(); slideList('up'); } if(e.key == 'enter') { e.preventDefault(); if(visibleItems[pos_list] != undefined) visibleItems[pos_list].dispatchEvent(new Event('dblclick')); } }); document.getElementById('list').addEventListener('keydown', function(e/*, fromSearch*/) { if(e.key == 'down') { e.preventDefault(); slideList('down'); } if(e.key == 'up') { e.preventDefault(); slideList('up'); } if(e.key == 'enter') { e.preventDefault(); if(visibleItems[pos_list] != undefined) visibleItems[pos_list].dispatchEvent(new Event('dblclick')); } }); document.getElementById('search-title').addEventListener('click', function () { document.getElementById('search-description').classList.remove('active'); this.classList.add('active'); wheretofind = 'name'; searchP(); }); document.getElementById('search-description').addEventListener('click', function () { document.getElementById('search-title').classList.remove('active'); this.classList.add('active'); wheretofind = 'description'; searchP(); }); document.getElementById('clear').addEventListener('click', function () { search.value = ""; search.dispatchEvent(new Event('keyup')); }); var skin; for(var i = 0; i < skins.length - 1; i++) { skin = document.createElement('div') skin.classList.add('skin-tab'); skin.innerHTML = skins[i]; if(skins[i] == theme_tmp) { skin.classList.add('active'); } var skin_list = document.getElementById('skin-list'); skin_list.appendChild(skin); skin.addEventListener('click', function() { skin_list.querySelector('.active').classList.remove('active'); this.classList.add('active'); skin_selected = Trim(this.innerText); if(painter == 'decorators' || painter == 'css' || painter == "cssclass") parameters[painter].folder_path = this.innerText; else parameters[painter].folder_path = this.innerText; updateList(); // Update list dello skin selezionato }); } skin = document.createElement('div'); skin.classList.add('skin-tab'); //Skin root skin.innerHTML = " - "; skin.classList.add('active'); skin_list = document.getElementById('skin-list'); skin_list.appendChild(skin); skin.addEventListener('click', function () { skin_selected = ""; skin_list.querySelector('.active').classList.remove('active'); this.classList.add('active'); if(painter == 'decorators' || painter == 'css' || painter == "cssclass") parameters[painter].folder_path = ''; else parameters[painter].folder_path = ''; updateList(); }); document.getElementById('open-tag').addEventListener('click', function () { document.getElementById('open-default').classList.remove('active'); document.getElementById('tools').parentNode.classList.add('hide-element'); document.getElementById('search-handler').classList.add('hide-element'); this.classList.add('active'); var listelm = document.getElementById('list'); listelm.classList.add("wrapper-tag"); listelm.classList.remove("child-scrollable"); var html = '

Available files

'; html += '

Selected tags

'; html += '

Available tags

'; listelm.innerHTML = html; fillTags(); }); document.getElementById('open-default').addEventListener('click', function () { document.getElementById('open-tag').classList.remove('active'); document.getElementById('tools').parentNode.classList.remove('hide-element'); document.getElementById('search-handler').classList.remove('hide-element'); this.classList.add('active'); document.getElementById('list').classList.remove("wrapper-tag"); document.getElementById('list').classList.add("child-scrollable"); updateList(painter); }); document.getElementById('open-page').addEventListener('click', function () { document.getElementById('open-plan').classList.remove('active'); this.classList.add('active'); updateList('planpages'); }); document.getElementById('open-plan').addEventListener('click', function () { document.getElementById('open-page').classList.remove('active'); this.classList.add('active'); updateList('plan'); }); }); var fileList, navBar2; var activeUrl; var activeUrlDescr; var ActiveUrls=[]; function updateList(p) { document.getElementById('list').classList.add('loader'); visibleItems = []; if(!p) { document.getElementById('tools').querySelectorAll('.active').forEach(function (el) { painter = el.id; }); }else{ painter = p; } if(painter == "decorators" || painter == "pagelet" || painter == "pageleteditor" || painter == "css" || painter == "cssclass") { document.getElementById('skin-list').classList.remove('hide-element'); } else { document.getElementById('skin-list').classList.add('hide-element'); } if(painter == "visualquery" || painter == "menu" || painter == "portalzoom" || painter == "report" || painter == "maskparameters" || painter == "chart" || painter == "smartreport" || painter == "interfaces" || painter == "visualpivot") { document.getElementById('filter').classList.remove('hide-element'); if(painter == "visualquery" || painter == "menu") { document.getElementById('offline').classList.remove('hide-element'); if(offlinemode != '') { document.getElementById('offline').querySelector('input').setAttribute('checked', offlinemode == 'true'); document.getElementById('offline').querySelector('input').disabled = true; parameters[painter].offlinemode = offlinemode == 'true'; } } else { document.getElementById('offline').classList.add('hide-element'); } document.getElementById('custom').classList.remove('hide-element'); } else { document.getElementById('filter').classList.add('hide-element'); } fileList = document.getElementById('list'); fileList.replaceChildren(); navBar2 = document.getElementById('nav2'); if (painter!='interfaces'){ parameters.interfaces.folder_path=''; fileList.classList.remove('listInterfaces'); navBar2.replaceChildren(); navBar2.style.display='none'; } var jsUrlStr = getJsUrl(painter, parameters[painter]); if(jsUrlStr.length == 0) { if(checkNoServerSideSources()) { doClientSideText(); } } else { activeUrl=jsUrlStr[0]; if(ActiveUrls.indexOf(activeUrl)==-1){ ActiveUrls.push(activeUrl); //timestamp = new Date().getTime().toString(); // if(JSURLObj!=null){ // JSURLObj.Abort(); // } var JSURLObj=new ZtVWeb.JSURL(jsUrlStr[0], true, callbackRender,null,activeUrl); JSURLObj.Response(); } } } var origStore = {}; function callbackRender(listobj,oldurl){ LibJavascript.Array.remove(ActiveUrls,ActiveUrls.indexOf(oldurl)); setTitle(); origStore = {}; if(activeUrl!=oldurl){ return } var files = getTextFor(painter, listobj) var html = '',i,name; if (painter!='interfaces' || !Empty(parameters[painter].folder_path)){ for(i = 0; i < files.length; i++) { if(files[i] != "" && files[i].indexOf('[') == -1) { //TODO check cartelle lato servlet name = getFileName(files[i], painter)[0]; let el = getElementWithName(name); el.setAttribute('id', 'portlet_'+i); fileList.appendChild(el); if(fileList.querySelector('.empty-list')) { fileList.querySelector('.empty-list').remove(); } origStore['portlet_'+i] = {}; origStore['portlet_'+i].origName = name; origStore['portlet_'+i].descr = ''; } } } else { if (files.length>0){ for (i = 0; i < files.length; i++){ if(files[i] != "" && At("custom_",files[i])!=1) { name = files[i]; if(window.altInterfaceFor === '') { html += "
"; html += name; html += "
"; } else if(window.altInterfaceFor === files[i]) { html += "
"; html += name; html += "
"; } } } navBar2.innerHTML=html; navBar2.style.display='inline-block'; fileList.classList.add('listInterfaces'); document.querySelectorAll('.interfacesFolder').forEach(function (el) { el.addEventListener('click', function () { document.querySelectorAll('.selected-interfacesFolder').forEach(function (elm) { elm.classList.remove('selected-interfacesFolder'); }); el.classList.add('selected-interfacesFolder'); parameters[painter].folder_path=el.getAttribute('name'); updateList(painter); } ) }); if (document.querySelector('.interfacesFolder')) document.querySelector('.interfacesFolder').dispatchEvent(new Event('click')); // addClass('selected-interfacesFolder') // parameters[painter].folder_path=files[0]; // updateList(); } } var jsUrlStr = getJsUrl(painter, parameters[painter]); activeUrlDescr=jsUrlStr[1]; if(activeUrlDescr &&ActiveUrls.indexOf(activeUrlDescr)==-1){ ActiveUrls.push(activeUrlDescr); var JSURLObjDescr=new ZtVWeb.JSURL(activeUrlDescr, false, callbackDescrs,null,[oldurl,activeUrlDescr]); JSURLObjDescr.Response(); } document.querySelectorAll('.file-item').forEach(function (el) { el.addEventListener('click', function() { document.querySelectorAll('.selected-file').forEach(function (elm) { elm.classList.remove('selected-file'); }); el.classList.add('selected-file'); pos_list = visibleItems.indexOf(el); }); el.addEventListener('dblclick', function() { if((this.getAttribute('name')).toLowerCase() != "access denied") { let name = this.getAttribute('name'); if(painter == 'planpages') name = this.getAttribute("PlanName") || ''; if(painter == 'queryParms') { name = name.split(' ')[0]; } if(painter == 'formstyle'){ let styles = 'styles/' name = styles + name; } if(!Empty(callerFunction) && getOpener()) { getOpener()[callerFunction](ReturnObjectId, name, parameters[painter], painter); WindowClose(); } else openFile(name); } }); visibleItems.push(el); }); if(visibleItems.length == 0) { let emptyListDiv = document.createElement('div') emptyListDiv.classList.add('empty-list'); emptyListDiv.innerHTML = 'No file found in ' + painter + '.'; document.getElementById('list') .appendChild(emptyListDiv) } document.getElementById('list').classList.remove('loader'); pos_list = 0; if(!Empty(document.getElementById('search-file').value)) searchP(); slideList('first'); } function checkNoServerSideSources() { return 'clientSide' in parameters[painter]; } function doClientSideText() { setTitle(); const origStore = {}; var files = getTextFor(painter) var i,name; for(i = 0; i < files.length; i++) { if(files[i] != "" && files[i].indexOf('[') == -1) { //TODO check cartelle lato servlet name = getFileName(files[i], painter)[0]; let el = getElementWithName(name); el.setAttribute('id', 'portlet_'+i); fileList.appendChild(el); origStore['portlet_'+i] = {}; origStore['portlet_'+i].origName = name; origStore['portlet_'+i].descr = ''; } } document.querySelectorAll('.file-item').forEach(function (el) { el.addEventListener('click', function() { document.querySelectorAll('.selected-file').forEach(function (elm) { elm.classList.remove('selected-file'); }); el.classList.add('selected-file'); pos_list = visibleItems.indexOf(el); }); el.addEventListener('dblclick', function() { if((this.getAttribute('name')).toLowerCase() != "access denied") { let name = this.getAttribute('name'); if(painter == 'planpages') name = this.getAttribute("PlanName") || ''; if(painter == 'queryParms') { name = name.split(' ')[0]; } if(!Empty(callerFunction) && getOpener()) { getOpener()[callerFunction](ReturnObjectId, name, parameters[painter], painter); WindowClose(); } else openFile(name); } }); visibleItems.push(el); }); if(parameters[painter].hasDescription) { doClientSideDescriptions(origStore); } if(visibleItems.length == 0) { let emptyListDiv = document.createElement('div') emptyListDiv.classList.add('empty-list'); emptyListDiv.innerHTML = 'No file found in ' + painter + '.'; document.getElementById('list') .appendChild(emptyListDiv) } document.getElementById('list').classList.remove('loader'); pos_list = 0; if(!Empty(document.getElementById('search-file').value)) searchP(); slideList('first'); } function doClientSideDescriptions(origStore) { let descriptions = getDescTextFor(painter); document.querySelectorAll('.name').forEach(function (el, index) { if(typeof (descriptions[index]) != "undefined" && descriptions[index] != "''" && descriptions[index]) { var descr = getDescr(descriptions[index]) origStore[el.parentElement.id].descr = descriptions[index]; el.appendChild(descr) } }); } var search; var currValue; var visibleItems = []; function searchP() { var txtToSearch = (search.value.trim()).toLowerCase(); currValue = txtToSearch; if(txtToSearch != "") visibleItems = []; Object.keys(origStore).forEach(function(key){ const el = document.getElementById(key); if(txtToSearch != "") { let keyToSearch = wheretofind == 'name' ? origStore[key].origName : origStore[key].descr; const txt = keyToSearch.toLowerCase(); el.classList.add('hide-element'); el.classList.remove('filtered'); if(txt != "" && txt.indexOf(txtToSearch) != -1) { var re = new RegExp(txtToSearch, "gi"); var nTxt = keyToSearch.match(re). reduce(function(prev, curr){ return prev.replace(re, "" + curr + ""); }, keyToSearch); if(wheretofind == 'name') { let p = el.querySelector('.name'); el.querySelector('.name').innerHTML = nTxt; let descr = getDescr(origStore[key].descr); p.appendChild(descr); } else { el.querySelector('.description').innerHTML = nTxt; } el.classList.remove('hide-element'); el.classList.add('filtered'); visibleItems.push(el); } } else { let targetName = el.querySelector('.name'); let targetDescr = el.querySelector('.description'); el.classList.remove('hide-element'); targetName.innerText = origStore[el.id].origName; if(targetDescr) { targetDescr.innerText = origStore[el.id].descr; targetName.appendChild(targetDescr); } visibleItems.push(el); } }); slideList('first'); } function getTextFor(painter, listobj) { switch(painter) { case 'visualquery': return parseDesc(listobj) case 'queryParms': return getQueryText(GetQueryFields(listobj, false)); case 'variable_field_picker': return getValueText(); case 'procedures': return getProceduresText(listobj); case 'css_class': return getCssClassText(listobj); case 'parametersSources': return getParameterSourcesText(); default: return getDefaultText(listobj); } } function getQueryText(files) { const names = files[0]; const types = files[1]; const lengths = files[2]; const concatenatedNames = names.map((name, i)=>{ return name + ' ' + types[i] + '(' + lengths[i] + ')'; }); return concatenatedNames; } function GetQueryFields(AllField,retDesc){ const res=[]; const types=[]; const desc=[]; const length=[]; if(Left(AllField,9)=="BO_QUERY:"){ AllField = Substr(AllField,10); const CSV_SEP="#!$"; let row, rows = AllField.split(CSV_SEP); for (var i=0; i { return el[0]; }); return parsed; } function getCssClassText(listobj) { let files = []; let classes = JSON.parse(listobj); var exit = false; for(var iii = 0; iii < classes.length && !exit; iii = iii + 2) { if(classes[iii].toString().search("TITLE-MARKER-") > -1) { exit = true; } else { files.push(classes[iii]) } } return files; } function getDefaultText(listobj) { return listobj.split(','); } function setTitle() { let h1 = document.getElementById('open-title'); if(parameters[painter]) h1.innerText = parameters[painter].title; else h1.innerText = 'Open file'; } function getElementWithName(name) { let el = document.createElement('div'); el.setAttribute('name', name); el.classList.add('file-item'); el.classList.add(painter); let p = document.createElement('p'); p.classList.add('name'); p.innerText = name; el.appendChild(p); return el; } function callbackDescrs(descrResp,oldUrls){ LibJavascript.Array.remove(ActiveUrls,ActiveUrls.indexOf(oldUrls[1])); if(oldUrls[0]!=activeUrl || activeUrlDescr!=oldUrls[1]){ return } if(!Empty(descrResp)){ let descriptions = getDescTextFor(painter, descrResp); let jspObjects, planpages; if(painter === 'planpages') { jspObjects = JSON.parse(descrResp); planpages = jspObjects.planpages; } document.querySelectorAll('.name').forEach(function (el, index) { if(typeof (descriptions[index]) != "undefined" && descriptions[index] != "''" && descriptions[index]) { var descr = getDescr(descriptions[index]) origStore[el.parentElement.id].descr = descriptions[index]; if(painter == "planpages") { el.parentElement.setAttribute("PlanName", planpages[index]); let span = document.createElement('span'); span.innerText = " (" + planpages[index] + ")"; el.appendChild(span); } el.appendChild(descr) } }); } } function getDescTextFor(painter, descrResp) { switch(painter) { case 'queryParms': return getQueryDesc(descrResp); case 'procedures': return getProceduresDesc(descrResp); case 'parametersSources': return getParameterSourcesTitle(); default: return getDefaultDesc(descrResp); } } function getParameterSourcesTitle() { var ItemList=GetOpener().itemsHTML; let sourceList = []; for(var elem,i=0;i { return el[1]; }); return parsed; } function slideList(move) { switch(move) { case 'down': pos_list = (pos_list + 1) < visibleItems.length ? (pos_list + 1) : 0; break; case 'up': pos_list = (pos_list - 1) >= 0 ? (pos_list - 1) : (visibleItems.length - 1); break; case 'first': pos_list = 0; break; case 'last': pos_list = (visibleItems.length - 1) >= 0 ? (visibleItems.length - 1) : 0; break; } //Controllo che l'item sia selezionato sia visibile altrimenti scrollo l'elenco fino a portare l'item in centro if(visibleItems[pos_list] != undefined) { var list = document.getElementById('list'); var itm = visibleItems[pos_list]; if((itm.offsetTop + list.scrollTop) > (list.scrollTop + list.clientHeight)) { list.scrollTo(0, ((itm.offsetTop + list.scrollTop) - list.clientHeight / 2)); } if(((itm.offsetTop + list.scrollTop) - 50) < (list.scrollTop)) { list.scrollTo(0, (((itm.offsetTop + list.scrollTop) - itm.clientHeight) - list.clientHeight / 2)); } visibleItems[pos_list].dispatchEvent(new Event('click')); } } /** * EX FILE openbytag */ var selectedTags = []; var toolsPaths = { 'portlet': { 'openurl': '../visualweb/editor.jsp?id=', 'jsurl_descr': '../servlet/JSPReaderByTag?type=portlet&folder_path=', 'jsurl': '../servlet/JSPReader?type=portlet', 'folder_path': '' } }; function addTag(tag) { if(!Empty(tag)) { selectedTags.push(tag); tag = selectedTags.join(','); fillTags(tag); } } function removeTag(tag) { LibJavascript.Array.remove(selectedTags, LibJavascript.Array.indexOf(selectedTags, tag)); tag = selectedTags.join(','); fillTags(tag); } function fillTags(tag) { if(tag == null) tag = ""; new JSURL(toolsPaths[painter].jsurl_descr + toolsPaths[painter].folder_path + '&tag=' + tag, true, function (response) { var FilesObj = JSON.parse(response.Response()); fillAllJsp(FilesObj); if(Empty(tag)) { fillAllTags(FilesObj); fillSelectedTags(); } else { //Sub Tags fillAllTags(FilesObj, true); fillSelectedTags(tag); } }); } function fillAllJsp(FilesObj) { var fileList = document.getElementById('listtagmode'); fileList.replaceChildren(); var files = FilesObj.jspList; var descriptions = FilesObj.jspDescr; var html = ""; for(var i = 0; i < files.length; i++) { name = Strtran(files[i], "_portlet.jsp", ""); html += "
"; html += "

" + name + "

"; html += "
"; } fileList.innerHTML = html; document.querySelectorAll('.name').forEach(function (el, index) { if(descriptions[index] != "''" && descriptions[index] && descriptions[index] != "undefined") { var descr = document.createElement('descr'); descr.classList.add('description'); descr.innerText = descriptions[index]; el.after(descr); } }); document.querySelectorAll('.file-item').forEach(function (el) { el.addEventListener('click', function(){ document.querySelectorAll('.selected-file').forEach(function (elm) { elm.classList.remove('selected-file'); }); el.classList.add('selected-file'); }) el.addEventListener('dblclick', function(){ if((this.getAttribute('name')).toLowerCase() != "access denied") { openFile(this.getAttribute('name')); } }) }); } function fillAllTags(FilesObj, sub) { var obj = document.getElementById("taglist"); obj.replaceChildren(); var Tags; if(sub) Tags = FilesObj.tagListSub; else Tags = FilesObj.tagList; var html = ""; for(var i = 0; i < Tags.length; i++) { html += "
"; html += "

" + Tags[i] + "

"; html += "
"; } obj.innerHTML = html; document.querySelectorAll('.tag-item').forEach(function (el) { el.addEventListener('click', function(){ document.addEventListener('.selected-file').forEach(function (elm) { elm.classList.remove('selected-file'); }); el.classList.add('selected-file'); }); el.addEventListener('dblclick', function(){ if((this.getAttribute('name')).toLowerCase() != "access denied") { addTag(this.getAttribute('name')); } }); }); } function fillSelectedTags(/*tag*/) { var obj = document.getElementById("tagselected"); obj.replaceChildren(); var html = ""; for(var i = 0; i < selectedTags.length; i++) { html += "
"; html += "

" + selectedTags[i] + "

"; html += "
"; } obj.innerHTML = html; document.querySelectorAll('.tagselected-item').forEach(function (el) { el.addEventListener('click', function(){ document.querySelectorAll('.selected-file').forEach(function (elm) { elm.classList.remove('selected-file'); }); el.classList.add('selected-file'); }); el.addEventListener('dblclick', function(){ if((this.getAttribute('name')).toLowerCase() != "access denied") { removeTag(this.getAttribute('name')); } }); }); }