Improved entity item menu with stack button.

This commit is contained in:
Christian P. MOMON 2021-07-04 12:35:11 +02:00
parent 4159387133
commit c7e4123477
23 changed files with 777 additions and 141 deletions

View file

@ -36,6 +36,31 @@ public class Organizations extends ArrayList<Organization>
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.
*
@ -60,24 +85,18 @@ public class Organizations extends ArrayList<Organization>
}
/**
* Filter by social network.
* Gets the service count.
*
* @param value
* the value
* @return the organizations
* @return the service count
*/
public Organizations filterBySocialNetwork(final SocialNetworks value)
public int getServiceCount()
{
Organizations result;
result = new Organizations();
int result;
result = 0;
for (Organization organization : this)
{
if (organization.hasSocialNetwork(value))
{
result.add(organization);
}
result += organization.getServiceCount();
}
//

View file

@ -71,7 +71,8 @@ public class FederationHeaderView
}
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("propertyCheckLink", "href", federation.getTechnicalName() + "-propertycheck.xhtml");
data.setAttribute("statsLink", "href", federation.getTechnicalName() + "-stats.xhtml");

View file

@ -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
{
String result;
try
{
TagDataManager data = new TagDataManager();

View file

@ -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;
}
}

View file

@ -21,7 +21,6 @@ package fr.devinsy.statoolinfos.htmlize;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.time.format.DateTimeFormatter;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
@ -30,21 +29,17 @@ import org.slf4j.LoggerFactory;
import fr.devinsy.catgenerator.core.CatGenerator;
import fr.devinsy.statoolinfos.HtmlizerContext;
import fr.devinsy.statoolinfos.core.Federation;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.core.StatoolInfosException;
import fr.devinsy.statoolinfos.crawl.CrawlCache;
import fr.devinsy.statoolinfos.htmlize.FederationMetricMenuView.PeriodMenu;
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.
*/
public class FederationPage
public class FederationPages
{
private static Logger logger = LoggerFactory.getLogger(FederationPage.class);
private static Logger logger = LoggerFactory.getLogger(FederationPages.class);
/**
* Builds the.
@ -68,9 +63,18 @@ public class FederationPage
FileUtils.copyFile(federation.getInputFile(), new File(htmlizeDirectory, federation.getTechnicalName() + ".properties"));
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);
//
FederationOrganizationsPage.build();
FederationServicesPage.build();
FederationCrawlJournalPage.build();
FederationPropertyCheckPage.build();
FederationPropertyAlertPage.buildAll();
FederationStatsPage.build();
FederationUptimePage.build();
//
logger.info("Htmlize federation metric pages: {}.", federation.getName());
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.
*

View file

@ -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;
}
}

View file

@ -162,12 +162,7 @@ public class Htmlizer
CategoryPage.buildAll();
EditoPage.build();
ExportsPage.build();
FederationPage.build();
FederationCrawlJournalPage.build();
FederationPropertyCheckPage.build();
FederationPropertyAlertPage.buildAll();
FederationStatsPage.build();
FederationUptimePage.build();
FederationPages.build();
OrganizationPage.buildAll();
OrganizationCrawlJournalPage.buildAll();
OrganizationUptimePage.buildAll();

View file

@ -96,7 +96,8 @@ public class OrganizationHeaderView
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("rawCheckLink", "href", organization.getTechnicalName() + "-propertycheck.xhtml");

View file

@ -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;
}
}

View file

@ -69,6 +69,7 @@ public class OrganizationPage
logger.info("Htmlize organization page: {}.", organization.getName());
String page = OrganizationPage.htmlize(organization);
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();

View file

@ -84,6 +84,9 @@ public class ServiceHeaderView
data.setAttribute("serviceStatusImg", "src", "status-" + service.getStatus().toString().toLowerCase() + ".png");
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("rawCheckLink", "href", service.getLocalFileBaseName() + "-propertycheck.xhtml");

View file

@ -77,6 +77,8 @@ public class ServicePage
String page = ServicePage.htmlize(service);
FileUtils.write(new File(htmlizeDirectory, service.getLocalFileBaseName() + ".xhtml"), page, StandardCharsets.UTF_8);
ServiceServicesPage.build(service);
//
logger.info("Htmlize service metric pages: {}.", service.getName());
for (ViewMenu view : ViewMenu.values())

View 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;
}
}

View file

@ -12,51 +12,6 @@
</head>
<body>
<div id="federationHeaderView" />
<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;"/>
&#160;<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>
<div id="organizationListView" />
</body>
</html>

View file

@ -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="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="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="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>

View 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="organizationListView" />
</body>
</html>

View 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>

View file

@ -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="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="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="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>

View file

@ -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;"/>
&#160;<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>

View file

@ -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="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="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="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>

View 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>

View file

@ -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

View 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