14 Commits

Author SHA1 Message Date
d21655c535 fix max's scroll issue
All checks were successful
Build and test backend / Build-backend (pull_request) Successful in 1m24s
Build and test FrontEnd / Build-frontend (pull_request) Successful in 30s
2024-04-22 10:25:07 +02:00
490bf403f0 Merge pull request 'Add the regNo in profile and aboutStudent' (#178) from regNoFix into master
All checks were successful
Build and test backend / Build-backend (push) Successful in 1m25s
deploy to production / deploy-frontend (push) Successful in 33s
deploy to production / deploy-backend (push) Successful in 18s
Build and test FrontEnd / Build-frontend (push) Successful in 29s
Reviewed-on: #178
2024-04-22 09:52:56 +02:00
c61a092809 Add the regNo in profile and aboutStudent
All checks were successful
Build and test backend / Build-backend (pull_request) Successful in 1m23s
Build and test FrontEnd / Build-frontend (pull_request) Successful in 32s
2024-04-22 09:39:48 +02:00
2cffe28720 show regno on options
All checks were successful
Build and test backend / Build-backend (push) Successful in 1m23s
deploy to production / deploy-frontend (push) Successful in 33s
deploy to production / deploy-backend (push) Successful in 18s
Build and test FrontEnd / Build-frontend (push) Successful in 30s
2024-04-22 09:22:19 +02:00
060526c20d timer on notifications
All checks were successful
Build and test backend / Build-backend (push) Successful in 1m30s
deploy to production / deploy-frontend (push) Successful in 32s
deploy to production / deploy-backend (push) Successful in 18s
Build and test FrontEnd / Build-frontend (push) Successful in 30s
2024-04-22 09:09:53 +02:00
af8bc8872d Merge pull request 'fix with the stats and translations' (#177) from Maxime/Clyde:master into master
All checks were successful
Build and test backend / Build-backend (push) Successful in 1m29s
deploy to production / deploy-frontend (push) Successful in 34s
deploy to production / deploy-backend (push) Successful in 58s
Build and test FrontEnd / Build-frontend (push) Successful in 31s
Reviewed-on: #177
2024-04-22 02:28:41 +02:00
12ff43e970 fix with the stats and translations
All checks were successful
Build and test backend / Build-backend (pull_request) Successful in 1m26s
Build and test FrontEnd / Build-frontend (pull_request) Successful in 33s
2024-04-22 02:27:21 +02:00
82cf7cbfaf removing apps spacing
All checks were successful
Build and test backend / Build-backend (push) Successful in 1m28s
deploy to production / deploy-frontend (push) Successful in 32s
deploy to production / deploy-backend (push) Successful in 18s
Build and test FrontEnd / Build-frontend (push) Successful in 29s
2024-04-22 01:46:46 +02:00
3b63896439 Merge pull request 'tonitch/front/bar' (#176) from tonitch/front/bar into master
All checks were successful
Build and test backend / Build-backend (push) Successful in 1m25s
deploy to production / deploy-frontend (push) Successful in 33s
deploy to production / deploy-backend (push) Successful in 18s
Build and test FrontEnd / Build-frontend (push) Successful in 31s
Reviewed-on: #176
2024-04-22 01:39:48 +02:00
bd3b03dfea Merge pull request 'ok last one I promise' (#175) from prank into master
All checks were successful
Build and test backend / Build-backend (push) Successful in 1m28s
deploy to production / deploy-frontend (push) Successful in 34s
deploy to production / deploy-backend (push) Successful in 19s
Build and test FrontEnd / Build-frontend (push) Successful in 30s
Reviewed-on: #175
2024-04-22 00:55:40 +02:00
b38b1ab6b8 Merge branch 'master' into prank
All checks were successful
Build and test backend / Build-backend (pull_request) Successful in 1m26s
Build and test FrontEnd / Build-frontend (pull_request) Successful in 32s
2024-04-22 00:51:58 +02:00
6e0a9a46e5 ok last one I promise
All checks were successful
Build and test backend / Build-backend (pull_request) Successful in 1m25s
Build and test FrontEnd / Build-frontend (pull_request) Successful in 31s
2024-04-22 00:50:44 +02:00
043f5c87d2 fixup! fix bar height
All checks were successful
Build and test backend / Build-backend (pull_request) Successful in 1m26s
Build and test FrontEnd / Build-frontend (pull_request) Successful in 31s
2024-04-22 00:12:59 +02:00
a03983d625 fix bar height 2024-04-22 00:09:39 +02:00
11 changed files with 45 additions and 33 deletions

View File

@ -81,7 +81,7 @@ public class MockController {
// user part // user part
User herobrine = new User("brine","hero","admin@admin.com","behind","ShadowsLand",new Date(0), null,Role.Admin,"admin"); User herobrine = new User("brine","hero","admin@admin.com","behind","ShadowsLand",new Date(0), null,Role.Admin,"admin");
User joe = new User("Mama","Joe","student@student.com","roundabout","England",new Date(0), null,Role.Student,"student"); User joe = new User("Piplo","Joe","student@student.com","roundabout","England",new Date(0), null,Role.Student,"student");
User meh = new User("Polo","Marco","secretary@secretary.com","a Box","Monaco",new Date(0), null,Role.Secretary,"secretary"); User meh = new User("Polo","Marco","secretary@secretary.com","a Box","Monaco",new Date(0), null,Role.Secretary,"secretary");
User joke = new User("Gaillard","Corentin","teacher@teacher.com","lab","faculty",new Date(0), null,Role.Teacher,"teacher"); User joke = new User("Gaillard","Corentin","teacher@teacher.com","lab","faculty",new Date(0), null,Role.Teacher,"teacher");
User jojo = new User("Bridoux","Justin","teacher2@teacher2.com","lab","faculty",new Date(0), null,Role.Teacher,"teacher"); User jojo = new User("Bridoux","Justin","teacher2@teacher2.com","lab","faculty",new Date(0), null,Role.Teacher,"teacher");
@ -168,13 +168,13 @@ public class MockController {
Research jojoResearch = new Research("Graphs : Advanced Search Algorithms", output, new Date(0), Research jojoResearch = new Research("Graphs : Advanced Search Algorithms", output, new Date(0),
PaperType.Article, "test.pdf", null, "english", PaperType.Article, "test.pdf", null, "english",
Access.OpenSource, "IT", "This Article's title speaks for itself \n We'll discuss about advanced Graph search Algorithms",coAuthor); Access.OpenSource, "IT", "This Article's title speaks for itself \n We'll discuss about advanced Graph search Algorithms",coAuthor);
Research restrictedResearch = new Research("just another Name", output, new Date(1111111111), Research restrictedResearch = new Research("the great Constantinople war", output, new Date(1111111111),
PaperType.Article, "restricted", null, "english", PaperType.Article, "restricted", null, "Portuguese",
Access.Restricted, "Restricted", "This Article's title speaks for itself\n We'll discuss about advanced Graph search Algorithms", new HashSet<>()); Access.Restricted, "history", "this is a summary", new HashSet<>());
Research privateResearch = new Research("the great Potato War", output, new Date(), Research privateResearch = new Research("the great Potato War", output, new Date(),
PaperType.Article, "private", null, "english", PaperType.Article, "private", null, "english",
Access.Private, "private", "This Article's title speaks for itself\n We'll discuss about advanced Graph search Algorithms",null); Access.Private, "agriculture", "my life is potato",null);
researchesService.saveResearch(restrictedResearch); researchesService.saveResearch(restrictedResearch);

View File

@ -284,8 +284,9 @@ rereg=Reregister in the next year of one of my cursus
reregsup=Register in a supplementary cursus reregsup=Register in a supplementary cursus
chcur=Change from a cursus to another chcur=Change from a cursus to another
iwouldlike=I would like to : iwouldlike=I would like to :
newcurr=New curriculum newcurr=Actual curriculums
cursusprereq=The cursus you selected has some prerequisites ensure that your external curriculum data is updated in your profile cursusprereq=The cursus you selected has some prerequisites ensure that your external curriculum data is updated in your profile
imposecurriculum=Impose a curriculum imposecurriculum=Impose a curriculum
impose=Impose impose=Impose
gotimposed=The selected curriculum has been imposed gotimposed=The selected curriculum has been imposed
DifferentLanguage=Different Languages

View File

@ -282,8 +282,9 @@ rereg=Me réinscrire dans l'année supérieure
reregsup=M'inscrire dans un cursus supplémentaire reregsup=M'inscrire dans un cursus supplémentaire
chcur=Changer d'un cursus vers un autre chcur=Changer d'un cursus vers un autre
iwouldlike=Je voudrais : iwouldlike=Je voudrais :
newcurr=Nouveau cursus newcurr=Cursus actuels
cursusprereq=Le cursus que vous avez selectionné a des prérequis assurez vous que votre dossier de parcours est a jour dans votre profil cursusprereq=Le cursus que vous avez selectionné a des prérequis assurez vous que votre dossier de parcours est a jour dans votre profil
imposecurriculum=Imposer un cursusgotimposed imposecurriculum=Imposer un cursusgotimposed
impose=Imposer impose=Imposer
gotimposed=Le cursus selectionné a été imposé gotimposed=Le cursus selectionné a été imposé
DifferentLanguage=Langues différentes

View File

@ -2,7 +2,7 @@
import { toast } from 'vue3-toastify'; import { toast } from 'vue3-toastify';
import { ref } from 'vue' import { ref } from 'vue'
import i18n, { setLang } from './i18n.js' import i18n, { setLang } from './i18n.js'
import { isLogged } from '@/rest/Users.js' import { isLogged, getSelf } from '@/rest/Users.js'
import { notifications, fetchNotifications, archiveNotification } from '@/rest/notifications.js' import { notifications, fetchNotifications, archiveNotification } from '@/rest/notifications.js'
import { appList, currentView } from '@/rest/apps.js' import { appList, currentView } from '@/rest/apps.js'
@ -14,9 +14,11 @@ window.onhashchange = function() {
currentURL = window.location.hash; currentURL = window.location.hash;
} }
const Logged = ref(isLogged()); const Logged = ref(isLogged());
const user = ref();
if(Logged.value){ if(Logged.value){
fetchNotifications(); fetchNotifications();
getSelf().then(e => user.value = e);
} }
window.addEventListener('hashchange', () => { window.addEventListener('hashchange', () => {
@ -49,7 +51,7 @@ window.addEventListener('hashchange', () => {
</a></li> </a></li>
<li style="float: right;" title=login> <li style="float: right;" title=login>
<a class="icon" href="#/login"> <a class="icon" href="#/login">
<div class="fa-solid fa-user" :style="Logged ? 'color: red' : ''" style="margin-top: 7px; margin-bottom: 3px; "></div> <div class="fa-solid fa-user" :style="Logged ? 'color: red' : ''" style="margin-top: 7px; margin-bottom: 3px; "></div>
</a></li> </a></li>
<li style="float: right;" title=notifications @click="notification = !notification"> <li style="float: right;" title=notifications @click="notification = !notification">
<a class="icon"> <a class="icon">
@ -75,6 +77,7 @@ window.addEventListener('hashchange', () => {
{{i18n("app.manage.profile")}} {{i18n("app.manage.profile")}}
</a> </a>
</div> </div>
<span v-if=Logged>RegNo - {{ user.regNo }}</span>
</div> </div>
</a></li> </a></li>
</ul> </ul>
@ -133,10 +136,12 @@ window.addEventListener('hashchange', () => {
.dropdown { .dropdown {
color:black;
margin-top:55px; margin-top:55px;
width:160px; width:160px;
display: inline-block; display: inline-block;
height:110px; /* height:110px; */
text-align: center;
font-size: 13px; font-size: 13px;
position: absolute; position: absolute;
z-index: 1; z-index: 1;
@ -162,12 +167,12 @@ window.addEventListener('hashchange', () => {
margin-top: var(--header-size); margin-top: var(--header-size);
top:0; top:0;
left:0; left:0;
padding: 25px 0 0; padding: 25px 0;
width: 70px ; width: 70px ;
background-color: rgb(53, 53, 53); background-color: rgb(53, 53, 53);
border-right:5px; border-right:5px;
border-color:black; border-color:black;
height: 100%; height: calc( 95% - var(--header-size) ) ;
position: fixed; position: fixed;
overflow: scroll; overflow: scroll;
transition-duration: .3s; transition-duration: .3s;
@ -237,8 +242,7 @@ window.addEventListener('hashchange', () => {
.text { .text {
right: 0%; right: 0%;
width: 0%; width: 0%;
visibility: collapse; display:none;
opacity: 0;
color: white; color: white;
font-size: 1.2em; font-size: 1.2em;
font-weight: 600; font-weight: 600;
@ -247,7 +251,7 @@ window.addEventListener('hashchange', () => {
ul.vertical:hover .text { ul.vertical:hover .text {
opacity:1; opacity:1;
visibility:visible; display: inline;
width: 60%; width: 60%;
transition-duration: .3s; transition-duration: .3s;
padding-left: 15px; padding-left: 15px;

View File

@ -32,6 +32,9 @@
<div> <div>
{{ i18n("firstname/name") }} : {{user.firstName}} {{user.lastName}} {{ i18n("firstname/name") }} : {{user.firstName}} {{user.lastName}}
</div> </div>
<div>
{{ i18n("regNo") }} : {{user.regNo}}
</div>
<div> <div>
{{ i18n("login.guest.email") }}: {{user.email}} {{ i18n("login.guest.email") }}: {{user.email}}
</div> </div>

View File

@ -192,10 +192,10 @@
<div> <div>
{{ i18n("login.guest.email") }}: {{user.email}} {{ i18n("login.guest.email") }}: {{user.email}}
</div> </div>
<div v-if="user.role==='Student'"> <div>
{{ i18n("regNo") }} : {{user.regNo}} {{ i18n("regNo") }} : {{user.regNo}}
</div> </div>
<div v-else> <div>
{{ i18n("role") }}: {{i18n((user.role))}} {{ i18n("role") }}: {{i18n((user.role))}}
</div> </div>
<div> <div>
@ -369,7 +369,7 @@
</div> </div>
</div> </div>
</div> </div>
<div v-if="windowState === 0" class="moreInfos"> <div v-if="windowState === 0 && user.role==='Student'" class="moreInfos">
<div class = "oldcursus"> <div class = "oldcursus">
<div class="listTitle"> <div class="listTitle">
{{ i18n("oldcursus") }} {{ i18n("oldcursus") }}

View File

@ -138,7 +138,6 @@ const emit = defineEmits(["modified"]);
#researches{ #researches{
width: 100%; width: 100%;
height: 100%; height: 100%;
overflow: scroll;
} }
#search{ #search{
width: 100%; width: 100%;
@ -223,4 +222,4 @@ a{
#toggledResearchButton:hover{ #toggledResearchButton:hover{
background: #ff2d55; background: #ff2d55;
} }
</style> </style>

View File

@ -82,7 +82,7 @@ function getPP(){
</div> </div>
<div> <ListResearches :allResearcher="allResearcher" :research-list="researchList" :manage="true" @modified="modifiedResearch"></ListResearches> </div> <ListResearches :allResearcher="allResearcher" :research-list="researchList" :manage="true" @modified="modifiedResearch"></ListResearches>
</div> </div>
</div> </div>
</template> </template>
@ -181,4 +181,4 @@ a{
text-decoration: underline; text-decoration: underline;
cursor: pointer; cursor: pointer;
} }
</style> </style>

View File

@ -99,7 +99,7 @@ async function articleClicked(){
<li>{{i18n("PaperType")}} : {{article.paperType}}</li> <li>{{i18n("PaperType")}} : {{article.paperType}}</li>
<li>{{i18n("Domain")}} : {{article.domain}}</li> <li>{{i18n("Domain")}} : {{article.domain}}</li>
<li>{{i18n("Views")}} : {{article.views}}</li> <li>{{i18n("Views")}} : {{article.views}}</li>
<li>{{i18n("Access")}} : {{i18n(article.access)}}</li> <li>{{i18n("Access")}} : {{i18n("Access."+article.access)}}</li>
</ul> </ul>
<div id="downloads" v-if="article.pdfLocation !== null && !manage"> <div id="downloads" v-if="article.pdfLocation !== null && !manage">
<a :href=downloadPdf() @click.stop="articleClicked" target="_blank">{{i18n("See.Research")}}</a> <a :href=downloadPdf() @click.stop="articleClicked" target="_blank">{{i18n("See.Research")}}</a>

View File

@ -11,8 +11,8 @@ import {fetchResearcher, fetchResearches, fetchStats} from "@/rest/ScientificPub
import ListResearches from "@/Apps/ScientificPublications/ListResearches.vue"; import ListResearches from "@/Apps/ScientificPublications/ListResearches.vue";
import i18n from "../../i18n.js"; import i18n from "../../i18n.js";
const input = ref(""); const input = ref("");
const statsOf = ref(""); const statsOf = ref();
const statsBy = ref(""); const statsBy = ref();
let chart; let chart;
const researcherId = window.location.href.split("=")[1] const researcherId = window.location.href.split("=")[1]
@ -63,16 +63,15 @@ const options = reactive({
function update(){ function update(){
options.title = { options.title = {
fontColor: "white", fontColor: "white",
text: statsOf.value + " By "+ statsBy.value,
} }
let index = (statsOf.value === "views"?0:(statsOf.value === "researches"?3:6)) + (statsBy.value ==="years"?0:(statsBy.value==="months"?1:2))
if (statsOf.value !== "" && statsBy.value !== "") let index = (statsOf.value === "Views"?0:(statsOf.value === "Researches"?3:6)) + (statsBy.value ==="Years"?0:(statsBy.value==="Months"?1:2))
if (typeof statsBy.value !== 'undefined' && typeof statsOf.value !== 'undefined'){
options.data[0].dataPoints = stats.value[index] options.data[0].dataPoints = stats.value[index]
options.title.text = i18n(statsOf.value) +" "+ i18n("By") +" " + i18n(statsBy.value);
chart.render();
}
options.title.text = i18n(statsOf.value) +" "+ i18n("By") +" " + i18n(statsBy.value);
chart.render();
} }
</script> </script>
@ -97,7 +96,7 @@ function update(){
<select @change="update()" id="stats-select" v-model="statsOf"> <select @change="update()" id="stats-select" v-model="statsOf">
<option value="Views">{{i18n("Views")}}</option> <option value="Views">{{i18n("Views")}}</option>
<option value="Researches">{{i18n("Researches")}}</option> <option value="Researches">{{i18n("Researches")}}</option>
<option value="Languages">{{i18n("Language")}}</option> <option value="DifferentLanguage">{{i18n("DifferentLanguage")}}</option>
</select> </select>
</div> </div>
<div class="surrounded"> <div class="surrounded">
@ -105,7 +104,7 @@ function update(){
<select @change="update()" id="classed-select" v-model="statsBy"> <select @change="update()" id="classed-select" v-model="statsBy">
<option value="Years">{{i18n("Years")}}</option> <option value="Years">{{i18n("Years")}}</option>
<option value="Months">{{i18n("Months")}}</option> <option value="Months">{{i18n("Months")}}</option>
<option value="Topics">{{i18n("Domain")}}</option> <option value="Domain">{{i18n("Domain")}}</option>
</select> </select>
</div> </div>
<div id="statsPie"> <div id="statsPie">

View File

@ -2,9 +2,14 @@ import { ref } from 'vue'
import { restGet, restPost } from '@/rest/restConsumer.js' import { restGet, restPost } from '@/rest/restConsumer.js'
export const notifications = ref([]); export const notifications = ref([]);
let timerSet = false
export function fetchNotifications(){ export function fetchNotifications(){
restGet("/notifications").then( e => notifications.value = e ); restGet("/notifications").then( e => notifications.value = e );
if(!timerSet){
timerSet = true;
setTimeout(() => {timerSet = false; fetchNotifications()}, 5000);
}
} }
export function archiveNotification(id){ export function archiveNotification(id){