Improved entity item menu with stack button.
This commit is contained in:
parent
4159387133
commit
c7e4123477
23 changed files with 777 additions and 141 deletions
|
@ -36,6 +36,31 @@ public class Organizations extends ArrayList<Organization>
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter by social network.
|
||||||
|
*
|
||||||
|
* @param value
|
||||||
|
* the value
|
||||||
|
* @return the organizations
|
||||||
|
*/
|
||||||
|
public Organizations filterBySocialNetwork(final SocialNetworks value)
|
||||||
|
{
|
||||||
|
Organizations result;
|
||||||
|
|
||||||
|
result = new Organizations();
|
||||||
|
|
||||||
|
for (Organization organization : this)
|
||||||
|
{
|
||||||
|
if (organization.hasSocialNetwork(value))
|
||||||
|
{
|
||||||
|
result.add(organization);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filter by social network.
|
* Filter by social network.
|
||||||
*
|
*
|
||||||
|
@ -60,24 +85,18 @@ public class Organizations extends ArrayList<Organization>
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filter by social network.
|
* Gets the service count.
|
||||||
*
|
*
|
||||||
* @param value
|
* @return the service count
|
||||||
* the value
|
|
||||||
* @return the organizations
|
|
||||||
*/
|
*/
|
||||||
public Organizations filterBySocialNetwork(final SocialNetworks value)
|
public int getServiceCount()
|
||||||
{
|
{
|
||||||
Organizations result;
|
int result;
|
||||||
|
|
||||||
result = new Organizations();
|
|
||||||
|
|
||||||
|
result = 0;
|
||||||
for (Organization organization : this)
|
for (Organization organization : this)
|
||||||
{
|
{
|
||||||
if (organization.hasSocialNetwork(value))
|
result += organization.getServiceCount();
|
||||||
{
|
|
||||||
result.add(organization);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -71,7 +71,8 @@ public class FederationHeaderView
|
||||||
}
|
}
|
||||||
data.setContent("federationStartDate", StringUtils.defaultIfBlank(federation.getStartDate(), "n/a"));
|
data.setContent("federationStartDate", StringUtils.defaultIfBlank(federation.getStartDate(), "n/a"));
|
||||||
|
|
||||||
data.setAttribute("subsLink", "href", "index.xhtml");
|
data.setAttribute("organizationsLink", "href", federation.getTechnicalName() + "-organizations.xhtml");
|
||||||
|
data.setAttribute("servicesLink", "href", federation.getTechnicalName() + "-services.xhtml");
|
||||||
data.setAttribute("rawLink", "href", federation.getTechnicalName() + ".properties");
|
data.setAttribute("rawLink", "href", federation.getTechnicalName() + ".properties");
|
||||||
data.setAttribute("propertyCheckLink", "href", federation.getTechnicalName() + "-propertycheck.xhtml");
|
data.setAttribute("propertyCheckLink", "href", federation.getTechnicalName() + "-propertycheck.xhtml");
|
||||||
data.setAttribute("statsLink", "href", federation.getTechnicalName() + "-stats.xhtml");
|
data.setAttribute("statsLink", "href", federation.getTechnicalName() + "-stats.xhtml");
|
||||||
|
|
|
@ -53,8 +53,6 @@ public class FederationMetricWebPage
|
||||||
*/
|
*/
|
||||||
public static void build(final File htmlizeDirectory, final Federation federation, final ViewMenu view, final PeriodMenu period) throws StatoolInfosException, IOException
|
public static void build(final File htmlizeDirectory, final Federation federation, final ViewMenu view, final PeriodMenu period) throws StatoolInfosException, IOException
|
||||||
{
|
{
|
||||||
String result;
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
TagDataManager data = new TagDataManager();
|
TagDataManager data = new TagDataManager();
|
||||||
|
|
|
@ -0,0 +1,96 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2020-2021 Christian Pierre MOMON <christian@momon.org>
|
||||||
|
*
|
||||||
|
* This file is part of StatoolInfos, simple service statistics tool.
|
||||||
|
*
|
||||||
|
* StatoolInfos is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* StatoolInfos is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package fr.devinsy.statoolinfos.htmlize;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import fr.devinsy.statoolinfos.HtmlizerContext;
|
||||||
|
import fr.devinsy.statoolinfos.core.Federation;
|
||||||
|
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
||||||
|
import fr.devinsy.xidyn.XidynException;
|
||||||
|
import fr.devinsy.xidyn.data.TagDataManager;
|
||||||
|
import fr.devinsy.xidyn.presenters.PresenterUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class FederationOrganizationsPage.
|
||||||
|
*/
|
||||||
|
public class FederationOrganizationsPage
|
||||||
|
{
|
||||||
|
private static Logger logger = LoggerFactory.getLogger(FederationOrganizationsPage.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the.
|
||||||
|
*
|
||||||
|
* @throws StatoolInfosException
|
||||||
|
* the statool infos exception
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
public static void build() throws StatoolInfosException, IOException
|
||||||
|
{
|
||||||
|
Federation federation = HtmlizerContext.instance().getFederation();
|
||||||
|
File htmlizeDirectory = HtmlizerContext.instance().getHtmlizeDirectory();
|
||||||
|
|
||||||
|
//
|
||||||
|
logger.info("PAGE FEDERATION organizations page: {}.", federation.getName());
|
||||||
|
String page = htmlize(federation);
|
||||||
|
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, federation.getLocalFileBaseName() + "-organizations.xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the.
|
||||||
|
*
|
||||||
|
* @param federation
|
||||||
|
* the organization
|
||||||
|
* @return the string
|
||||||
|
* @throws StatoolInfosException
|
||||||
|
* the statool infos exception
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
public static String htmlize(final Federation federation) throws StatoolInfosException, IOException
|
||||||
|
{
|
||||||
|
String result;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
TagDataManager data = new TagDataManager();
|
||||||
|
|
||||||
|
data.setContent("federationHeaderView", FederationHeaderView.htmlize(federation));
|
||||||
|
data.setContent("organizationListView", OrganizationListView.htmlize(federation.getOrganizations()));
|
||||||
|
|
||||||
|
String content = PresenterUtils.dynamize("/fr/devinsy/statoolinfos/htmlize/federationOrganizations.xhtml", data).toString();
|
||||||
|
|
||||||
|
BreadcrumbTrail trail = new BreadcrumbTrail();
|
||||||
|
result = WebCharterView.build(content, trail);
|
||||||
|
}
|
||||||
|
catch (XidynException exception)
|
||||||
|
{
|
||||||
|
throw new StatoolInfosException("Error building federation organizations page: " + exception.getMessage(), exception);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
|
@ -21,7 +21,6 @@ package fr.devinsy.statoolinfos.htmlize;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.time.format.DateTimeFormatter;
|
|
||||||
|
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -30,21 +29,17 @@ import org.slf4j.LoggerFactory;
|
||||||
import fr.devinsy.catgenerator.core.CatGenerator;
|
import fr.devinsy.catgenerator.core.CatGenerator;
|
||||||
import fr.devinsy.statoolinfos.HtmlizerContext;
|
import fr.devinsy.statoolinfos.HtmlizerContext;
|
||||||
import fr.devinsy.statoolinfos.core.Federation;
|
import fr.devinsy.statoolinfos.core.Federation;
|
||||||
import fr.devinsy.statoolinfos.core.Organization;
|
|
||||||
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
||||||
import fr.devinsy.statoolinfos.crawl.CrawlCache;
|
import fr.devinsy.statoolinfos.crawl.CrawlCache;
|
||||||
import fr.devinsy.statoolinfos.htmlize.FederationMetricMenuView.PeriodMenu;
|
import fr.devinsy.statoolinfos.htmlize.FederationMetricMenuView.PeriodMenu;
|
||||||
import fr.devinsy.statoolinfos.htmlize.FederationMetricMenuView.ViewMenu;
|
import fr.devinsy.statoolinfos.htmlize.FederationMetricMenuView.ViewMenu;
|
||||||
import fr.devinsy.xidyn.XidynException;
|
|
||||||
import fr.devinsy.xidyn.data.TagDataManager;
|
|
||||||
import fr.devinsy.xidyn.presenters.PresenterUtils;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class FederationPage.
|
* The Class FederationPage.
|
||||||
*/
|
*/
|
||||||
public class FederationPage
|
public class FederationPages
|
||||||
{
|
{
|
||||||
private static Logger logger = LoggerFactory.getLogger(FederationPage.class);
|
private static Logger logger = LoggerFactory.getLogger(FederationPages.class);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds the.
|
* Builds the.
|
||||||
|
@ -68,9 +63,18 @@ public class FederationPage
|
||||||
FileUtils.copyFile(federation.getInputFile(), new File(htmlizeDirectory, federation.getTechnicalName() + ".properties"));
|
FileUtils.copyFile(federation.getInputFile(), new File(htmlizeDirectory, federation.getTechnicalName() + ".properties"));
|
||||||
|
|
||||||
logger.info("PAGE FEDERATION federation page: {}.", federation.getName());
|
logger.info("PAGE FEDERATION federation page: {}.", federation.getName());
|
||||||
String page = htmlize(federation);
|
String page = FederationOrganizationsPage.htmlize(federation);
|
||||||
FileUtils.write(new File(htmlizeDirectory, "index.xhtml"), page, StandardCharsets.UTF_8);
|
FileUtils.write(new File(htmlizeDirectory, "index.xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
|
||||||
|
//
|
||||||
|
FederationOrganizationsPage.build();
|
||||||
|
FederationServicesPage.build();
|
||||||
|
FederationCrawlJournalPage.build();
|
||||||
|
FederationPropertyCheckPage.build();
|
||||||
|
FederationPropertyAlertPage.buildAll();
|
||||||
|
FederationStatsPage.build();
|
||||||
|
FederationUptimePage.build();
|
||||||
|
|
||||||
//
|
//
|
||||||
logger.info("Htmlize federation metric pages: {}.", federation.getName());
|
logger.info("Htmlize federation metric pages: {}.", federation.getName());
|
||||||
for (ViewMenu view : ViewMenu.values())
|
for (ViewMenu view : ViewMenu.values())
|
||||||
|
@ -91,68 +95,6 @@ public class FederationPage
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Builds the.
|
|
||||||
*
|
|
||||||
* @param federation
|
|
||||||
* the organization
|
|
||||||
* @return the string
|
|
||||||
* @throws StatoolInfosException
|
|
||||||
* the statool infos exception
|
|
||||||
* @throws IOException
|
|
||||||
*/
|
|
||||||
public static String htmlize(final Federation federation) throws StatoolInfosException, IOException
|
|
||||||
{
|
|
||||||
String result;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
logger.debug("Building federation page {}…", federation.getName());
|
|
||||||
|
|
||||||
TagDataManager data = new TagDataManager();
|
|
||||||
|
|
||||||
data.setContent("federationHeaderView", FederationHeaderView.htmlize(federation));
|
|
||||||
|
|
||||||
data.setContent("organizationCount", federation.getOrganizations().size());
|
|
||||||
data.setContent("serviceCount", federation.getServiceCount());
|
|
||||||
|
|
||||||
int index = 0;
|
|
||||||
for (Organization organization : federation.getOrganizations().sortByReverseServiceCount())
|
|
||||||
{
|
|
||||||
data.setAttribute("organizationListLine", index, "organizationListLineNameLink", "href", organization.getTechnicalName() + ".xhtml");
|
|
||||||
data.setAttribute("organizationListLine", index, "organizationListLineLogo", "src", organization.getLogoFileName());
|
|
||||||
data.setAttribute("organizationListLine", index, "organizationListLineLogo", "alt", organization.getName());
|
|
||||||
data.setEscapedContent("organizationListLine", index, "organizationListLineNameValue", organization.getName());
|
|
||||||
|
|
||||||
if (organization.getWebsiteURL() != null)
|
|
||||||
{
|
|
||||||
data.setEscapedContent("organizationListLine", index, "organizationListLineUrlLink", organization.getWebsiteURL().toString());
|
|
||||||
data.setEscapedAttribute("organizationListLine", index, "organizationListLineUrlLink", "href", organization.getWebsiteURL().toString());
|
|
||||||
}
|
|
||||||
data.setContent("organizationListLine", index, "organizationListLineServiceCount", organization.getServiceCount());
|
|
||||||
data.setContent("organizationListLine", index, "organizationListLineUserCount", organization.getPreviousMonthUserCount());
|
|
||||||
data.setContent("organizationListLine", index, "organizationListLineVisitCount", organization.getPreviousMonthVisitCount());
|
|
||||||
|
|
||||||
data.setContent("organizationListLine", index, "organizationListLineDate", organization.getCrawledDate().format(DateTimeFormatter.ofPattern("dd/MM/YYYY")));
|
|
||||||
data.setAttribute("organizationListLine", index, "organizationListLineDate", "title", organization.getCrawledDate().format(DateTimeFormatter.ofPattern("HH:mm:ss")));
|
|
||||||
|
|
||||||
index += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
String content = PresenterUtils.dynamize("/fr/devinsy/statoolinfos/htmlize/federation.xhtml", data).toString();
|
|
||||||
|
|
||||||
BreadcrumbTrail trail = new BreadcrumbTrail();
|
|
||||||
result = WebCharterView.build(content, trail);
|
|
||||||
}
|
|
||||||
catch (XidynException exception)
|
|
||||||
{
|
|
||||||
throw new StatoolInfosException("Error building federation page: " + exception.getMessage(), exception);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Htmlize federation logo.
|
* Htmlize federation logo.
|
||||||
*
|
*
|
|
@ -0,0 +1,96 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2020-2021 Christian Pierre MOMON <christian@momon.org>
|
||||||
|
*
|
||||||
|
* This file is part of StatoolInfos, simple service statistics tool.
|
||||||
|
*
|
||||||
|
* StatoolInfos is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* StatoolInfos is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package fr.devinsy.statoolinfos.htmlize;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import fr.devinsy.statoolinfos.HtmlizerContext;
|
||||||
|
import fr.devinsy.statoolinfos.core.Federation;
|
||||||
|
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
||||||
|
import fr.devinsy.xidyn.XidynException;
|
||||||
|
import fr.devinsy.xidyn.data.TagDataManager;
|
||||||
|
import fr.devinsy.xidyn.presenters.PresenterUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class FederationServicesPage.
|
||||||
|
*/
|
||||||
|
public class FederationServicesPage
|
||||||
|
{
|
||||||
|
private static Logger logger = LoggerFactory.getLogger(FederationServicesPage.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the.
|
||||||
|
*
|
||||||
|
* @throws StatoolInfosException
|
||||||
|
* the statool infos exception
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
public static void build() throws StatoolInfosException, IOException
|
||||||
|
{
|
||||||
|
Federation federation = HtmlizerContext.instance().getFederation();
|
||||||
|
File htmlizeDirectory = HtmlizerContext.instance().getHtmlizeDirectory();
|
||||||
|
|
||||||
|
//
|
||||||
|
logger.info("PAGE FEDERATION services page: {}.", federation.getName());
|
||||||
|
String page = htmlize(federation);
|
||||||
|
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, federation.getLocalFileBaseName() + "-services.xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the.
|
||||||
|
*
|
||||||
|
* @param federation
|
||||||
|
* the organization
|
||||||
|
* @return the string
|
||||||
|
* @throws StatoolInfosException
|
||||||
|
* the statool infos exception
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
public static String htmlize(final Federation federation) throws StatoolInfosException, IOException
|
||||||
|
{
|
||||||
|
String result;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
TagDataManager data = new TagDataManager();
|
||||||
|
|
||||||
|
data.setContent("federationHeaderView", FederationHeaderView.htmlize(federation));
|
||||||
|
data.setContent("serviceListView", ServiceListView.htmlize(federation.getServicesAll()));
|
||||||
|
|
||||||
|
String content = PresenterUtils.dynamize("/fr/devinsy/statoolinfos/htmlize/federationServices.xhtml", data).toString();
|
||||||
|
|
||||||
|
BreadcrumbTrail trail = new BreadcrumbTrail();
|
||||||
|
result = WebCharterView.build(content, trail);
|
||||||
|
}
|
||||||
|
catch (XidynException exception)
|
||||||
|
{
|
||||||
|
throw new StatoolInfosException("Error building federation services page: " + exception.getMessage(), exception);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
|
@ -162,12 +162,7 @@ public class Htmlizer
|
||||||
CategoryPage.buildAll();
|
CategoryPage.buildAll();
|
||||||
EditoPage.build();
|
EditoPage.build();
|
||||||
ExportsPage.build();
|
ExportsPage.build();
|
||||||
FederationPage.build();
|
FederationPages.build();
|
||||||
FederationCrawlJournalPage.build();
|
|
||||||
FederationPropertyCheckPage.build();
|
|
||||||
FederationPropertyAlertPage.buildAll();
|
|
||||||
FederationStatsPage.build();
|
|
||||||
FederationUptimePage.build();
|
|
||||||
OrganizationPage.buildAll();
|
OrganizationPage.buildAll();
|
||||||
OrganizationCrawlJournalPage.buildAll();
|
OrganizationCrawlJournalPage.buildAll();
|
||||||
OrganizationUptimePage.buildAll();
|
OrganizationUptimePage.buildAll();
|
||||||
|
|
|
@ -96,7 +96,8 @@ public class OrganizationHeaderView
|
||||||
data.setContent("organizationStartDateWord", "");
|
data.setContent("organizationStartDateWord", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
data.setAttribute("subsLink", "href", organization.getTechnicalName() + ".xhtml");
|
data.setAttribute("organizationsLink", "href", organization.getFederation().getTechnicalName() + "-organizations.xhtml");
|
||||||
|
data.setAttribute("servicesLink", "href", organization.getTechnicalName() + "-services.xhtml");
|
||||||
data.setAttribute("rawLink", "href", organization.getTechnicalName() + ".properties");
|
data.setAttribute("rawLink", "href", organization.getTechnicalName() + ".properties");
|
||||||
data.setAttribute("rawCheckLink", "href", organization.getTechnicalName() + "-propertycheck.xhtml");
|
data.setAttribute("rawCheckLink", "href", organization.getTechnicalName() + "-propertycheck.xhtml");
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,99 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2020-2021 Christian Pierre MOMON <christian@momon.org>
|
||||||
|
*
|
||||||
|
* This file is part of StatoolInfos, simple service statistics tool.
|
||||||
|
*
|
||||||
|
* StatoolInfos is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* StatoolInfos is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package fr.devinsy.statoolinfos.htmlize;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import fr.devinsy.statoolinfos.core.Organization;
|
||||||
|
import fr.devinsy.statoolinfos.core.Organizations;
|
||||||
|
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
||||||
|
import fr.devinsy.xidyn.XidynException;
|
||||||
|
import fr.devinsy.xidyn.data.TagDataManager;
|
||||||
|
import fr.devinsy.xidyn.presenters.PresenterUtils;
|
||||||
|
import fr.devinsy.xidyn.utils.XidynUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class OrganizationsView.
|
||||||
|
*/
|
||||||
|
public class OrganizationListView
|
||||||
|
{
|
||||||
|
private static Logger logger = LoggerFactory.getLogger(OrganizationListView.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Htmlize.
|
||||||
|
*
|
||||||
|
* @param organizations
|
||||||
|
* the organizations
|
||||||
|
* @return the string
|
||||||
|
* @throws StatoolInfosException
|
||||||
|
* the statool infos exception
|
||||||
|
* @throws IOException
|
||||||
|
* Signals that an I/O exception has occurred.
|
||||||
|
*/
|
||||||
|
public static String htmlize(final Organizations organizations) throws StatoolInfosException, IOException
|
||||||
|
{
|
||||||
|
String result;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
TagDataManager data = new TagDataManager();
|
||||||
|
|
||||||
|
data.setContent("organizationCount", organizations.size());
|
||||||
|
data.setContent("serviceCount", organizations.getServiceCount());
|
||||||
|
|
||||||
|
int index = 0;
|
||||||
|
for (Organization organization : organizations.sortByReverseServiceCount())
|
||||||
|
{
|
||||||
|
data.setAttribute("organizationListLine", index, "organizationListLineNameLink", "href", organization.getTechnicalName() + ".xhtml");
|
||||||
|
data.setAttribute("organizationListLine", index, "organizationListLineLogo", "src", organization.getLogoFileName());
|
||||||
|
data.setAttribute("organizationListLine", index, "organizationListLineLogo", "alt", organization.getName());
|
||||||
|
data.setEscapedContent("organizationListLine", index, "organizationListLineNameValue", organization.getName());
|
||||||
|
|
||||||
|
if (organization.getWebsiteURL() != null)
|
||||||
|
{
|
||||||
|
data.setEscapedContent("organizationListLine", index, "organizationListLineUrlLink", organization.getWebsiteURL().toString());
|
||||||
|
data.setEscapedAttribute("organizationListLine", index, "organizationListLineUrlLink", "href", organization.getWebsiteURL().toString());
|
||||||
|
}
|
||||||
|
data.setContent("organizationListLine", index, "organizationListLineServiceCount", organization.getServiceCount());
|
||||||
|
data.setContent("organizationListLine", index, "organizationListLineUserCount", organization.getPreviousMonthUserCount());
|
||||||
|
data.setContent("organizationListLine", index, "organizationListLineVisitCount", organization.getPreviousMonthVisitCount());
|
||||||
|
|
||||||
|
data.setContent("organizationListLine", index, "organizationListLineDate", organization.getCrawledDate().format(DateTimeFormatter.ofPattern("dd/MM/YYYY")));
|
||||||
|
data.setAttribute("organizationListLine", index, "organizationListLineDate", "title", organization.getCrawledDate().format(DateTimeFormatter.ofPattern("HH:mm:ss")));
|
||||||
|
|
||||||
|
index += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
String page = PresenterUtils.dynamize("/fr/devinsy/statoolinfos/htmlize/organizationListView.xhtml", data).toString();
|
||||||
|
|
||||||
|
result = XidynUtils.extractBodyContent(page);
|
||||||
|
}
|
||||||
|
catch (XidynException exception)
|
||||||
|
{
|
||||||
|
throw new StatoolInfosException("Error building organizations view: " + exception.getMessage(), exception);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
|
@ -69,6 +69,7 @@ public class OrganizationPage
|
||||||
logger.info("Htmlize organization page: {}.", organization.getName());
|
logger.info("Htmlize organization page: {}.", organization.getName());
|
||||||
String page = OrganizationPage.htmlize(organization);
|
String page = OrganizationPage.htmlize(organization);
|
||||||
FileUtils.write(new File(htmlizeDirectory, organization.getTechnicalName() + ".xhtml"), page, StandardCharsets.UTF_8);
|
FileUtils.write(new File(htmlizeDirectory, organization.getTechnicalName() + ".xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, organization.getTechnicalName() + "-services.xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
|
||||||
//
|
//
|
||||||
OrganizationPropertyAlertPage.buildAll();
|
OrganizationPropertyAlertPage.buildAll();
|
||||||
|
|
|
@ -84,6 +84,9 @@ public class ServiceHeaderView
|
||||||
data.setAttribute("serviceStatusImg", "src", "status-" + service.getStatus().toString().toLowerCase() + ".png");
|
data.setAttribute("serviceStatusImg", "src", "status-" + service.getStatus().toString().toLowerCase() + ".png");
|
||||||
data.setAttribute("serviceStatusImg", "title", StringUtils.defaultIfBlank(service.getStatusDescription(), service.getStatus().toString()));
|
data.setAttribute("serviceStatusImg", "title", StringUtils.defaultIfBlank(service.getStatusDescription(), service.getStatus().toString()));
|
||||||
|
|
||||||
|
data.setAttribute("organizationsLink", "href", service.getOrganization().getTechnicalName() + "-services.xhtml");
|
||||||
|
data.setAttribute("servicesLink", "href", service.getLocalFileBaseName() + "-services.xhtml");
|
||||||
|
|
||||||
data.setAttribute("rawLink", "href", service.getLocalFileBaseName() + ".properties");
|
data.setAttribute("rawLink", "href", service.getLocalFileBaseName() + ".properties");
|
||||||
data.setAttribute("rawCheckLink", "href", service.getLocalFileBaseName() + "-propertycheck.xhtml");
|
data.setAttribute("rawCheckLink", "href", service.getLocalFileBaseName() + "-propertycheck.xhtml");
|
||||||
|
|
||||||
|
|
|
@ -77,6 +77,8 @@ public class ServicePage
|
||||||
String page = ServicePage.htmlize(service);
|
String page = ServicePage.htmlize(service);
|
||||||
FileUtils.write(new File(htmlizeDirectory, service.getLocalFileBaseName() + ".xhtml"), page, StandardCharsets.UTF_8);
|
FileUtils.write(new File(htmlizeDirectory, service.getLocalFileBaseName() + ".xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
|
||||||
|
ServiceServicesPage.build(service);
|
||||||
|
|
||||||
//
|
//
|
||||||
logger.info("Htmlize service metric pages: {}.", service.getName());
|
logger.info("Htmlize service metric pages: {}.", service.getName());
|
||||||
for (ViewMenu view : ViewMenu.values())
|
for (ViewMenu view : ViewMenu.values())
|
||||||
|
|
106
src/fr/devinsy/statoolinfos/htmlize/ServiceServicesPage.java
Normal file
106
src/fr/devinsy/statoolinfos/htmlize/ServiceServicesPage.java
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2020-2021 Christian Pierre MOMON <christian@momon.org>
|
||||||
|
*
|
||||||
|
* This file is part of StatoolInfos, simple service statistics tool.
|
||||||
|
*
|
||||||
|
* StatoolInfos is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* StatoolInfos is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package fr.devinsy.statoolinfos.htmlize;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import fr.devinsy.catgenerator.core.BirdGenerator;
|
||||||
|
import fr.devinsy.statoolinfos.HtmlizerContext;
|
||||||
|
import fr.devinsy.statoolinfos.core.Service;
|
||||||
|
import fr.devinsy.statoolinfos.core.Services;
|
||||||
|
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
||||||
|
import fr.devinsy.statoolinfos.crawl.CrawlCache;
|
||||||
|
import fr.devinsy.xidyn.XidynException;
|
||||||
|
import fr.devinsy.xidyn.data.TagDataManager;
|
||||||
|
import fr.devinsy.xidyn.presenters.PresenterUtils;
|
||||||
|
|
||||||
|
// TODO: Auto-generated Javadoc
|
||||||
|
/**
|
||||||
|
* The Class ServiceServicesPage.
|
||||||
|
*/
|
||||||
|
public class ServiceServicesPage
|
||||||
|
{
|
||||||
|
private static Logger logger = LoggerFactory.getLogger(ServiceServicesPage.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the view.
|
||||||
|
*
|
||||||
|
* @param service
|
||||||
|
* the service
|
||||||
|
* @throws IOException
|
||||||
|
* Signals that an I/O exception has occurred.
|
||||||
|
* @throws StatoolInfosException
|
||||||
|
* the statool infos exception
|
||||||
|
*/
|
||||||
|
public static void build(final Service service) throws IOException, StatoolInfosException
|
||||||
|
{
|
||||||
|
File htmlizeDirectory = HtmlizerContext.instance().getHtmlizeDirectory();
|
||||||
|
|
||||||
|
//
|
||||||
|
String page = htmlize(service);
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, service.getLocalFileBaseName() + "-services.xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the.
|
||||||
|
*
|
||||||
|
* @param service
|
||||||
|
* the service
|
||||||
|
* @return the string
|
||||||
|
* @throws StatoolInfosException
|
||||||
|
* the statool infos exception
|
||||||
|
*/
|
||||||
|
public static String htmlize(final Service service) throws StatoolInfosException
|
||||||
|
{
|
||||||
|
String result;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
TagDataManager data = new TagDataManager();
|
||||||
|
|
||||||
|
//
|
||||||
|
data.setContent("headerView", ServiceHeaderView.htmlize(service));
|
||||||
|
|
||||||
|
Services services = new Services();
|
||||||
|
services.add(service);
|
||||||
|
data.setContent("servicesView", ServiceListView.htmlize(services));
|
||||||
|
|
||||||
|
//
|
||||||
|
String content = PresenterUtils.dynamize("/fr/devinsy/statoolinfos/htmlize/serviceServices.xhtml", data).toString();
|
||||||
|
|
||||||
|
BreadcrumbTrail trail = new BreadcrumbTrail();
|
||||||
|
trail.add(service.getOrganization().getName(), service.getOrganization().getTechnicalName() + ".xhtml");
|
||||||
|
trail.add(service.getName(), service.getOrganization().getTechnicalName() + "-" + service.getTechnicalName() + ".xhtml");
|
||||||
|
result = WebCharterView.build(content, trail);
|
||||||
|
}
|
||||||
|
catch (XidynException exception)
|
||||||
|
{
|
||||||
|
throw new StatoolInfosException("Error building service page: " + exception.getMessage(), exception);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
|
@ -12,51 +12,6 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="federationHeaderView" />
|
<div id="federationHeaderView" />
|
||||||
<div class="center_table" style="width: 900px;">
|
<div id="organizationListView" />
|
||||||
<br/>
|
|
||||||
<div class="center">Nombre de membres : <span id="organizationCount">n/a</span></div>
|
|
||||||
<div class="center">Nombre de services : <span id="serviceCount">n/a</span></div>
|
|
||||||
<table id="organizations" class="table_classic left">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th style="width: 200px;">Membre</th>
|
|
||||||
<th style="width: 250px;">URL</th>
|
|
||||||
<th style="width: 10px;">Services</th>
|
|
||||||
<th style="width: 10px;">Utilisateurs mensuels</th>
|
|
||||||
<th style="width: 10px;">Visites mensuelles</th>
|
|
||||||
<th style="width: 10px;">Date</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr id="organizationListLine">
|
|
||||||
<td id="organizationListLineName" style="padding-top: 0; padding-bottom: 0;">
|
|
||||||
<a href="#" id="organizationListLineNameLink">
|
|
||||||
<img id="organizationListLineLogo" src="" style="width: 26px; height: 26px; padding-top:0; padding-bottom: 0; vertical-align: middle;"/>
|
|
||||||
 <span id="organizationListLineNameValue">n/a</span>
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td id="organizationListLineUrl"><a href="#" id="organizationListLineUrlLink">n/a</a></td>
|
|
||||||
<td id="organizationListLineServiceCount" class="td_number">n/a</td>
|
|
||||||
<td id="organizationListLineUserCount" class="td_number">n/a</td>
|
|
||||||
<td id="organizationListLineVisitCount" class="td_number">n/a</td>
|
|
||||||
<td id="organizationListLineDate" class="center">n/a</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
$(document).ready(function()
|
|
||||||
{
|
|
||||||
$.fn.dataTable.moment( 'DD/MM/YYYY' );
|
|
||||||
|
|
||||||
$('#organizations').DataTable(
|
|
||||||
{
|
|
||||||
paging: false,
|
|
||||||
ordering: true,
|
|
||||||
"order": [[ 2, "desc" ]],
|
|
||||||
language: dataTableFrench
|
|
||||||
});
|
|
||||||
} );
|
|
||||||
</script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -28,7 +28,8 @@
|
||||||
<a id="emailLink" href="#"><img id="emailLinkImg" src="circle-icons/mail.svg" class="disabled" title="Courriel de contact/support"/></a>
|
<a id="emailLink" href="#"><img id="emailLinkImg" src="circle-icons/mail.svg" class="disabled" title="Courriel de contact/support"/></a>
|
||||||
<a id="userDocLink" href="#"><img id="userDocLinkImg" src="circle-icons/bookshelf.svg" class="disabled" title="Documentation"/></a>
|
<a id="userDocLink" href="#"><img id="userDocLinkImg" src="circle-icons/bookshelf.svg" class="disabled" title="Documentation"/></a>
|
||||||
<a id="technicalDocLink" href="#"><img id="technicalDocLinkImg" src="circle-icons/tools.svg" class="disabled" title="Documentation technique"/></a>
|
<a id="technicalDocLink" href="#"><img id="technicalDocLinkImg" src="circle-icons/tools.svg" class="disabled" title="Documentation technique"/></a>
|
||||||
<a id="subsLink" href="#"><img id="subsLinkImg" src="circle-icons/frames-mono.svg" title="Liste des organisations"/></a>
|
<a id="organizationsLink" href="#"><img id="organizationsLinkImg" src="circle-icons/stack-mono.svg" title="Liste des organisations"/></a>
|
||||||
|
<a id="servicesLink" href="#"><img id="servicesLinkImg" src="circle-icons/frames-mono.svg" title="Liste des services"/></a>
|
||||||
<a id="propertyCheckLink" href="#"><img id="rawCheckLinkImg" src="circle-icons/clipboard-mono.svg" title="Propriétés"/></a>
|
<a id="propertyCheckLink" href="#"><img id="rawCheckLinkImg" src="circle-icons/clipboard-mono.svg" title="Propriétés"/></a>
|
||||||
<a id="rawLink" href="#"><img id="rawLinkImg" src="circle-icons/document-mono.svg" title="Propriétés brutes"/></a>
|
<a id="rawLink" href="#"><img id="rawLinkImg" src="circle-icons/document-mono.svg" title="Propriétés brutes"/></a>
|
||||||
<a id="crawlLink" href="#"><img id="crawlLinkImg" src="circle-icons/download-mono.svg" title="Statut des téléchargements"/></a>
|
<a id="crawlLink" href="#"><img id="crawlLinkImg" src="circle-icons/download-mono.svg" title="Statut des téléchargements"/></a>
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title>StatoolInfos</title>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="keywords" content="statoolinfos,devinsy,federation" />
|
||||||
|
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="statoolinfos.css" />
|
||||||
|
<script src="sorttable.js" />
|
||||||
|
<script src="Chart.bundle.min.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="federationHeaderView" />
|
||||||
|
<div id="organizationListView" />
|
||||||
|
</body>
|
||||||
|
</html>
|
17
src/fr/devinsy/statoolinfos/htmlize/federationServices.xhtml
Normal file
17
src/fr/devinsy/statoolinfos/htmlize/federationServices.xhtml
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title>StatoolInfos</title>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="keywords" content="statoolinfos,devinsy,federation" />
|
||||||
|
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="statoolinfos.css" />
|
||||||
|
<script src="sorttable.js" />
|
||||||
|
<script src="Chart.bundle.min.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="federationHeaderView" />
|
||||||
|
<div id="serviceListView" />
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -30,7 +30,8 @@
|
||||||
<a id="emailLink" href="#"><img id="emailLinkImg" src="circle-icons/mail.svg" class="disabled" title="Courriel de contact/support"/></a>
|
<a id="emailLink" href="#"><img id="emailLinkImg" src="circle-icons/mail.svg" class="disabled" title="Courriel de contact/support"/></a>
|
||||||
<a id="userDocLink" href="#"><img id="userDocLinkImg" src="circle-icons/bookshelf.svg" class="disabled" title="Documentation"/></a>
|
<a id="userDocLink" href="#"><img id="userDocLinkImg" src="circle-icons/bookshelf.svg" class="disabled" title="Documentation"/></a>
|
||||||
<a id="technicalDocLink" href="#"><img id="technicalDocLinkImg" src="circle-icons/tools.svg" class="disabled" title="Documentation technique"/></a>
|
<a id="technicalDocLink" href="#"><img id="technicalDocLinkImg" src="circle-icons/tools.svg" class="disabled" title="Documentation technique"/></a>
|
||||||
<a id="subsLink" href="#"><img id="subsLinkImg" src="circle-icons/frames-mono.svg" title="Liste des services"/></a>
|
<a id="organizationsLink" href="#"><img id="organizationsLinkImg" src="circle-icons/stack-mono.svg" title="Liste des organisations"/></a>
|
||||||
|
<a id="servicesLink" href="#"><img id="servicesLinkImg" src="circle-icons/frames-mono.svg" title="Liste des services"/></a>
|
||||||
<a id="rawCheckLink" href="#"><img id="rawCheckLinkImg" src="circle-icons/clipboard-mono.svg" title="Propriétés"/></a>
|
<a id="rawCheckLink" href="#"><img id="rawCheckLinkImg" src="circle-icons/clipboard-mono.svg" title="Propriétés"/></a>
|
||||||
<a id="rawLink" href="#"><img id="rawLinkImg" src="circle-icons/document-mono.svg" title="Propriétés brutes"/></a>
|
<a id="rawLink" href="#"><img id="rawLinkImg" src="circle-icons/document-mono.svg" title="Propriétés brutes"/></a>
|
||||||
<a id="crawlLink" href="#"><img id="crawlLinkImg" src="circle-icons/download-mono.svg" title="Statut des téléchargements"/></a>
|
<a id="crawlLink" href="#"><img id="crawlLinkImg" src="circle-icons/download-mono.svg" title="Statut des téléchargements"/></a>
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title>StatoolInfos</title>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="keywords" content="statoolinfos,devinsy,federation" />
|
||||||
|
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="statoolinfos.css" />
|
||||||
|
<script src="sorttable.js" />
|
||||||
|
<script src="Chart.bundle.min.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="center_table" style="width: 900px;">
|
||||||
|
<br/>
|
||||||
|
<div class="center">Nombre de membres : <span id="organizationCount">n/a</span></div>
|
||||||
|
<div class="center">Nombre de services : <span id="serviceCount">n/a</span></div>
|
||||||
|
<table id="organizations" class="table_classic left">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th style="width: 200px;">Membre</th>
|
||||||
|
<th style="width: 250px;">URL</th>
|
||||||
|
<th style="width: 10px;">Services</th>
|
||||||
|
<th style="width: 10px;">Utilisateurs mensuels</th>
|
||||||
|
<th style="width: 10px;">Visites mensuelles</th>
|
||||||
|
<th style="width: 10px;">Date</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr id="organizationListLine">
|
||||||
|
<td id="organizationListLineName" style="padding-top: 0; padding-bottom: 0;">
|
||||||
|
<a href="#" id="organizationListLineNameLink">
|
||||||
|
<img id="organizationListLineLogo" src="" style="width: 26px; height: 26px; padding-top:0; padding-bottom: 0; vertical-align: middle;"/>
|
||||||
|
 <span id="organizationListLineNameValue">n/a</span>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td id="organizationListLineUrl"><a href="#" id="organizationListLineUrlLink">n/a</a></td>
|
||||||
|
<td id="organizationListLineServiceCount" class="td_number">n/a</td>
|
||||||
|
<td id="organizationListLineUserCount" class="td_number">n/a</td>
|
||||||
|
<td id="organizationListLineVisitCount" class="td_number">n/a</td>
|
||||||
|
<td id="organizationListLineDate" class="center">n/a</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(function()
|
||||||
|
{
|
||||||
|
$.fn.dataTable.moment( 'DD/MM/YYYY' );
|
||||||
|
|
||||||
|
$('#organizations').DataTable(
|
||||||
|
{
|
||||||
|
paging: false,
|
||||||
|
ordering: true,
|
||||||
|
"order": [[ 2, "desc" ]],
|
||||||
|
language: dataTableFrench
|
||||||
|
});
|
||||||
|
} );
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -38,7 +38,8 @@
|
||||||
<a id="emailLink" href="#"><img id="emailLinkImg" src="circle-icons/mail.svg" class="disabled" title="Courriel de contact/support"/></a>
|
<a id="emailLink" href="#"><img id="emailLinkImg" src="circle-icons/mail.svg" class="disabled" title="Courriel de contact/support"/></a>
|
||||||
<a id="userDocLink" href="#"><img id="userDocLinkImg" src="circle-icons/bookshelf.svg" class="disabled" title="Documentation"/></a>
|
<a id="userDocLink" href="#"><img id="userDocLinkImg" src="circle-icons/bookshelf.svg" class="disabled" title="Documentation"/></a>
|
||||||
<a id="technicalDocLink" href="#"><img id="technicalDocLinkImg" src="circle-icons/tools.svg" class="disabled" title="Documentation technique"/></a>
|
<a id="technicalDocLink" href="#"><img id="technicalDocLinkImg" src="circle-icons/tools.svg" class="disabled" title="Documentation technique"/></a>
|
||||||
<a id="subsLink" href="#"><img id="subsLinkImg" src="circle-icons/frames-mono.svg" title="" class="disabled" /></a>
|
<a id="organizationsLink" href="#"><img id="organizationsLinkImg" src="circle-icons/stack-mono.svg" title="Organisation"/></a>
|
||||||
|
<a id="servicesLink" href="#"><img id="servicesLinkImg" src="circle-icons/frames-mono.svg" title="" /></a>
|
||||||
<a id="rawCheckLink" href="#"><img id="rawCheckLinkImg" src="circle-icons/clipboard-mono.svg" title="Propriétés"/></a>
|
<a id="rawCheckLink" href="#"><img id="rawCheckLinkImg" src="circle-icons/clipboard-mono.svg" title="Propriétés"/></a>
|
||||||
<a id="rawLink" href="#"><img id="rawLinkImg" src="circle-icons/document-mono.svg" title="Propriétés brutes"/></a>
|
<a id="rawLink" href="#"><img id="rawLinkImg" src="circle-icons/document-mono.svg" title="Propriétés brutes"/></a>
|
||||||
<a id="crawlLink" href="#"><img id="crawlLinkImg" src="circle-icons/download-mono.svg" title="Statut des téléchargements"/></a>
|
<a id="crawlLink" href="#"><img id="crawlLinkImg" src="circle-icons/download-mono.svg" title="Statut des téléchargements"/></a>
|
||||||
|
|
17
src/fr/devinsy/statoolinfos/htmlize/serviceServices.xhtml
Normal file
17
src/fr/devinsy/statoolinfos/htmlize/serviceServices.xhtml
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title>StatoolInfos</title>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="keywords" content="statoolinfos,devinsy,federation" />
|
||||||
|
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="statoolinfos.css" />
|
||||||
|
<script src="sorttable.js" />
|
||||||
|
<script src="Chart.bundle.min.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="headerView" />
|
||||||
|
<div id="servicesView" />
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,78 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
version="1.1"
|
||||||
|
id="svg2"
|
||||||
|
xml:space="preserve"
|
||||||
|
width="85.333336"
|
||||||
|
height="85.333336"
|
||||||
|
viewBox="0 0 85.333336 85.333336"
|
||||||
|
sodipodi:docname="stack.svg"
|
||||||
|
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"><metadata
|
||||||
|
id="metadata8"><rdf:RDF><cc:Work
|
||||||
|
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||||
|
id="defs6"><clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath18"><path
|
||||||
|
d="M 0,64 H 64 V 0 H 0 Z"
|
||||||
|
id="path16"
|
||||||
|
inkscape:connector-curvature="0" /></clipPath></defs><sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="830"
|
||||||
|
inkscape:window-height="480"
|
||||||
|
id="namedview4"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="2.7656249"
|
||||||
|
inkscape:cx="42.666668"
|
||||||
|
inkscape:cy="42.666668"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="25"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
inkscape:current-layer="g10" /><g
|
||||||
|
id="g10"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
inkscape:label="Elegant_circle-icons"
|
||||||
|
transform="matrix(1.3333333,0,0,-1.3333333,0,85.333333)"><g
|
||||||
|
id="g12"><g
|
||||||
|
id="g14"
|
||||||
|
clip-path="url(#clipPath18)"><g
|
||||||
|
id="g20"
|
||||||
|
transform="translate(51.2742,25.0513)"><path
|
||||||
|
d="m 0,0 -2.971,1.782 -13.522,-8.113 c -0.774,-0.464 -1.762,-0.72 -2.781,-0.72 -1.019,0 -2.007,0.256 -2.781,0.72 L -35.578,1.782 -38.548,0 c -0.968,-0.581 -0.968,-1.522 0,-2.103 l 17.522,-10.513 c 0.483,-0.29 1.118,-0.435 1.752,-0.435 0.634,0 1.268,0.145 1.752,0.435 L 0,-2.103 C 0.968,-1.522 0.968,-0.581 0,0"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path22"
|
||||||
|
inkscape:connector-curvature="0" /></g><g
|
||||||
|
id="g24"
|
||||||
|
transform="translate(51.2742,33.0513)"><path
|
||||||
|
d="m 0,0 -2.971,1.782 -13.522,-8.113 c -0.774,-0.464 -1.762,-0.72 -2.781,-0.72 -1.019,0 -2.007,0.256 -2.781,0.72 L -35.578,1.782 -38.548,0 c -0.968,-0.581 -0.968,-1.522 0,-2.103 l 17.522,-10.513 c 0.483,-0.29 1.118,-0.435 1.752,-0.435 0.634,0 1.268,0.145 1.752,0.435 L 0,-2.103 C 0.968,-1.522 0.968,-0.581 0,0"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path26"
|
||||||
|
inkscape:connector-curvature="0" /></g><g
|
||||||
|
id="g28"
|
||||||
|
transform="translate(51.2742,41.0513)"><path
|
||||||
|
d="m 0,0 -17.522,10.513 c -0.484,0.29 -1.118,0.436 -1.752,0.436 -0.634,0 -1.269,-0.146 -1.752,-0.436 L -38.548,0 c -0.968,-0.581 -0.968,-1.522 0,-2.103 l 17.522,-10.513 c 0.483,-0.29 1.118,-0.435 1.752,-0.435 0.634,0 1.268,0.145 1.752,0.435 L 0,-2.103 C 0.968,-1.522 0.968,-0.581 0,0"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path30"
|
||||||
|
inkscape:connector-curvature="0" /></g><g
|
||||||
|
id="g32"
|
||||||
|
transform="translate(51.2742,38.9487)"><path
|
||||||
|
d="m 0,0 -17.522,-10.513 c -0.484,-0.29 -1.118,-0.436 -1.752,-0.436 -0.634,0 -1.269,0.146 -1.752,0.436 L -38.548,0 c -0.968,0.581 -0.968,1.522 0,2.103 l 17.522,10.513 c 0.483,0.29 1.118,0.435 1.752,0.435 0.634,0 1.268,-0.145 1.752,-0.435 L 0,2.103 C 0.968,1.522 0.968,0.581 0,0 m 0,-8 -17.522,-10.513 c -0.484,-0.29 -1.118,-0.436 -1.752,-0.436 -0.634,0 -1.269,0.146 -1.752,0.436 L -38.548,-8 c -0.968,0.581 -0.968,1.522 0,2.103 l 2.97,1.782 13.523,-8.113 c 0.774,-0.465 1.762,-0.721 2.781,-0.721 1.019,0 2.007,0.256 2.781,0.721 L -2.971,-4.115 0,-5.897 C 0.968,-6.478 0.968,-7.419 0,-8 m 0,-8 -17.522,-10.513 c -0.484,-0.29 -1.118,-0.436 -1.752,-0.436 -0.634,0 -1.269,0.146 -1.752,0.436 L -38.548,-16 c -0.968,0.581 -0.968,1.522 0,2.103 l 2.97,1.782 13.523,-8.113 c 0.774,-0.465 1.762,-0.721 2.781,-0.721 1.019,0 2.007,0.256 2.781,0.721 L -2.971,-12.115 0,-13.897 C 0.968,-14.478 0.968,-15.419 0,-16 m -19.274,41.051 c -17.673,0 -32,-14.327 -32,-32 0,-17.673 14.327,-32 32,-32 17.673,0 32,14.327 32,32 0,17.673 -14.327,32 -32,32"
|
||||||
|
style="fill:#4f5d73;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path34"
|
||||||
|
inkscape:connector-curvature="0" /></g></g></g></g></svg>
|
After Width: | Height: | Size: 4.8 KiB |
129
src/fr/devinsy/statoolinfos/htmlize/stuff/circle-icons/stack.svg
Normal file
129
src/fr/devinsy/statoolinfos/htmlize/stuff/circle-icons/stack.svg
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
version="1.1"
|
||||||
|
id="svg2"
|
||||||
|
xml:space="preserve"
|
||||||
|
width="85.333336"
|
||||||
|
height="85.333336"
|
||||||
|
viewBox="0 0 85.333336 85.333336"
|
||||||
|
sodipodi:docname="stack.svg"
|
||||||
|
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"><metadata
|
||||||
|
id="metadata8"><rdf:RDF><cc:Work
|
||||||
|
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||||
|
id="defs6"><clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath18"><path
|
||||||
|
d="M 0,64 H 64 V 0 H 0 Z"
|
||||||
|
id="path16"
|
||||||
|
inkscape:connector-curvature="0" /></clipPath><clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath30"><path
|
||||||
|
d="M 12,34 H 52 V 10 H 12 Z"
|
||||||
|
id="path28"
|
||||||
|
inkscape:connector-curvature="0" /></clipPath><clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath50"><path
|
||||||
|
d="M 12,42 H 52 V 18 H 12 Z"
|
||||||
|
id="path48"
|
||||||
|
inkscape:connector-curvature="0" /></clipPath><clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath70"><path
|
||||||
|
d="M 12,50 H 52 V 26 H 12 Z"
|
||||||
|
id="path68"
|
||||||
|
inkscape:connector-curvature="0" /></clipPath></defs><sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="830"
|
||||||
|
inkscape:window-height="480"
|
||||||
|
id="namedview4"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="2.7656249"
|
||||||
|
inkscape:cx="42.666668"
|
||||||
|
inkscape:cy="42.666668"
|
||||||
|
inkscape:window-x="768"
|
||||||
|
inkscape:window-y="288"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
inkscape:current-layer="g10" /><g
|
||||||
|
id="g10"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
inkscape:label="Elegant_circle-icons"
|
||||||
|
transform="matrix(1.3333333,0,0,-1.3333333,0,85.333333)"><g
|
||||||
|
id="g12"><g
|
||||||
|
id="g14"
|
||||||
|
clip-path="url(#clipPath18)"><g
|
||||||
|
id="g20"
|
||||||
|
transform="translate(64,32)"><path
|
||||||
|
d="m 0,0 c 0,-17.673 -14.327,-32 -32,-32 -17.673,0 -32,14.327 -32,32 0,17.673 14.327,32 32,32 C -14.327,32 0,17.673 0,0"
|
||||||
|
style="fill:#e0e0d1;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path22"
|
||||||
|
inkscape:connector-curvature="0" /></g><g
|
||||||
|
id="g24"><g
|
||||||
|
id="g26" /><g
|
||||||
|
id="g38"><g
|
||||||
|
clip-path="url(#clipPath30)"
|
||||||
|
id="g36"
|
||||||
|
style="opacity:0.19999701"><g
|
||||||
|
transform="translate(33.7522,10.4355)"
|
||||||
|
id="g34"><path
|
||||||
|
d="m 0,0 c -0.968,-0.581 -2.537,-0.581 -3.504,0 l -17.522,10.513 c -0.968,0.581 -0.968,1.522 0,2.103 l 17.522,10.513 c 0.967,0.581 2.536,0.581 3.504,0 L 17.522,12.616 c 0.968,-0.581 0.968,-1.522 0,-2.103 z"
|
||||||
|
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path32"
|
||||||
|
inkscape:connector-curvature="0" /></g></g></g></g><g
|
||||||
|
id="g40"
|
||||||
|
transform="translate(33.7522,12.4355)"><path
|
||||||
|
d="m 0,0 c -0.968,-0.581 -2.537,-0.581 -3.504,0 l -17.522,10.513 c -0.968,0.581 -0.968,1.522 0,2.103 l 17.522,10.513 c 0.967,0.581 2.536,0.581 3.504,0 L 17.522,12.616 c 0.968,-0.581 0.968,-1.522 0,-2.103 z"
|
||||||
|
style="fill:#c75c5c;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path42"
|
||||||
|
inkscape:connector-curvature="0" /></g><g
|
||||||
|
id="g44"><g
|
||||||
|
id="g46" /><g
|
||||||
|
id="g58"><g
|
||||||
|
clip-path="url(#clipPath50)"
|
||||||
|
id="g56"
|
||||||
|
style="opacity:0.19999701"><g
|
||||||
|
transform="translate(33.7522,18.4355)"
|
||||||
|
id="g54"><path
|
||||||
|
d="m 0,0 c -0.968,-0.581 -2.537,-0.581 -3.504,0 l -17.522,10.513 c -0.968,0.581 -0.968,1.522 0,2.103 l 17.522,10.513 c 0.967,0.581 2.536,0.581 3.504,0 L 17.522,12.616 c 0.968,-0.581 0.968,-1.522 0,-2.103 z"
|
||||||
|
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path52"
|
||||||
|
inkscape:connector-curvature="0" /></g></g></g></g><g
|
||||||
|
id="g60"
|
||||||
|
transform="translate(33.7522,20.4355)"><path
|
||||||
|
d="m 0,0 c -0.968,-0.581 -2.537,-0.581 -3.504,0 l -17.522,10.513 c -0.968,0.581 -0.968,1.522 0,2.103 l 17.522,10.513 c 0.967,0.581 2.536,0.581 3.504,0 L 17.522,12.616 c 0.968,-0.581 0.968,-1.522 0,-2.103 z"
|
||||||
|
style="fill:#76c2af;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path62"
|
||||||
|
inkscape:connector-curvature="0" /></g><g
|
||||||
|
id="g64"><g
|
||||||
|
id="g66" /><g
|
||||||
|
id="g78"><g
|
||||||
|
clip-path="url(#clipPath70)"
|
||||||
|
id="g76"
|
||||||
|
style="opacity:0.19999701"><g
|
||||||
|
transform="translate(33.7522,26.4355)"
|
||||||
|
id="g74"><path
|
||||||
|
d="m 0,0 c -0.968,-0.581 -2.537,-0.581 -3.504,0 l -17.522,10.513 c -0.968,0.581 -0.968,1.522 0,2.103 l 17.522,10.513 c 0.967,0.581 2.536,0.581 3.504,0 L 17.522,12.616 c 0.968,-0.581 0.968,-1.522 0,-2.103 z"
|
||||||
|
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path72"
|
||||||
|
inkscape:connector-curvature="0" /></g></g></g></g><g
|
||||||
|
id="g80"
|
||||||
|
transform="translate(33.7522,28.4355)"><path
|
||||||
|
d="m 0,0 c -0.968,-0.581 -2.537,-0.581 -3.504,0 l -17.522,10.513 c -0.968,0.581 -0.968,1.522 0,2.103 l 17.522,10.513 c 0.967,0.581 2.536,0.581 3.504,0 L 17.522,12.616 c 0.968,-0.581 0.968,-1.522 0,-2.103 z"
|
||||||
|
style="fill:#4f5d73;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path82"
|
||||||
|
inkscape:connector-curvature="0" /></g></g></g></g></svg>
|
After Width: | Height: | Size: 6.2 KiB |
Loading…
Reference in a new issue