mirror of
https://github.com/umap-project/umap.git
synced 2025-04-29 11:52:38 +02:00
feat: add a disabled/active mode to the submit button of import panel (#2341)
cf #2302 Warning: I removed the historic `width: 100%` on all buttons, who knows where this will break? :p Disabled:  Form valid: 
This commit is contained in:
commit
0b818e8b75
4 changed files with 36 additions and 8 deletions
|
@ -47,7 +47,7 @@ Voici un bref passage en revu des différents imports proposés et pour finir l
|
||||||
|
|
||||||
## 1. Importer le contour d’une commune
|
## 1. Importer le contour d’une commune
|
||||||
|
|
||||||
Cliquez sur l’outil d’importation en bas de la barre de droite, puis descendez jusqu’au cadre « Assistants d’import ».
|
Cliquez sur l’outil d’importation en bas de la barre de droite, puis cliquez sur le lien « Assistants d’import ».
|
||||||
|
|
||||||
Cliquez sur « Communes France » et sélectionnez la commune souhaitée dans une liste déroulante. Une fois la commune sélectionnée, le format est reconnu automatiquement (geojson) puis le type de calque (cliquer sur « ? » pour savoir quel choix opérer)
|
Cliquez sur « Communes France » et sélectionnez la commune souhaitée dans une liste déroulante. Une fois la commune sélectionnée, le format est reconnu automatiquement (geojson) puis le type de calque (cliquer sur « ? » pour savoir quel choix opérer)
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ Une fois cet import réalisé, tout est réglable : couleur de contour, de fond,
|
||||||
|
|
||||||
## 2. Importer les contours des départements ou des régions
|
## 2. Importer les contours des départements ou des régions
|
||||||
|
|
||||||
Cliquez sur l’outil d’importation en bas de la barre de droite, puis descendez jusqu’au cadre « Assistants d’import ».
|
Cliquez sur l’outil d’importation en bas de la barre de droite, puis cliquez sur le lien « Assistants d’import ».
|
||||||
|
|
||||||
Cliquez sur « Contours nationaux » puis soit départements, soit régions et enfin le type de calque (voir supra l’explication). Tous les départements sont importés :
|
Cliquez sur « Contours nationaux » puis soit départements, soit régions et enfin le type de calque (voir supra l’explication). Tous les départements sont importés :
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ Cliquez sur « Contours nationaux » puis soit départements, soit régions et
|
||||||
|
|
||||||
## 3. Importer un point d’intérêt issu de GeoDataMine
|
## 3. Importer un point d’intérêt issu de GeoDataMine
|
||||||
|
|
||||||
Cliquez sur l’outil d’importation en bas de la barre de droite, puis descendez jusqu’au cadre « Assistants d’import ».
|
Cliquez sur l’outil d’importation en bas de la barre de droite, puis cliquez sur le lien « Assistants d’import ».
|
||||||
|
|
||||||
Cliquez sur « GeoDataMine (thèmes OSM) » et sélectionnez les informations souhaitées, routes, bâtiments, commerces, services publics, …
|
Cliquez sur « GeoDataMine (thèmes OSM) » et sélectionnez les informations souhaitées, routes, bâtiments, commerces, services publics, …
|
||||||
Par exemple, en sélectionnant les points d’eau potable de la CA du Grand Avignon, puis « Copier dans un calque »
|
Par exemple, en sélectionnant les points d’eau potable de la CA du Grand Avignon, puis « Copier dans un calque »
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 3.4 MiB After Width: | Height: | Size: 734 KiB |
|
@ -78,8 +78,7 @@ input[type="submit"] {
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
padding: 7px;
|
padding: 7px 14px;
|
||||||
width: 100%;
|
|
||||||
min-height: 32px;
|
min-height: 32px;
|
||||||
line-height: 32px;
|
line-height: 32px;
|
||||||
border: none;
|
border: none;
|
||||||
|
@ -92,6 +91,12 @@ input[type="submit"] {
|
||||||
color: var(--text-color);
|
color: var(--text-color);
|
||||||
border: 1px solid #1b1f20;
|
border: 1px solid #1b1f20;
|
||||||
}
|
}
|
||||||
|
.dark .button.primary:not([disabled]),
|
||||||
|
.dark [type="button"].primary:not([disabled]) {
|
||||||
|
background-color: var(--color-brightCyan);
|
||||||
|
color: var(--color-dark);
|
||||||
|
border: 1px solid #1b1f20;
|
||||||
|
}
|
||||||
.dark .button:hover,
|
.dark .button:hover,
|
||||||
.dark [type="button"]:hover,
|
.dark [type="button"]:hover,
|
||||||
.dark input[type="submit"]:hover {
|
.dark input[type="submit"]:hover {
|
||||||
|
@ -100,6 +105,11 @@ input[type="submit"] {
|
||||||
.dark a {
|
.dark a {
|
||||||
color: var(--text-color);
|
color: var(--text-color);
|
||||||
}
|
}
|
||||||
|
.dark [type="button"][disabled],
|
||||||
|
.dark input[type="submit"][disabled] {
|
||||||
|
background-color: var(--color-mediumGray);
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
button.flat,
|
button.flat,
|
||||||
[type="button"].flat,
|
[type="button"].flat,
|
||||||
.dark [type="button"].flat {
|
.dark [type="button"].flat {
|
||||||
|
|
|
@ -33,15 +33,15 @@ const TEMPLATE = `
|
||||||
<fieldset id="import-mode" class="formbox">
|
<fieldset id="import-mode" class="formbox">
|
||||||
<legend class="counter" data-help="importMode">${translate('Choose import mode')}</legend>
|
<legend class="counter" data-help="importMode">${translate('Choose import mode')}</legend>
|
||||||
<label>
|
<label>
|
||||||
<input type="radio" name="action" value="copy" />
|
<input type="radio" name="action" value="copy" checked onchange />
|
||||||
${translate('Copy into the layer')}
|
${translate('Copy into the layer')}
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
<input type="radio" name="action" value="link" />
|
<input type="radio" name="action" value="link" onchange />
|
||||||
${translate('Link to the layer as remote data')}
|
${translate('Link to the layer as remote data')}
|
||||||
</label>
|
</label>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<input type="button" class="button" name="submit" value="${translate('Import data')}" />
|
<input type="button" class="button primary" name="submit" value="${translate('Import data')}" disabled />
|
||||||
</div>
|
</div>
|
||||||
`
|
`
|
||||||
|
|
||||||
|
@ -121,6 +121,11 @@ export default class Importer extends Utils.WithTemplate {
|
||||||
return this.qs('textarea').value
|
return this.qs('textarea').value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
set raw(value) {
|
||||||
|
this.qs('textarea').value = value
|
||||||
|
this.onChange()
|
||||||
|
}
|
||||||
|
|
||||||
get clear() {
|
get clear() {
|
||||||
return Boolean(this.qs('[name=clear]').checked)
|
return Boolean(this.qs('[name=clear]').checked)
|
||||||
}
|
}
|
||||||
|
@ -198,6 +203,7 @@ export default class Importer extends Utils.WithTemplate {
|
||||||
)
|
)
|
||||||
this.qs('[name=layer-name]').toggleAttribute('hidden', Boolean(this.layerId))
|
this.qs('[name=layer-name]').toggleAttribute('hidden', Boolean(this.layerId))
|
||||||
this.qs('#clear').toggleAttribute('hidden', !this.layerId)
|
this.qs('#clear').toggleAttribute('hidden', !this.layerId)
|
||||||
|
this.qs('[name=submit').toggleAttribute('disabled', !this.canSubmit())
|
||||||
}
|
}
|
||||||
|
|
||||||
onFileChange(e) {
|
onFileChange(e) {
|
||||||
|
@ -219,6 +225,7 @@ export default class Importer extends Utils.WithTemplate {
|
||||||
this.url = null
|
this.url = null
|
||||||
this.format = undefined
|
this.format = undefined
|
||||||
this.layerName = null
|
this.layerName = null
|
||||||
|
this.raw = null
|
||||||
const layerSelect = this.qs('[name="layer-id"]')
|
const layerSelect = this.qs('[name="layer-id"]')
|
||||||
layerSelect.innerHTML = ''
|
layerSelect.innerHTML = ''
|
||||||
this._umap.eachDataLayerReverse((datalayer) => {
|
this._umap.eachDataLayerReverse((datalayer) => {
|
||||||
|
@ -251,6 +258,17 @@ export default class Importer extends Utils.WithTemplate {
|
||||||
this.qs('[type=file]').showPicker()
|
this.qs('[type=file]').showPicker()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
canSubmit() {
|
||||||
|
if (!this.format) return false
|
||||||
|
const hasFiles = Boolean(this.files.length)
|
||||||
|
const hasRaw = Boolean(this.raw)
|
||||||
|
const hasUrl = Boolean(this.url)
|
||||||
|
const hasAction = Boolean(this.action)
|
||||||
|
if (!hasFiles && !hasRaw && !hasUrl) return false
|
||||||
|
if (this.url) return hasAction
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
submit() {
|
submit() {
|
||||||
let hasErrors
|
let hasErrors
|
||||||
if (this.format === 'umap') {
|
if (this.format === 'umap') {
|
||||||
|
|
Loading…
Reference in a new issue