merge WORK_APE on this branch

WORK-KMO
Antoine PEREDERII 1 year ago
commit 4bd6617ddf

@ -1,6 +1,6 @@
<div align = center>
<h1>HeartTrack</h1>
<h1>HeartTrack - Admin</h1>
</div>
@ -9,17 +9,15 @@
---
&nbsp; ![PHP](https://img.shields.io/badge/Blazor-56478C?style=for-the-badge&logo=Blazor&logoColor=FFFFFF&labelColor=56478C)
&nbsp; ![Blazor](https://img.shields.io/badge/Blazor-56478C?style=for-the-badge&logo=Blazor&logoColor=FFFFFF&labelColor=56478C)
&nbsp; ![CSS](https://img.shields.io/badge/CSS-000?style=for-the-badge&logo=css3&logoColor=white&color=darkblue)
&nbsp; ![DOCKER](https://img.shields.io/badge/.NET-56478C?style=for-the-badge&logo=.NET&logoColor=FFFFFF&labelColor=56478C)
&nbsp; ![PostgreSQL](https://img.shields.io/badge/Postgresql-000?style=for-the-badge&logo=postgresql&logoColor=white&color=blue)
&nbsp; ![JAVASCRIPT](https://img.shields.io/badge/JavaScript-000?style=for-the-badge&logo=javascript&logoColor=white&color=yellow)
&nbsp; ![.NET](https://img.shields.io/badge/.NET-56478C?style=for-the-badge&logo=.NET&logoColor=FFFFFF&labelColor=56478C)
</br>
</div>
# Table des matières
[Présentation](#présentation) | [Répartition du Git](#répartition-du-git) | [Documentation](#documentation) | [Prerequisites](#prerequisites) | [Getting Started](#getting-started) | [Features](#features) | [Ce que nous avons fait](#ce-que-nous-avons-fait) | [Fabriqué avec](#fabriqué-avec) | [Contributeurs](#contributeurs) | [Comment contribuer](#comment-contribuer) | [License](#license) | [Remerciements](#remerciements)
[Présentation](#présentation) | [Fonctionnalités principales](#fonctionnalités-principales) | [Répartition du Git](#répartition-du-git) | [Prerequis](#prérequis) | [Fabriqué avec](#fabriqué-avec) | [Contributeurs](#contributeurs) | [Comment contribuer](#comment-contribuer) | [License](#license) | [Remerciements](#remerciements)
@ -33,7 +31,17 @@ HeartTrack est une application web PHP et mobile Android destinée aux sportifs
### Récapitulatif du Projet
Le projet HeartTrack, avec son application HeartTrack, vise à offrir une solution Open Source d'analyse des données de fréquence cardiaque, en mettant l'accent sur les besoins des sportifs et des coachs. L'application sera capable de traiter et d'interpréter les données de manière intelligente, fournissant ainsi des informations précieuses pour optimiser les performances sportives et la santé.
Ce dépôt contient une application Blazor conçue pour faciliter l'administration des utilisateurs au sein de votre application. L'application utilise le framework Blazor, qui permet le développement d'applications web interactives avec .NET.
## Fonctionnalités principales
1. **Gestion des Utilisateurs**: Ajoutez, modifiez et supprimez des utilisateurs de manière simple et efficace.
2. **Rôles Utilisateurs**: Attribuez des rôles à chaque utilisateur pour définir leurs permissions et accès.
3. **Tableau de Bord Convivial**: Interface utilisateur intuitive pour une expérience d'administration agréable.
4. **Sécurité Intégrée**: Utilisation des fonctionnalités de sécurité de Blazor pour protéger les données sensibles.
## Répartition du Git
@ -42,28 +50,55 @@ Le projet HeartTrack, avec son application HeartTrack, vise à offrir une soluti
[**Documents**](Documents/README_DOCUMENTS.md) : **Documentation de l'application et diagrammes**
<!-- [**Wiki**](https://codefirst.iut.uca.fr/git/HeartDev/Web/wiki/PHP) : **Wiki de notre projet (attendus PHP)** -->
---
Le projet HeartTrack utilise un modèle de flux de travail Git (Gitflow) pour organiser le développement. Voici une brève explication des principales branches :
- **branche prod** : Cette branche contient la version de production stable de l'application. Les modifications sur cette branche sont généralement destinées à des mises en production.
- **branche WORK-NAME** : Cette branche contient la version de travail des différents membres de l'équipe. Les modifications sur cette branche sont bien souvent réalisé par le nom du membre en question.
- **branche master** : La branche master est similaire à la branche de production, mais elle peut contenir des fonctionnalités en cours de développement qui sont presque prêtes pour une mise en production.
- **branche master** : La branche master est similaire à la branche de production, mais elle contient la version stable et final de notre application.
- **branche test** : Cette branche est utilisée pour permettre différents tests sur l'application.
### API PHP
- **branche issue** : Pour chaque problème (issue) que vous résolvez, vous devez créer une branche portant le nom de l'issue, par exemple, "issue_#32_nom" où 32 est le numéro de l'issue et nom est une description courte de l'issue. Une fois l'issue résolue, assurez-vous de mettre à jour le changelog et de créer une merge request.
- **branche démo** : Cette branche est utilisée pour déployer une version démo de l'application. Elle est mise à jour avec les dernières fonctionnalités en développement.
L'application Blazor utilise une API en PHP pour récupérer les données depuis la base de données.
Pour l'utiliser, vous devez faire tourner notre projet PHP disponible [ici](https://codefirst.iut.uca.fr/git/HeartDev/Web/src/branch/API_tests) sur votre machine locale. Pour ensuite changer le type de skockage par `API` dans le fichier `monfichier.cs` dans le dossier `Data` de l'application Blazor.
## Documentation
Documentation et informations à propos de `HearthTrack` disponible [ici]()
### Prérequis
* [Visual Studio Code](https://code.visualstudio.com/) - Exemple d'IDE gratuit
* [Visual Studio](https://visualstudio.microsoft.com/fr/vs/) - IDE
* [Git](https://git-scm.com/) - Gestion de version
* [PostgreSQL](https://www.postgresql.org/) - Base de Données
* [.NET SDK](https://dotnet.microsoft.com/download) - Platform open-source pour le développement d'applications
## Installation et Exécution
1. Clonez ce dépôt sur votre machine locale :
```bash
git clone https://github.com/votre-utilisateur/Blazor-User-Admin.git
```
2. Accédez au répertoire du projet :
```bash
cd Blazor-User-Admin
```
3. Lancez l'application avec la commande :
```bash
dotnet run
```
4. Ouvrez votre navigateur et accédez à [https://localhost:5001](https://localhost:5001) pour voir l'application en action.
Pour des raison de manque de la partie php, vous ne pourrez utiliser l'application qu'en localStorage. Il est cependant possible de tester l'aaplication avec la partie API en PHP en faisant tourner en local le projet php disponible [ici](https://codefirst.iut.uca.fr/git/HeartDev/Web/src/branch/API_tests) et en changant le type de stockage dans le fichier `monfichier.cs` dans le dossier `Data` de l'application Blazor.
Comme ceci :
```csharp
public class MonFichier
{
public static string TypeStockage = "API";
}
```
### Fabriqué avec
* [Visual Studio](https://visualstudio.microsoft.com/fr/vs/) - IDE
@ -73,7 +108,6 @@ Documentation et informations à propos de `HearthTrack` disponible [ici]()
* [Blazor](https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor) - Framework Web
* [C#](https://docs.microsoft.com/fr-fr/dotnet/csharp/) - Langage
* [HTML 5, CSS 3](https://developer.mozilla.org/fr/docs/Web/HTML) - Langages
* [Doxygen](https://codefirst.iut.uca.fr/sonar/) - Documentation
## Contributeurs
* [Antoine PEREDERII](https://codefirst.iut.uca.fr/git/antoine.perederii)
@ -83,7 +117,7 @@ Documentation et informations à propos de `HearthTrack` disponible [ici]()
* [David D'HALMEIDA](https://codefirst.iut.uca.fr/git/david.d_almeida)
## Comment contribuer
1. Forkez le projet (<https://codefirst.iut.uca.fr/git/HeartDev/Web>)
1. Forkez le projet (<https://codefirst.iut.uca.fr/git/HeartDev/Admin>)
2. Créez votre branche (`git checkout -b feature/featureName`)
3. commit vos changements (`git commit -am 'Add some feature'`)
4. Push sur la branche (`git push origin feature/featureName`)

@ -1,13 +0,0 @@
namespace HeartTrack.Data;
public class WeatherForecast
{
public DateTime Date { get; set; }
public int TemperatureC { get; set; }
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
public string? Summary { get; set; }
}

@ -1,20 +0,0 @@
namespace HeartTrack.Data;
public class WeatherForecastService
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
public Task<WeatherForecast[]> GetForecastAsync(DateTime startDate)
{
return Task.FromResult(Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = startDate.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
}).ToArray());
}
}

@ -16,11 +16,12 @@
</ItemGroup>
<ItemGroup>
<Folder Include="Components\" />
<Folder Include="Services\ActivityDataService\" />
<Folder Include="Models\Activity\" />
</ItemGroup>
<ItemGroup>
<None Remove="Services\ActivityDataService\" />
<None Remove="Models\Activity\" />
</ItemGroup>
</Project>

@ -0,0 +1,39 @@
namespace HeartTrack.Models
{
public class Activity
{
public int IdActivity { get; set; }
public string Type { get; set; }
public DateOnly Date { get; set; }
public TimeOnly StartTime { get; set; }
public DateTime EndTime { get; set; }
public int EffortRessenti { get; set; }
public float Variability { get; set; }
public float Variance { get; set; }
public float StandardDeviation { get; set; }
public float Average { get; set; }
public int Maximum { get; set; }
public int Minimum { get; set; }
public float AvrTemperature { get; set; }
public bool HasAutoPause { get; set; }
}
}
//[
// '{{repeat(15, 30)}}',
// {
// idActivity: '{{index(1)}}',
// type: '{{random("Type1", "Type2", "Type3")}}',
// date: '{{date(new Date(2014, 0, 1), new Date(), "YYYY-MM-dd")}}',
// startTime: '{{date(new Date(2014, 0, 1), new Date(), "HH:mm:ss")}}',
// endTime: '{{date(new Date(2014, 0, 1), new Date(), "HH:mm:ss")}}',
// effortRessenti: '{{integer(1, 5)}}',
// variability: '{{floating(1, 100)}}',
// variance: '{{floating(1, 100)}}',
// standardDeviation: '{{floating(1, 100)}}',
// average: '{{floating(1, 100)}}',
// maximum: '{{integer(80, 200)}}',
// minimum: '{{integer(30, 100)}}',
// avrTemperature: '{{floating(1, 100)}}',
// hasAutoPause: '{{bool()}}'
// }
//]

@ -1,10 +1,33 @@
@page "/activities"
@using HeartTrack.Models
<PageTitle>Activities</PageTitle>
<h1>Activity list</h1>
<h1>@Localizer["Title"]</h1>
This is the activity list of users.
<SurveyPrompt Title="How is Blazor working for you?" />
<p>
@Localizer["Description"]
</p>
<DataGrid TItem="Activity"
Data="@activities"
ReadData="@OnReadData"
TotalItems="@totalActivity"
PageSize="10"
ShowPager
Responsive>
<DataGridColumn TItem="Activity" Field="@nameof(Activity.IdActivity)" Caption="Id" />
<DataGridColumn TItem="Activity" Field="@nameof(Activity.Type)" Caption="Type" />
<DataGridColumn TItem="Activity" Field="@nameof(Activity.Date)" Caption="Date" />
<DataGridColumn TItem="Activity" Field="@nameof(Activity.StartTime)" Caption="@Localizer["StartTime"]" />
<DataGridColumn TItem="Activity" Field="@nameof(Activity.EndTime)" Caption="@Localizer["EndTime"]" />
<DataGridColumn TItem="Activity" Field="@nameof(Activity.EffortRessenti)" Caption="@Localizer["EffortRessenti"]" />
<DataGridColumn TItem="Activity" Field="@nameof(Activity.Variability)" Caption="@Localizer["Variability"]" />
<DataGridColumn TItem="Activity" Field="@nameof(Activity.Variance)" Caption="@Localizer["Variance"]" />
<DataGridColumn TItem="Activity" Field="@nameof(Activity.StandardDeviation)" Caption="@Localizer["StandardDeviation"]" />
<DataGridColumn TItem="Activity" Field="@nameof(Activity.Average)" Caption="@Localizer["Average"]" />
<DataGridColumn TItem="Activity" Field="@nameof(Activity.Maximum)" Caption="Maximum" />
<DataGridColumn TItem="Activity" Field="@nameof(Activity.Minimum)" Caption="Minimum" />
<DataGridColumn TItem="Activity" Field="@nameof(Activity.AvrTemperature)" Caption="@Localizer["AvrTemperature"]" />
<DataGridColumn TItem="Activity" Field="@nameof(Activity.HasAutoPause)" Caption="@Localizer["HasAutoPause"]" />
</DataGrid>

@ -0,0 +1,55 @@
using System;
using System.Net.Http;
using Blazorise.DataGrid;
using HeartTrack.Models;
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Localization;
namespace HeartTrack.Pages
{
public partial class Activities
{
private List<Activity> activities;
private int totalActivity;
[Inject]
public HttpClient Http { get; set; }
[Inject]
public NavigationManager NavigationManager { get; set; }
[Inject]
public IStringLocalizer<Activities> Localizer { get; set; }
private async Task OnReadData(DataGridReadDataEventArgs<Activity> e)
{
if (e.CancellationToken.IsCancellationRequested)
{
return;
}
// When you use a real API, we use this follow code
//var response = await Http.GetJsonAsync<Item[]>( $"http://my-api/api/data?page={e.Page}&pageSize={e.PageSize}" );
//var response = await Http.GetStringAsync("http://localhost:8080/api");
//var activityList = JsonConvert.DeserializeObject<List<Activity>>(response);
var response = (await Http.GetFromJsonAsync<Activity[]>("http://localhost:8080/api")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList();
//await Http.GetFromJsonAsync<Activity[]>("http://localhost:8080/api");
//Console.WriteLine(response);
//var response = (await Http.GetFromJsonAsync<Activity[]>($"{NavigationManager.BaseUri}fake-data-activity.json")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList();
if (!e.CancellationToken.IsCancellationRequested)
{
totalActivity = (await Http.GetFromJsonAsync<List<Activity>>("http://localhost:8080/api")).Count;
//(await Http.GetFromJsonAsync<List<Activity>>($"{NavigationManager.BaseUri}fake-data-activity.json")).Count;
activities = new List<Activity>(response); // an actual data for the current page
//Console.WriteLine(totalActivity);
}
}
}
}

@ -1,6 +1,5 @@
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
using HeartTrack.Data;
using Blazorise;
using Blazorise.Bootstrap;
using Blazorise.Icons.FontAwesome;
@ -16,7 +15,6 @@ var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddSingleton<WeatherForecastService>();
builder.Services.AddHttpClient();

@ -0,0 +1,150 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Title" xml:space="preserve">
<value>List d'activités</value>
</data>
<data name="Description" xml:space="preserve">
<value>This is t.</value>
</data>
<data name="StartTime" xml:space="preserve">
<value>helle</value>
</data>
<data name="EndTime" xml:space="preserve">
<value>Last e</value>
</data>
<data name="EffortRessenti" xml:space="preserve">
<value>Efforressenti</value>
</data>
<data name="Variability" xml:space="preserve">
<value>Variablity</value>
</data>
<data name="StandardDeviation" xml:space="preserve">
<value>Standard deviation</value>
</data>
<data name="Average" xml:space="preserve">
<value>Average</value>
</data>
<data name="AvrTemperature" xml:space="preserve">
<value>Average temperature</value>
</data>
<data name="HasAutoPause" xml:space="preserve">
<value>Has auto pause</value>
</data>
</root>

@ -0,0 +1,150 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Title" xml:space="preserve">
<value>Activities List</value>
</data>
<data name="Description" xml:space="preserve">
<value>This is the activity list of users.</value>
</data>
<data name="StartTime" xml:space="preserve">
<value>First name</value>
</data>
<data name="EndTime" xml:space="preserve">
<value>Last name</value>
</data>
<data name="EffortRessenti" xml:space="preserve">
<value>Effort ressenti</value>
</data>
<data name="Variability" xml:space="preserve">
<value>Variability</value>
</data>
<data name="StandardDeviation" xml:space="preserve">
<value>Standard deviation</value>
</data>
<data name="Average" xml:space="preserve">
<value>Average</value>
</data>
<data name="AvrTemperature" xml:space="preserve">
<value>Average temperature</value>
</data>
<data name="HasAutoPause" xml:space="preserve">
<value>Has auto pause</value>
</data>
</root>

@ -0,0 +1,418 @@
[
{
"idActivity": 1,
"type": "Type2",
"date": "2014-01-16",
"startTime": "2022-01-18",
"endTime": "1990-12-23",
"effortRessenti": 5,
"variability": 31.9135,
"variance": 47.9027,
"standardDeviation": 51.4366,
"average": 77.616,
"maximum": 156,
"minimum": 99,
"avrTemperature": 47.9859,
"hasAutoPause": false
},
{
"idActivity": 2,
"type": "Type1",
"date": "2018-11-27",
"startTime": "2008-09-06",
"endTime": "1971-04-16",
"effortRessenti": 2,
"variability": 63.2869,
"variance": 4.3233,
"standardDeviation": 36.6456,
"average": 14.0372,
"maximum": 182,
"minimum": 57,
"avrTemperature": 47.8921,
"hasAutoPause": true
},
{
"idActivity": 3,
"type": "Type2",
"date": "2018-01-24",
"startTime": "2009-03-24",
"endTime": "1941-05-20",
"effortRessenti": 4,
"variability": 66.0437,
"variance": 40.1499,
"standardDeviation": 85.1707,
"average": 52.538,
"maximum": 114,
"minimum": 41,
"avrTemperature": 48.6091,
"hasAutoPause": true
},
{
"idActivity": 4,
"type": "Type3",
"date": "2014-07-05",
"startTime": "1954-10-02",
"endTime": "2019-11-13",
"effortRessenti": 3,
"variability": 72.5219,
"variance": 88.7179,
"standardDeviation": 56.3285,
"average": 99.2423,
"maximum": 101,
"minimum": 35,
"avrTemperature": 99.5707,
"hasAutoPause": false
},
{
"idActivity": 5,
"type": "Type1",
"date": "2020-07-27",
"startTime": "1970-07-09",
"endTime": "2014-01-07",
"effortRessenti": 1,
"variability": 91.2868,
"variance": 35.2977,
"standardDeviation": 89.1283,
"average": 24.5516,
"maximum": 185,
"minimum": 55,
"avrTemperature": 61.2443,
"hasAutoPause": false
},
{
"idActivity": 6,
"type": "Type3",
"date": "2022-01-21",
"startTime": "1988-07-11",
"endTime": "1947-10-08",
"effortRessenti": 2,
"variability": 39.2403,
"variance": 68.3035,
"standardDeviation": 48.4541,
"average": 15.0519,
"maximum": 87,
"minimum": 61,
"avrTemperature": 24.96,
"hasAutoPause": true
},
{
"idActivity": 7,
"type": "Type2",
"date": "2020-07-04",
"startTime": "1966-07-04",
"endTime": "1953-11-28",
"effortRessenti": 3,
"variability": 77.9106,
"variance": 50.2753,
"standardDeviation": 27.6544,
"average": 73.1399,
"maximum": 178,
"minimum": 80,
"avrTemperature": 70.0154,
"hasAutoPause": true
},
{
"idActivity": 8,
"type": "Type3",
"date": "2021-11-01",
"startTime": "1966-06-30",
"endTime": "1966-10-08",
"effortRessenti": 5,
"variability": 12.8896,
"variance": 91.5997,
"standardDeviation": 28.1367,
"average": 63.2516,
"maximum": 99,
"minimum": 64,
"avrTemperature": 47.2724,
"hasAutoPause": false
},
{
"idActivity": 9,
"type": "Type1",
"date": "2020-10-18",
"startTime": "1993-02-09",
"endTime": "1922-01-12",
"effortRessenti": 2,
"variability": 75.0622,
"variance": 28.5926,
"standardDeviation": 84.1056,
"average": 82.6735,
"maximum": 184,
"minimum": 58,
"avrTemperature": 2.5165,
"hasAutoPause": true
},
{
"idActivity": 10,
"type": "Type3",
"date": "2019-07-21",
"startTime": "1978-01-14",
"endTime": "1921-10-28",
"effortRessenti": 2,
"variability": 38.4167,
"variance": 8.9565,
"standardDeviation": 79.1064,
"average": 71.7045,
"maximum": 189,
"minimum": 41,
"avrTemperature": 11.3153,
"hasAutoPause": false
},
{
"idActivity": 11,
"type": "Type2",
"date": "2015-01-10",
"startTime": "1982-05-10",
"endTime": "2000-06-20",
"effortRessenti": 2,
"variability": 7.298,
"variance": 84.2038,
"standardDeviation": 59.7613,
"average": 24.1556,
"maximum": 84,
"minimum": 40,
"avrTemperature": 79.2884,
"hasAutoPause": true
},
{
"idActivity": 12,
"type": "Type1",
"date": "2014-12-15",
"startTime": "2003-07-20",
"endTime": "1957-10-10",
"effortRessenti": 4,
"variability": 6.1594,
"variance": 39.0998,
"standardDeviation": 87.1683,
"average": 99.7483,
"maximum": 84,
"minimum": 36,
"avrTemperature": 90.0641,
"hasAutoPause": true
},
{
"idActivity": 13,
"type": "Type3",
"date": "2019-07-09",
"startTime": "1977-03-04",
"endTime": "1960-01-01",
"effortRessenti": 4,
"variability": 44.0535,
"variance": 12.5373,
"standardDeviation": 58.7271,
"average": 19.4843,
"maximum": 193,
"minimum": 76,
"avrTemperature": 22.6955,
"hasAutoPause": true
},
{
"idActivity": 14,
"type": "Type2",
"date": "2023-12-11",
"startTime": "1954-06-28",
"endTime": "1993-06-24",
"effortRessenti": 2,
"variability": 10.3723,
"variance": 54.257,
"standardDeviation": 69.0052,
"average": 97.0453,
"maximum": 181,
"minimum": 72,
"avrTemperature": 81.2482,
"hasAutoPause": false
},
{
"idActivity": 15,
"type": "Type1",
"date": "2018-07-02",
"startTime": "2024-01-03",
"endTime": "1964-08-30",
"effortRessenti": 2,
"variability": 48.2932,
"variance": 67.7662,
"standardDeviation": 94.5576,
"average": 98.3297,
"maximum": 177,
"minimum": 38,
"avrTemperature": 91.9669,
"hasAutoPause": true
},
{
"idActivity": 16,
"type": "Type1",
"date": "2018-07-06",
"startTime": "2012-12-28",
"endTime": "2014-04-26",
"effortRessenti": 1,
"variability": 26.7247,
"variance": 8.6121,
"standardDeviation": 32.8475,
"average": 36.0507,
"maximum": 135,
"minimum": 95,
"avrTemperature": 64.4691,
"hasAutoPause": true
},
{
"idActivity": 17,
"type": "Type2",
"date": "2022-07-08",
"startTime": "1934-08-04",
"endTime": "1948-01-16",
"effortRessenti": 3,
"variability": 24.5678,
"variance": 89.474,
"standardDeviation": 6.4851,
"average": 80.388,
"maximum": 198,
"minimum": 65,
"avrTemperature": 73.0159,
"hasAutoPause": false
},
{
"idActivity": 18,
"type": "Type3",
"date": "2020-08-08",
"startTime": "1943-01-04",
"endTime": "1984-11-01",
"effortRessenti": 4,
"variability": 15.8206,
"variance": 10.1982,
"standardDeviation": 89.2815,
"average": 60.1575,
"maximum": 177,
"minimum": 55,
"avrTemperature": 95.3616,
"hasAutoPause": false
},
{
"idActivity": 19,
"type": "Type1",
"date": "2017-01-31",
"startTime": "1995-01-14",
"endTime": "1967-07-28",
"effortRessenti": 2,
"variability": 10.3217,
"variance": 25.3434,
"standardDeviation": 64.5326,
"average": 6.7419,
"maximum": 83,
"minimum": 72,
"avrTemperature": 19.6569,
"hasAutoPause": false
},
{
"idActivity": 20,
"type": "Type3",
"date": "2017-05-29",
"startTime": "1959-03-03",
"endTime": "1943-08-27",
"effortRessenti": 2,
"variability": 12.9503,
"variance": 90.5546,
"standardDeviation": 57.812,
"average": 44.4189,
"maximum": 144,
"minimum": 79,
"avrTemperature": 95.1186,
"hasAutoPause": false
},
{
"idActivity": 21,
"type": "Type1",
"date": "2015-10-03",
"startTime": "1946-05-27",
"endTime": "1934-06-04",
"effortRessenti": 3,
"variability": 59.5777,
"variance": 61.9804,
"standardDeviation": 46.6558,
"average": 11.234,
"maximum": 144,
"minimum": 73,
"avrTemperature": 72.5805,
"hasAutoPause": false
},
{
"idActivity": 22,
"type": "Type1",
"date": "2015-04-05",
"startTime": "1948-02-07",
"endTime": "1925-04-24",
"effortRessenti": 3,
"variability": 4.6783,
"variance": 66.7362,
"standardDeviation": 79.8471,
"average": 52.3693,
"maximum": 141,
"minimum": 85,
"avrTemperature": 48.7024,
"hasAutoPause": false
},
{
"idActivity": 23,
"type": "Type1",
"date": "2023-06-05",
"startTime": "1920-11-12",
"endTime": "1926-06-26",
"effortRessenti": 5,
"variability": 67.8302,
"variance": 33.2865,
"standardDeviation": 4.516,
"average": 17.2584,
"maximum": 150,
"minimum": 47,
"avrTemperature": 52.2994,
"hasAutoPause": true
},
{
"idActivity": 24,
"type": "Type2",
"date": "2014-03-03",
"startTime": "1988-05-05",
"endTime": "1944-06-29",
"effortRessenti": 1,
"variability": 12.7751,
"variance": 92.9296,
"standardDeviation": 76.843,
"average": 32.2267,
"maximum": 114,
"minimum": 77,
"avrTemperature": 80.627,
"hasAutoPause": true
},
{
"idActivity": 25,
"type": "Type3",
"date": "2016-07-01",
"startTime": "1927-11-09",
"endTime": "2011-12-16",
"effortRessenti": 3,
"variability": 45.0597,
"variance": 37.5072,
"standardDeviation": 6.6945,
"average": 70.5156,
"maximum": 81,
"minimum": 32,
"avrTemperature": 57.5543,
"hasAutoPause": false
},
{
"idActivity": 26,
"type": "Type3",
"date": "2020-06-25",
"startTime": "1940-12-10",
"endTime": "1944-05-02",
"effortRessenti": 2,
"variability": 20.6298,
"variance": 54.2174,
"standardDeviation": 56.4106,
"average": 4.487,
"maximum": 112,
"minimum": 98,
"avrTemperature": 80.8548,
"hasAutoPause": false
}
]
Loading…
Cancel
Save