7 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
11 changed files with 38 additions and 25 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

@ -289,3 +289,4 @@ cursusprereq=The cursus you selected has some prerequisites ensure that your ext
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

@ -287,3 +287,4 @@ cursusprereq=Le cursus que vous avez selectionné a des prérequis assurez vous
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;

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>

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){