From nobody Wed Feb 5 06:43:31 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of ovirt.org designates 66.187.230.42 as permitted sender) client-ip=66.187.230.42; envelope-from=kimchi-devel-bounces@ovirt.org; helo=lists.ovirt.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of ovirt.org designates 66.187.230.42 as permitted sender) smtp.mailfrom=kimchi-devel-bounces@ovirt.org; Return-Path: Received: from lists.ovirt.org (lists.phx.ovirt.org [66.187.230.42]) by mx.zohomail.com with SMTPS id 1486994313977760.2504726581988; Mon, 13 Feb 2017 05:58:33 -0800 (PST) Received: from lists.phx.ovirt.org (localhost [127.0.0.1]) by lists.ovirt.org (Postfix) with ESMTP id 0D4CD82071B; Mon, 13 Feb 2017 13:58:33 +0000 (UTC) Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by lists.ovirt.org (Postfix) with ESMTPS id 89B7A8206E1 for ; Mon, 13 Feb 2017 13:57:27 +0000 (UTC) Received: from pps.filterd (m0098421.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id v1DDmjjQ007844 for ; Mon, 13 Feb 2017 08:57:26 -0500 Received: from e24smtp03.br.ibm.com (e24smtp03.br.ibm.com [32.104.18.24]) by mx0a-001b2d01.pphosted.com with ESMTP id 28hyg28q75-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Mon, 13 Feb 2017 08:57:26 -0500 Received: from localhost by e24smtp03.br.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 13 Feb 2017 11:57:24 -0200 Received: from d24dlp02.br.ibm.com (9.18.248.206) by e24smtp03.br.ibm.com (10.172.0.139) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Mon, 13 Feb 2017 11:57:22 -0200 Received: from d24relay04.br.ibm.com (d24relay04.br.ibm.com [9.18.232.146]) by d24dlp02.br.ibm.com (Postfix) with ESMTP id 5EB771DC006D for ; Mon, 13 Feb 2017 08:57:23 -0500 (EST) Received: from d24av02.br.ibm.com (d24av02.br.ibm.com [9.8.31.93]) by d24relay04.br.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v1DDvM7s31916164 for ; Mon, 13 Feb 2017 11:57:22 -0200 Received: from d24av02.br.ibm.com (localhost [127.0.0.1]) by d24av02.br.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id v1DDvMoE005773 for ; Mon, 13 Feb 2017 11:57:22 -0200 Received: from alinefm-TP440.ibmmodules.com ([9.85.175.177]) by d24av02.br.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id v1DDv63i005628 for ; Mon, 13 Feb 2017 11:57:21 -0200 X-Original-To: kimchi-devel@ovirt.org From: Aline Manera To: Kimchi Devel Date: Mon, 13 Feb 2017 11:57:03 -0200 X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170213135704.7556-1-alinefm@linux.vnet.ibm.com> References: <20170213135704.7556-1-alinefm@linux.vnet.ibm.com> X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 17021313-0024-0000-0000-000001530257 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17021313-0025-0000-0000-00001618020C Message-Id: <20170213135704.7556-7-alinefm@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-02-13_08:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1612050000 definitions=main-1702130136 Subject: [Kimchi-devel] [PATCH] [Wok 6/7] Cache plugins information on UI to avoid multiple requests X-BeenThere: kimchi-devel@ovirt.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: kimchi-devel-bounces@ovirt.org Errors-To: kimchi-devel-bounces@ovirt.org X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Plugins information does not change a lot and once changed the UI needs to reload the browser session to rebuild the UI, so there is no need to do multiple requests to get the plugin information. A single request would be enough to all matters. So do it and update the code according to that change. Signed-off-by: Aline Manera --- ui/js/src/wok.logos.js | 79 ++++++++++++++++++++++++++------------------- ui/js/src/wok.main.js | 87 ++++++++++++++++++++++++++--------------------= ---- ui/js/wok.user-log.js | 45 ++++++++++++++------------ 3 files changed, 116 insertions(+), 95 deletions(-) diff --git a/ui/js/src/wok.logos.js b/ui/js/src/wok.logos.js index b4e2d75..1abab84 100644 --- a/ui/js/src/wok.logos.js +++ b/ui/js/src/wok.logos.js @@ -16,6 +16,15 @@ * limitations under the License. */ =20 + +wok.plugins =3D undefined; +wok.listPlugins(function(result) { + wok.plugins =3D result; +}, function(data) { + wok.plugins =3D []; + wok.message.error(data.responseJSON.reason); +}); + wok.logos =3D function(element, powered) { powered =3D (typeof powered =3D=3D=3D 'undefined') ? false : true; var genLogos =3D function(obj){ @@ -73,44 +82,48 @@ wok.logos =3D function(element, powered) { =20 var pluginUrl =3D 'plugins/{plugin}'; var buildLogos =3D function() { + // Make wok.plugins is ready to be used + if (wok.plugins =3D=3D undefined) { + setTimeout(buildLogos, 2000); + return; + } + var logos =3D []; var obj =3D {}; - wok.listPlugins(function(plugins) { - if(plugins && plugins.length > 0) { - $(plugins).each(function(i, p) { - if (p.enabled =3D=3D=3D false) { - return true; - } - var url =3D wok.substitute(pluginUrl, { - plugin: p.name - }); - obj[i] =3D { - name : p.name - } - var pluginVersions; - pluginVersions =3D retrieveVersion(url); - if(pluginVersions && pluginVersions.length > 0){ - obj[i].version =3D pluginVersions; - } - var imagepath =3D url+'/images/'+p.name; - if(checkImage(imagepath+'.svg') =3D=3D 200) { - obj[i].image =3D imagepath+'.svg'; - } - else if(checkImage(imagepath+'.png') =3D=3D 200) { - obj[i].image =3D imagepath+'.png'; - } + if(wok.plugins && wok.plugins.length > 0) { + $(wok.plugins).each(function(i, p) { + if (p.enabled =3D=3D=3D false) { + return true; + } + var url =3D wok.substitute(pluginUrl, { + plugin: p.name }); - var generatedLogos =3D genLogos(obj); - if(generatedLogos.length > 0) { - $(element).append(generatedLogos); - if(powered) { - $(element).parentsUntil('.container').find('.power= ed').removeClass('hidden'); - }else { - $(element).parentsUntil('.container').find('.power= ed').remove(); - } + obj[i] =3D { + name : p.name + } + var pluginVersions; + pluginVersions =3D retrieveVersion(url); + if(pluginVersions && pluginVersions.length > 0){ + obj[i].version =3D pluginVersions; + } + var imagepath =3D url+'/images/'+p.name; + if(checkImage(imagepath+'.svg') =3D=3D 200) { + obj[i].image =3D wok.plugins[i].image =3D imagepath+'.= svg'; + } + else if(checkImage(imagepath+'.png') =3D=3D 200) { + obj[i].image =3D wok.plugins[i].image =3D imagepath+'= .png'; + } + }); + var generatedLogos =3D genLogos(obj); + if(generatedLogos.length > 0) { + $(element).append(generatedLogos); + if(powered) { + $(element).parentsUntil('.container').find('.powered')= .removeClass('hidden'); + }else { + $(element).parentsUntil('.container').find('.powered')= .remove(); } } - }); + } }; buildLogos(); =20 diff --git a/ui/js/src/wok.main.js b/ui/js/src/wok.main.js index 6de8ea0..20c017e 100644 --- a/ui/js/src/wok.main.js +++ b/ui/js/src/wok.main.js @@ -139,55 +139,58 @@ wok.main =3D function() { var pluginI18nUrl =3D 'plugins/{plugin}/i18n.json'; var DEFAULT_HASH; var buildTabs =3D function(callback) { + // Make wok.plugins is ready to be used + if (wok.plugins =3D=3D undefined) { + setTimeout(buildTabs, 2000); + return; + } + var tabs =3D retrieveTabs('wok', wokConfigUrl); - wok.listPlugins(function(plugins) { - $(plugins).each(function(i, p) { - if (p.enabled =3D=3D=3D false) { - return true; - } + var plugins =3D wok.plugins; + $(plugins).each(function(i, p) { + if (p.enabled =3D=3D=3D false) { + return true; + } =20 - var url =3D wok.substitute(pluginConfigUrl, { - plugin: p.name - }); - var i18nUrl =3D wok.substitute(pluginI18nUrl, { - plugin: p.name - }); - wok.getI18n(function(i18nObj){ $.extend(i18n, i18nObj)}, - function(i18nObj){ //i18n is not define by plu= gin - }, i18nUrl, true); - var pluginTabs =3D retrieveTabs(p.name, url); - if(pluginTabs.length > 0){ - tabs.push.apply(tabs, pluginTabs); - } + var url =3D wok.substitute(pluginConfigUrl, { + plugin: p.name }); - - //sort second level tab based on their ordering number - var orderedTabs =3D tabs.slice(0); - orderedTabs.sort(function(a, b) { - return a.order - b.order; + var i18nUrl =3D wok.substitute(pluginI18nUrl, { + plugin: p.name }); - //redirect to empty page when no plugin installed - if(tabs.length=3D=3D=3D0){ - DEFAULT_HASH =3D 'wok-empty'; - } else { - var defaultTab =3D orderedTabs[0] - var defaultTabPath =3D defaultTab && defaultTab['path'] + wok.getI18n(function(i18nObj){ $.extend(i18n, i18nObj)}, + function(i18nObj){ //i18n is not define by plugin + }, i18nUrl, true); + var pluginTabs =3D retrieveTabs(p.name, url); + if(pluginTabs.length > 0){ + tabs.push.apply(tabs, pluginTabs); + } + }); =20 - // Remove file extension from 'defaultTabPath' - DEFAULT_HASH =3D defaultTabPath && - defaultTabPath.substring(0, defaultTabPath.lastIndexOf= ('.')) - } + //sort second level tab based on their ordering number + var orderedTabs =3D tabs.slice(0); + orderedTabs.sort(function(a, b) { + return a.order - b.order; + }); + //redirect to empty page when no plugin installed + if(tabs.length=3D=3D=3D0){ + DEFAULT_HASH =3D 'wok-empty'; + } else { + var defaultTab =3D orderedTabs[0] + var defaultTabPath =3D defaultTab && defaultTab['path'] + + // Remove file extension from 'defaultTabPath' + DEFAULT_HASH =3D defaultTabPath && + defaultTabPath.substring(0, defaultTabPath.lastIndexOf('.'= )) + } =20 - genTabs(orderedTabs); - wok.getHostname(); - wok.logos('ul#plugins',true); - wok.logos('ul#wok-about',false); + genTabs(orderedTabs); + wok.getHostname(); + wok.logos('ul#plugins',true); + wok.logos('ul#wok-about',false); =20 - callback && callback(); - }, function(data) { - wok.message.error(data.responseJSON.reason); - }, true); - }; + callback && callback(); + } =20 var onLanguageChanged =3D function(lang) { wok.lang.set(lang); diff --git a/ui/js/wok.user-log.js b/ui/js/wok.user-log.js index 80e67e1..0e8fb09 100644 --- a/ui/js/wok.user-log.js +++ b/ui/js/wok.user-log.js @@ -156,6 +156,12 @@ wok.initUserLogContent =3D function() { }; =20 wok.initUserLogWindow =3D function() { + // Make wok.plugins is ready to be used + if (wok.plugins =3D=3D undefined) { + setTimeout(wok.initUserLogWindow, 2000); + return; + } + var currentLocale =3D wok.lang.get_locale(); currentLocale =3D currentLocale.substring(0, currentLocale.indexOf('-'= )); $("#request-type").selectpicker(); @@ -172,26 +178,25 @@ wok.initUserLogWindow =3D function() { } }); var pluginsData =3D []; - wok.listPlugins(function(pluginReturn) { - $.each(pluginReturn, function(i, obj) { - pluginsData.push({"app": obj}); - }); - pluginsData.unshift({"app": "wok"}); - var pluginsTt =3D new Bloodhound({ - datumTokenizer: Bloodhound.tokenizers.obj.whitespace('app'), - queryTokenizer: Bloodhound.tokenizers.whitespace, - local: pluginsData - }); - pluginsTt.initialize(); - - $('.typeahead').typeahead( - { - autoselect: false - }, { - name: 'application-name', - displayKey: 'app', - source: pluginsTt.ttAdapter() - }); + var pluginReturn =3D wok.plugins; + $.each(pluginReturn, function(i, obj) { + pluginsData.push({"app": obj}); + }); + pluginsData.unshift({"app": "wok"}); + var pluginsTt =3D new Bloodhound({ + datumTokenizer: Bloodhound.tokenizers.obj.whitespace('app'), + queryTokenizer: Bloodhound.tokenizers.whitespace, + local: pluginsData + }); + pluginsTt.initialize(); + + $('.typeahead').typeahead( + { + autoselect: false + }, { + name: 'application-name', + displayKey: 'app', + source: pluginsTt.ttAdapter() }); =20 $('#form-advanced-search').submit(function(event) { --=20 2.9.3 _______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel