Loading ui/src/styles/_oscar-core.scss +8 −1 Changes for ui/src/styles/_oscar-core.scss: 8 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -246,6 +246,10 @@ label { } &.labeled-value-horizontal { display: flex; border-bottom: thin solid var(--bs-gray-200); &:last-child{ border-bottom: none; } >*{ flex: 1; } Loading @@ -267,9 +271,12 @@ label { font-size: .9em; } .value { font-size: 1.1em; font-size: 1.0em; font-weight: 900; white-space: nowrap; small.ago { font-weight: 100; } } } Loading ui/src/views/Activity.vue +67 −45 Changes for ui/src/views/Activity.vue: 67 added lines, 45 removed lines. Original line number Diff line number Diff line Loading @@ -380,80 +380,83 @@ :class="{'active show': uiActiveTab === 'dates'}" role="tabpanel" aria-labelledby="nav-dates-tab" tabindex="0"> <div class="row"> <div class="col-md-6"> <div>{{ $filters.oscarText("dateStart") }} : <span v-if="core.dateStart"> <div class="col-md-4"> <div class="labeled-value labeled-value-horizontal"> <div class="label">{{ $filters.oscarText('dateStart') }}</div> <div class="value"> <time :datetime="core.date">{{ $filters.date(core.dateStart) }}</time> <small class="ago"> ({{ $filters.timeAgo(core.dateStart) }})</small> </span> <em class="missing-data" v-else> <i class="icon-block" />Non définie </em> </div> </div> <div>{{ $filters.oscarText("dateEnd") }} : <span v-if="core.dateEnd"> <div class="labeled-value labeled-value-horizontal"> <div class="label">{{ $filters.oscarText('dateEnd') }}</div> <div class="value"> <time :datetime="core.date">{{ $filters.date(core.dateEnd) }}</time> <small class="ago"> ({{ $filters.timeAgo(core.dateEnd) }})</small> </span> <em class="missing-data" v-else> <i class="icon-block" />Non définie </em> </div> </div> <div>{{ $filters.oscarText("dateOpened") }} : <span v-if="core.dateOpened"> <div class="labeled-value labeled-value-horizontal"> <div class="label">{{ $filters.oscarText('dateOpened') }}</div> <div class="value"> <time :datetime="core.date">{{ $filters.date(core.dateOpened) }}</time> <small class="ago"> ({{ $filters.timeAgo(core.dateOpened) }})</small> </span> <em class="missing-data" v-else> <i class="icon-block" />Non définie </em> </div> </div> <div>{{ $filters.oscarText("dateSigned") }} : <span v-if="core.dateSigned"> <div class="labeled-value labeled-value-horizontal"> <div class="label">{{ $filters.oscarText('dateSigned') }}</div> <div class="value"> <time :datetime="core.date">{{ $filters.date(core.dateSigned) }}</time> <small class="ago"> ({{ $filters.timeAgo(core.dateSigned) }})</small> </span> <em class="missing-data" v-else> <i class="icon-block" />Non définie </em> </div> </div> <div>{{ $filters.oscarText("dateNegociation") }} : <span v-if="core.dateNegociation"> <div class="labeled-value labeled-value-horizontal"> <div class="label">{{ $filters.oscarText('dateNegociation') }}</div> <div class="value"> <time :datetime="core.date">{{ $filters.date(core.dateNegociation) }}</time> <small class="ago"> ({{ $filters.timeAgo(core.dateNegociation) }})</small> </span> <em class="missing-data" v-else> <i class="icon-block" />Non définie </em> </div> </div> </div> <div class="col-md-6"> <div>{{ $filters.oscarText("Création de la fiche") }} : <span v-if="core.dateCreated"> <div class="col-md-4"> <h3>Jalons</h3> <div class="labeled-value labeled-value-horizontal" v-for="m in milestonesSorted"> <div class="label"> <i class="icon-attention-1" v-if="m.late"></i> {{ m.label }} </div> <div class="value"> <time :datetime="core.date">{{ $filters.date(m.date) }}</time> <small class="ago"> ({{ $filters.timeAgo(m.date) }})</small> </div> </div> <hr> </div> <div class="col-md-4"> <h3><i class="icon-cog"></i>Technique</h3> <div class="labeled-value labeled-value-horizontal"> <div class="label">{{ $filters.oscarText('dateCreated') }}</div> <div class="value"> <time :datetime="core.date">{{ $filters.date(core.dateCreated) }}</time> <small class="ago"> ({{ $filters.timeAgo(core.dateCreated) }})</small> </span> <em class="missing-data" v-else> <i class="icon-block" />Non définie </em> </div> <div>{{ $filters.oscarText("Mise à jour de la fiche") }} : <span v-if="core.dateUpdated"> </div> <div class="labeled-value labeled-value-horizontal"> <div class="label">{{ $filters.oscarText('dateUpdated') }}</div> <div class="value"> <time :datetime="core.date">{{ $filters.date(core.dateUpdated) }}</time> <small class="ago"> ({{ $filters.timeAgo(core.dateUpdated) }})</small> </span> <em class="missing-data" v-else> <i class="icon-block" />Non définie </em> </div> </div> </div> </div> ... </div> <div class="tab-pane fade" id="nav-numbers" :class="{'active show': uiActiveTab === 'numbers'}" Loading Loading @@ -1128,6 +1131,25 @@ export default { }, computed: { milestonesSorted(){ let sorted = []; let date, status; this.milestones.forEach(item => { date = item.dateStart; status = 'futur'; date = date.substring(0, 10); sorted.push({ label: item.type.label, date: date, late: item.late, status: status, type: 'milestone' }) }) return sorted.sort((a,b) => new Date(b.date) - new Date(a.date) ) }, paymentsSorted(){ let sorted = []; let date, status; Loading Loading
ui/src/styles/_oscar-core.scss +8 −1 Changes for ui/src/styles/_oscar-core.scss: 8 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -246,6 +246,10 @@ label { } &.labeled-value-horizontal { display: flex; border-bottom: thin solid var(--bs-gray-200); &:last-child{ border-bottom: none; } >*{ flex: 1; } Loading @@ -267,9 +271,12 @@ label { font-size: .9em; } .value { font-size: 1.1em; font-size: 1.0em; font-weight: 900; white-space: nowrap; small.ago { font-weight: 100; } } } Loading
ui/src/views/Activity.vue +67 −45 Changes for ui/src/views/Activity.vue: 67 added lines, 45 removed lines. Original line number Diff line number Diff line Loading @@ -380,80 +380,83 @@ :class="{'active show': uiActiveTab === 'dates'}" role="tabpanel" aria-labelledby="nav-dates-tab" tabindex="0"> <div class="row"> <div class="col-md-6"> <div>{{ $filters.oscarText("dateStart") }} : <span v-if="core.dateStart"> <div class="col-md-4"> <div class="labeled-value labeled-value-horizontal"> <div class="label">{{ $filters.oscarText('dateStart') }}</div> <div class="value"> <time :datetime="core.date">{{ $filters.date(core.dateStart) }}</time> <small class="ago"> ({{ $filters.timeAgo(core.dateStart) }})</small> </span> <em class="missing-data" v-else> <i class="icon-block" />Non définie </em> </div> </div> <div>{{ $filters.oscarText("dateEnd") }} : <span v-if="core.dateEnd"> <div class="labeled-value labeled-value-horizontal"> <div class="label">{{ $filters.oscarText('dateEnd') }}</div> <div class="value"> <time :datetime="core.date">{{ $filters.date(core.dateEnd) }}</time> <small class="ago"> ({{ $filters.timeAgo(core.dateEnd) }})</small> </span> <em class="missing-data" v-else> <i class="icon-block" />Non définie </em> </div> </div> <div>{{ $filters.oscarText("dateOpened") }} : <span v-if="core.dateOpened"> <div class="labeled-value labeled-value-horizontal"> <div class="label">{{ $filters.oscarText('dateOpened') }}</div> <div class="value"> <time :datetime="core.date">{{ $filters.date(core.dateOpened) }}</time> <small class="ago"> ({{ $filters.timeAgo(core.dateOpened) }})</small> </span> <em class="missing-data" v-else> <i class="icon-block" />Non définie </em> </div> </div> <div>{{ $filters.oscarText("dateSigned") }} : <span v-if="core.dateSigned"> <div class="labeled-value labeled-value-horizontal"> <div class="label">{{ $filters.oscarText('dateSigned') }}</div> <div class="value"> <time :datetime="core.date">{{ $filters.date(core.dateSigned) }}</time> <small class="ago"> ({{ $filters.timeAgo(core.dateSigned) }})</small> </span> <em class="missing-data" v-else> <i class="icon-block" />Non définie </em> </div> </div> <div>{{ $filters.oscarText("dateNegociation") }} : <span v-if="core.dateNegociation"> <div class="labeled-value labeled-value-horizontal"> <div class="label">{{ $filters.oscarText('dateNegociation') }}</div> <div class="value"> <time :datetime="core.date">{{ $filters.date(core.dateNegociation) }}</time> <small class="ago"> ({{ $filters.timeAgo(core.dateNegociation) }})</small> </span> <em class="missing-data" v-else> <i class="icon-block" />Non définie </em> </div> </div> </div> <div class="col-md-6"> <div>{{ $filters.oscarText("Création de la fiche") }} : <span v-if="core.dateCreated"> <div class="col-md-4"> <h3>Jalons</h3> <div class="labeled-value labeled-value-horizontal" v-for="m in milestonesSorted"> <div class="label"> <i class="icon-attention-1" v-if="m.late"></i> {{ m.label }} </div> <div class="value"> <time :datetime="core.date">{{ $filters.date(m.date) }}</time> <small class="ago"> ({{ $filters.timeAgo(m.date) }})</small> </div> </div> <hr> </div> <div class="col-md-4"> <h3><i class="icon-cog"></i>Technique</h3> <div class="labeled-value labeled-value-horizontal"> <div class="label">{{ $filters.oscarText('dateCreated') }}</div> <div class="value"> <time :datetime="core.date">{{ $filters.date(core.dateCreated) }}</time> <small class="ago"> ({{ $filters.timeAgo(core.dateCreated) }})</small> </span> <em class="missing-data" v-else> <i class="icon-block" />Non définie </em> </div> <div>{{ $filters.oscarText("Mise à jour de la fiche") }} : <span v-if="core.dateUpdated"> </div> <div class="labeled-value labeled-value-horizontal"> <div class="label">{{ $filters.oscarText('dateUpdated') }}</div> <div class="value"> <time :datetime="core.date">{{ $filters.date(core.dateUpdated) }}</time> <small class="ago"> ({{ $filters.timeAgo(core.dateUpdated) }})</small> </span> <em class="missing-data" v-else> <i class="icon-block" />Non définie </em> </div> </div> </div> </div> ... </div> <div class="tab-pane fade" id="nav-numbers" :class="{'active show': uiActiveTab === 'numbers'}" Loading Loading @@ -1128,6 +1131,25 @@ export default { }, computed: { milestonesSorted(){ let sorted = []; let date, status; this.milestones.forEach(item => { date = item.dateStart; status = 'futur'; date = date.substring(0, 10); sorted.push({ label: item.type.label, date: date, late: item.late, status: status, type: 'milestone' }) }) return sorted.sort((a,b) => new Date(b.date) - new Date(a.date) ) }, paymentsSorted(){ let sorted = []; let date, status; Loading