import '@maicol07/mwc-card'; import '@maicol07/mwc-layout-grid'; import '@material/mwc-button'; import '@material/mwc-checkbox'; import '@material/mwc-fab'; import '@material/mwc-formfield'; import '@material/mwc-list/mwc-list-item'; import '@material/mwc-select'; import '@material/mwc-textarea'; import '../WebComponents/TextField'; import '../WebComponents/Select'; import collect from 'collect.js'; import LocaleCode from 'locale-code'; import Mithril from 'mithril'; import redaxios from 'redaxios'; // eslint-disable-next-line import/no-absolute-path import logoUrl from '/images/logo_completo.png'; import {Alert} from '../Components'; import Mdi from '../Components/Mdi.jsx'; import Page from '../Components/Page.jsx'; import { getFormData, showSnackbar } from '../utils'; function getFlag(language: string, slot: string = 'graphic', styles: {...} = {}) { if (!styles.display) { styles.display = 'flex'; } return (
{LocaleCode.getLanguageNativeName(language)}/
); } export default class SetupPage extends Page { languages() { const listItems: Mithril.Vnode[] = []; for (const lang of this.page.props.languages) { const attributes = { selected: this.page.props.locale === lang }; const langCode = lang.replace('_', '-'); listItems.push( {getFlag(langCode)} {LocaleCode.getLanguageNativeName(langCode)} ); if (attributes.selected) { listItems.push(getFlag(langCode, 'icon', {display: 'block', width: '24px', lineHeight: '22px'})); } } return listItems; } view(vnode) { const examplesTexts = collect(); for (const example of ['localhost', 'root', 'mysql', 'openstamanager']) { examplesTexts.put(example, __('Esempio: :example', {example})); } return ( <>
{__('OpenSTAManager')}

{__('Benvenuto in :name!', {name: {__('OpenSTAManager')}})}

{__('Puoi procedere alla configurazione tecnica del software attraverso i ' + 'parametri seguenti, che potranno essere corretti secondo necessità tramite il file .env.')}
{__("Se necessiti supporto puoi contattarci tramite l':contactLink o tramite il nostro :forumLink.", { // eslint-disable-next-line no-secrets/no-secrets contactLink: {__('assistenza ufficiale')}, forumLink: {__('forum')} })}

{__('Formato date')}

{__('I formati sono impostabili attraverso lo standard previsto da :link.', {link: PHP}) }


{__('Database')}


{__('* Campi obbligatori')}

{__('Lingua')}

{this.languages()}

{__('Licenza')}

{__('OpenSTAManager è tutelato dalla licenza GPL 3.0, da accettare obbligatoriamente per poter utilizzare il gestionale.')}

{__('Connessione al database riuscita')}

); } oncreate(vnode: Mithril.VnodeDOM) { super.oncreate(vnode); $('mwc-fab#contrast-switcher') .on('click', function () { $(this) .toggleClass('contrast-light') .toggleClass('contrast-dark'); $('body') .toggleClass('mdc-high-contrast'); }); $('#language-select').on('action', this.onLanguageSelected); // Fix for mwc button inside tags $('a') .has('mwc-button') .css('text-decoration', 'none'); } onTestButtonClicked(event: Event) { this.testDatabase(); } onSaveButtonClicked(event: Event) { const form = $(event.target).closest('form'); this.save(getFormData(form)); } onLanguageSelected(event: Event) { const {detail, target: select} = event; const selected = $(select).find(`mwc-list-item:nth-child(${detail.index + 1}) [slot="graphic"] img`); $(select).find('[slot="icon"] img').attr('src', selected.attr('src')); window.location.href = window.route('app.language', {language: select.value}); } async testDatabase(silentSuccess = false, silentError = false): boolean { const form = $('form'); try { await redaxios.options(window.route('setup.test'), {data: getFormData(form)}); } catch (error) { if (!silentError) { const alert = $('#test-connection-alert-error'); alert.find('.content').text(__('Si è verificato un errore durante la connessione al' + ' database: :error', {error: error.data.error})); alert.get(0).show(); } return false; } if (!silentSuccess) { document.querySelector('#test-connection-alert-success') .show(); } return true; } async save(data: {...}) { const test = this.testDatabase(true); if (!test) { return; } try { await redaxios.put(window.route('setup.save'), data); } catch (error) { await showSnackbar(error.data.error_description); return; } await showSnackbar(__('Impostazioni salvate correttamente')); window.location.href = window.route('auth.login'); } }