const createReactClass = window.p5VendorJs.createReactClass; const h = window.p5VendorJs.React.createElement; const ReactDOM = window.p5VendorJs.ReactDOM; const AsyncTypeahead = window.p5VendorJs.AsyncTypeahead; const swal = window.swal; const DBG = 1; var P5UI_AddItemToReport_BazaMenuItem = createReactClass({ // this.props: { key: option.ID, baza: selectedBaza, data: option } render: function () { return h('div', {}, this.props.data.label); } }) var P5UI_AddItemToReport = createReactClass({ getInitialState: function () { return { baza: null, newItemBaza: null, isSearching: false, selected: null, }; }, _handleSelectBaza: function (baza) { this.setState({ baza: baza, newItemBaza: null }); }, _handleSelectNewItem: function (baza) { this.setState({ baza: null, newItemBaza: baza }); }, _handleSelected: function (selected) { this.setState({ selected: (selected.length > 0) ? selected[0] : null }); }, _handleSearch: function (query) { this.setState({ isSearching: true }); var _setState = this.setState.bind(this); var baza = this.state.baza; var options= []; window.fetch(URL_FETCH_FROM_BAZA, { method: 'POST', header: { 'contentType': 'applications/json' }, credentials: 'same-origin', body: JSON.stringify({ baza: baza, query: query, }) }) .then(function(response) { return response.text(); }) .then(function(responseText) { try { return JSON.parse(responseText); } catch (e) { throw responseText; } }) .then(function(result) { if (result.type == 'success') { p5UI__notifyAjaxCallback(result); if (result.body && result.body.items && result.body.items.length > 0) { return result.body.items; } else { p5UI__notifyAjaxCallback({ type: 'warning', msg: "Brak danych pasujących do kryteriów wyszukiwania" }); } } }) .then(function(items) { DBG && console.log('items fetched:', items); _setState({ isSearching: false, options: items }); }) .catch(function(error) { DBG && console.log('request failed', error); }) }, componentWillUnmount: function () { DBG && console.log("DBG: conponentDidUnmount..."); }, shouldComponentUpdate: function (nextProps, nextState) { DBG && console.log("DBG: shouldComponentUpdate...", { nextProps, nextState }); return true; }, render: function () { // '
' + // '

' + 'Wybierz bazę' + '

' + // '
' + .join(' ') + '
' + // + // '
', var bazaBtns = []; bazaBtns.push({ baza: "default_db/BI_audit_KRS/BI_audit_KRS", title: "KRS - Firmy", label: "KRS" }); bazaBtns.push({ baza: "default_db/BI_audit_KRS_person/BI_audit_KRS_person", title: "KRS - Osoby", label: "KRS/p" }); bazaBtns.push({ baza: "default_db/BI_audit_MSIG/BI_audit_MSIG", title: "MSIG - Firmy", label: "MSIG" }); bazaBtns.push({ baza: "default_db/BI_audit_MSIG_person/BI_audit_MSIG_person", title: "KRS - Osoby", label: "MSIG/p" }); bazaBtns.push({ baza: "default_db/BI_audit_taxpayer/BI_audit_taxpayer", title: "VAT - Aktywni płatnicy", label: "VATp" }); bazaBtns.push({ baza: "default_db/BI_audit_CEIDG/BI_audit_CEIDG", title: "CEIDG", label: "CEIDG" }); // bazaBtns.push({ baza: "default_db/BI_audit_ENERGA_RUM_UMOWY/BI_audit_ENERGA_RUM_UMOWY", title: "RUM Umowy", label: "RUM/u" }); // bazaBtns.push({ baza: "default_db/BI_audit_ENERGA_RUM_KONTRAHENCI/BI_audit_ENERGA_RUM_KONTRAHENCI", title: "RUM Kontrahenci", label: "RUM/k" }); // bazaBtns.push({ baza: "default_db/BI_audit_ENERGA_FAKTURY/BI_audit_ENERGA_FAKTURY", title: "Faktury - do imoportowania", label: "Faktury" }); var newItemBtns = []; newItemBtns.push({ baza: "default_db/BI_audit_ENERGA_PRACOWNICY/BI_audit_ENERGA_PRACOWNICY", title: "Nowa osoba", label: "Nowa osoba" }); newItemBtns.push({ baza: "default_db/BI_audit_ENERGA_RUM_KONTRAHENCI/BI_audit_ENERGA_RUM_KONTRAHENCI", title: "Nowy podmiot", label: "Nowy podmiot" }); function generateBazaBtn(btn, opts) { return h('button', { title: btn.title, className: "btn btn-success" + (opts.selected ? " active" : ""), style: { margin: "3px" }, onClick: function () { opts.onClick(btn.baza) }, }, btn.label) } function generateNewItemBtn(btn, opts) { return h('button', { title: btn.title, className: "btn btn-success" + (opts.selected ? " active" : ""), style: { margin: "3px" }, onClick: function () { opts.onClick(btn.baza) }, }, btn.label) } var handleSelectBaza = this._handleSelectBaza.bind(this); var handleSelectNewItem = this._handleSelectNewItem.bind(this); var selectedBaza = this.state.baza; var selectedNewItem = this.state.newItemBaza; var selectedLabel = ''; if (selectedBaza) { var selBazaBtn = bazaBtns.filter(function (btn) { return btn.baza === selectedBaza; }) if (selBazaBtn) { selBazaBtn[0].title } } var handleSearch = this._handleSearch.bind(this); var handleSelected = this._handleSelected.bind(this); DBG && console.log('DBG: render this.state.options', this.state.options); return h('div', {}, [ h('p', { style: { textAlign: "center" } }, "Wybierz bazę"), h('div', { style: { marginBottom: '22px' } }, bazaBtns.map(function (btn) { return generateBazaBtn(btn, { onClick: handleSelectBaza, selected: (selectedBaza === btn.baza), }); }).concat( newItemBtns.map(function (btn) { return generateNewItemBtn(btn, { onClick: handleSelectNewItem, selected: (selectedNewItem === btn.baza), }); }) ) ), selectedBaza && h(AsyncTypeahead, { isLoading: this.state.isSearching, allowNew: false, multiple: false, options: this.state.options, // labelKey: "searchLabel", labelKey: function (option) { return [ option.nazwa.replace('"', ''), option.nip, option.krs, option.regon, option.S_miejscowosc, ].join(' ') }, minLength: 3, onSearch: handleSearch, placeholder: "Wyszukaj...", onChange: handleSelected, autoFocus: true, filterBy: function (option, text) { console.log('TODO: filterBy...', {option, text}); return true; }, renderMenuItemChildren: function (option, props) { return h(P5UI_AddItemToReport_BazaMenuItem, { key: option.ID, baza: selectedBaza, data: option }); } }), (selectedNewItem==="default_db/BI_audit_ENERGA_PRACOWNICY/BI_audit_ENERGA_PRACOWNICY") && h('div', { className: 'form-group' }, [ h('input',{ className:'form-control required', id:'personName', placeholder:'Imię' }), h('input',{ className:'form-control required', id:'personSurname', placeholder:'Nazwisko' }), h('input',{ className:'form-control required', id:'personPesel', placeholder:'Pesel' }), h('input',{ className:'form-control required', id:'personNip', placeholder:'NIP' }) ]), (selectedNewItem==="default_db/BI_audit_ENERGA_RUM_KONTRAHENCI/BI_audit_ENERGA_RUM_KONTRAHENCI") && h('div', { className: 'form-group' }, [ h('input',{ className:'form-control required', id:'companyName', placeholder:'Nazwa' }), h('input',{ className:'form-control required', id:'comapanyRegon', placeholder:'REGON' }), h('input',{ className:'form-control required', id:'companyNip', placeholder:'NIP' }) ]), // '' === selectedNewItem && h (selectedBaza && this.state.selected) && h('div', { style: { marginTop: '22px' } }, [ h('button', { className: "btn btn-success active", onClick: function () { this.props.onSelect(this.state.baza, this.state.selected); ReactDOM.unmountComponentAtNode(document.getElementById('createPracownikAjax__searchBaza')); swal.close() } }, "Dodaj") ]) ]) } }) function getWindowWidth() { var w = window, d = document, e = d.documentElement, g = d.getElementsByTagName('body')[0]; return w.innerWidth || e.clientWidth || g.clientWidth; } function createPracownikAjax(event) { // default_db/BI_audit_KRS/BI_audit_KRS // default_db/BI_audit_KRS_person/BI_audit_KRS_person // default_db/BI_audit_MSIG/BI_audit_MSIG // default_db/BI_audit_MSIG_person/BI_audit_MSIG_person // default_db/BI_audit_taxpayer/BI_audit_taxpayer // default_db/BI_audit_CEIDG/BI_audit_CEIDG // default_db/BI_audit_ENERGA_RUM_UMOWY/BI_audit_ENERGA_RUM_UMOWY // default_db/BI_audit_ENERGA_RUM_KONTRAHENCI/BI_audit_ENERGA_RUM_KONTRAHENCI // default_db/BI_audit_ENERGA_FAKTURY/BI_audit_ENERGA_FAKTURY swal({ title: "Dodaj osobę lub podmiot", width: (getWindowWidth() * 0.8), html: '
', animation: false, showConfirmButton: false, showCancelButton: false, showCloseButton: true, onOpen: function () { ReactDOM.render( h(P5UI_AddItemToReport, { onSelect: function (baza, selected) { //insert do tabeli BI_audit_ENERGA_PRACOWNICY console.log('TODO: selected ', { baza, selected }); } }), document.getElementById('createPracownikAjax__searchBaza') ) } }).catch(function (err) { DBG && console.log('err', err) }) } global.createPracownikAjax = createPracownikAjax; // module.exports = { // P5UI_AddItemToReport_BazaMenuItem, // P5UI_AddItemToReport, // createPracownikAjax // }