Loading module/Oscar/src/Oscar/Entity/ActivityDateRepository.php +2 −2 Original line number Diff line number Diff line Loading @@ -187,7 +187,7 @@ class ActivityDateRepository extends EntityRepository if( $todoOnly ){ $query->andWhere('t.finishable = TRUE'); $query->andWhere('m.finished = 0 OR m.finished IS NULL'); $query->andWhere('m.finished <= 50 OR m.finished IS NULL'); } if( $bounds ){ if( $bounds['from'] ){ Loading Loading @@ -220,7 +220,7 @@ class ActivityDateRepository extends EntityRepository $query->select('m') ->setMaxResults($size) ->setFirstResult($size*($page-1)) ->orderBy('m.dateStart', 'desc'); ->orderBy('m.dateStart', 'asc'); return $query->getQuery()->getResult(); } Loading ui/src/oscar-css.scss +15 −0 Original line number Diff line number Diff line Loading @@ -153,6 +153,19 @@ body:not(.privatize) { } } .card { .card-title { .left-info { flex: 20% 0; align-self: flex-start; font-weight: 600; text-align: right; margin-left: auto; padding-right: .3em; } } } .card-state { border-left: solid 4px #555; opacity: .9; Loading Loading @@ -388,6 +401,8 @@ a.usage { //text-shadow: 1px -1px 1px rgba(255,255,255,.3); background-color: lighten($brand-info, 15%); padding: 0 .5em; margin: 0 .3em; //white-space: nowrap; border-radius: .3em; color: darken($brand-info, 35%); .oscar-tag-icon { Loading ui/src/views/MilestonesUI.vue +77 −46 Original line number Diff line number Diff line <template> <div class="overlay" v-show="displayHelp"> <div class="overlay-content"> <h1>Aide</h1> <p>Cet écran permet de visualiser les jalons de <strong>vos {{ $filters.oscarText('activités') }}</strong></p> <ul> <li>{{ $filters.oscarText('vos activités') }} (où vous êtes identifiés personnelement)</li> <li>{{ $filters.oscarText('activités de vos structures') }}</li> </ul> <p> Le panneau sur la droite vous permet de filtrer les jalons à afficher et d'ajuster les résultats de la recherche </p> <p> Les modes d'affichage en haut permettent de filtrer sur la période ou l'état d'avancement : </p> <ul> <li> <strong>Jalons proches</strong> : Jalons dont la date de référence est située entre la date du jour - 2 mois et la date du jour + 1 mois </li> <li> <strong>Jalons à faire</strong> : Jalons ayant un système de progression dont l'état est <strong>à faire</strong> ou <strong>en cours</strong> </li> </ul> <hr> <button class="btn btn-default" @click.prevent="displayHelp = false"> Fermer </button> </div> </div> <h1> <i class="icon-calendar"></i> {{ title }} <em> ({{ total + ' ' + $filters.oscarText('jalons') }})</em> <button class="btn btn-default" @click="fetch(2000)"> FETCH </button> </h1> <div class="row"> <section class="results col-md-8 milestones"> <div class="pagination btn-group"> <div v-for="i in pagination.totalPages" class="pagination-item btn btn-default" @click.prevent="handlerPage(i)" :class="{'btn-primary': pagination.page == i}"> {{ i }} </div> </div> <nav> Filtres : <div class="btn btn-lg" Loading @@ -34,6 +53,16 @@ </div> </nav> <hr> <nav class="text-center" v-show="pagination && pagination.totalPages > 1"> <div class="pagination btn-group"> <div v-for="i in pagination.totalPages" class="pagination-item btn btn-default btn-xs" @click.prevent="handlerPage(i)" :class="{'btn-primary': pagination.page == i}"> {{ i }} </div> </div> </nav> <section class="by-year" v-for="(yearData, year) in groupedMilestones"> <div class="dateMarker"> Loading @@ -56,29 +85,36 @@ }" > <h2 class="card-title"> <strong> <span class="problem-info" v-if="milestone.late"> <span> <strong class="problem-info" v-if="milestone.late"> <i class="icon-attention-1"></i> En retard </span> <i class="icon-calendar" v-else></i> {{ milestone.type.label }} - {{ $filters.dateFull(milestone.dateStart) }} </strong> <i class="icon-calendar" v-else></i> {{ milestone.type.label }} - {{ $filters.date(milestone.dateStart) }} </span> <span class="left-info"> {{ $filters.timeAgo(milestone.dateStart) }} </span> <nav v-if="milestone.manage && false" class="right"> <a href="" class="btn btn-danger">Supprimer</a> <a href="" class="btn btn-primary">Modifier</a> </nav> </h2> <div class="card-content"> <div class="activity-info" <a class="activity-info" v-if="milestone.activity" :class="{'clickable' : milestone.activity.url}" @click="handlerActivityShow(milestone)" > :href="milestone.activity.url"> <i class="icon-cube"></i> <strong v-if="milestone.activity.acronym">{{ milestone.activity.acronym }} </strong> <em>({{ milestone.activity.num }})</em> {{ milestone.activity.label }} </a> <div v-if="milestone.comment"> {{ milestone.comment }} </div> <div> <span v-if="getContext(milestone.activity).mine" class="oscar-tag primary"> <i class="oscar-tag-icon icon-group"></i> {{ $filters.oscarText('Membre de cette activité') }} Loading @@ -95,9 +131,6 @@ </span> </span> </div> <div v-if="milestone.comment"> {{ milestone.comment }} </div> <nav class="milestone-progession" v-if="milestone.validable" style="position: relative"> <i class="icon-gauge"></i> <strong class="milestone-progression-label"> Loading @@ -114,16 +147,18 @@ <i class="oscar-tag-icon icon-user"></i> {{ finishedPerson(milestone.finishedBy) }} </strong> <a href="#" @click.prevent="handlerProgression(milestone, 'unvalid')" </span> <a href="#" v-if="milestone.progress && milestone.finished >= 50" @click.prevent="handlerProgression(milestone, 'unvalid')" style="position: absolute; right: 0" class="btn btn-xs btn-default right-0"> <i class="icon-history"></i>reset </a> </span> <nav v-if="milestone.progress" class=""> <span v-if="!(milestone.finished > 0)"> <a href="" class="btn btn-default xs" @click.prevent="handlerProgression(milestone, 'inprogress')"> <nav v-if="milestone.progress" class="oscar-border-separator-top"> <span v-if="!(milestone.finished > 0) || milestone.finished == 50"> <a href="" class="btn btn-default xs" v-if="milestone.finished != 50" @click.prevent="handlerProgression(milestone, 'inprogress')"> <i class="icon-cw-outline"></i> En cours</a> <a href="" class="btn btn-success xs" @click.prevent="handlerProgression(milestone, 'valid')"> Loading @@ -145,21 +180,20 @@ </section> <section class="results col-md-4"> <nav class="filters"> <section class="filters-select"> <h3>Nombre de résultats</h3> <select name="" id="" v-model="size"> <option value="50">50</option> <option value="25">25</option> <option value="10">10</option> </select> </section> <!-- <section class="filters-select">--> <!-- <h3>Nombre de résultats</h3>--> <!-- <select name="" id="" v-model="size">--> <!-- <option value="50">50</option>--> <!-- <option value="25">25</option>--> <!-- <option value="10">10</option>--> <!-- </select>--> <!-- </section>--> <section> <h3>{{ $filters.oscarText('Mes activités') }}</h3> <div class="oscar-tag --selectable secondary" :class="{'--selected': filterMine}" @click.prevent="handlerFilterMine($event)"> > <i class="icon-eye-off" v-if="!filterMine"></i> <i class="icon-eye" v-else></i> {{ $filters.oscarText('Mes activités') }} Loading Loading @@ -215,6 +249,7 @@ export default { organizationsDetails: null, filterOrganizations: [], filterMine: true, displayHelp: true, // Nombre de résultat size: 50, Loading Loading @@ -302,7 +337,7 @@ export default { AxiosOscar.put(milestone.url, {'action': action, 'id': milestone.id}).then((response) => { console.log(response); }).then(response => { this.fetch() this.fetch(0) }) }, Loading Loading @@ -405,7 +440,7 @@ export default { } </script> <style> .milstones { .milestones { padding-top: 1.5em; padding-left: 100px; } Loading Loading @@ -445,7 +480,7 @@ export default { } .past { opacity: .7; opacity: 1; } .has-problem { border-left: solid 6px red !important; Loading Loading @@ -486,10 +521,6 @@ export default { border-left: solid 6px #EEE; } .progression-todo{ background-color: #d0b68e !important; } .progression-progress{ border-left-color: #555; } Loading Loading
module/Oscar/src/Oscar/Entity/ActivityDateRepository.php +2 −2 Original line number Diff line number Diff line Loading @@ -187,7 +187,7 @@ class ActivityDateRepository extends EntityRepository if( $todoOnly ){ $query->andWhere('t.finishable = TRUE'); $query->andWhere('m.finished = 0 OR m.finished IS NULL'); $query->andWhere('m.finished <= 50 OR m.finished IS NULL'); } if( $bounds ){ if( $bounds['from'] ){ Loading Loading @@ -220,7 +220,7 @@ class ActivityDateRepository extends EntityRepository $query->select('m') ->setMaxResults($size) ->setFirstResult($size*($page-1)) ->orderBy('m.dateStart', 'desc'); ->orderBy('m.dateStart', 'asc'); return $query->getQuery()->getResult(); } Loading
ui/src/oscar-css.scss +15 −0 Original line number Diff line number Diff line Loading @@ -153,6 +153,19 @@ body:not(.privatize) { } } .card { .card-title { .left-info { flex: 20% 0; align-self: flex-start; font-weight: 600; text-align: right; margin-left: auto; padding-right: .3em; } } } .card-state { border-left: solid 4px #555; opacity: .9; Loading Loading @@ -388,6 +401,8 @@ a.usage { //text-shadow: 1px -1px 1px rgba(255,255,255,.3); background-color: lighten($brand-info, 15%); padding: 0 .5em; margin: 0 .3em; //white-space: nowrap; border-radius: .3em; color: darken($brand-info, 35%); .oscar-tag-icon { Loading
ui/src/views/MilestonesUI.vue +77 −46 Original line number Diff line number Diff line <template> <div class="overlay" v-show="displayHelp"> <div class="overlay-content"> <h1>Aide</h1> <p>Cet écran permet de visualiser les jalons de <strong>vos {{ $filters.oscarText('activités') }}</strong></p> <ul> <li>{{ $filters.oscarText('vos activités') }} (où vous êtes identifiés personnelement)</li> <li>{{ $filters.oscarText('activités de vos structures') }}</li> </ul> <p> Le panneau sur la droite vous permet de filtrer les jalons à afficher et d'ajuster les résultats de la recherche </p> <p> Les modes d'affichage en haut permettent de filtrer sur la période ou l'état d'avancement : </p> <ul> <li> <strong>Jalons proches</strong> : Jalons dont la date de référence est située entre la date du jour - 2 mois et la date du jour + 1 mois </li> <li> <strong>Jalons à faire</strong> : Jalons ayant un système de progression dont l'état est <strong>à faire</strong> ou <strong>en cours</strong> </li> </ul> <hr> <button class="btn btn-default" @click.prevent="displayHelp = false"> Fermer </button> </div> </div> <h1> <i class="icon-calendar"></i> {{ title }} <em> ({{ total + ' ' + $filters.oscarText('jalons') }})</em> <button class="btn btn-default" @click="fetch(2000)"> FETCH </button> </h1> <div class="row"> <section class="results col-md-8 milestones"> <div class="pagination btn-group"> <div v-for="i in pagination.totalPages" class="pagination-item btn btn-default" @click.prevent="handlerPage(i)" :class="{'btn-primary': pagination.page == i}"> {{ i }} </div> </div> <nav> Filtres : <div class="btn btn-lg" Loading @@ -34,6 +53,16 @@ </div> </nav> <hr> <nav class="text-center" v-show="pagination && pagination.totalPages > 1"> <div class="pagination btn-group"> <div v-for="i in pagination.totalPages" class="pagination-item btn btn-default btn-xs" @click.prevent="handlerPage(i)" :class="{'btn-primary': pagination.page == i}"> {{ i }} </div> </div> </nav> <section class="by-year" v-for="(yearData, year) in groupedMilestones"> <div class="dateMarker"> Loading @@ -56,29 +85,36 @@ }" > <h2 class="card-title"> <strong> <span class="problem-info" v-if="milestone.late"> <span> <strong class="problem-info" v-if="milestone.late"> <i class="icon-attention-1"></i> En retard </span> <i class="icon-calendar" v-else></i> {{ milestone.type.label }} - {{ $filters.dateFull(milestone.dateStart) }} </strong> <i class="icon-calendar" v-else></i> {{ milestone.type.label }} - {{ $filters.date(milestone.dateStart) }} </span> <span class="left-info"> {{ $filters.timeAgo(milestone.dateStart) }} </span> <nav v-if="milestone.manage && false" class="right"> <a href="" class="btn btn-danger">Supprimer</a> <a href="" class="btn btn-primary">Modifier</a> </nav> </h2> <div class="card-content"> <div class="activity-info" <a class="activity-info" v-if="milestone.activity" :class="{'clickable' : milestone.activity.url}" @click="handlerActivityShow(milestone)" > :href="milestone.activity.url"> <i class="icon-cube"></i> <strong v-if="milestone.activity.acronym">{{ milestone.activity.acronym }} </strong> <em>({{ milestone.activity.num }})</em> {{ milestone.activity.label }} </a> <div v-if="milestone.comment"> {{ milestone.comment }} </div> <div> <span v-if="getContext(milestone.activity).mine" class="oscar-tag primary"> <i class="oscar-tag-icon icon-group"></i> {{ $filters.oscarText('Membre de cette activité') }} Loading @@ -95,9 +131,6 @@ </span> </span> </div> <div v-if="milestone.comment"> {{ milestone.comment }} </div> <nav class="milestone-progession" v-if="milestone.validable" style="position: relative"> <i class="icon-gauge"></i> <strong class="milestone-progression-label"> Loading @@ -114,16 +147,18 @@ <i class="oscar-tag-icon icon-user"></i> {{ finishedPerson(milestone.finishedBy) }} </strong> <a href="#" @click.prevent="handlerProgression(milestone, 'unvalid')" </span> <a href="#" v-if="milestone.progress && milestone.finished >= 50" @click.prevent="handlerProgression(milestone, 'unvalid')" style="position: absolute; right: 0" class="btn btn-xs btn-default right-0"> <i class="icon-history"></i>reset </a> </span> <nav v-if="milestone.progress" class=""> <span v-if="!(milestone.finished > 0)"> <a href="" class="btn btn-default xs" @click.prevent="handlerProgression(milestone, 'inprogress')"> <nav v-if="milestone.progress" class="oscar-border-separator-top"> <span v-if="!(milestone.finished > 0) || milestone.finished == 50"> <a href="" class="btn btn-default xs" v-if="milestone.finished != 50" @click.prevent="handlerProgression(milestone, 'inprogress')"> <i class="icon-cw-outline"></i> En cours</a> <a href="" class="btn btn-success xs" @click.prevent="handlerProgression(milestone, 'valid')"> Loading @@ -145,21 +180,20 @@ </section> <section class="results col-md-4"> <nav class="filters"> <section class="filters-select"> <h3>Nombre de résultats</h3> <select name="" id="" v-model="size"> <option value="50">50</option> <option value="25">25</option> <option value="10">10</option> </select> </section> <!-- <section class="filters-select">--> <!-- <h3>Nombre de résultats</h3>--> <!-- <select name="" id="" v-model="size">--> <!-- <option value="50">50</option>--> <!-- <option value="25">25</option>--> <!-- <option value="10">10</option>--> <!-- </select>--> <!-- </section>--> <section> <h3>{{ $filters.oscarText('Mes activités') }}</h3> <div class="oscar-tag --selectable secondary" :class="{'--selected': filterMine}" @click.prevent="handlerFilterMine($event)"> > <i class="icon-eye-off" v-if="!filterMine"></i> <i class="icon-eye" v-else></i> {{ $filters.oscarText('Mes activités') }} Loading Loading @@ -215,6 +249,7 @@ export default { organizationsDetails: null, filterOrganizations: [], filterMine: true, displayHelp: true, // Nombre de résultat size: 50, Loading Loading @@ -302,7 +337,7 @@ export default { AxiosOscar.put(milestone.url, {'action': action, 'id': milestone.id}).then((response) => { console.log(response); }).then(response => { this.fetch() this.fetch(0) }) }, Loading Loading @@ -405,7 +440,7 @@ export default { } </script> <style> .milstones { .milestones { padding-top: 1.5em; padding-left: 100px; } Loading Loading @@ -445,7 +480,7 @@ export default { } .past { opacity: .7; opacity: 1; } .has-problem { border-left: solid 6px red !important; Loading Loading @@ -486,10 +521,6 @@ export default { border-left: solid 6px #EEE; } .progression-todo{ background-color: #d0b68e !important; } .progression-progress{ border-left-color: #555; } Loading