{"version":3,"file":"validations-display.js","sourceRoot":"","sources":["../../../Scripts/commons/validations-display.ts"],"names":[],"mappings":"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","sourcesContent":["/// \r\n/// \r\n\r\nnamespace Seac.Commons {\r\n\tclass ValidationsDisplay {\r\n\t\tprivate validationForTemplate: string = '';\r\n\r\n\t\t/**\r\n\t\t * Controlla se il field è un componete DevExpress e in caso ne ricava l'elemento HTML\r\n\t\t * @param fieldName Nome del field\r\n\t\t */\r\n\t\tprivate dxWidgetElement(fieldName: string): ValidationDxElement { \r\n\t\t\tconst selectBoxElement: JQuery = $(`[name=\"${fieldName}\"]`).parents('.dx-widget.dx-selectbox');\r\n\t\t\tif (selectBoxElement.length === 1) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\telement\t\t: selectBoxElement[0],\r\n\t\t\t\t\tinstance\t: DevExpress.ui.dxSelectBox.getInstance(selectBoxElement[0])\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tconst dropdownBoxElement: JQuery = $(`[name=\"${fieldName}\"]`).parents('.dx-widget.dx-dropdownbox');\r\n\t\t\tif (dropdownBoxElement.length === 1) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\telement\t\t: dropdownBoxElement[0],\r\n\t\t\t\t\tinstance\t: DevExpress.ui.dxDropDownBox.getInstance(dropdownBoxElement[0])\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tconst numberBoxElement: JQuery = $(`[name=\"${fieldName}\"]`).parents('.dx-widget.dx-numberbox');\r\n\t\t\tif (numberBoxElement.length === 1) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\telement\t\t: numberBoxElement[0],\r\n\t\t\t\t\tinstance\t: DevExpress.ui.dxNumberBox.getInstance(numberBoxElement[0])\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tconst dateBoxElement: JQuery = $(`[name=\"${fieldName}\"]`).parents('.dx-widget.dx-datebox');\r\n\t\t\tif (dateBoxElement.length === 1) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\telement\t\t: dateBoxElement[0],\r\n\t\t\t\t\tinstance\t: DevExpress.ui.dxDateBox.getInstance(dateBoxElement[0])\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tconst textBoxElement: JQuery = $(`[name=\"${fieldName}\"]`).parents('.dx-widget.dx-textbox');\r\n\t\t\tif (textBoxElement.length === 1) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\telement\t\t: textBoxElement[0],\r\n\t\t\t\t\tinstance\t: DevExpress.ui.dxDateBox.getInstance(textBoxElement[0])\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Se il field viene trovato all'interno della pagina mostra il messaggio di errore,\r\n\t\t * altrimenti potrebbe essere che il field venga renderizzato in un secondo momento e sarà necessario richiamare il metodo\r\n\t\t * @param fieldName Nome del field per cui mostrare il messaggio\r\n\t\t * @param errorMessage Messaggio di errore da mostrare\r\n\t\t */\r\n\t\tpublic show(fieldName: string, errorMessage: string, gridInstance?: DevExpress.ui.dxDataGrid): boolean {\r\n\t\t\tlet notificationTitle\t\t: string\t= Seac.Commons.Constants.stringEmpty; //fieldName;\r\n\t\t\tlet inErrorElement\t: JQuery\t= $(`[name=\"${fieldName}\"]`);\r\n\r\n\t\t\tif (inErrorElement.length === 0 && fieldName) {\r\n\t\t\t\t// Se non ho trovato l'elemento, potrebbe far parte di una lista\r\n\t\t\t\t// quindi modifico il nome per es: ArticoloList[0].Prezzo -> ArticoloList[0][Prezzo]\r\n\r\n\t\t\t\tif (fieldName.indexOf('.') != -1) {\r\n\t\t\t\t\t// Se il fieldName contiene un `.` significa che si tratta di una lista che si trova in questo formato `ArticoloList[0].DatoAggiuntivoList[0].Prova[0].TipoDato`\r\n\t\t\t\t\t// per il corretto funzionameno della visualizzazione degli errori, devo convertire il fieldName senza punti: `ArticoloList[0][DatoAggiuntivoList][0][Prova][0][TipoDato]`\r\n\t\t\t\t\tconst regex: RegExp = /\\.(.*?)\\[/gm;\r\n\t\t\t\t\tlet match : RegExpExecArray;\r\n\t\t\t\t\t// Cerco tutte le occorenze all'interno della stringa che inizino con `.` e finiscono con `[`\r\n\t\t\t\t\twhile ((match = regex.exec(fieldName)) !== null) {\r\n\t\t\t\t\t\t// Questo è necessario per evitare loop infiniti nel caso in cui non ci siano match\r\n\t\t\t\t\t\tif (match.index === regex.lastIndex) {\r\n\t\t\t\t\t\t\tregex.lastIndex++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// Sostituisco la stringa trovata rimuovendo il punto e mettendo le parentesi quadrate (es: `.DatoAggiuntivoList[` -> `[DatoAggiuntivoList][`)\r\n\t\t\t\t\t\tfieldName = fieldName.replace(match[0], '[' + match[1] + '][');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Rimane l'ultima occorenza, rimuovo il punto e sostituisco con parentesi quadra, ed aggiungo una parentesi quadra in fondo\r\n\t\t\t\t\tfieldName = fieldName.replace('.', '[');\r\n\t\t\t\t\tfieldName += ']'\r\n\r\n\t\t\t\t\tinErrorElement = $(`[name=\"${fieldName}\"]`);\r\n\t\t\t\t}else {\r\n\t\t\t\t\t// Probabilmente non si tratta di un elemento di una lista perché non c'è l'indice, quindi mostro solamente il messaggio di errore\r\n\t\t\t\t\tSeac.Commons.notificationManager.addSimpleNotification(errorMessage, NotificationType.error, false);\r\n\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (inErrorElement.length !== 0) {\r\n\t\t\t\t// Estraggo il titolo della notifica dalla label del campo\r\n\t\t\t\t// Prima di tutto verifico se si tratta di un field `normale`, quindi cerco la label\r\n\t\t\t\tconst formGroup: JQuery = inErrorElement.parents('.form-group');\r\n\t\t\t\tif (formGroup.length === 1) {\r\n\t\t\t\t\tconst label: JQuery = formGroup.children('label');\r\n\t\t\t\t\tif (label != null) {\r\n\t\t\t\t\t\t// Prendo solo il testo della label e rimuovo eventuali TAG HTML interni\r\n\t\t\t\t\t\tnotificationTitle = label.clone().children().remove().end().text().toUpperCase().replace(/(\\r\\n|\\n|\\r)/gm,\" \").trim();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// Altrienti provo a verificare se trovo il titolo all'interno di una griglia\r\n\t\t\t\tif (notificationTitle === Seac.Commons.Constants.stringEmpty) {\r\n\t\t\t\t\tconst isInDxCell: JQuery = inErrorElement.parents('td[role=\"gridcell\"]');\r\n\t\t\t\t\t// Controllo che l'elemento sia di una griglia\r\n\t\t\t\t\tif (isInDxCell.length > 0 && gridInstance === undefined) {\r\n\t\t\t\t\t\tconst idGrid = inErrorElement.attr('name').substr(0, inErrorElement.attr('name').indexOf('['));\r\n\t\t\t\t\t\t// Se l'id della griglia non è valido non provo nemmeno a cercarla\r\n\t\t\t\t\t\tif (idGrid) {\r\n\t\t\t\t\t\t\tgridInstance = $(`#${idGrid}`).dxDataGrid(Seac.Commons.Constants.DevExpress.dxInstance);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (gridInstance && isInDxCell.length === 1) {\r\n\t\t\t\t\t\tconst colIndex: string = $(isInDxCell[0]).attr('aria-colindex');\r\n\t\t\t\t\t\tif (colIndex) {\r\n\t\t\t\t\t\t\t// Se ho un indice di colonna, ricavo il titolo dalla caption della colonna della griglia\r\n\t\t\t\t\t\t\tconst columnOption: DevExpress.ui.GridBaseColumn = gridInstance.columnOption(+colIndex - 1);\r\n\t\t\t\t\t\t\tif (columnOption && columnOption.caption) {\r\n\t\t\t\t\t\t\t\t// Se la colonna è invisibile, non ho nemmeno le option\r\n\t\t\t\t\t\t\t\tnotificationTitle = columnOption.caption.toUpperCase();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else if (isInDxCell.length === 1) {\r\n\t\t\t\t\t\t// Se non ho l'istanza della griglia, ma sono all'interno di una griglia. Mostro l'errore senza titolo\r\n\t\t\t\t\t\t// Sarà onere del backend fornire un messaggio esustivo\r\n\t\t\t\t\t\tnotificationTitle = Seac.Resources.Common.errore;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// Se non ho ancora trovato il titolo, imposto il nome del field (qui non dovrebbe mai arrivare)\r\n\t\t\t\tif (notificationTitle === Seac.Commons.Constants.stringEmpty) {\r\n\t\t\t\t\tnotificationTitle = fieldName;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Imposto la classe bootstrap che aggiunge il bordo rosso al field\r\n\t\t\t\t// Controllo se si tratta di un componente DevExpress\r\n\t\t\t\tconst devExpressElement: ValidationDxElement = this.dxWidgetElement(fieldName);\r\n\t\t\t\tif (devExpressElement) {\r\n\t\t\t\t\t$(devExpressElement.element).addClass(Seac.Commons.Constants.bootstrapInputValidationError);\r\n\t\t\t\t}else {\r\n\t\t\t\t\tinErrorElement.addClass(Seac.Commons.Constants.bootstrapInputValidationError);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Mostro una notifica con il messaggio di errore, ed imposto una callback che imposta il focus sul field al click sulla notifica\r\n\t\t\t\tSeac.Commons.notificationManager.addNotification(\r\n\t\t\t\t\terrorMessage,\r\n\t\t\t\t\tnotificationTitle,\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tif (devExpressElement) {\r\n\t\t\t\t\t\t\tdevExpressElement.instance.focus();\r\n\t\t\t\t\t\t}else {\r\n\t\t\t\t\t\t\tinErrorElement.focus();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tNotificationType.error,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t)\r\n\r\n\t\t\t\t// Controllo che sia presente il tag per il field validation, altrimenti lo creo\r\n\t\t\t\t// perché serve per la visualizzazione del tooltip di errore\r\n\t\t\t\tif ($(`[data-valmsg-for='${fieldName}']`).length === 0) {\r\n\t\t\t\t\tconst validationFor: string = this.validationForTemplate.format(fieldName);\r\n\t\t\t\t\t$(validationFor).insertAfter(inErrorElement);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet tooltipText: string = Seac.Commons.Constants.stringEmpty;\r\n\t\t\t\ttry {\r\n\t\t\t\t\t// Controllo se esiste già un tooltip per l'elemento\r\n\t\t\t\t\t// In caso positivo recupero il testo che ho depositato nel titolo e faccio il dispose dell'elemento tooltip che reistanzierò successivamente\r\n\t\t\t\t\tconst dxTooltip: DevExpress.ui.dxTooltip = $(`[data-valmsg-for='${fieldName}']`).dxTooltip(Seac.Commons.Constants.DevExpress.dxInstance);\r\n\t\t\t\t\ttooltipText = dxTooltip.option(Seac.Commons.Constants.DevExpress.dxTitle);\r\n\t\t\t\t\tdxTooltip.dispose();\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\t// in caso di eccezione non faccio nulla\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Imposto il messaggio di errore da visualizzare all'interno del tooltip\r\n\t\t\t\ttooltipText = tooltipText !== Seac.Commons.Constants.stringEmpty ? `${tooltipText}, ${errorMessage}` : errorMessage;\r\n\r\n\t\t\t\t//Rimuovo eventuali tag html dal messaggio di errore del tooltip\r\n\t\t\t\ttooltipText = tooltipText.replace( /(<([^>]+)>)/ig, '').trim();\r\n\r\n\t\t\t\t$(`[data-valmsg-for=\"${fieldName}\"]`).text(tooltipText);\r\n\r\n\t\t\t\t// Preparo un tooltip che mostrerà l'errore quando il mouse viene posizionato sul field\r\n\t\t\t\t$(`[data-valmsg-for='${fieldName}']`).dxTooltip({\r\n\t\t\t\t\ttarget\t\t: devExpressElement?.element || inErrorElement,\r\n\t\t\t\t\tshowEvent\t: Seac.Commons.Constants.mouseEnterEvent,\r\n\t\t\t\t\tshowTitle\t: false,\t// Non mostro il titolo\r\n\t\t\t\t\ttitle\t\t: tooltipText,\t// Mi serve solamente per deposiatre il testo nel caso ci siano altri errori da concatenare\r\n\t\t\t\t\thideEvent\t: {\r\n\t\t\t\t\t\tname: Seac.Commons.Constants.mouseLeaveEvent,\r\n\t\t\t\t\t\tdelay: 300\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\treturn true;\r\n\t\t\t}else if (!fieldName) {\r\n\t\t\t\t// Se fieldName è null si tratta di un errore generico, quindi mostro solamente la notifica\r\n\t\t\t\tSeac.Commons.notificationManager.addSimpleNotification(errorMessage, NotificationType.error, false);\r\n\t\t\t\treturn true;\r\n\t\t\t}else if ($(document).find(Seac.Commons.Constants.formElement).length === 0) {\r\n\t\t\t\t// Ricerco all'interno della stringa l'indice dell'array `[0]`\r\n\t\t\t\tconst arrayIndex: RegExpMatchArray = fieldName.match(/(\\[\\d{1,}])/gm);\r\n\t\t\t\tif (arrayIndex && arrayIndex.length === 1) {\r\n\t\t\t\t\t// Se l'errore è contenuto in un array, ricavo l'indice della riga e il nome del field\r\n\t\t\t\t\tconst rowIndex: string = arrayIndex[0].replace('[', '').replace(']', '');\r\n\t\t\t\t\tfieldName = fieldName.substring(fieldName.lastIndexOf('[') + 1, fieldName.length - 1);\r\n\r\n\t\t\t\t\tfieldName = `${fieldName}
${Seac.Resources.Common.riga} ${rowIndex + 1}`;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Se non ho nessuna form all'interno del documento visualizzo il messaggio di errore (potrebbe essere il caso di una lista)\r\n\t\t\t\tSeac.Commons.notificationManager.addTitleNotification(errorMessage, fieldName, NotificationType.error, false);\r\n\t\t\t\treturn true;\r\n\t\t\t}else {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Rimuove l'errore di validazione da un singolo field\r\n\t\t * @param fieldName Nome del field di cui rimuovere la validazione\r\n\t\t */\r\n\t\tpublic removeFieldValidation(fieldName: string): void {\r\n\t\t\t// Svuoto il testo del tooltip\r\n\t\t\t$(`[data-valmsg-for=\"${fieldName}\"]`).text(Seac.Commons.Constants.stringEmpty);\r\n\r\n\t\t\t// Se esiete elimino il componente tooltip\r\n\t\t\ttry {\r\n\t\t\t\tconst dxTooltip: DevExpress.ui.dxTooltip = $(`[data-valmsg-for='${fieldName}']`).dxTooltip(Seac.Commons.Constants.DevExpress.dxInstance);\r\n\t\t\t\tdxTooltip.dispose();\r\n\t\t\t} catch (e) {\r\n\t\t\t\t// in caso di eccezione non faccio nulla\r\n\t\t\t}\r\n\r\n\t\t\t// Rimuovo la classe bootstrap che aggiunge il bordo rosso al field\r\n\t\t\t// Controllo se si tratta di un componente DevExpress\r\n\t\t\tconst devExpressElement: ValidationDxElement = this.dxWidgetElement(fieldName);\r\n\t\t\tif (devExpressElement) {\r\n\t\t\t\t$(devExpressElement.element).removeClass(Seac.Commons.Constants.bootstrapInputValidationError);\r\n\t\t\t}else {\r\n\t\t\t\tconst inErrorElement: JQuery = $(`[name=\"${fieldName}\"]`);\r\n\t\t\t\tinErrorElement.removeClass(Seac.Commons.Constants.bootstrapInputValidationError);\r\n\t\t\t}\r\n\r\n\t\t\t// Rimuovo le eventuali notifiche relative al field\r\n\t\t\tSeac.Commons.notificationManager.removeNotificationByTitle(fieldName);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Richiamo la funzione per mostrare gli errori ed imposto sul field una proprietà che indica se è stato visualizzato\r\n\t\t * @param validationArray Array di elementi contenente gli errori\r\n\t\t * @param gridInstance Se gli errori sono contenuti all'interno di una griglia passo l'istanza della griglia\r\n\t\t */\r\n\t\tpublic showValidationArray(validationArray: JQuery, gridInstance?: DevExpress.ui.dxDataGrid): void {\r\n\t\t\tvalidationArray.each((index: number, element: HTMLElement) => {\r\n\t\t\t\tconst fieldName: string = $(element).data('field-name');\r\n\t\t\t\tconst errorMessage: string = $(element)[0].innerHTML;\r\n\t\t\t\tconst alreadyShown: boolean = $(element).data('data-shown');\r\n\t\t\t\tif (!alreadyShown) {\r\n\t\t\t\t\tconst shown : boolean = Seac.Commons.validationDisplay.show(fieldName, errorMessage, gridInstance);\r\n\r\n\t\t\t\t\t$(element).data('data-shown', shown);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t/** Rimuovo tutte le validazioni all'interno della form */\r\n\t\tpublic cleanValidations(): void {\r\n\t\t\t// Elimino tutti i tooltip all'interno della form\r\n\t\t\t$('form .dx-tooltip').each((index: number, element: HTMLElement) => { \r\n\t\t\t\t$(element).dxTooltip(Seac.Commons.Constants.DevExpress.dxDispose);\r\n\t\t\t});\r\n\t\t\t// Rimuovo il bordo rosso da tutti gli input\r\n\t\t\t$(`form .${Seac.Commons.Constants.bootstrapInputValidationError}`).removeClass(Seac.Commons.Constants.bootstrapInputValidationError);\r\n\t\t\t// Rimuovo tutte le notifiche dalla pagina\r\n\t\t\tSeac.Commons.notificationManager.clearNotifications();\r\n\t\t}\r\n\t}\r\n\r\n\tinterface ValidationDxElement {\r\n\t\telement\t: HTMLElement;\r\n\t\tinstance: any;\r\n\t}\r\n\r\n\texport const validationDisplay: ValidationsDisplay = new ValidationsDisplay();\r\n\r\n\tjQuery(document).ready(() => {\r\n\t\t/** Quando la pagina è stata caricata, controllo se ci sono dei mesaggi di validazione da mostrare e in caso mostro la notifica e preparo il tooltip */\r\n\t\tconst validationResults: JQuery = $('[data-field-name]');\r\n\t\tSeac.Commons.validationDisplay.showValidationArray(validationResults);\r\n\r\n\t\t// Controllo se ci sono delle griglie DevExpress\r\n\t\t// In questo caso potrebbe essere necessario visualizzare gli errori al termine del rendering del content\r\n\t\tconst gridElements: JQuery = $(`.dx-datagrid[role=\"grid\"]`);\r\n\t\tif (gridElements.length !== 0) {\r\n\t\t\tgridElements.each((index: number, element: HTMLElement) => {\r\n\t\t\t\tconst parentItem: JQuery = $(element).parent('div.dx-widget');\r\n\t\t\t\tif (parentItem.length === 1) {\r\n\t\t\t\t\t// In questo momento dovrei avere una griglia DevExpress, ma per sicurezza metto tutto in un try\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tconst gridInstance: DevExpress.ui.dxDataGrid = $(parentItem).dxDataGrid(Seac.Commons.Constants.DevExpress.dxInstance);\r\n\t\t\t\t\t\tgridInstance.on(Seac.Commons.Constants.DevExpress.dxContentReady, () => {\r\n\t\t\t\t\t\t\tSeac.Commons.validationDisplay.showValidationArray(validationResults, gridInstance);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\t// Eccezione solo per gli sviluppatori\r\n\t\t\t\t\t\tconsole.error(`Non è stato possibile recuperare l'istanza della griglia ${$(parentItem).attr('id')}`);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n}\r\n"]}