@tekkare/romulus 0.1.248 → 0.1.249

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/module.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "compatibility": {
5
5
  "nuxt": ">=3.16.0"
6
6
  },
7
- "version": "0.1.247",
7
+ "version": "0.1.248",
8
8
  "builder": {
9
9
  "@nuxt/module-builder": "0.8.4",
10
10
  "unbuild": "2.0.0"
@@ -0,0 +1,36 @@
1
+ /*
2
+ Regles du cadre OIP 7 communes a toutes les apps qui etendent le layer.
3
+ Non prefixees : elles visent la colonne `.main_container` que chaque app
4
+ pose dans son layout, sous le `.rm-shell` d'OipShell.
5
+ */
6
+
7
+ /* Le bandeau de page traverse tout le cadre, quel que soit le wrapper de la
8
+ page (`oip_grid`, `arg_page_layout`...) : meme calcul que la barre de
9
+ filtres (largeur publiee par OipShell, marges negatives). Son contenu reste
10
+ cale sur la colonne de contenu. */
11
+ .rm-shell .main_container .rm-page-header {
12
+ box-sizing: border-box;
13
+ width: var(--oip-main-w, 100%);
14
+ max-width: none;
15
+ margin-inline: calc((min(var(--oip-content-max, 100%), 100%) - var(--oip-main-w, 100%)) / 2);
16
+ padding-inline: max(32px, (var(--oip-main-w, 100%) - var(--oip-content-max, 100%)) / 2 + 32px);
17
+ }
18
+
19
+ /* La barre calcule sa largeur elle-meme : le plafond de la colonne
20
+ (`.main_container > *`) la couperait quand elle en est enfant direct. */
21
+ .rm-shell .main_container #rm_filter_bar {
22
+ max-width: none;
23
+ }
24
+
25
+ /* La barre de filtres colle au bandeau : le gap du wrapper de page saute
26
+ entre les deux (barre soeur du bandeau, ou premiere fille de son voisin),
27
+ l'espacement est rendu aux blocs suivants. Pas de `:has()` dans un
28
+ `:has()` : le selecteur serait invalide et la regle entiere ignoree. */
29
+ .rm-shell .main_container :has(> .rm-page-header + #rm_filter_bar),
30
+ .rm-shell .main_container :has(> .rm-page-header + * > #rm_filter_bar:first-child) {
31
+ row-gap: 0;
32
+ }
33
+
34
+ .rm-shell .main_container .rm-page-header + :is(#rm_filter_bar, :has(> #rm_filter_bar:first-child)) ~ * {
35
+ margin-top: 32px;
36
+ }
@@ -136,6 +136,15 @@
136
136
  </tr>
137
137
  </tbody>
138
138
  </table>
139
+ <RmButton
140
+ v-if="pagesShown < viewedPages.length"
141
+ variant="secondary"
142
+ size="sm"
143
+ class="stats_more"
144
+ @click="pagesShown += PAGES_STEP"
145
+ >
146
+ {{ isFr ? "Charger plus" : "Load more" }}
147
+ </RmButton>
139
148
  </section>
140
149
 
141
150
  <p class="stats_note">
@@ -257,12 +266,18 @@ const screensHint = computed(() =>
257
266
  const seen = (iso: string) =>
258
267
  iso ? new Date(iso).toLocaleDateString(isFr.value ? "fr-FR" : "en-GB", { day: "2-digit", month: "short" }) : "";
259
268
 
260
- const topPages = computed(() =>
269
+ // Toutes les pages vues sur la periode, dix par dix : les ecrans peu visites
270
+ // (une fiche, une page recente) doivent rester trouvables.
271
+ const PAGES_STEP = 10;
272
+ const pagesShown = ref(PAGES_STEP);
273
+ watch([period, internal], () => (pagesShown.value = PAGES_STEP));
274
+
275
+ const viewedPages = computed(() =>
261
276
  (data.value?.topPages ?? [])
262
277
  .filter((p) => p.pageviews[period.value] > 0)
263
278
  .sort((a, b) => b.pageviews[period.value] - a.pageviews[period.value])
264
- .slice(0, 10)
265
279
  );
280
+ const topPages = computed(() => viewedPages.value.slice(0, pagesShown.value));
266
281
  </script>
267
282
 
268
283
  <style scoped>
@@ -21,6 +21,8 @@ export default defineNuxtConfig({
21
21
  future: {
22
22
  compatibilityVersion: 4,
23
23
  },
24
+ // Regles du cadre communes aux apps (bandeau de page, barre de filtres).
25
+ css: [fileURLToPath(new URL("./app/assets/oip-frame.css", import.meta.url))],
24
26
  // Reglages serveur propres au layer. Les cles Directus (directus*Url,
25
27
  // directus*Token) restent declarees par l'app, qui les avait deja.
26
28
  runtimeConfig: {
@@ -27,7 +27,9 @@ import {
27
27
  * Reservee aux superadmins, comme les metadonnees.
28
28
  */
29
29
 
30
- const TOP_PAGES = 100;
30
+ // Large : chaque fiche (une marque, une association) est une page, et le
31
+ // panneau doit pouvoir descendre jusqu'aux ecrans peu visites.
32
+ const TOP_PAGES = 300;
31
33
 
32
34
  export default defineEventHandler(async (event): Promise<OipStats> => {
33
35
  const { path, hosts, where, hogql } = await oipStatsContext(event);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tekkare/romulus",
3
- "version": "0.1.248",
3
+ "version": "0.1.249",
4
4
  "description": "Romulus Design System - Nuxt module by Tekkare",
5
5
  "license": "MIT",
6
6
  "type": "module",