@tekkare/romulus 0.1.102 → 0.1.104
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
|
@@ -86,6 +86,15 @@ const props = withDefaults(
|
|
|
86
86
|
|
|
87
87
|
const emit = defineEmits<{
|
|
88
88
|
export: [config: RmExportConfig]
|
|
89
|
+
/**
|
|
90
|
+
* Plage retenue a l'etape « Donnees ».
|
|
91
|
+
*
|
|
92
|
+
* Emis au choix, et pas seulement a l'export : une plage peut changer les
|
|
93
|
+
* colonnes disponibles (l'historique des prix ajoute la variation). Sans ce
|
|
94
|
+
* signal, l'etape « Colonnes » listerait celles de l'autre plage, et
|
|
95
|
+
* l'export perdrait silencieusement la colonne propre a celle-ci.
|
|
96
|
+
*/
|
|
97
|
+
'range-change': [key: string]
|
|
89
98
|
/** Relancer un export conserve, par son identifiant cote app. */
|
|
90
99
|
rerun: [id: string]
|
|
91
100
|
/** Ouvrir l'ecran d'origine d'un export tire d'ailleurs. */
|
|
@@ -242,14 +251,28 @@ watch(
|
|
|
242
251
|
},
|
|
243
252
|
)
|
|
244
253
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
254
|
+
/*
|
|
255
|
+
Les colonnes ne sont connues qu'une fois la page chargee : la selection
|
|
256
|
+
suit, sinon un export lance tot sort avec toutes les colonnes alors que le
|
|
257
|
+
panneau en montre cinq.
|
|
258
|
+
|
|
259
|
+
Une colonne qui APPARAIT est cochee d'office. Le cas vient du changement de
|
|
260
|
+
plage : passer aux historiques ajoute la variation de prix, et la garder
|
|
261
|
+
decochee ferait sortir un fichier sans la seule colonne propre a la plage
|
|
262
|
+
qu'on vient de choisir. Decocher reste un geste, jamais un defaut.
|
|
263
|
+
*/
|
|
248
264
|
watch(
|
|
249
265
|
() => props.columns,
|
|
250
|
-
(next) => {
|
|
251
|
-
|
|
266
|
+
(next, previous) => {
|
|
267
|
+
const added = next.filter(column => !(previous ?? []).includes(column))
|
|
268
|
+
config.columns = [
|
|
269
|
+
...config.columns.filter(column => next.includes(column)),
|
|
270
|
+
...added,
|
|
271
|
+
]
|
|
252
272
|
if (!config.columns.length) config.columns = [...next]
|
|
273
|
+
// L'ordre de la page fait foi : concatener les nouvelles a la fin
|
|
274
|
+
// sortirait la variation apres la derniere colonne au lieu de sa place.
|
|
275
|
+
config.columns = next.filter(column => config.columns.includes(column))
|
|
253
276
|
},
|
|
254
277
|
)
|
|
255
278
|
|
|
@@ -296,6 +319,8 @@ const range = computed(
|
|
|
296
319
|
|
|
297
320
|
const rows = computed(() => (showRange.value ? range.value?.rows ?? 0 : 0))
|
|
298
321
|
|
|
322
|
+
watch(() => config.range, key => emit('range-change', key))
|
|
323
|
+
|
|
299
324
|
const sizeKb = computed(() =>
|
|
300
325
|
rmExportSizeKb({
|
|
301
326
|
format: config.format,
|
|
@@ -723,7 +748,7 @@ const recentDate = (at: string | Date) =>
|
|
|
723
748
|
<div>
|
|
724
749
|
<div class="rm-export__recap-k">{{ t.recapData }}</div>
|
|
725
750
|
<div class="rm-export__recap-v">
|
|
726
|
-
{{ rows.toLocaleString(lang === 'en' ? 'en-US' : 'fr-FR') }} {{ t.rows }}, {{ range?.label }}
|
|
751
|
+
{{ rows.toLocaleString(lang === 'en' ? 'en-US' : 'fr-FR') }} {{ range?.unit ?? t.rows }}, {{ range?.label }}
|
|
727
752
|
</div>
|
|
728
753
|
</div>
|
|
729
754
|
</div>
|
|
@@ -72,6 +72,15 @@ const props = withDefaults(
|
|
|
72
72
|
loading?: boolean
|
|
73
73
|
/** Surligne la saisie dans le libelle de chaque suggestion. */
|
|
74
74
|
highlightMatch?: boolean
|
|
75
|
+
/**
|
|
76
|
+
* Montre le choix d'operateur : la pastille devant le champ et le panneau
|
|
77
|
+
* qu'elle ouvre. A `false`, tous les termes entrent en ET, et l'operateur
|
|
78
|
+
* d'une etiquette posee reste modifiable. C'est l'etat des pages qui
|
|
79
|
+
* portent deja leurs operateurs ailleurs, dans le panneau
|
|
80
|
+
* « Recherche avancee » de RmFilterBar : deux endroits pour le meme
|
|
81
|
+
* reglage se contredisent.
|
|
82
|
+
*/
|
|
83
|
+
showOperators?: boolean
|
|
75
84
|
/** Id du champ, pour un `<label>` externe ou un test. */
|
|
76
85
|
inputId?: string
|
|
77
86
|
lang?: 'fr' | 'en'
|
|
@@ -81,6 +90,7 @@ const props = withDefaults(
|
|
|
81
90
|
suggestions: undefined,
|
|
82
91
|
loading: false,
|
|
83
92
|
highlightMatch: false,
|
|
93
|
+
showOperators: true,
|
|
84
94
|
inputId: 'rm-search-tags',
|
|
85
95
|
lang: 'fr',
|
|
86
96
|
},
|
|
@@ -197,7 +207,9 @@ function onInput() {
|
|
|
197
207
|
suggOpen.value = true
|
|
198
208
|
cursor.value = 0
|
|
199
209
|
// Un prefixe tape a la main vaut selection dans le panneau.
|
|
200
|
-
const hit =
|
|
210
|
+
const hit = props.showOperators
|
|
211
|
+
? OPERATORS.find(o => text.value.startsWith(o.symbol))
|
|
212
|
+
: undefined
|
|
201
213
|
if (hit) nextType.value = hit.type
|
|
202
214
|
emit('typing', text.value)
|
|
203
215
|
}
|
|
@@ -297,6 +309,7 @@ function move(step: 1 | -1) {
|
|
|
297
309
|
: next > items.value.length ? 0 : next
|
|
298
310
|
return
|
|
299
311
|
}
|
|
312
|
+
if (!props.showOperators) return
|
|
300
313
|
const at = OPERATORS.findIndex(o => o.type === nextType.value)
|
|
301
314
|
const to = (at + step + OPERATORS.length) % OPERATORS.length
|
|
302
315
|
nextType.value = OPERATORS[to]!.type
|
|
@@ -327,6 +340,7 @@ defineExpose({
|
|
|
327
340
|
<!-- L'operateur du prochain terme, toujours visible : sans lui le
|
|
328
341
|
lecteur tape « aspirine » sans savoir s'il ajoute ou exclut. -->
|
|
329
342
|
<button
|
|
343
|
+
v-if="showOperators"
|
|
330
344
|
type="button"
|
|
331
345
|
class="rm-search-tags__operator"
|
|
332
346
|
:aria-label="t.operator"
|
|
@@ -404,7 +418,7 @@ defineExpose({
|
|
|
404
418
|
</div>
|
|
405
419
|
|
|
406
420
|
<!-- Choix de l'operateur du prochain terme -->
|
|
407
|
-
<div v-if="panelOpen" class="rm-search-tags__panel">
|
|
421
|
+
<div v-if="panelOpen && showOperators" class="rm-search-tags__panel">
|
|
408
422
|
<div class="rm-search-tags__panel-head">
|
|
409
423
|
<p class="rm-search-tags__panel-title">{{ t.options }}</p>
|
|
410
424
|
<button
|
|
@@ -119,7 +119,17 @@ export interface RmExportSection {
|
|
|
119
119
|
export interface RmExportRange {
|
|
120
120
|
key: string;
|
|
121
121
|
label: string;
|
|
122
|
+
/**
|
|
123
|
+
* Ce que la plage represente, en nombre. Pas toujours des lignes : un export
|
|
124
|
+
* qui deplie une entite en plusieurs lignes se plafonne par entite (500
|
|
125
|
+
* marques, pas 500 lignes), sans quoi il coupe la derniere en deux.
|
|
126
|
+
*/
|
|
122
127
|
rows: number;
|
|
128
|
+
/**
|
|
129
|
+
* Nom de ce que `rows` compte, au pluriel (« marques », « essais »). Absent,
|
|
130
|
+
* le recapitulatif dit « lignes ».
|
|
131
|
+
*/
|
|
132
|
+
unit?: string;
|
|
123
133
|
}
|
|
124
134
|
/** Option de l'etape « Personnaliser » (logo, sources, ZIP...). */
|
|
125
135
|
export interface RmExportOption {
|