{"version":3,"sources":["Components/Formaters/FormaterString.js","Components/Formaters/FormaterDate.js","Components/Formaters/FormaterID.jsx","api/apiFunc.js","dataconfig/columnsGrids.js","projConst.js","api/mockData.js","Components/Lib/ListIcons.jsx","Components/ShowAppHeader.jsx","Components/ShowAppToolbar.jsx","Components/ShowAppFooter.jsx","Components/Lib/SelectDataList.jsx","Components/ShowAppSidebar.jsx","Components/Formaters/FormaterPick.jsx","Components/Lib/ShowGrid.jsx","Components/Lib/TestGrid.jsx","Components/ShowTotal.jsx","Components/Lib/YearMonthPicker.jsx","Components/Lib/ShowFilter.js","Server/DataServerContext.jsx","Components/FormGrid.jsx","infowindow/infowinContext.js","App.jsx","api/mockUIapp.js","types.js","Main.js","Actions/actions.jsx","serviceWorker.js","Reducers/mainuniui.js","Reducers/maindata.js","Reducers/listdata.js","Reducers/mainscreen.js","Reducers/index.js","infowindow/CustomSnackbars.jsx","infowindow/ShowDialog.jsx","infowindow/infowinReducer.js","infowindow/InfowinState.js","Components/Lib/CustomSnackbars.jsx","Server/DataServer.jsx","index.js"],"names":["FormaterString","Component","props","state","curvalue","value","nextProps","this","style","textAlign","Align","color","Color","wordWrap","wordBreak","title","FormaterID","marginTop","src","Src","width","Width","height","Height","isNotEmptyArr","arr","Array","isArray","length","undefined","isEmpty","obj","key","toDateFormatJSON","val","sep","R","arrVal","substring","split","HandleFindError","is_error","error_text","is_err","mess","mutableListSelect","list","label","reduce","result","elem","id","sleep","delay","Promise","resolve","setTimeout","FetchLiteUrl","strUrl","post","userarg","thisMock","mockdata","a","mockdataempty","reject","request","get","body","set","send","parsingCss","data","css","child","map","el","Spinner","className","CustomHeader","item","text","short","background","opacity","backgroundColor","marginLeft","marginRight","marginBottom","fontSize","fontWeight","fontFamily","api","column","name","shortname","columnsMainData","frozen","resizable","_type","headerRenderer","formatter","row","ID","FontSize","editable","WorksCode","WorksName","WorksNameLong","WorksCodeSap","WorksCodeGd","AgentId","Priz","OutUzKvitSequence","WeightTrainSequence","LocalCodeWorkSequence","StationDefaultId","TranspInstrHeaderSequence","VersionXml","pred_account_id","columnsFilter","_typecolumn","_picklist","_typedata","_filterval","window","location","origin","BaseAddress","hostname","pathname","indexOf","apiDataUIUrl","host","apiDataUrl","apiSaveUrl","main_data","main_data_row_empty","main_data_empty","ListIcons","icons","iconsapp","access","handleOnClick","nodiv","classnam","dopargs","filtered","useState","OneIcon","iconapp","useraccess","ui_app_icon_mnem","accessstyle","icon","iconfile","icontype","ui_app_icon_file","type","file","d","slice","PrepareIcon","SvgIcon","onClick","sort","b","order","useStyles","makeStyles","theme","root","display","content","paddingLeft","spacing","unit","ShowAppHeader","config","curBlock","SetCurBlock","iconsApp","SetIconsApp","useEffect","configApp","headerClick","alert","ui_app_icon_id","ComputedAccess","ref","goToLog","children","nameNsi","position","top","ShowAppToolbar","inputVal","SetInputVal","cur_Block","console","log","onSaveData","onInsertRow","onColumnFilter","onDeleteRow","pick","mainfilter","curPeriod","curUser","curVidp","curUsers","rows","User","user_id","curVidps","Vidp","category_id","period","curDate","Date","toLocaleDateString","month","year","cstyle","margin","padding","border","borderRadius","ShowFilter","onChange","e","target","handleSeek","arg1","FindB","inputComponent","inputRef","components","Control","TextField","fullWidth","InputProps","inputProps","selectProps","classes","input","innerRef","innerProps","textFieldProps","Menu","Paper","square","paper","NoOptionsMessage","Typography","noOptionsMessage","Option","MenuItem","buttonRef","selected","isFocused","component","isSelected","Placeholder","placeholder","SingleValue","singleValue","ValueContainer","valueContainer","SelectDataList","handleChange","onHandleChange","selName","NoSsr","styleClass","options","selectList","curValue","withStyles","flexGrow","paddingBottom","flexWrap","flex","alignItems","overflow","chip","chipFocused","emphasize","palette","grey","left","zIndex","right","divider","withTheme","textList","borderWidth","borderColor","borderStyle","boxShadow","textListNew","hight","textListNewSmall","textListNm","textField","textField2","EmptyRowsRenderer","rowKeyGetter","ShowGrid","totalrow","PrimaryId","columnsgrid","myfiolist","Set","selectedRows","currow","Setcurrow","node","document","getElementById","canvas","ReactDOM","findDOMNode","addEventListener","keyListenerDown","keyListenerUp","removeEventListener","_rows","_columns","_PkFieldName","preventDefault","onCurRow","useMemo","editor","TextEditor","minHeight","columns","defaultColumnOptions","sortable","onRowClick","row_idx","onRowsChange","change","indexes","updcol","updrow","onHandleUpdateGrid","noRowsFallback","Intl","DateTimeFormat","navigator","language","NumberFormat","currency","head","common","white","maxHeight","TableCell","action","hover","TableRow","table","minWidth","maxWidth","YearMonthPicker","ruLocale","localize","buildLocalizeFn","values","narrow","abbreviated","wide","defaultWidth","defaultFormattingWidth","utils","DateFnsUtils","locale","DatePicker","views","helperText","minDate","maxDate","format","cancelLabel","selectedDate","handleDateChange","handleOpen","setState","open","handleClose","defaultSelectVal","picklist_values","def_val","x","maxLen","FiltVal","lastvalue","deffilter","k","col","curList","curId","InputMost","event","Dialog","dialogPaper","onClose","DialogTitle","DialogContent","checked","InputCheck","pkRow","tmpRow","_","InputSelect","dateValue","InputDate","InputMonthYear","DialogActions","Button","callB","_alias","moment","onAnswer","idKey","curPkId","pk_id","curval","shadows","button","message","grid","DataServerContext","flexDirection","createContext","InfoWinContext","responsPerson","apptitle","apptab","appinnertab","usertitle","alignSelf","App","useContext","messageWin","curmessage","alertWin","dialogWin","alertmessage","dialoganswer","dialog","getServerDataRedux","loading","dataserver","tree","db","argum","themeCss","globalCss","dispatch","useDispatch","mainlist","SetMainList","SetMainFilter","SetTotalList","SetTotalTable","SetPick","updatedData","SetUpdatedData","deleteData","SetDeleteData","insertData","SetInsertData","showFilter","SetShowFilter","curentRow","SetCurentRow","subfilter","Setsubfilter","maindata","useSelector","shallowEqual","listdata","prepareParam","datafilter","serverdata","datamain","datatotalrow","isTotalRow","datan","datak","planh","facth","done","d01","d02","d03","d04","d05","d06","d07","d08","d09","d10","d11","d12","d13","d14","d15","d16","d17","d18","d19","d20","d21","d22","d23","d24","d25","d26","d27","d28","d29","d30","d31","Object","keys","substr","datatotalvid","dat","filter","vidp","picklists","winDialogAnswer","userDialogAnswer","answer","handle_delete_row","appParams","viewmode","messageSimple","messagetitle","alertSimple","errorSimple","args","toString","tempins","tmp","JSON","stringify","newrow","random_id","random_possible","i","charAt","Math","floor","random","newrows","push","maxwidth","readonly","onHandleMess","updated","idx","updData","temp","newupdated","onHandleDelete","pkid","onHandleAdd","onMessage","listFilter","check","templist","res","Number","FETCH_UNIVER_UI","FETCH_MAIN_DATA","FETCH_LIST_DATA","UUI_GLOBAL","UUI_THEME","SHOW_MESS_APP","SHOW_ALERT_APP","SHOW_DIALOG_APP","DIALOG_ANSWER","Main","useQueryParam","StringParam","NumberParam","mainuniui","mockUIapp","glcss","blocks","header","menu","getState","payload","UiThemecss","ldb","Boolean","match","initialState","combineReducers","mainscreen","variantIcon","success","CheckCircleIcon","warning","WarningIcon","error","ErrorIcon","info","InfoIcon","MySnackbarContentWrapper","green","dark","primary","amber","iconVariant","variant","other","Icon","SnackbarContent","classNames","IconButton","close","CustomSnackbars","uservar","usermess","useropen","userClose","Snackbar","anchorOrigin","vertical","horizontal","React","ShowDialog","DialogContentText","statement","func","autoFocus","handlers","infowinReducer","DEFAULT","dense","menuButton","clgrid","divbutton","InfoWinState","useReducer","draw","typemess","messageWinClose","Provider","autoHideDuration","ContentProps","userdur","DataServer","Setloading","SetDataServer","SetAlertmessage","setLoading","param","getServerData","apiUrl","thismock","mock","SetState","showmess","durmess","then","onedata","duration","mockempty","store","createStore","reducer","composeWithDevTools","applyMiddleware","thunk","render","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.2e90350b.chunk.js","sourcesContent":["import React, { Component } from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport PropTypes from 'prop-types';\r\n\r\nclass FormaterString extends Component {\r\n /* static propTypes = {\r\n value: PropTypes.string,\r\n value: PropTypes.number\r\n };\r\n */\r\n constructor(props) {\r\n super(props);\r\n //let viewValue = this.props.value\r\n // console.log('viewValue------',viewValue); \r\n this.state = {\r\n curvalue: this.props.value\r\n }\r\n //this.handleChange = this.handleChange.bind(this);\r\n }\r\n\r\n shouldComponentUpdate(nextProps) {\r\n return nextProps.value !== this.props.value;\r\n }\r\n\r\n /* handleChange = date => \r\n this.setState({\r\n startDate: date\r\n });\r\n */\r\n\r\n render() { \r\n let curvalue\r\n if (this.props.value !== null) curvalue = this.props.value\r\n //return
{this.state.curvalue}
;\r\n return
{curvalue}
;\r\n }\r\n }\r\n\r\n export default FormaterString; ","import React, { Component } from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport PropTypes from 'prop-types';\r\nimport DateTime from 'react-datetime';\r\nimport DatePicker from 'react-datepicker';\r\nimport moment from 'moment';\r\nimport 'react-datepicker/dist/react-datepicker.css';\r\n\r\nclass FormaterDate extends Component {\r\n static propTypes = {\r\n value: PropTypes.string\r\n };\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n startDate: moment\r\n }\r\n this.handleChange = this.handleChange.bind(this);\r\n }\r\n\r\n shouldComponentUpdate(nextProps) {\r\n return nextProps.value !== this.props.value;\r\n }\r\n\r\n handleChange = date => \r\n this.setState({\r\n startDate: date\r\n });\r\n \r\n\r\n render() { \r\n let curdate\r\n if (this.props.value !== null) {\r\n //console.log('this.props.value-------------',typeof(this.props.value),this.props.value)\r\n if (typeof(this.props.value) == 'string') {\r\n let value = this.props.value.split('-');\r\n curdate = new Date(this.props.value); \r\n // curdate = new Date(value[0], value[1] - 1, value[2]); \r\n }\r\n else\r\n {\r\n if (typeof(this.props.value) == 'object') {\r\n curdate = this.props.value._d\r\n }\r\n else\r\n {\r\n curdate = this.props.value\r\n }\r\n }\r\n\r\n let options = {year: 'numeric', month: 'numeric', day: 'numeric' };\r\n return
{curdate.toLocaleDateString('ru-RU'/*,options*/)}
;\r\n //return
{value.format(\"L\")}
;\r\n /* return
*/\r\n // return \r\n \r\n }\r\n else\r\n {\r\n let curdate = new Date() \r\n let options = {year: 'numeric', month: 'numeric', day: 'numeric' };\r\n return null\r\n // return
{curdate.toLocaleDateString('ru-RU',options)}
;\r\n }\r\n }\r\n }\r\n\r\n/*\r\n getColumns = () => {\r\n \r\n let eventDataGrid = {\r\n onClick: (ev, args) => {\r\n const idx = args.idx;\r\n const rowIdx = args.rowIdx;\r\n this.grid.openCellEditor(rowIdx, idx);\r\n }\r\n }\r\n \r\n return [\r\n {\r\n key: 'date',\r\n name: 'Date',\r\n width: 100,\r\n editable: true,\r\n editor:,\r\n formatter: ,\r\n events:eventDataGrid\r\n }]\r\n }\r\n */\r\n export default FormaterDate; ","import React, { Component } from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst FormaterID = (props) => {\r\n const { value } = props\r\n if (value !== null && typeof value === 'number') \r\n return
{value}
;\r\n else \r\n return
\r\n \r\n
\r\n }\r\n\r\n export default FormaterID; ","import React, {Fragment} from \"react\";\r\nimport request from \"superagent\";\r\nimport * as R from 'ramda'\r\nimport moment from 'moment';\r\n\r\nexport const isNotEmptyArr = (arr) => \r\n arr && Array.isArray(arr) && arr.length > 0 && arr[0] !== undefined\r\n\r\nexport const isEmpty = (obj) => {\r\n for (var key in obj) {\r\n return false;\r\n\r\n }\r\n return true;\r\n}\r\nconst is_Empty = (prop) => (\r\n prop === null ||\r\n prop === undefined ||\r\n (prop.hasOwnProperty('length') && prop.length === 0) ||\r\n (prop.constructor === Object && Object.keys(prop).length === 0)\r\n);\r\n\r\nexport const toDateFormat = (val) => {\r\n if (R.not(val)) return null\r\n const arrVal = val.substring(0,10).split('-')\r\n if (arrVal && arrVal.length == 3){\r\n const dat = `${arrVal[2]}.${arrVal[1]}.${arrVal[0]}`\r\n return dat\r\n }\r\n else\r\n return '';\r\n}\r\nexport const toDateFormatJSON = (val,sep) => {\r\n if (R.not(val)) return null\r\n const arrVal = val.substring(0,10).split(sep)\r\n if (arrVal && arrVal.length == 3){\r\n const dat = `${arrVal[2]}-${arrVal[1]}-${arrVal[0]}`\r\n return dat\r\n }\r\n else\r\n return '';\r\n}\r\n\r\nexport const isDateVal = (val) => {\r\n const arrVal = val.split('.')\r\n if (arrVal && arrVal.length == 3){\r\n const dat = `${arrVal[1]}.${arrVal[0]}.${arrVal[2]}`\r\n return moment(dat)._isValid\r\n }\r\n else\r\n return false;\r\n}\r\n\r\nexport const HandleFindError = (obj) => {\r\n if (!isEmpty(obj)){\r\n const {is_error,error_text} = obj\r\n if (is_error && is_error == 1) \r\n return {is_err : true , mess : error_text||null} \r\n }\r\n return {is_err : false , mess : null} \r\n}\r\n\r\nexport const mutableList = (list,id,name) => {\r\n if (!isNotEmptyArr(list)) \r\n return [{value : null, label : \"Нет данных\"}]\r\n return list.reduce(\r\n (result, elem) =>\r\n [...result, {value : elem[id],\r\n label : elem[name]} ],\r\n []\r\n )\r\n }\r\n export const mutablePickList = (list,id,name) => {\r\n if (!isNotEmptyArr(list)) \r\n return [{value : null, label : \"Нет данных\"}]\r\n return list.reduce(\r\n (result, elem) =>\r\n [...result, {id : elem[id],\r\n title : elem[name]} ],\r\n []\r\n )\r\n }\r\n export const mutableListSel = (list,val,lab,field1 = '',field2 = '') => {\r\n if (isEmpty(list)) \r\n return [{value: \"\", label: \"Нет данных\"}]\r\n const countlab = 17 \r\n return list.reduce(\r\n (result, elem) => {\r\n let fiel1 = elem[field1] ? elem[field1] : ''\r\n let fiel2 = elem[field2] ? elem[field2] : ''\r\n let elemlab = elem[lab] ? elem[lab] : ''\r\n //elemlab = typeof elemlab === 'string' ? elemlab.substring(0,countlab) : elemlab\r\n return [...result, {value : elem[val],label : `${elemlab} ${fiel1} ${fiel2}`} ]\r\n }, []\r\n )\r\n }\r\n export const mutableListSelDef = (list,val,lab,field1 = '',field2 = '') => {\r\n if (isEmpty(list)) \r\n return [{value: \"\", label: \"Нет данных\"}]\r\n return list.reduce(\r\n (result, elem) => {\r\n let fiel1 = elem[field1] ? elem[field1] : ''\r\n let fiel2 = elem[field2] ? elem[field2] : ''\r\n let elemlab = elem[lab] ? elem[lab] : ''\r\n //elemlab = typeof elemlab === 'string' ? elemlab.substring(0,countlab) : elemlab\r\n return [...result, {value : elem[val],label : `${elemlab} ${fiel1} ${fiel2}`} ]\r\n }, [{value : 0,label : ``}]\r\n )\r\n }\r\n export const mutableListSelect = list => {\r\n if (isEmpty(list))\r\n return [{ value: \"\", label: \"Нет данных\" }]\r\n \r\n return list.reduce(\r\n (result, elem) =>\r\n [...result, {\r\n value: elem.id,\r\n label: elem.title\r\n }],\r\n []\r\n )\r\n }\r\n \r\nexport const CustomFormatter = (text,short=text,color=null,background=null,opacity=1) => {\r\n let style = {};\r\n if ( color ) style.color = color;\r\n if ( background ) style.backgroundColor = background;\r\n style.height = '50px' \r\n style.marginTop = '-3px' \r\n style.marginLeft = '-7px' \r\n style.marginRight = '-8px' \r\n style.marginBottom = '-20px' \r\n style.textAlign = 'center'\r\n style.fontSize = '80%'\r\n style.fontWeight = '100'\r\n style.fontFamily = 'Arial' \r\n style.opacity = opacity\r\n //style.wordWrap = 'break-word'\r\n //style.wordBreak = 'break-all' \r\n return (color || background) ? (
{short}
) : (
{text}
);\r\n };\r\n\r\n/*\r\n Функция для отбора данных \r\n*/\r\nexport const SumTotalVid = (data) => {\r\n let datatotalvid = [{\r\n 'vidp': 'Плановая',\r\n 'planh': 0,\r\n 'facth': 0,\r\n 'percent': 0\r\n },\r\n {\r\n 'vidp': 'Внеплановая',\r\n 'planh': 0,\r\n 'facth': 0,\r\n 'percent': 0\r\n },\r\n {\r\n 'vidp': 'MFSM',\r\n 'planh': 0,\r\n 'facth': 0,\r\n 'percent': 0\r\n }]\r\n \r\n if (!isNotEmptyArr(data)) return datatotalvid\r\n datatotalvid.map((dat) => {\r\n Object.keys(data[0]).map((key) => {\r\n if (key == 'planh'||key == 'facth') \r\n dat[key] = data.filter(x=> x.vidp===dat.vidp.substr(0,1)).reduce((result, elem) => result+elem[key], 0)\r\n })\r\n })\r\n\r\n return datatotalvid\r\n}\r\n\r\nexport const SumTotalRow = (data) => {\r\n let datatotalrow = {isTotalRow: true,id: 0,datan: null,datak: null,planh: 0,facth: 0,done:0,\r\n d01:0,d02:0,d03:0,d04:0,d05:0,d06:0,d07:0,d08:0,d09:0,d10:0,d11:0,d12:0,d13:0,d14:0,d15:0, \r\n d16:0,d17:0,d18:0,d19:0,d20:0,d21:0,d22:0,d23:0,d24:0,d25:0,d26:0,d27:0,d28:0,d29:0,d30:0,d31:0}\r\n\r\n if (!isNotEmptyArr(data)) return datatotalrow\r\n\r\n Object.keys(data[0]).map((key) => {\r\n if (key == 'planh'||key == 'facth'||(key.length==3 && key.substr(0,1) == 'd')) \r\n datatotalrow[key] = data.reduce((result, elem) => result+elem[key], 0)\r\n if (key == 'done') \r\n datatotalrow[key] = data.reduce((result, elem) => result+(elem[key]=='+'?1:0), 0)\r\n })\r\n\r\n return datatotalrow\r\n}\r\n\r\nexport const filterDataChoisePack = (dataArray, filter , name_columns) =>\r\n {\r\n let filteredArray = dataArray.filter(data => {\r\n //console.log('filterDataChoise',filter,name_columns);\r\n if (R.not(filter.turn)) return true;\r\n\r\n let found = false;\r\n\r\n Object.keys(data).map((key) => {\r\n // console.log('key,name_columns',key,name_columns)\r\n if (R.contains(key,name_columns)){\r\n if (typeof(data[key]) === 'string'){\r\n //console.log('filter[key],data[key]',filter[key],data[key],key)\r\n if (filter[key])\r\n found = found || R.contains(filter[key],data[key])\r\n else {\r\n if (key === 'datesupply'&&filter['day01']&&filter['day02']) {\r\n let startDate = moment(filter['day01']).toDate()\r\n let endDate = moment(filter['day02']).toDate()\r\n let date = moment(data[key]).toDate()\r\n found = found || (date > startDate && date < endDate)\r\n }\r\n } \r\n //console.log('found',found)\r\n }\r\n if (typeof(data[key]) === 'number'){\r\n let datakey = String(data[key])\r\n if (filter[key])\r\n found = found || R.contains(filter[key],datakey)\r\n }\r\n }\r\n });\r\n return found;\r\n });\r\n //console.log('filteredArray--',filteredArray);\r\n\r\n return filteredArray;\r\n }\r\n\r\n export const filterDataChoiseSpis = (dataArray, filter , name_columns,key) =>\r\n {\r\n if (isEmpty(dataArray)) return false\r\n let filteredArray = dataArray.filter(data => {\r\n if (isEmpty(filter)) return true\r\n \r\n let found = false;\r\n found = found || (filter[key] === data[key])\r\n\r\n return found;\r\n });\r\n //console.log('filteredArray--',filteredArray);\r\n\r\n return filteredArray;\r\n}\r\n\r\nfunction sleep(delay = 0) {\r\n return new Promise((resolve) => {\r\n setTimeout(resolve, delay);\r\n });\r\n}\r\n\r\nexport const FetchLiteUrl = async (strUrl, post, userarg, thisMock, mockdata, mockdataempty = {}) => {\r\n if (thisMock||strUrl=='') {\r\n await sleep(200); \r\n return new Promise((resolve, reject) => { resolve(mockdata); });\r\n } else {\r\n if (!post) {\r\n const { body } = await request.get(strUrl);\r\n return body;\r\n } else {\r\n try {\r\n const { body } = await request\r\n .post(strUrl)\r\n .set(\"Content-Type\", \"application/json\")\r\n .send({ ...userarg });\r\n return body;\r\n }\r\n catch { \r\n return mockdataempty;\r\n }\r\n }\r\n }\r\n\r\n}\r\nexport const computeRow = () => {\r\n if (window.matchMedia(`(max-width: 800px)`).matches)\r\n return 9\r\n if (window.matchMedia(`(max-width: 900px)`).matches)\r\n return 10\r\n if (window.matchMedia(`(max-width: 1100px)`).matches)\r\n return 11\r\n if (window.matchMedia(`(max-width: 1200px)`).matches)\r\n return 12\r\n if (window.matchMedia(`(max-width: 1300px)`).matches)\r\n return 12\r\n if (window.matchMedia(`(max-width: 1400px)`).matches)\r\n return 13\r\n if (window.matchMedia(`(max-width: 1500px)`).matches)\r\n return 14\r\n if (window.matchMedia(`(max-width: 1600px)`).matches)\r\n return 15\r\n if (window.matchMedia(`(max-width: 1700px)`).matches)\r\n return 18\r\n if (window.matchMedia(`(max-width: 1800px)`).matches)\r\n return 22\r\n if (window.matchMedia(`(max-width: 1900px)`).matches)\r\n return 22\r\n if (window.matchMedia(`(max-width: 2000px)`).matches)\r\n return 25\r\n if (window.matchMedia(`(max-width: 2100px)`).matches)\r\n return 25\r\n if (window.matchMedia(`(max-width: 2400px)`).matches)\r\n return 25\r\n\r\n return 25\r\n}\r\nexport const computeRowOne = () => {\r\n if (window.matchMedia(`(max-width: 800px)`).matches)\r\n return 5\r\n if (window.matchMedia(`(max-width: 900px)`).matches)\r\n return 6\r\n if (window.matchMedia(`(max-width: 1100px)`).matches)\r\n return 6\r\n if (window.matchMedia(`(max-width: 1200px)`).matches)\r\n return 8\r\n if (window.matchMedia(`(max-width: 1300px)`).matches)\r\n return 8\r\n if (window.matchMedia(`(max-width: 1400px)`).matches)\r\n return 9\r\n if (window.matchMedia(`(max-width: 1500px)`).matches)\r\n return 10\r\n if (window.matchMedia(`(max-width: 1600px)`).matches)\r\n return 12\r\n if (window.matchMedia(`(max-width: 1700px)`).matches)\r\n return 12\r\n if (window.matchMedia(`(max-width: 1800px)`).matches)\r\n return 14\r\n if (window.matchMedia(`(max-width: 1900px)`).matches)\r\n return 15\r\n if (window.matchMedia(`(max-width: 2000px)`).matches)\r\n return 17\r\n if (window.matchMedia(`(max-width: 2100px)`).matches)\r\n return 17\r\n if (window.matchMedia(`(max-width: 2400px)`).matches)\r\n return 17\r\n\r\n return 17\r\n}\r\n\r\nexport const computeRowTwo = () => {\r\n if (window.matchMedia(`(max-width: 800px)`).matches)\r\n return 3\r\n if (window.matchMedia(`(max-width: 900px)`).matches)\r\n return 4\r\n if (window.matchMedia(`(max-width: 1100px)`).matches)\r\n return 4\r\n if (window.matchMedia(`(max-width: 1200px)`).matches)\r\n return 4\r\n if (window.matchMedia(`(max-width: 1300px)`).matches)\r\n return 6\r\n if (window.matchMedia(`(max-width: 1400px)`).matches)\r\n return 6\r\n if (window.matchMedia(`(max-width: 1500px)`).matches)\r\n return 6\r\n if (window.matchMedia(`(max-width: 1600px)`).matches)\r\n return 7\r\n if (window.matchMedia(`(max-width: 1700px)`).matches)\r\n return 7\r\n if (window.matchMedia(`(max-width: 1800px)`).matches)\r\n return 10\r\n if (window.matchMedia(`(max-width: 1900px)`).matches)\r\n return 10\r\n if (window.matchMedia(`(max-width: 2000px)`).matches)\r\n return 10\r\n if (window.matchMedia(`(max-width: 2100px)`).matches)\r\n return 10\r\n if (window.matchMedia(`(max-width: 2400px)`).matches)\r\n return 10\r\n\r\n return 10\r\n}\r\n\r\nexport const parsingCss = (data,css,key,child) => {\r\n \r\n if (!isNotEmptyArr(data)) return ''\r\n data.map(el => {\r\n if (el[key] && el[key].length) \r\n css = css+'\\n'+el[key] \r\n if (el[child] && isNotEmptyArr(el[child])) \r\n css = parsingCss(el[child],css,key,child) \r\n })\r\n return css\r\n }\r\n\r\nexport const Spinner = () => \r\n
\r\n
\r\n
Загрузка...
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n ","import FormaterColorWeek from '../Components/Formaters/FormaterColorWeek';\r\nimport FormaterColorFact from '../Components/Formaters/FormaterColorFact';\r\nimport FormaterDate from '../Components/Formaters/FormaterDate';\r\nimport FormaterString from '../Components/Formaters/FormaterString';\r\nimport FormaterID from '../Components/Formaters/FormaterID';\r\nimport * as api from '../api/apiFunc';\r\n\r\nconst lday = 50;\r\nfunction CustomHeader(item) {\r\n return api.CustomFormatter(item.column.name,item.column.shortname,'white','#343433',0.7)\r\n}\r\n\r\nexport const columnsMainData = [\r\n {\r\n key: 'ID', name: 'ID', frozen: false, resizable: true, width: 100, _type: 0, headerRenderer: CustomHeader,\r\n formatter(props) { const value = props.row.ID; return ; }\r\n },\r\n {\r\n key: 'WorksCode', name: 'Ключ завода', resizable: true, frozen: false, editable: true, width: 150, _type: 0,\r\n headerRenderer: CustomHeader,\r\n formatter(props) { const value = props.row.WorksCode; return ; }\r\n },\r\n {\r\n key: 'WorksName', name: 'Краткое наименование', resizable: true, editable: true, width: 150, _type: 0, headerRenderer: CustomHeader,\r\n formatter(props) { const value = props.row.WorksName; return ; }\r\n },\r\n {\r\n key: 'WorksNameLong', name: 'Полное наименование', resizable: true, editable: true, width: 400, _type: 0, headerRenderer: CustomHeader,\r\n formatter(props) { const value = props.row.WorksNameLong; return ; }\r\n },\r\n {\r\n key: 'WorksCodeSap', name: 'Код завода САП', resizable: true, editable: true, width: 150, _type: 0, headerRenderer: CustomHeader,\r\n formatter(props) { const value = props.row.WorksCodeSap; return ; }\r\n },\r\n {\r\n key: 'WorksCodeGd', name: 'Код ЖД', resizable: true, editable: true, width: 150, _type: 0, headerRenderer: CustomHeader,\r\n formatter(props) { const value = props.row.WorksCodeGd; return ; }\r\n },\r\n {\r\n key: 'AgentId', name: 'Идентификатор на справочник контрагентов для ссылки на реквизиты завода',shortname:'Идентификатор', resizable: true, editable: true, width: 200, _type: 0, headerRenderer: CustomHeader,\r\n formatter(props) { const value = props.row.AgentId; return ; }\r\n },\r\n {\r\n key: 'Priz', name: 'Признак удаления', resizable: true, editable: true, width: 150, _type: 0, headerRenderer: CustomHeader,\r\n formatter(props) { const value = props.row.Priz; return ; }\r\n },\r\n {\r\n key: 'OutUzKvitSequence', name: 'Последовательность для исходящих накладных', resizable: true, editable: true, width: 300, _type: 0, headerRenderer: CustomHeader,\r\n formatter(props) { const value = props.row.OutUzKvitSequence; return ; }\r\n },\r\n {\r\n key: 'WeightTrainSequence', name: 'Последовательность для провески состава', resizable: true, editable: true, width: 300, _type: 0, headerRenderer: CustomHeader,\r\n formatter(props) { const value = props.row.WeightTrainSequence; return ; }\r\n },\r\n {\r\n key: 'LocalCodeWorkSequence', name: 'Последовательность для Исторического кода системы', resizable: true, editable: true, width: 320, _type: 0, headerRenderer: CustomHeader,\r\n formatter(props) { const value = props.row.LocalCodeWorkSequence; return ; }\r\n },\r\n {\r\n key: 'StationDefaultId', name: 'Станция по умолчанию', resizable: true, editable: true, width: 150, _type: 0, headerRenderer: CustomHeader,\r\n formatter(props) { const value = props.row.StationDefaultId; return ; }\r\n },\r\n {\r\n key: 'TranspInstrHeaderSequence', name: 'Последовательность для транспортной инструкции', resizable: true, editable: true, width: 300, _type: 0, headerRenderer: CustomHeader,\r\n formatter(props) { const value = props.row.TranspInstrHeaderSequence; return ; }\r\n },\r\n {\r\n key: 'VersionXml', name: 'Версия xml', resizable: true, editable: true, width: 200, _type: 0, headerRenderer: CustomHeader,\r\n formatter(props) { const value = props.row.VersionXml; return ; }\r\n },\r\n {\r\n key: 'pred_account_id', name: 'Код предприятия', resizable: true, editable: true, width: 150, _type: 0, headerRenderer: CustomHeader,\r\n formatter(props) { const value = props.row.pred_account_id; return ; }\r\n },\r\n]\r\n\r\nexport const columnsFilter = [\r\n { key: 'WorksCode', name: 'Ключ завода', _typecolumn: null, _picklist: null, _typedata: 1, _filterval: \"\", },\r\n { key: 'WorksName', name: 'Краткое наименование завода', _typecolumn : null, _picklist : null, _typedata : 4, _filterval: \"\", },\r\n { key: 'WorksNameLong', name: 'Полное наименование завода', _typecolumn : null, _picklist : null, _typedata : 4, _filterval: \"\", },\r\n { key: 'WorksCodeSap', name: 'Код завода САП', _typecolumn: null, _picklist: null, _typedata: 1, _filterval: \"\", },\r\n { key: 'WorksCodeGd', name: 'Код ЖД', _typecolumn : null, _picklist : null, _typedata : 1, _filterval: \"\", },\r\n { key: 'AgentId', name: 'Идентификатор контрагентов', _typecolumn: null, _picklist: null, _typedata: 1, _filterval: \"\", },\r\n { key: 'Priz', name: 'Признак удаления', _typecolumn: null, _picklist: null, _typedata: 1, _filterval: \"\", },\r\n { key: 'OutUzKvitSequence', name: 'Последовательность для исходящих накладных', _typecolumn: null, _picklist: null, _typedata: 4, _filterval: \"\", },\r\n { key: 'WeightTrainSequence', name: 'Последовательность для провески состава', _typecolumn: null, _picklist: null, _typedata: 4, _filterval: \"\", },\r\n { key: 'LocalCodeWorkSequence', name: 'Последовательность для Исторического кода системы', _typecolumn: null, _picklist: null, _typedata: 4, _filterval: \"\", }, \r\n { key: 'StationDefaultId', name: 'Станция по умолчанию', _typecolumn: null, _picklist: null, _typedata: 1, _filterval: \"\", },\r\n { key: 'TranspInstrHeaderSequence', name: 'Последовательность для транспортной инструкции', _typecolumn : null, _picklist : null, _typedata : 1, _filterval: \"\", },\r\n { key: 'VersionXml', name: 'Версия xml', _typecolumn: null, _picklist: null, _typedata: 1, _filterval: \"\", },\r\n { key: 'pred_account_id', name: 'Код предприятия', _typecolumn : null, _picklist : null, _typedata : 4, _filterval: \"\", },\r\n ]\r\n \r\nexport const columnsMainDataOLD = [\r\n { key: 'vidp', name: 'Т',frozen : true,resizable: false,width:30,maxWidth:30,_type:0,headerRenderer: CustomHeader },\r\n {\r\n key: 'taskp', name: 'Задача', resizable: true, frozen: true, editable: false, width: 570, _type: 0,\r\n headerRenderer: CustomHeader,\r\n summaryFormatter() { return Итого; },\r\n formatter(props) { const value = props.row.taskp; return ; }\r\n },\r\n {\r\n key: 'datan', name: 'Начало', resizable: true, editable: false, width: 120, _type: 0, headerRenderer: CustomHeader,\r\n formatter(props) { const val = props.row.datan;\r\n return ;\r\n }\r\n },\r\n {\r\n key: 'datak', name: 'Конец', resizable: true, editable: false, width: 120, _type: 0, headerRenderer: CustomHeader,\r\n formatter(props) { const val = props.row.datak;\r\n return ;\r\n }\r\n },\r\n { key: 'planh', name: 'План,ч.',resizable: true,editable: false,width:60,maxWidth:60,_type:0,headerRenderer: CustomHeader ,\r\n summaryFormatter({ row }) { return },\r\n formatter(props) { const value = props.row.planh; return ; }\r\n },\r\n { key: 'facth', name: 'Факт,ч.', resizable: true, editable: false, width: 60,maxWidth:60, _type: 1, headerRenderer: CustomHeader,\r\n summaryFormatter({ row }) { return },\r\n formatter(props) { const value = props.row.facth; return ; }\r\n },\r\n { key: 'done', name: 'Вып.',resizable: true,editable: false,width:40,maxWidth:40,_type:0,headerRenderer: CustomHeader,\r\n summaryFormatter({ row }) { return },\r\n formatter(props) { const value = props.row.done; return ; }\r\n },\r\n { key: 'd01', name: '1', resizable: false, editable: true, width: lday,maxWidth:lday, _type: 1,headerRenderer: CustomHeader,\r\n summaryFormatter({ row }) { return },\r\n formatter(props) { const value = props.row.d01; return ; }\r\n },\r\n]\r\n\r\nexport const columnsAppTasks = [\r\n { key: 'application_id', name: 'App_id',resizable: true,editable: false,width:120 },\r\n { key: 'Name', name: 'Наименование проекта',resizable: true,editable: false,width:600 },\r\n { key: 'Mnem', name: 'Мнемоника',resizable: true,editable: true},\r\n /* { key: 'Author', name: 'Автор',resizable: true,editable: true,width:240 },\r\n { key: 'Version', name: 'Версия',resizable: true,editable: true,width:70 },\r\n { key: 'Date_creation', name: 'Дата создания',resizable: true,editable: true,width:140 },\r\n { key: 'Date_update', name: 'Дата последнего обновления',resizable: true,editable: true,width:140 },*/\r\n]\r\n\r\nexport const columnsUsersAccess = [\r\n { key: 'Group_id', name: 'Ключ',resizable: true,width:140 },\r\n { key: 'Sam_name', name: 'Название в системе AD',resizable: true,editable: false,width:250 },\r\n { key: 'Group_dn', name: 'Идентификатор в системе AD',resizable: true,editable: false,width:220 },\r\n { key: 'It_group_id', name: 'Группа ИТ',resizable: true,editable: false,width:220 },\r\n { key: 'Group_Note', name: 'Описание в группе',resizable: true,editable: false,width:220 },\r\n]\r\n\r\nexport const columnsElementsList = [\r\n { key: 'application_id', name: 'Ключ',resizable: true,width:140 },\r\n { key: 'Tree_name', name: 'Название элемента меню',resizable: true,width:250 },\r\n { key: 'Parent_tree_name', name: 'Название родительского элемента меню',resizable: true },\r\n { key: 'Name', name: 'Доступ',resizable: true },\r\n]\r\n\r\n","import React, { Fragment } from \"react\";\r\nimport * as R from 'ramda'\r\n\r\nexport const thisMock = window.location.origin == \"http://localhost:3000\" ? true : false;\r\n//export const thisMock = true;\r\nexport const thisPost = true \r\n\r\nexport const BaseAddress = ((window.location.hostname != 'localhost') && (R.startsWith('/react-template-u', window.location.pathname))) \r\n? window.location.origin + window.location.pathname.substring(0, window.location.pathname.indexOf(\"/\", 2)) \r\n: window.location.origin\r\n\r\n\r\nexport let apiDataUIUrl = `` //${window.location.origin}/global-ui-service/api/values/GetUniversalUi/`\r\n\r\nif (!R.contains(\"localhost\", window.location.host))\r\n apiDataUIUrl = `${window.location.origin}/global-ui-service/api/values/GetUniversalUi/`\r\n\r\nexport const apiDataUrl = `${BaseAddress}/api/values/GetMainData/`\r\nexport const apiSaveUrl = `${BaseAddress}/api/values/SaveData/`\r\n\r\n\r\nexport const MESS_TO_SAVE = 'Сохранение успешно !'\r\n\r\nexport const SHOW_TOOL_BAR = true\r\nexport const SHOW_LEFT_SIDE_BAR = false\r\nexport const SHOW_FOOTHER = false\r\n\r\n\r\n","export const main_data =\r\n{\r\n \"datamain\": [\r\n {\r\n 'ID': 1,\r\n 'WorksCode': 2300,\r\n 'WorksName': 'ЧАО ДКХЗ',\r\n 'WorksNameLong': 'Частное Акционерное Общество \"Днепровский коксохимический завод\" ',\r\n 'WorksCodeSap': '2300',\r\n 'WorksCodeGd': '3168',\r\n 'AgentId': 4,\r\n 'Priz': 0,\r\n 'OutUzKvitSequence': 'OutUzKvitDkhz',\r\n 'WeightTrainSequence': '',\r\n 'LocalCodeWorkSequence': '',\r\n 'StationDefaultId': 1,\r\n 'TranspInstrHeaderSequence': '',\r\n 'VersionXml': '',\r\n 'pred_account_id': '44'\r\n },\r\n {\r\n 'ID': 2,\r\n 'WorksCode': 2200,\r\n 'WorksName': 'ЧАО ЗКХЗ',\r\n 'WorksNameLong': 'Частное Акционерное Общество \"Запорожкокс\"',\r\n 'WorksCodeSap': '2200',\r\n 'WorksCodeGd': '3857',\r\n 'AgentId': 47,\r\n 'Priz': 1,\r\n 'OutUzKvitSequence': 'OutUzKvitZkhz',\r\n 'WeightTrainSequence': '',\r\n 'LocalCodeWorkSequence': '',\r\n 'StationDefaultId': 2,\r\n 'TranspInstrHeaderSequence': '',\r\n 'VersionXml': '',\r\n 'pred_account_id': ''\r\n },\r\n {\r\n 'ID': 3,\r\n 'WorksCode': 1500,\r\n 'WorksName': 'ЧАО МК Азовсталь',\r\n 'WorksNameLong': 'Частное Акционерное Общество \"Металлургический комбинат Азовсталь\"',\r\n 'WorksCodeSap': '2200',\r\n 'WorksCodeGd': '3168',\r\n 'AgentId': 1561,\r\n 'Priz': 0,\r\n 'OutUzKvitSequence': 'OutUzKvitAvs',\r\n 'WeightTrainSequence': '',\r\n 'LocalCodeWorkSequence': '',\r\n 'StationDefaultId': 3,\r\n 'TranspInstrHeaderSequence': '',\r\n 'VersionXml': '',\r\n 'pred_account_id': ''\r\n },\r\n ],\r\n \"is_error\": 0,\r\n \"error_text\": \"Ошибка при получении данных \",\r\n \"user_message_text\": \"\"\r\n}\r\nexport const main_data_row_empty =\r\n{\r\n 'ID': null,\r\n 'WorksCode': null,\r\n 'WorksName': '',\r\n 'WorksNameLong': '',\r\n 'WorksCodeSap': '',\r\n 'WorksCodeGd': '',\r\n 'AgentId': null,\r\n 'Priz': null,\r\n 'OutUzKvitSequence': '',\r\n 'WeightTrainSequence': '',\r\n 'LocalCodeWorkSequence': '',\r\n 'StationDefaultId': null,\r\n 'TranspInstrHeaderSequence': '',\r\n 'VersionXml': '',\r\n 'pred_account_id': ''\r\n}\r\n\r\nexport const main_data_empty =\r\n{\r\n \"datamain\": [\r\n ],\r\n \"is_error\": 1,\r\n \"error_text\": \"Ошибка при обращении к методу сервера\",\r\n \"user_message_text\": \"\"\r\n\r\n}\r\n\r\n","import React, { useState, Fragment, useEffect } from \"react\"\r\nimport SvgIcon from '@material-ui/core/SvgIcon';\r\n\r\nimport * as api from '../../api/apiFunc' \r\nimport * as R from 'ramda'\r\n\r\nconst ListIcons = ({ icons, iconsapp, access, handleOnClick, nodiv,classnam, dopargs, filtered }) => {\r\n const [txtval, Settxtval] = useState(\"\");\r\n const handleChange = e => {\r\n let val = e.target.value\r\n }\r\n const ParseSvgFilePath = (svgfile) => {\r\n const arr = svgfile.split('>')\r\n const path = arr[1].slice(9, -2)\r\n //на скорую руку потом делать\r\n return {d:path}\r\n }\r\n\r\n const PrepareIcon = (id) => {\r\n const iconfile = R.find(R.propEq('ui_app_icon_id', id))(iconsapp)\r\n if (!api.isEmpty(iconfile)) {\r\n const icontype = iconfile.ui_app_icon_file.indexOf('svg') == -1 ? 'JPEG' : 'SVG' // R.find(R.propEq('ui_app_icon_type_id', iconfile.ui_app_icon_type_id))(iconstype)\r\n if (!api.isEmpty(icontype)) {\r\n if (icontype == 'SVG') {\r\n const svgpath = ParseSvgFilePath(iconfile.ui_app_icon_file)\r\n return (\r\n {\r\n id, type: icontype, file: svgpath,\r\n style: { \"float\": \"left\", \"fontSize\": 24, \"color\": \"#6e767d\" }\r\n })\r\n }\r\n else { \r\n const file = `data:image/jpeg;base64,${iconfile.ui_app_icon_file}`\r\n return (\r\n {\r\n id, type: icontype, file,\r\n style: { \"float\": \"left\", \"fontSize\": 24, \"color\": \"#6e767d\" }\r\n })\r\n }\r\n }\r\n }\r\n }\r\n const OneIcon = (props) => {\r\n const iconapp = R.find(R.propEq('ui_app_icon_id', props.id))(iconsapp)\r\n const useraccess = access[iconapp.ui_app_icon_mnem] \r\n if (useraccess == -1) return null\r\n let accessstyle = (useraccess == 0 ? { opacity: '0.4' } : {})\r\n if (props.id == 20) accessstyle = {...accessstyle, color: 'red'}\r\n const title = (api.isNotEmptyArr(props.title) ? props.title[useraccess] : props.title)\r\n const icon = PrepareIcon(props.id)\r\n if (icon.type == 'SVG') {\r\n if (nodiv) {\r\n return ( (useraccess != 0 ? handleOnClick(props.id) : null)}>\r\n {/*iconapp.path.map(icon => )*/}\r\n \r\n )\r\n }\r\n return (
(useraccess != 0 ? handleOnClick(props.id,dopargs) : null)}>\r\n {/*iconapp.path.map(icon => )*/}\r\n \r\n
)\r\n }\r\n else {\r\n if (nodiv) {\r\n return (\r\n
\r\n )\r\n }\r\n return (\r\n
\r\n )\r\n }\r\n }\r\n \r\n \r\n if (!icons) return null \r\n return (\r\n \r\n {icons.sort((a, b) => a.order - b.order).map((el) => {\r\n const iconapp = R.find(R.propEq('ui_app_icon_id', el.id))(iconsapp) \r\n if (iconapp && (iconapp.ui_app_icon_mnem == \"save\" || iconapp.ui_app_icon_mnem == \"add\" || iconapp.ui_app_icon_mnem == (filtered == true ? \"filter\" : \"filteroff\")\r\n || iconapp.ui_app_icon_mnem == \"delete\"\r\n || iconapp.ui_app_icon_mnem==\"search\" || iconapp.ui_app_icon_mnem==\"apps\" ))\r\n return \r\n }\r\n )}\r\n \r\n );\r\n}\r\n\r\nexport default ListIcons","import React,{ useEffect, useState } from 'react'\r\nimport '../App.css'\r\nimport {BaseAddress} from '../projConst'\r\nimport ListIcons from '../Components/Lib/ListIcons';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport * as api from \"../api/apiFunc\";\r\nimport * as R from 'ramda'\r\n\r\nconst useStyles = makeStyles( theme => ({ \r\n root: {\r\n display: 'flex',\r\n textAlign: 'left',\r\n backgroundColor: '#3f51b5',\r\n height: '40px',\r\n width: '100%'\r\n },\r\n content: {\r\n paddingLeft: theme.spacing.unit*3,\r\n },\r\n title: {\r\n // paddingLeft: theme.spacing.unit*3,\r\n textAlign: 'left',\r\n color : '#000',\r\n backgroundColor : '#d9d9d9',\r\n fontSize: '75%',\r\n },\r\n}));\r\n\r\nconst ShowAppHeader = (props) => {\r\n const classes = useStyles()\r\n const { config } = props\r\n const [curBlock, SetCurBlock] = useState([])\r\n const [iconsApp, SetIconsApp] = useState([])\r\n\r\n\r\n useEffect(() => {\r\n if (api.isEmpty(config.configApp)) return\r\n //console.log('config.configApp',config.configApp);\r\n SetCurBlock(R.find(R.propEq(\"block\", config.name))(config.configApp)) \r\n SetIconsApp(config.iconsApp) \r\n }, [config]);\r\n\r\n const headerClick = (id) => alert(`Реализация в проекте ${id} !`)\r\n\r\n const ComputedAccess = () => {\r\n const { config, iconsapp } = props\r\n if (!api.isNotEmptyArr(config.iconsApp)) return {}\r\n let access = {} \r\n config.iconsApp.map((icon) => { \r\n const iconapp = R.find(R.propEq('ui_app_icon_id', icon.ui_app_icon_id))(config.iconsApp)\r\n switch (iconapp.ui_app_icon_mnem) { \r\n case \"apps\": access = {...access, [iconapp.ui_app_icon_mnem]: 0 }\r\n break\r\n }\r\n }) \r\n return access \r\n }\r\n \r\n const access = ComputedAccess()\r\n\r\n\r\n const ShowViewmode = () => {\r\n const {viewmode} = props\r\n //console.log('viewmode',viewmode);\r\n return ()\r\n }\r\n \r\n return (\r\n
\r\n
\r\n {curBlock.children && curBlock.children[0] &&\r\n }\r\n {props.nameNsi} {/*{props.title}*/}\r\n \r\n
\r\n
\r\n

\r\n
\r\n
\r\n
\r\n {curBlock.children && curBlock.children[2] &&\r\n } \r\n
\r\n
\r\n )\r\n}\r\nexport default ShowAppHeader","import React, { useEffect,useState } from 'react';\r\nimport '../App.css';\r\nimport ListIcons from '../Components/Lib/ListIcons';\r\nimport * as R from 'ramda'\r\nimport * as api from \"../api/apiFunc\";\r\n\r\n//import {fetchDict,fetchColu} from './Actions/actions'\r\n\r\nconst ShowAppToolbar = (props) => {\r\n const { config } = props\r\n const [curBlock, SetCurBlock] = useState([])\r\n const [iconsApp, SetIconsApp] = useState([])\r\n const [inputVal, SetInputVal] = useState('')\r\n \r\n useEffect(() => {\r\n if (api.isEmpty(config.configApp)) return\r\n //console.log('config.configApp',config.configApp);\r\n SetCurBlock(R.find(R.propEq(\"block\", config.name))(config.configApp)) \r\n SetIconsApp(config.iconsApp) \r\n }, [config]);\r\n\r\n const ComputedAccess = () => {\r\n if (api.isEmpty(config.configApp)) return []\r\n let curBlock = R.find(R.propEq(\"block\", config.name))(config.configApp)\r\n if (!(!api.isEmpty(curBlock) && !api.isEmpty(curBlock.children[0]))) return [] \r\n // if (!api.isNotEmptyArr(curBlock) || !api.isNotEmptyArr(curBlock.children[0])) return [] \r\n let access = {} \r\n curBlock.children[0].icons.map((icon) => {\r\n const iconapp = R.find(R.propEq('ui_app_icon_id', icon.id))(config.iconsApp)\r\n switch (iconapp.ui_app_icon_mnem) {\r\n case \"refresh\": access = {...access, [iconapp.ui_app_icon_mnem]: 1 }\r\n break\r\n case \"save\": access = {...access, [iconapp.ui_app_icon_mnem]: 1 }\r\n break\r\n case \"add\": access = {...access, [iconapp.ui_app_icon_mnem]: 1 }\r\n break\r\n //case \"copy\": access = {...access, [iconapp.ui_app_icon_mnem]: -1 }\r\n //break\r\n //case \"edit\": access = {...access, [iconapp.ui_app_icon_mnem]: 1 }\r\n //break\r\n case \"filter\": access = {...access, [iconapp.ui_app_icon_mnem]: 1 }\r\n break\r\n case \"filteroff\": access = {...access, [iconapp.ui_app_icon_mnem]: 1 }\r\n break\r\n //case \"print\": access = {...access, [iconapp.ui_app_icon_mnem]: 1 }\r\n //break\r\n case \"delete\": access = {...access, [iconapp.ui_app_icon_mnem]: 1 }\r\n break\r\n }\r\n })\r\n return access \r\n }\r\n\r\n const ShowFilter = () => {\r\n const { pick,mainfilter} = props\r\n if (api.isEmpty(mainfilter) || !api.isNotEmptyArr(pick))\r\n return null\r\n let curPeriod = null\r\n let curUser = null\r\n let curVidp = null\r\n\r\n const curUsers = R.find(R.propEq('name', 'Users'))(pick).rows \r\n const User = R.find(R.propEq('pkid', mainfilter.user_id))(curUsers)\r\n \r\n const curVidps = R.find(R.propEq('name', 'Vidp'))(pick).rows \r\n const Vidp = R.find(R.propEq('pkid', mainfilter.category_id))(curVidps)\r\n\r\n if (!api.isEmpty(User)) curUser = `ФИО = ${User.title}`\r\n if (!api.isEmpty(Vidp)) curVidp = `Тип = ${Vidp.title}`\r\n if (typeof mainfilter.period === \"string\") {\r\n const curDate = new Date(mainfilter.period + '-01')\r\n curPeriod = `Период = ${curDate.toLocaleDateString(\"ru-RU\", { month: 'long' })} ${curDate.toLocaleDateString(\"ru-RU\", { year: 'numeric' })}`\r\n }\r\n \r\n const cstyle = {margin: '2px 10px',padding: '2px', width: '30%', border: '1px solid rgba(0,0,0,0.5)',borderRadius:'5px',color : '#000', backgroundColor :'#faf5c5'}\r\n const iconapp = R.find(R.propEq('name', 'search'))(config.iconsApp)\r\n return (
\r\n {curVidp &&
{curVidp}
}\r\n {curPeriod &&
{curPeriod}
}\r\n {curUser &&
{curUser}
}\r\n
)\r\n }\r\n\r\n const FindB = () => {\r\n //if (!curBlock || !api.isNotEmptyArr(curBlock.children)) return null\r\n \r\n const iconapp = R.find(R.propEq('name', 'search'))(config.iconsApp)\r\n return (
\r\n
\r\n {SetInputVal(e.target.value) }/* props.handleFilterUpdated*/}\r\n />\r\n {curBlock.children && curBlock.children[1] &&\r\n } \r\n \r\n
)\r\n }\r\n const access = ComputedAccess() \r\n\r\n const IconMenuClick = (id) => {\r\n const iconapp = R.find(R.propEq('ui_app_icon_id', id))(iconsApp)\r\n console.log('id ==== ',id);\r\n switch (iconapp.ui_app_icon_mnem) {\r\n case \"refresh\": alert('refresh') ; break;\r\n case \"save\": props.onSaveData(); /*props.onSaveData();*/ break;\r\n case \"add\": props.onInsertRow(); break;\r\n case \"copy\": alert('copy'); break;\r\n case \"edit\": alert('edit'); break;\r\n case \"filter\": props.onColumnFilter(); break;\r\n case \"filteroff\": props.onColumnFilter(); break;\r\n case \"print\": alert('print'); break;\r\n case \"delete\": props.onDeleteRow(); break;\r\n }\r\n }\r\n if (api.isEmpty(config.configApp)) return\r\n let cur_Block = R.find(R.propEq(\"block\", config.name))(config.configApp)\r\n if (!api.isNotEmptyArr(cur_Block.children) || !api.isNotEmptyArr(iconsApp)) return null \r\n \r\n return (\r\n
\r\n
\r\n
\r\n
\r\n {cur_Block.children && cur_Block.children[0] &&\r\n } \r\n
\r\n
\r\n {ShowFilter()}\r\n
\r\n
\r\n {FindB()}\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n );\r\n}\r\n \r\nexport default ShowAppToolbar\r\n","import { useState, useMemo } from \"react\";\r\nimport \"../App.css\";\r\nimport { BaseAddress } from \"../projConst\";\r\nimport AppBar from \"@material-ui/core/AppBar\";\r\nimport Toolbar from \"@material-ui/core/Toolbar\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport ReportIcon from \"@material-ui/icons/Report\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport { width } from \"@material-ui/system\";\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n display: \"flex\",\r\n textAlign: \"left\",\r\n backgroundColor: \"#3f51b5\",\r\n height: \"40px\",\r\n width: \"100%\"\r\n },\r\n content: {\r\n paddingLeft: theme.spacing.unit * 3\r\n },\r\n title: {\r\n // paddingLeft: theme.spacing.unit*3,\r\n textAlign: \"left\",\r\n color: \"#000\",\r\n backgroundColor: \"#d9d9d9\",\r\n fontSize: \"75%\"\r\n }\r\n}));\r\n\r\nconst ShowAppFooter = props => {\r\n const classes = useStyles();\r\n\r\n const ShowViewmode = () => {\r\n const { viewmode } = props;\r\n //console.log('viewmode',viewmode);\r\n return ;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {/*props.config.children && props.config.children[0] &&\r\n */}\r\n \r\n {props.nameNsi}{\" \"}\r\n {/*{props.title}*/}\r\n \r\n
\r\n
\r\n

\r\n
\r\n
\r\n
\r\n {/*props.config.children && props.config.children[2] &&\r\n */}\r\n
\r\n
\r\n );\r\n};\r\nexport default ShowAppFooter;\r\n","import React, { Component , Fragment} from 'react';\r\n\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport Select from 'react-select';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport NoSsr from '@material-ui/core/NoSsr';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Chip from '@material-ui/core/Chip';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport CancelIcon from '@material-ui/icons/Cancel';\r\nimport { emphasize } from '@material-ui/core/styles/colorManipulator';\r\nimport * as api from '../../api/apiFunc' \r\n\r\nconst styles = theme => ({\r\n root: {\r\n flexGrow: 1,\r\n height: 250,\r\n },\r\n input: {\r\n display: 'flex',\r\n paddingBottom: 20 ,\r\n },\r\n valueContainer: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n flex: 1,\r\n height: 40,\r\n alignItems: 'center',\r\n overflow: 'hidden',\r\n },\r\n chip: {\r\n margin: `${theme.spacing.unit / 2}px ${theme.spacing.unit / 4}px`,\r\n },\r\n chipFocused: {\r\n backgroundColor: emphasize(\r\n theme.palette.type === 'light' ? theme.palette.grey[300] : theme.palette.grey[700],\r\n 0.08,\r\n ),\r\n },\r\n noOptionsMessage: {\r\n padding: `${theme.spacing.unit}px ${theme.spacing.unit * 2}px`,\r\n },\r\n singleValue: {\r\n fontSize: 16,\r\n },\r\n placeholder: {\r\n position: 'absolute',\r\n left: 2,\r\n fontSize: 16,\r\n },\r\n paper: {\r\n position: 'absolute',\r\n zIndex: 1,\r\n marginTop: theme.spacing.unit,\r\n left: 0,\r\n right: 0,\r\n },\r\n divider: {\r\n height: theme.spacing.unit * 2,\r\n },\r\n});\r\n\r\nfunction NoOptionsMessage(props) {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n\r\nfunction inputComponent({ inputRef, ...props }) {\r\n return
;\r\n}\r\n\r\nfunction Control(props) {\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction Option(props) {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n\r\nfunction Placeholder(props) {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n\r\nfunction SingleValue(props) {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n\r\nfunction ValueContainer(props) {\r\n return
{props.children}
;\r\n}\r\n\r\nfunction Menu(props) {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n\r\nconst components = {\r\n Control,\r\n Menu,\r\n NoOptionsMessage,\r\n Option,\r\n Placeholder,\r\n SingleValue,\r\n ValueContainer,\r\n};\r\n\r\nclass SelectDataList extends Component {\r\n\r\n handleChange = val => {\r\n //console.log('val',val.value);\r\n if (!val || val.value == null) return\r\n this.props.onHandleChange(this.props.selName,val) \r\n //this.setState({[name]: value,});\r\n };\r\n\r\n render() {\r\n const { classes, theme } = this.props;\r\n\r\n const selectStyles = {\r\n input: base => ({\r\n ...base,\r\n color: theme.palette.text.primary,\r\n '& input': {\r\n font: 'inherit',\r\n },\r\n }),\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nSelectDataList.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n theme: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default withStyles(styles, { withTheme: true })(SelectDataList);","import React, { useState ,useEffect, useContext} from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport '../App.css'\r\nimport * as R from 'ramda'\r\nimport * as api from \"../api/apiFunc\";\r\nimport ListIcons from '../Components/Lib/ListIcons';\r\n\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SelectDataList from \"./Lib/SelectDataList\";\r\n\r\nconst useStyles = makeStyles( theme => ({ \r\n root: {\r\n margin: theme.spacing.unit*2,\r\n textAlign: 'left',\r\n },\r\n textList: {\r\n marginTop: theme.spacing.unit*0.5, \r\n color : '#000',\r\n backgroundColor: '#fff',\r\n width: '100%',\r\n height: '75%',\r\n fontSize: '85%',\r\n borderWidth: 1,\r\n borderColor: '#fff',\r\n borderStyle: 'solid',\r\n borderRadius: '3%',\r\n boxShadow: '2px 2px 2px rgba(0, 0, 0, 0.25);'\r\n},\r\ntextListNew: {\r\n marginTop: -theme.spacing.unit, \r\n marginBottom: theme.spacing.unit*1, \r\n color : 'gold',\r\n width: '95%',\r\n hight: '70%',\r\n fontSize: '80%',\r\n},\r\ntextListNewSmall: {\r\n marginTop: -theme.spacing.unit, \r\n marginBottom: theme.spacing.unit*1, \r\n color : 'red',\r\n width: '95%',\r\n hight: '70%',\r\n fontSize: '80%',\r\n},\r\ntextListNm: {\r\n marginTop: theme.spacing.unit*0.5, \r\n //marginLeft: theme.spacing.unit*0.1, \r\n color : 'green',\r\n width: '65%',\r\n fontSize: '90%',\r\n borderWidth: 1,\r\n borderColor: '#ffaad5',\r\n borderStyle: 'solid',\r\n borderRadius: '5%'\r\n},\r\ntextField: {\r\n width: '100%',\r\n //height: '100%',\r\n height: '2.1476em',\r\n marginBottom: '6px'\r\n},\r\ntextField2: {\r\n width: '100%',\r\n height: '100%',\r\n},\r\ninput: {\r\n display: 'flex',\r\n padding: 0,\r\n marginTop: 1,\r\n color : '#000',\r\n height: '90%',\r\n backgroundColor: '#fff',\r\n fontSize: '90%',\r\n borderWidth: 1,\r\n borderColor: '#fff',\r\n borderStyle: 'solid',\r\n borderRadius: '3%',\r\n boxShadow: '2px 2px 2px rgba(0, 0, 0, 0.25)'\r\n },\r\n valueContainer: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n flex: 1,\r\n alignItems: 'center',\r\n overflow: 'hidden',\r\n }, \r\n}));\r\n\r\n\r\nconst ShowAppSidebar = (props) => {\r\n \r\n const classes = useStyles()\r\n const { config } = props\r\n const [curBlock, SetCurBlock] = useState([])\r\n const [iconsApp, SetIconsApp] = useState([])\r\n \r\n useEffect(() => {\r\n if (api.isEmpty(config.configApp)) return\r\n //console.log('config.configApp',config.configApp);\r\n SetCurBlock(R.find(R.propEq(\"block\", config.name))(config.configApp)) \r\n SetIconsApp(config.iconsApp) \r\n }, [config]);\r\n \r\n const ComputedAccess = () => {\r\n const {config,iconsapp} = this.props \r\n if (!api.isNotEmptyArr(config.iconsapps)) return {} \r\n let access = {} \r\n config.iconsapps.map((icon) => {\r\n const iconapp = R.find(R.propEq('id', icon.id))(iconsapp)\r\n switch (iconapp.name) {\r\n case \"apps\": access = {...access, [iconapp.name]: 1 }\r\n break\r\n }\r\n })\r\n return access \r\n }\r\n \r\n return(\r\n
\r\n
\r\n

SideBar

\r\n
\r\n
\r\n {{}} />}\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default ShowAppSidebar;\r\n\r\n","import React, { Component } from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport PropTypes from 'prop-types';\r\nimport * as R from 'ramda'\r\n\r\nclass FormaterPick extends Component {\r\n /*static propTypes = {\r\n value: PropTypes.string||PropTypes.number\r\n };*/\r\n constructor(props) {\r\n super(props);\r\n let viewValue = this.props.value\r\n let mPick = this.props.Pick\r\n //console.log('this.props.Pick-----',mPick);\r\n //console.log('this.props.value-----',viewValue);\r\n try {\r\n if (this.props.Pick)\r\n viewValue = mPick[viewValue-1]['title']\r\n else\r\n viewValue = this.props.value\r\n }\r\n catch(e)\r\n {\r\n viewValue = this.props.value\r\n }\r\n // console.log('viewValue------',viewValue); \r\n this.state = {\r\n curvalue: viewValue\r\n }\r\n this.handleChange = this.handleChange.bind(this);\r\n }\r\n\r\n shouldComponentUpdate(nextProps) {\r\n return nextProps.value !== this.props.value;\r\n }\r\n\r\n handleChange = date => \r\n this.setState({\r\n startDate: date\r\n });\r\n \r\n\r\n render() { \r\n let viewValue = this.props.value\r\n let mPick = this.props.Pick\r\n try {\r\n if (this.props.Pick){\r\n let rowPick = R.find(R.propEq('pkid', viewValue))(this.props.Pick) \r\n if (rowPick)\r\n viewValue = rowPick['title']\r\n }\r\n else\r\n viewValue = this.props.value\r\n }\r\n catch(e)\r\n {\r\n viewValue = this.props.value\r\n }\r\n // return
{this.state.curvalue}
;\r\n return
{viewValue}
;\r\n }\r\n }\r\n\r\n export default FormaterPick; ","import React, { useEffect, useState, useCallback, useMemo } from \"react\";\r\nimport ReactDOM from 'react-dom';\r\nimport \"../../App.css\";\r\nimport {makeStyles } from \"@material-ui/core/styles\";\r\nimport FormaterDate from '../Formaters/FormaterDate';\r\n//import DateEditorMask from './DateEditorMask'\r\nimport FormaterString from '../Formaters/FormaterString';\r\nimport FormaterPick from '../Formaters/FormaterPick';\r\nimport FormaterColorFact from '../Formaters/FormaterColorFact';\r\nimport FormaterColorWeek from '../Formaters/FormaterColorWeek';\r\nimport DataGrid, { SelectColumn, TextEditor, SelectCellFormatter } from 'react-data-grid';\r\n//import { css } from '@linaria/core';\r\nimport * as R from 'ramda'\r\nimport * as api from '../../api/apiFunc' \r\n\r\nfunction EmptyRowsRenderer() {\r\n return (\r\n
\r\n Нет данных\r\n
\r\n );\r\n}\r\nfunction createRows(data,totalrow,_columns,_PkFieldName) {\r\n const now = Date.now();\r\n let rows = [];\r\n if (api.isNotEmptyArr(data))\r\n rows = [...data, totalrow]\r\n else\r\n rows = data\r\n\r\n rows = rows.reduce((res, row) => {\r\n let rowKeys = R.keys(row);\r\n let yy = 0 \r\n rowKeys.map(n=>{\r\n let col = R.find(R.propEq('key', n))(_columns)\r\n if (!api.isEmpty(col)) {\r\n if (col._type === 1) {\r\n if (!row['isTotalRow']) {\r\n if (typeof row[n] == \"string\" && row[n].indexOf('$') == -1) {\r\n row[n] = row['datan'] + '#' + row['planh'] + '$' + row[n]\r\n }\r\n else {\r\n if (!(row[n] && row[n].toString().indexOf('$') !== -1)) {\r\n if (row[_PkFieldName])\r\n row[n] = row['datan'] + '#' + row['planh'] + '#0' + '$' + row[n]\r\n else\r\n row[n] = `${yy}$-`\r\n }\r\n }\r\n }\r\n else {\r\n if (typeof row[n] == \"string\" && row[n].indexOf('$') == -1) {\r\n row[n] = \"0#\"+ row['planh'] + '#1' + '$' + row[n]\r\n }\r\n else {\r\n if (!(row[n] && row[n].toString().indexOf('$') !== -1)) {\r\n row[n] = \"0#\"+row['planh']+ '#1' + '$' + row[n]\r\n }\r\n }\r\n }\r\n }\r\n }\r\n })\r\n yy++\r\n return [...res, row]\r\n },[])\r\n\r\n return rows;\r\n}\r\nfunction rowKeyGetter(row) {\r\n return row.id;\r\n}\r\n/*\r\nfunction SelectEditor(p) {\r\n return (\r\n onRowChange({ ...p.row, progress: e.target.valueAsNumber })}\r\n />\r\n\r\n p.onRowChange({ ...p.row, country: e.target.value }, true)}\r\n >\r\n {countries.map((country) => (\r\n \r\n ))}\r\n \r\n )\r\n}\r\n*/\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n display: \"flex\",\r\n textAlign: \"left\",\r\n backgroundColor: \"#3f51b5\",\r\n height: \"40px\",\r\n width: \"100%\"\r\n },\r\n content: {\r\n paddingLeft: theme.spacing.unit * 3\r\n },\r\n}));\r\nconst ShowGrid = props => {\r\n const classes = useStyles();\r\n const { data,totalrow, PrimaryId, myfiolist, columnsgrid } = props;\r\n //const [rows, setRows] = useState([]);\r\n const [selectedRows, setSelectedRows] = useState(() => new Set());\r\n const [currow, Setcurrow] = useState(0);\r\n /* useEffect(() => {\r\n if (api.isNotEmptyArr(data))\r\n setRows(data);\r\n }, [data]);\r\n useEffect(() => {\r\n console.log('rows ==',rows);\r\n }, [rows]); */\r\n useEffect(() => {\r\n let node = document.getElementById(\"datagrid\");\r\n let canvas = ReactDOM.findDOMNode(node);\r\n canvas.addEventListener('keydown', keyListenerDown);\r\n canvas.addEventListener('keyup', keyListenerUp);\r\n return () => {\r\n canvas.removeEventListener('keydown', keyListenerDown);\r\n canvas.removeEventListener('keyup', keyListenerUp);\r\n };\r\n }); \r\n \r\n const keyListenerDown = (e) => {\r\n if (e.key === \"ArrowDown\")\r\n {\r\n e.preventDefault();\r\n Setcurrow(currow + 1)\r\n //console.log('currow = ', currow + 1);\r\n props.onCurRow(_rows[currow+1])\r\n }\r\n };\r\n\r\n const keyListenerUp = (e) => {\r\n if (e.key === \"ArrowUp\")\r\n {\r\n e.preventDefault();\r\n Setcurrow(currow - 1)\r\n //console.log('currow = ', currow-1);\r\n props.onCurRow(_rows[currow-1])\r\n }\r\n };\r\n\r\n const summaryRows = useMemo(() => {\r\n const summaryRow = totalrow\r\n return [summaryRow];\r\n }, [totalrow]);\r\n\r\n //if (!api.isNotEmptyArr(data))\r\n // return null\r\n\r\n let _rows,_columns,_PkFieldName;\r\n _rows=data\r\n _columns = columnsgrid\r\n _PkFieldName = PrimaryId\r\n\r\n if (api.isNotEmptyArr(data))\r\n // _rows = [...data, totalrow]\r\n //else\r\n _rows = data \r\n \r\n let yy = 0\r\n\r\n _columns.map((data)=>{\r\n switch(data['key']) {\r\n case 'WorksCode': case 'WorksName': case 'WorksNameLong': case 'WorksCodeSap': case 'WorksCodeGd': case 'AgentId':\r\n case 'Priz': case 'OutUzKvitSequence': case 'WeightTrainSequence': case 'LocalCodeWorkSequence': case 'StationDefaultId': \r\n case 'TranspInstrHeaderSequence': case 'VersionXml' : case 'pred_account_id' :\r\n data.editor = TextEditor \r\n //data.editorOptions= {editOnClick: true}\r\n break \r\n }\r\n \r\n })\r\n let name_columns = _columns.map(elem=>elem.key)\r\n let filteredRows = _rows\r\n\r\n const rowsChange = (rows,change ) => {\r\n //console.log('rowsChangeData=', change);\r\n //column: {key: 'd06', name: '6', resizable: false, editable: true, width: 50, …}\r\n //indexes: [0]\r\n /*if (rows[change.indexes[0]].category_id == 6) \r\n {\r\n props.onHandleMess(\"Для этой колонки корректировка запрещена !\") \r\n return\r\n }*/\r\n let val=rows[change.indexes[0]][change.column.key]\r\n const currow = rows[change.indexes[0]] \r\n\r\n // if (!isNaN(parseFloat(val)) && !isNaN(val - 0)) {\r\n //console.log('n==', Number(n));\r\n // val = Number(val).toFixed(2)\r\n const updcol = change.column.key\r\n rows[change.indexes[0]][updcol] = val\r\n //if (updcol == 'WorksCode' && R.findIndex(R.propEq('WorksCode', Number(val)))(_rows) != -1) {\r\n // props.onMessage(\"Запись с таким кодом уже введена!\") \r\n // return \r\n // } \r\n const updrow = { [_PkFieldName]: rows[change.indexes[0]][_PkFieldName], updated: { [updcol]: val } }\r\n props.onHandleUpdateGrid(rows,currow,updrow) \r\n }\r\n const onRowClick = (row, column) => {\r\n let row_idx = R.findIndex(R.propEq('ID', row.ID))(_rows);\r\n Setcurrow(row_idx)\r\n //props.onCurRow(_rows[rowIdx], _rows.length) \r\n props.onCurRow(_rows[row_idx]) \r\n }\r\n \r\n const rowGetter = rowNumber => {\r\n let curRow = {...filteredRows[rowNumber]}\r\n return curRow\r\n }\r\n return (\r\n }\r\n //rowHeight={30}\r\n //minHeight={props.minHeight || 250}\r\n /*onSelectedRowsChange={setSelectedRows}\r\n sortColumns={sortColumns}\r\n onSortColumnsChange={setSortColumns}*/\r\n //summaryRows={summaryRows}\r\n className=\"fill-grid\"\r\n />\r\n );\r\n}\r\nexport default ShowGrid\r\n","import { useState, useMemo } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { css } from '@linaria/core';\r\nimport faker from 'faker';\r\nimport FormaterColorWeek from '../Formaters/FormaterColorWeek';\r\n\r\nimport DataGrid, { SelectColumn, TextEditor, SelectCellFormatter } from 'react-data-grid';\r\nimport type { Column, SortColumn } from 'react-data-grid';\r\n//import { stopPropagation } from 'react-data-grid/utils';\r\n//import { exportToCsv, exportToXlsx, exportToPdf } from 'react-data-grid/exportUtils';\r\n//import { textEditorClassname } from 'react-data-grid/editors/TextEditor';\r\n\r\n\r\nconst dateFormatter = new Intl.DateTimeFormat(navigator.language);\r\nconst currencyFormatter = new Intl.NumberFormat(navigator.language, {\r\n style: 'currency',\r\n currency: 'eur'\r\n});\r\n\r\nfunction TimestampFormatter({ timestamp }: { timestamp: number }) {\r\n return <>{dateFormatter.format(timestamp)};\r\n}\r\n\r\nfunction CurrencyFormatter({ value }: { value: number }) {\r\n return <>{currencyFormatter.format(value)};\r\n}\r\n\r\ninterface SummaryRow {\r\n id: string;\r\n totalCount: number;\r\n d01: number;\r\n client: string;\r\n yesCount: number;\r\n}\r\n\r\ninterface Row {\r\n id: number;\r\n title: string;\r\n client: string;\r\n area: string;\r\n country: string;\r\n contact: string;\r\n assignee: string;\r\n progress: number;\r\n startTimestamp: number;\r\n endTimestamp: number;\r\n budget: number;\r\n transaction: string;\r\n account: string;\r\n version: string;\r\n available: boolean;\r\n}\r\n\r\nfunction getColumns(countries: string[]): Column[] {\r\n return [\r\n SelectColumn,\r\n {\r\n key: 'id',\r\n name: 'ID',\r\n width: 60,\r\n frozen: true,\r\n resizable: false,\r\n summaryFormatter() {\r\n return Total;\r\n }\r\n },\r\n {\r\n key: 'title',\r\n name: 'Task',\r\n width: 120,\r\n frozen: true,\r\n editor: TextEditor,\r\n summaryFormatter({ row }) {\r\n return <>{row.totalCount} records;\r\n }\r\n },\r\n {\r\n key: 'client',\r\n name: 'Client',\r\n width: 220,\r\n editor: TextEditor,\r\n summaryFormatter({ row: { client } }) {\r\n return <>{client};\r\n }\r\n },\r\n {\r\n key: 'd01',\r\n name: '1',\r\n width: 80,\r\n editor: TextEditor,\r\n summaryFormatter({ row }) { return <> },\r\n //summaryFormatter({ row }) { return <>{row.d01} },\r\n formatter(props) { const value = props.row.d01; return ; }\r\n },\r\n {\r\n key: 'area',\r\n name: 'Area',\r\n width: 120,\r\n editor: TextEditor\r\n },\r\n {\r\n key: 'country',\r\n name: 'Country',\r\n width: 180,\r\n editor: (p) => (\r\n p.onRowChange({ ...p.row, country: e.target.value }, true)}\r\n >\r\n {countries.map((country) => (\r\n \r\n ))}\r\n \r\n ),\r\n editorOptions: {\r\n editOnClick: true\r\n }\r\n },\r\n {\r\n key: 'contact',\r\n name: 'Contact',\r\n width: 160,\r\n editor: TextEditor\r\n },\r\n {\r\n key: 'assignee',\r\n name: 'Assignee',\r\n width: 150,\r\n editor: TextEditor\r\n },\r\n {\r\n key: 'progress',\r\n name: 'Completion',\r\n width: 110,\r\n formatter(props) {\r\n const value = props.row.progress;\r\n return (\r\n <>\r\n {Math.round(value)}%\r\n \r\n );\r\n },\r\n editor({ row, onRowChange, onClose }) {\r\n return createPortal(\r\n {\r\n if (event.key === 'Escape') {\r\n onClose();\r\n }\r\n }}\r\n >\r\n \r\n onRowChange({ ...row, progress: e.target.valueAsNumber })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
,\r\n document.body\r\n );\r\n },\r\n editorOptions: {\r\n renderFormatter: true\r\n }\r\n },\r\n {\r\n key: 'startTimestamp',\r\n name: 'Start date',\r\n width: 100,\r\n formatter(props) {\r\n return ;\r\n }\r\n },\r\n {\r\n key: 'endTimestamp',\r\n name: 'Deadline',\r\n width: 100,\r\n formatter(props) {\r\n return ;\r\n }\r\n },\r\n {\r\n key: 'budget',\r\n name: 'Budget',\r\n width: 100,\r\n formatter(props) {\r\n return ;\r\n }\r\n },\r\n {\r\n key: 'transaction',\r\n name: 'Transaction type'\r\n },\r\n {\r\n key: 'account',\r\n name: 'Account',\r\n width: 150\r\n },\r\n {\r\n key: 'version',\r\n name: 'Version',\r\n editor: TextEditor\r\n },\r\n {\r\n key: 'available',\r\n name: 'Available',\r\n width: 80,\r\n formatter({ row, onRowChange, isCellSelected }) {\r\n return (\r\n {\r\n onRowChange({ ...row, available: !row.available });\r\n }}\r\n onClick={e => e.stopPropagation()}\r\n isCellSelected={isCellSelected}\r\n />\r\n );\r\n },\r\n summaryFormatter({ row: { yesCount, totalCount } }) {\r\n return <>{`${Math.floor((100 * yesCount) / totalCount)}% ✔️`};\r\n }\r\n }\r\n ];\r\n}\r\n\r\nfunction rowKeyGetter(row: Row) {\r\n return row.id;\r\n}\r\n\r\nfunction createRows(): Row[] {\r\n const now = Date.now();\r\n const rows: Row[] = [];\r\n\r\n for (let i = 0; i < 1000; i++) {\r\n rows.push({\r\n id: i,\r\n title: `Task #${i + 1}`,\r\n client: faker.company.companyName(),\r\n d01: i,\r\n area: faker.name.jobArea(),\r\n country: faker.address.country(),\r\n contact: faker.internet.exampleEmail(),\r\n assignee: faker.name.findName(),\r\n progress: Math.random() * 100,\r\n startTimestamp: now - Math.round(Math.random() * 1e10),\r\n endTimestamp: now + Math.round(Math.random() * 1e10),\r\n budget: 500 + Math.random() * 10500,\r\n transaction: faker.finance.transactionType(),\r\n account: faker.finance.iban(),\r\n version: faker.system.semver(),\r\n available: Math.random() > 0.5\r\n });\r\n }\r\n\r\n return rows;\r\n}\r\n\r\ntype Comparator = (a: Row, b: Row) => number;\r\nfunction getComparator(sortColumn: string): Comparator {\r\n switch (sortColumn) {\r\n case 'assignee':\r\n case 'title':\r\n case 'client':\r\n case 'area':\r\n case 'country':\r\n case 'contact':\r\n case 'transaction':\r\n case 'account':\r\n case 'version':\r\n return (a, b) => {\r\n return a[sortColumn].localeCompare(b[sortColumn]);\r\n };\r\n case 'available':\r\n return (a, b) => {\r\n return a[sortColumn] === b[sortColumn] ? 0 : a[sortColumn] ? 1 : -1;\r\n };\r\n case 'id':\r\n case 'progress':\r\n case 'startTimestamp':\r\n case 'endTimestamp':\r\n case 'budget':\r\n return (a, b) => {\r\n return a[sortColumn] - b[sortColumn];\r\n };\r\n default:\r\n throw new Error(`unsupported sortColumn: \"${sortColumn}\"`);\r\n }\r\n}\r\n\r\nexport default function CommonFeatures() {\r\n const [rows, setRows] = useState(createRows);\r\n const [sortColumns, setSortColumns] = useState([]);\r\n const [selectedRows, setSelectedRows] = useState(() => new Set());\r\n\r\n const countries = useMemo(() => {\r\n return [...new Set(rows.map((r) => r.country))].sort(new Intl.Collator().compare);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n const columns = useMemo(() => getColumns(countries), [countries]);\r\n\r\n const summaryRows = useMemo(() => {\r\n const summaryRow: SummaryRow = {\r\n id: 'total_0',\r\n totalCount: rows.length,\r\n client: rows[0].client,\r\n d01: rows[0].d01,\r\n yesCount: rows.filter((r) => r.available).length\r\n };\r\n return [summaryRow];\r\n }, [rows]);\r\n\r\n const sortedRows = useMemo((): Row[] => {\r\n if (sortColumns.length === 0) return rows;\r\n\r\n const sortedRows = [...rows];\r\n sortedRows.sort((a, b) => {\r\n for (const sort of sortColumns) {\r\n const comparator = getComparator(sort.columnKey);\r\n const compResult = comparator(a, b);\r\n if (compResult !== 0) {\r\n return sort.direction === 'ASC' ? compResult : -compResult;\r\n }\r\n }\r\n return 0;\r\n });\r\n return sortedRows;\r\n }, [rows, sortColumns]);\r\n\r\n const gridElement = (\r\n \r\n );\r\n\r\n return (\r\n <>\r\n
\r\n {/* exportToCsv(gridElement, 'CommonFeatures.csv')}>\r\n Export to CSV\r\n \r\n exportToXlsx(gridElement, 'CommonFeatures.xlsx')}>\r\n Export to XSLX\r\n \r\n exportToPdf(gridElement, 'CommonFeatures.pdf')}>\r\n Export to PDF\r\n \r\n */}\r\n
\r\n {gridElement}\r\n \r\n );\r\n}\r\n\r\nfunction ExportButton({\r\n onExport,\r\n children\r\n}: {\r\n onExport: () => Promise;\r\n children: React.ReactChild;\r\n}) {\r\n const [exporting, setExporting] = useState(false);\r\n return (\r\n {\r\n setExporting(true);\r\n await onExport();\r\n setExporting(false);\r\n }}\r\n >\r\n {exporting ? 'Exporting' : children}\r\n \r\n );\r\n}","import React from \"react\";\r\nimport \"../App.css\";\r\nimport { BaseAddress } from \"../projConst\";\r\nimport AppBar from \"@material-ui/core/AppBar\";\r\nimport Toolbar from \"@material-ui/core/Toolbar\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport ReportIcon from \"@material-ui/icons/Report\";\r\nimport { withStyles, makeStyles } from \"@material-ui/core/styles\";\r\nimport { width } from \"@material-ui/system\";\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Paper from '@material-ui/core/Paper';\r\n\r\nconst StyledTableCell = withStyles((theme) => ({\r\n head: {\r\n backgroundColor: '#343433',\r\n color: theme.palette.common.white,\r\n opacity: 0.7,\r\n maxHeight: '2vh',\r\n },\r\n body: {\r\n fontSize: 14,\r\n },\r\n}))(TableCell);\r\n\r\nconst StyledTableRow = withStyles((theme) => ({\r\n root: {\r\n '&:nth-of-type(odd)': {\r\n backgroundColor: theme.palette.action.hover,\r\n },\r\n },\r\n}))(TableRow);\r\n\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n table: {\r\n minWidth: 200,\r\n maxWidth: 350,\r\n }, \r\n}));\r\n\r\nconst ShowTotal = ({data}) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n
\r\n Итоги\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Тип\r\n План,ч.\r\n Факт,ч.\r\n  % \r\n \r\n \r\n \r\n {data.map((row) => (\r\n \r\n \r\n {row.vidp}\r\n \r\n {row.planh}\r\n {row.facth}\r\n {row.percent}\r\n \r\n ))}\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\nexport default ShowTotal;\r\n","import React, { Fragment, useState } from \"react\";\r\nimport {\r\n DatePicker,\r\n TimePicker,\r\n DateTimePicker,\r\n MuiPickersUtilsProvider,\r\n} from '@material-ui/pickers';\r\nimport ruLocale from \"date-fns/locale/ru\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport format from \"date-fns/format\";\r\nimport buildLocalizeFn from 'date-fns/locale/_lib/buildLocalizeFn'\r\n\r\nconst YearMonthPicker = props => {\r\n //const [selectedDate, handleDateChange] = useState(new Date());\r\n const localeFormatMap = {\r\n en: \"MMMM d, yyyy\",\r\n fr: \"d MMM yyyy\",\r\n ru: \"MMMM yyyy\",\r\n };\r\n const localeCancelLabelMap = {\r\n en: \"cancel\",\r\n fr: \"annuler\",\r\n ru: \"отмена\",\r\n };\r\n const monthValues = {\r\n narrow: [\"Я\", \"Ф\", \"М\", \"А\", \"М\", \"И\", \"И\", \"А\", \"С\", \"О\", \"Н\", \"Д\"],\r\n abbreviated: [\r\n \"янв.\",\r\n \"фев.\",\r\n \"март\",\r\n \"апр.\",\r\n \"май\",\r\n \"июнь\",\r\n \"июль\",\r\n \"авг.\",\r\n \"сент.\",\r\n \"окт.\",\r\n \"нояб.\",\r\n \"дек.\"\r\n ],\r\n wide: [\r\n \"январь\",\r\n \"февраль\",\r\n \"март\",\r\n \"апрель\",\r\n \"май\",\r\n \"июнь\",\r\n \"июль\",\r\n \"август\",\r\n \"сентябрь\",\r\n \"октябрь\",\r\n \"ноябрь\",\r\n \"декабрь\"\r\n ]\r\n };\r\n ruLocale.localize.month = buildLocalizeFn({\r\n values: monthValues,\r\n defaultWidth: 'wide',\r\n defaultFormattingWidth: 'wide'\r\n })\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default YearMonthPicker;","import React, { Component , Fragment} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport moment from 'moment';\r\nimport 'moment/locale/ru';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Modal from '@material-ui/core/Modal';\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport YearMonthPicker from '../Lib/YearMonthPicker';\r\n//import { DatePicker } from \"@material-ui/pickers\";\r\n//import DatePicker from 'react-datepicker';\r\nimport InputLabel from '@material-ui/core/InputLabel'\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem'; \r\nimport SelectDataList from '../Lib/SelectDataList';\r\n\r\nimport * as api from '../../api/apiFunc'\r\nimport * as R from 'ramda'\r\n\r\nfunction rand() {\r\n return Math.round(Math.random() * 20) - 10;\r\n}\r\n\r\nfunction getModalStyle() {\r\n const top = 50 + rand();\r\n const left = 50 + rand();\r\n\r\n return {\r\n top: `${top}%`,\r\n left: `${left}%`,\r\n transform: `translate(-${top}%, -${left}%)`,\r\n };\r\n}\r\n\r\nconst styles = theme => ({\r\n paper: {\r\n position: 'absolute',\r\n width: theme.spacing.unit * 50,\r\n backgroundColor: theme.palette.background.paper,\r\n boxShadow: theme.shadows[5],\r\n padding: theme.spacing.unit * 4,\r\n },\r\n button: {\r\n marginTop: theme.spacing.unit*3,\r\n marginLeft: theme.spacing.unit*8,\r\n color:'navy',\r\n fontWeight : \"bold\",\r\n },\r\n title: {\r\n marginTop: -theme.spacing.unit*2,\r\n marginBottom: theme.spacing.unit*3,\r\n textAlign: 'center',\r\n backgroundColor : '#f0f0f0'\r\n},\r\nmessage: {\r\n margin: theme.spacing.unit*2,\r\n textAlign: 'left',\r\n},\r\ngrid: {\r\n flexGrow: 1,\r\n },\r\n dialogPaper: {\r\n minHeight: '90vh',\r\n maxHeight: '90vh',\r\n }\r\n});\r\n\r\n\r\nclass ShowFilter extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.maxLen = 0\r\n this.FiltVal = {}\r\n this.state = {\r\n open: this.props.open,\r\n lastvalue : null\r\n };\r\n }\r\n/* componentDidMount() {\r\n const { columns, pick, deffilter } = this.props;\r\n console.log('deffilter===',deffilter);\r\n if (!api.isEmpty(deffilter)) {\r\n R.keys(deffilter).map(k => {\r\n const col = R.find(R.propEq('key', k))(columns)\r\n if (col._picklist && R.find(R.propEq('name', col._picklist))(pick)) {\r\n const curList = R.find(R.propEq('name', col._picklist))(pick).rows\r\n if (api.isNotEmptyArr(curList)) {\r\n const curLId = R.find(R.propEq('pk_id', deffilter[k]))(curList)\r\n const curId = curLId.id\r\n this.FiltVal[k] = curId\r\n }\r\n } else {\r\n this.FiltVal[k] = deffilter[k]\r\n }\r\n })\r\n }\r\n \r\n }*/ \r\n \r\n handleOpen = () => {\r\n this.setState({ open: true });\r\n };\r\n\r\n handleClose = () => {\r\n this.setState({ open: false });\r\n };\r\n defaultSelectVal = (picklist_values,def_val) => {\r\n let def = picklist_values.map( x => {\r\n if (x.value == def_val) return (x) \r\n })\r\n //console.log(\"def======\",def);\r\n return def||{value :\"\",label:\"\"}\r\n }\r\n\r\n\r\n render() {\r\n const { classes, columns, pick, deffilter } = this.props;\r\n //console.log('deffilter===',deffilter);\r\n console.log('this.FiltVal---', this.FiltVal);\r\n if (!api.isEmpty(deffilter) && !api.isEmpty(this.FiltVal) && this.FiltVal[\"user_id\"] ==0) {\r\n\r\n R.keys(deffilter).map(k => {\r\n const col = R.find(R.propEq('key', k))(columns)\r\n if (col._picklist && R.find(R.propEq('name', col._picklist))(pick)) {\r\n const curList = R.find(R.propEq('name', col._picklist))(pick).rows\r\n if (api.isNotEmptyArr(curList)) {\r\n const curLId = R.find(R.propEq('pk_id', deffilter[k]))(curList)\r\n const curId = curLId.id\r\n this.FiltVal[k] = curId\r\n }\r\n } else {\r\n if (k == 'period' && this.FiltVal[k] == undefined) \r\n this.FiltVal[k] = new Date(deffilter[k]+\"-01\") \r\n else\r\n this.FiltVal[k] = deffilter[k]\r\n }\r\n })\r\n }\r\n \r\n /* this.nbsp = new Object()\r\n this.mycol = new Object()\r\n this.maxLen = 0\r\n this.props.columns.map( (col) => this.maxLen = this.maxLen > col.name.length ? this.maxLen : col.name.length)\r\n this.props.columns.map( (col) => this.nbsp[col.name] = '..'.repeat(this.maxLen-col.name.length))\r\n */\r\n\r\n const InputMost = (col,type) => (\r\n
\r\n \r\n
\r\n { \r\n this.FiltVal[col.key] = event.target.value \r\n this.setState({ lastvalue: event.target.value });\r\n }}\r\n />\r\n
\r\n
\r\n )\r\n const InputCheck = (col) => {\r\n //console.log('this.FiltVal[col.key]',this.FiltVal[col.key]);\r\n //let chk = this.FiltVal[col.key] === 1 ? : false\r\n return (\r\n
\r\n \r\n
\r\n { \r\n this.FiltVal[col.key] = event.target.checked ? 1 : 0 \r\n this.setState({ lastvalue: event.target.value });\r\n }}\r\n />\r\n
\r\n
\r\n )\r\n }\r\n \r\n const InputSelect = (col,rows ) => (\r\n
\r\n \r\n
\r\n { \r\n if (e.value) \r\n this.FiltVal[col.key] = e.value \r\n this.setState({ lastvalue: e.value });\r\n }}\r\n selName = {col.key} \r\n />\r\n \r\n {/* \r\n */}\r\n
\r\n
\r\n )\r\n \r\n const InputMonthYear = (col) => {\r\n let dateValue = new Date(this.FiltVal[col.key]+\"-01\") \r\n if (dateValue === undefined) dateValue = new Date() //'дд.мм.гггг'\r\n //let dateValue = moment(null)\r\n //let options = {year: 'numeric', month: 'numeric', day: 'numeric' };\r\n \r\n // \r\n \r\n
\r\n {\r\n this.FiltVal[col.key] = d \r\n this.setState({ lastvalue: d })\r\n }}\r\n />\r\n
\r\n \r\n )}\r\n \r\n const InputDate = (col) => {\r\n let dateValue = this.FiltVal[col.key]\r\n if (dateValue === undefined)\r\n dateValue = 'дд.мм.гггг'\r\n //let dateValue = moment(null)\r\n //let options = {year: 'numeric', month: 'numeric', day: 'numeric' };\r\n\r\n // \r\n \r\n
\r\n { \r\n this.FiltVal[col.key] = event.target.value \r\n this.setState({ lastvalue: event.target.value });\r\n }}\r\n />\r\n
\r\n \r\n )}\r\n return (\r\n
\r\n \r\n {this.props.title}\r\n \r\n
\r\n {this.props.columns.map( (col) => {\r\n // if (R.not(col.filterable)) return null\r\n if (col._typecolumn ==='checkbox') {\r\n return InputCheck(col) \r\n }\r\n else \r\n {\r\n if (col._picklist&&R.find(R.propEq('name', col._picklist))(pick)){\r\n let curpick = R.find(R.propEq('name', col._picklist))(pick) \r\n let pkRow = curpick.rows\r\n let tmpRow = pkRow\r\n // let Nbsp = \"\\u00A0\".repeat(20) ie yt gjllth;bdftn\r\n let Nbsp = \"\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\"\r\n\r\n if (R.not(R.find(R.propEq('id', 0))(pkRow)))\r\n tmpRow = R.concat([{id:0,title:Nbsp}],pkRow); \r\n //pkRow.unshift({id:0,title:Nbsp});\r\n //console.log('pkRow',pkRow); \r\n if (this.FiltVal[col.key] === undefined) \r\n this.FiltVal[col.key] = 0\r\n //data.editor = \r\n //console.log('tmpRow----',tmpRow);\r\n return InputSelect(col,tmpRow)\r\n }\r\n else\r\n {\r\n if (col._typedata === 5 || col._typedata === 6)\r\n return InputDate(col) \r\n if (col._typedata === 15 )\r\n return InputMonthYear(col) \r\n if (col._typedata === 1 || col._typedata === 2) \r\n return InputMost(col,'number') \r\n return InputMost(col,'text') \r\n }\r\n }\r\n })\r\n }\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nShowFilter.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default withStyles(styles)(ShowFilter);","import {createContext} from 'react'\r\n\r\nexport const DataServerContext = createContext()\r\n","import React, { useState , useEffect} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport * as R from 'ramda'\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n //width: '650vh',\r\n height: '100%',\r\n position: 'relative'\r\n },\r\n grid: {\r\n zIndex:9999,\r\n width: '100%',\r\n height: '100%',\r\n position: 'absolute',\r\n top: 0,\r\n left:0,\r\n },\r\n row: {\r\n zIndex:9999,\r\n display: 'flex',\r\n flexDirection: 'row',\r\n },\r\n child: {\r\n position: 'absolute',\r\n top: 0,\r\n left:0,\r\n }\r\n}))\r\n\r\n\r\nconst FormGrid = ({children,countrow,countcol,init}) => {\r\n const classes = useStyles()\r\n const [paint,Setpaint] = useState(init) \r\n const ShowRow = ({ ind }) => {\r\n let nstyle = { width: `calc(100%/${countcol})` }\r\n return (
\r\n {[...Array(countcol)].map((_, i) => {\r\n const mark = paint.filter(f=>f.r==ind&&f.c==i).length > 0\r\n return (
Setpaint([...paint,{r:ind,c:i}])}\r\n > 
)\r\n }\r\n )}\r\n
)\r\n }\r\n return (\r\n
\r\n
\r\n {[...Array(countrow)].map((_,i) =>\r\n \r\n )}\r\n
\r\n
{children}
\r\n
\r\n );\r\n }\r\n\r\n FormGrid.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default FormGrid;\r\n","import {createContext} from 'react'\r\n\r\nexport const InfoWinContext = createContext()","import React, { Fragment ,useContext, useEffect, useState, useCallback } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Style from 'style-it';\nimport \"bootstrap/dist/css/bootstrap.css\";\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport Box from '@material-ui/core/Box';\nimport AppBar from '@material-ui/core/AppBar';\nimport Button from \"@material-ui/core/Button\";\nimport Tabs from '@material-ui/core/Tabs';\nimport Tab from '@material-ui/core/Tab';\nimport \"./App.css\";\nimport {columnsFilter} from './dataconfig/columnsGrids'\n\nimport {\n SHOW_TOOL_BAR,\n SHOW_LEFT_SIDE_BAR,\n SHOW_FOOTHER, \n apiDataUrl,apiListUrl,apiSaveUrl, thisMock\n} from './projConst';\nimport {main_data,main_data_empty,main_data_row_empty} from './api/mockData';\nimport {pick_data} from './api/mockDepend';\nimport {main_save_data} from './api/mockSaveData';\n\nimport ShowAppHeader from \"./Components/ShowAppHeader\";\nimport ShowAppFooter from \"./Components/ShowAppFooter\";\nimport ShowAppToolbar from \"./Components/ShowAppToolbar\";\nimport ShowAppSidebar from \"./Components/ShowAppSidebar\";\nimport ShowGrid from \"./Components/Lib/ShowGrid\";\nimport TestGrid from \"./Components/Lib/TestGrid\";\nimport ShowTotal from \"./Components/ShowTotal\";\nimport ShowFilter from './Components/Lib/ShowFilter';\nimport FormGrid from \"./Components/FormGrid\";\n\nimport { DataServerContext } from \"./Server/DataServerContext\";\nimport { InfoWinContext } from \"./infowindow/infowinContext\";\n\nimport * as api from \"./api/apiFunc\";\nimport * as R from 'ramda'\nimport { shallowEqual, useDispatch,useSelector } from 'react-redux'\nimport {columnsMainData,columnsTotalData\n} from './dataconfig/columnsGrids'\n\n\nconst useStyles = makeStyles(theme => ({\n responsPerson: {\n margin: theme.spacing(),\n height: 900,\n width: \"auto\"\n },\n root: {\n flexGrow: 1,\n backgroundColor: theme.palette.background.paper,\n },\n apptitle: {\n display: 'flex',\n width: '100%'\n },\n apptab: {\n minWidth: '80% !important',\n },\n appinnertab: {\n marginTop: '-30px'\n },\n usertitle: {\n alignSelf: 'center'\n },\n/*\n root: {\n margin: theme.spacing(),\n textAlign: \"left\"\n },*/\n content: {\n paddingLeft: -theme.spacing(5),\n textAlign: \"center\"\n },\n title: {\n paddingLeft: theme.spacing(3),\n textAlign: \"left\",\n color: \"#000\",\n backgroundColor: \"#d9d9d9\",\n fontSize: \"75%\",\n fontWeight: \"bold\",\n height: 5\n },\n}));\n\nconst defaultTabKey = '1';\n\nfunction App (props) {\n const classes = useStyles();\n const {curmessage,messageWin,alertWin,alertmessage,dialogWin,\n dialog,dialoganswer } = useContext(InfoWinContext);\n const { loading, getServerDataRedux, dataserver } = useContext(DataServerContext);\n\n const { tree,db,argum,iconsApp,configApp,themeCss,globalCss} = props\n const dispatch = useDispatch();\n\n const [mainlist, SetMainList] = useState([]);\n const [mainfilter, SetMainFilter] = useState([]);\n const [totallist, SetTotalList] = useState([]);\n const [totaltable, SetTotalTable] = useState([]);\n const [pick, SetPick] = useState([]);\n\n const [scrollY, setScrollY] = useState(0);\n const [updatedData, SetUpdatedData] = useState([]);\n const [deleteData, SetDeleteData] = useState([]);\n const [insertData, SetInsertData] = useState([]);\n const [showFilter, SetShowFilter] = useState({ open: false, title: 'Фильтр по полям', mess: \"\" });\n const [curentRow, SetCurentRow] = useState({});\n const [subfilter, Setsubfilter] = useState(false);\n \n function logit() {\n setScrollY(window.pageYOffset);\n console.log('axssaxasxsax')\n\n } \n const maindata = useSelector(state=>state.maindata,shallowEqual)\n const listdata = useSelector(state=>state.listdata,shallowEqual)\n\n useEffect(async () => {\n dispatch(getServerDataRedux(apiDataUrl, true, prepareParam({ datafilter: mainfilter }), thisMock, main_data, 'FETCH_MAIN_DATA',main_data_empty))\n //dispatch(getServerDataRedux(apiListUrl, true, prepareParam(), thisMock, pick_data, 'FETCH_LIST_DATA'))\n }, []);\n\n/* useEffect(() => {\n function watchScroll() {\n window.addEventListener(\"scroll\", logit);\n }\n watchScroll();\n // Remove listener (like componentWillUnmount)\n return () => {\n window.removeEventListener(\"scroll\", logit);\n };\n }, []); \n*/\n useEffect(() => {\n if (api.isEmpty(maindata)) return\n SetMainList(maindata.serverdata.datamain);\n SetMainFilter(maindata.serverdata.datafilter);\n SetTotalList(api.SumTotalRow(maindata.serverdata.datamain));\n //SetTotalTable(maindata.serverdata.datatotal);\n SetTotalTable(api.SumTotalVid(maindata.serverdata.datamain));\n }, [maindata]);\n\n useEffect(() => {\n if (api.isEmpty(listdata)) return\n SetPick(listdata.serverdata.picklists);\n }, [listdata]);\n \n useEffect(() => {\n if (dialoganswer.winDialogAnswer && dialoganswer.userDialogAnswer.answer) {\n switch (dialoganswer.userDialogAnswer.id) {\n case 1:\n handle_delete_row()\n break;\n }\n }\n }, [dialoganswer])\n\n const prepareParam = (userarg=null) => {\n const { tree, db } = props\n const appParams = { tree, db };\n\n return userarg ? {appParams,...userarg} : {appParams}\n } \n\n const handleColumnFilter =() => {\n //console.log('this.ToggleColumnFilter',this.ToggleColumnFilter); \n /* if (toggleColumnfilter) {\n ToggleColumnFilter = R.not(this.ToggleColumnFilter)\n SetToggleColumnfilter({toggleColumnfilter: this.ToggleColumnFilter});\n \n //this.props.onChangeFilterLoc('')\n } */\n SetShowFilter({open : true,title:'Фильтр по полям', mess : \"\" })\n \n }\n \n const handleSeek = (val,args) => {\n console.log('handleSeek',val,args)\n // R.keys(row).map(key => row[key].toString().indexOf(args) !== -1 ) \n if (args.arg1 == \"\") {\n SetMainList(maindata.serverdata.datamain)\n return \n }\n SetMainList(maindata.serverdata.datamain.filter(row => \n row.ID.toString().indexOf(args.arg1) !== -1 ||\n row.WorksCode.toString().indexOf(args.arg1) !== -1 ||\n row.WorksName.indexOf(args.arg1) !== -1 ||\n row.WorksNameLong.indexOf(args.arg1) !== -1 ||\n row.WorksCodeSap.indexOf(args.arg1) !== -1 ||\n row.WorksCodeGd.indexOf(args.arg1) !== -1 ||\n row.AgentId.toString().indexOf(args.arg1) !== -1 ||\n row.Priz.toString().indexOf(args.arg1) !== -1 ||\n row.OutUzKvitSequence.indexOf(args.arg1) !== -1 ||\n row.WeightTrainSequence.indexOf(args.arg1) !== -1 ||\n row.LocalCodeWorkSequence.indexOf(args.arg1) !== -1 ||\n row.StationDefaultId.toString().indexOf(args.arg1) !== -1 ||\n row.TranspInstrHeaderSequence.indexOf(args.arg1) !== -1 ||\n row.VersionXml.indexOf(args.arg1) !== -1\n ))\n }\n const onHandleSave = (name,data) => {\n //props.SaveDict({ table: name, data })\n }\n \n const handleCurRow = (row) => { \n SetCurentRow(row)\n }\n\n const onHandleAdd = (name, row) => { \n SetMainList([...mainlist,row])\n }\n\n const onHandleDelete = (name, row, pkid) => { \n SetMainList(mainlist.filter(el => el[pkid] !== row[pkid]))\n }\n\nconst onHandleUpdateGrid = (rows,currow,updated) => {\n SetMainList(rows);\n if (!api.isEmpty(updated)) {\n if (typeof updated.ID === 'number') {\n let idx = R.findIndex(R.propEq('ID', updated.ID))(updatedData)\n if (idx !== -1) {\n let updData = [...updatedData]\n //const newupdated = updated.updated\n //updData[idx] = { ...updData[idx], ...newupdated }\n updData[idx] = { ...updData[idx], ...currow }\n //const ID = updData[idx].ID\n //updData[idx] = { ...updData[idx], ..._updated }\n SetUpdatedData(updData)\n }\n else {\n //const temp = { ID: updated.ID, ...updated.updated }\n const temp = { ID: updated.ID, ...currow }\n SetUpdatedData([...updatedData, temp])\n }\n }\n else {\n let idx = R.findIndex(R.propEq('ID', updated.ID))(insertData)\n if (idx !== -1) {\n let updData = [...insertData]\n const newupdated = updated.updated\n updData[idx] = { ...updData[idx], ...newupdated }\n SetInsertData(updData)\n }\n else {\n const temp = { ID: updated.ID, ...updated.updated }\n SetInsertData([...insertData, temp])\n }\n }\n }\n } \n const handleScroll = (event) => {\n let scrollTop = event.srcElement.body.scrollTop\n console.log('scrollTop ==',scrollTop);\n let itemTranslate = Math.min(0, scrollTop / 3 - 60)\n \n }\n const handleFilterAnswer = (answer, listFilter) => {\n SetShowFilter({open : false,title:'Фильтр по полям', mess : \"\"})\n if (answer == false) return\n SetMainFilter(listFilter)\n\n let check = false\n R.keys(listFilter).map(key => check = listFilter[key] !== null ? true : check)\n if (!check) {\n SetMainList(maindata.serverdata.datamain)\n Setsubfilter(false)\n messageWin(\"Фильтр очищен.\");\n }\n else {\n let templist = [...mainlist]\n R.keys(listFilter).map(key => {\n if (listFilter[key] !== null)\n templist = templist.filter(row => {\n let res \n if (typeof row[key] === 'number')\n res = row[key] == Number(listFilter[key]) \n if (typeof row[key] === 'string')\n res = row[key].toString().indexOf(listFilter[key]) !== -1 \n \n return (res)\n })\n })\n Setsubfilter(true)\n SetMainList(templist)\n \n /* SetMainList(maindata.serverdata.datamain.filter(row => \n row.ID.toString().indexOf(args.arg1) !== -1 ||\n row.WorksCode.toString().indexOf(args.arg1) !== -1 ||\n row.WorksName.indexOf(args.arg1) !== -1 ||\n row.WorksNameLong.indexOf(args.arg1) !== -1 ||\n row.WorksCodeSap.indexOf(args.arg1) !== -1 ||\n row.WorksCodeGd.indexOf(args.arg1) !== -1 ||\n row.AgentId.toString().indexOf(args.arg1) !== -1 ||\n row.Priz.toString().indexOf(args.arg1) !== -1 ||\n row.OutUzKvitSequence.indexOf(args.arg1) !== -1 ||\n row.WeightTrainSequence.indexOf(args.arg1) !== -1 ||\n row.LocalCodeWorkSequence.indexOf(args.arg1) !== -1 ||\n row.StationDefaultId.toString().indexOf(args.arg1) !== -1 ||\n row.TranspInstrHeaderSequence.indexOf(args.arg1) !== -1 ||\n row.VersionXml.indexOf(args.arg1) !== -1\n )) */\n messageWin(\"Данные отфильтрованы ...\");\n\n }\n\n }\n const handleSaveData = () => {\n let tempins = [...insertData].reduce((arr, el) => {\n let tmp = { ...el }\n tmp.ID = 0\n return [...arr, { ...tmp }]\n }, [])\n \n console.log(\"updatedData\", JSON.stringify({updatedData: updatedData,deleteData,insertData : [...tempins]}))\n dispatch(getServerDataRedux(apiSaveUrl, true, prepareParam({updatedData,deleteData,insertData : [...tempins]}), thisMock, main_data, 'FETCH_MAIN_DATA'))\n SetUpdatedData([])\n SetDeleteData([])\n SetInsertData([])\n messageWin(\"Данные сохранены .\");\n }\n const handle_delete_row = async () => {\n //dispatch(getServerDataRedux(apiSaveUrl, true, prepareParam({action: 'delete', card_id:cardid }), thisMock, main_data, 'FETCH_MAIN_DATA',{},\"Карта удалена!\")) \n SetMainList(mainlist.filter(el => el.ID !== curentRow.ID))\n SetDeleteData([...deleteData, { ID: curentRow.ID }])\n }\n const handleDeleteRow = () => {\n return dialogWin(1, 'Сообщение', `Удалить запись ?`, false, 'handle_delete_row()') \n }\n const handleInsertRow = () => {\n let newrow = main_data_row_empty\n let random_id = \"ins-\";\n let random_possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n for (let i = 0; i < 20; i++) {\n random_id += random_possible.charAt(Math.floor(Math.random() * random_possible.length));\n }\n newrow.ID = random_id \n const newrows = [...mainlist]\n newrows.push({...newrow}); \n SetMainList(newrows)\n }\n const onHandleMessage = (mess) => {\n messageWin(mess)\n }\n \n return (\n \n \n \n
\n {!api.isNotEmptyArr(configApp) && }\n {api.isNotEmptyArr(configApp) && \n
\n (\"Простое сообщение\")}\n messagetitle={\" Шаблон клиенского приложения (единый интерфейс) .\"}\n alertSimple={() => alertWin(\"info\", \"Расширенная инфа о сайте\")}\n errorSimple={() => alertWin(\"error\", \"Вывод ошибки\")}\n nameNsi={\"Справочник активов\"}\n />\n {SHOW_TOOL_BAR && }\n
\n {SHOW_LEFT_SIDE_BAR &&
\n \n
}\n
\n
\n dialogWin(1, 'Внимание', mess , true) \n }\n />\n {/* */}\n \n
\n
\n {SHOW_FOOTHER &&
\n \n
} \n
}\n
\n
\n );\n}\n\nexport default App;\n","export default\r\n{\r\n \"iconsApp\": [\r\n {\r\n \"ui_app_icon_id\": 1,\r\n \"ui_app_icon_name\": \"ic_perm_identity_24px\",\r\n \"ui_app_icon_mnem\": \"avatar\",\r\n \"is_Global\": 1,\r\n \"application_id\": null,\r\n \"ui_app_icon_file_name\": \"ic_perm_identity_24px\",\r\n \"ui_app_icon_file\": \"\"\r\n },\r\n {\r\n \"ui_app_icon_id\": 2,\r\n \"ui_app_icon_name\": \"ic_apps_24px\",\r\n \"ui_app_icon_mnem\": \"apps\",\r\n \"is_Global\": 1,\r\n \"application_id\": null,\r\n \"ui_app_icon_file_name\": \"ic_apps_24px\",\r\n \"ui_app_icon_file\": \"\"\r\n },\r\n {\r\n \"ui_app_icon_id\": 10,\r\n \"ui_app_icon_name\": \"ic_add_alert_24px\",\r\n \"ui_app_icon_mnem\": \"tabl\",\r\n \"is_Global\": 1,\r\n \"application_id\": null,\r\n \"ui_app_icon_file_name\": \"ic_add_alert_24px\",\r\n \"ui_app_icon_file\": \"\"\r\n },\r\n {\r\n \"ui_app_icon_id\": 11,\r\n \"ui_app_icon_name\": \"table\",\r\n \"ui_app_icon_mnem\": \"imgtable\",\r\n \"is_Global\": 1,\r\n \"application_id\": null,\r\n \"ui_app_icon_file_name\": \"table\",\r\n \"ui_app_icon_file\": \"/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAuAC0DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD4o+BH7GfxU/ae0m/v/h94D8R+LrPS5lt7ubTbUzLbyMNwViOhI5rvP+HSn7S3/RFfH3/gtavrj/ggZ8EPj18VvhF4/uPhD8brH4Vadaaxbx6haT+FLPWTfSmElZA86kpheMDg9a++/wDhjr9tj/o8TRv/AA2Wlf8AxFdEp2djnULo/Ez/AIdKftLf9EV8ff8Agtaj/h0p+0t/0RXx9/4LWr9s/wDhjr9tj/o8TRv/AA2Wlf8AxFH/AAx1+2x/0eJo3/hstK/+IqfaFch+Jn/DpT9pb/oivj7/AMFrV87V/R5/wx1+2x/0eJo3/hstK/8AiK/nDq4yuRKNj7Z/4JX3f7Glv4A8VD9p21nn106hF/YhjOsjFt5fz/8AHgwX7/8Af59OK+qP7U/4JLf9A68/768W/wDxdeY/8EIvjP8AtGfC/wCE3jyD4J/BzQ/ibpd1q8EmpXV/4gttMaymEJCxqss0ZYFecgGvvD/hrj9vn/o07wb/AOFzp/8A8l1Mt/8Aglx2/wCAfLv9qf8ABJb/AKB15/314t/+Lo/tT/gkt/0Drz/vrxb/APF19Rf8Ncft8/8ARp3g3/wudP8A/kuj/hrj9vn/AKNO8G/+Fzp//wAl1P8AW4/62Pl3+1P+CS3/AEDrz/vrxb/8XX4/V/RH/wANcft8/wDRp3g3/wALnT//AJLr+dyrgRM+/P8Agjz8PNI8afDbxjLqX7XF9+zg8OpwqmmweJYNKGsAxZ88rJcRF9v3cgHHrX2H/wAKI8Lf9JSNY/8ADg2f/wAn1+IFFNxu7iUrH7f/APCiPC3/AElI1j/w4Nn/APJ9H/CiPC3/AElI1j/w4Nn/APJ9fiBRS5B83kft/wD8KI8Lf9JSNY/8ODZ//J9fiBRRVJWJbuf/2Q==\"\r\n },\r\n {\r\n \"ui_app_icon_id\": 2,\r\n \"ui_app_icon_name\": \"ic_apps_24px\",\r\n \"ui_app_icon_mnem\": \"apps\",\r\n \"is_Global\": 1,\r\n \"application_id\": null,\r\n \"ui_app_icon_file_name\": \"ic_apps_24px\",\r\n \"ui_app_icon_file\": \"\"\r\n },\r\n {\r\n \"ui_app_icon_id\": 12,\r\n \"ui_app_icon_name\": \"ic_refresh_24px\",\r\n \"ui_app_icon_mnem\": \"refresh\",\r\n \"is_Global\": 1,\r\n \"application_id\": null,\r\n \"ui_app_icon_file_name\": \"ic_refresh_24px\",\r\n \"ui_app_icon_file\": \"\"\r\n },\r\n {\r\n \"ui_app_icon_id\": 13,\r\n \"ui_app_icon_name\": \"ic_add_circle_24px\",\r\n \"ui_app_icon_mnem\": \"add\",\r\n \"is_Global\": 1,\r\n \"application_id\": null,\r\n \"ui_app_icon_file_name\": \"ic_add_circle_24px\",\r\n \"ui_app_icon_file\": \"\"\r\n },\r\n {\r\n \"ui_app_icon_id\": 14,\r\n \"ui_app_icon_name\": \"ic_content_copy_24px\",\r\n \"ui_app_icon_mnem\": \"copy\",\r\n \"is_Global\": 1,\r\n \"application_id\": null,\r\n \"ui_app_icon_file_name\": \"ic_content_copy_24px\",\r\n \"ui_app_icon_file\": \"\"\r\n },\r\n {\r\n \"ui_app_icon_id\": 15,\r\n \"ui_app_icon_name\": \"ic_edit_24px\",\r\n \"ui_app_icon_mnem\": \"edit\",\r\n \"is_Global\": 1,\r\n \"application_id\": null,\r\n \"ui_app_icon_file_name\": \"ic_edit_24px\",\r\n \"ui_app_icon_file\": \"\"\r\n },\r\n {\r\n \"ui_app_icon_id\": 16,\r\n \"ui_app_icon_name\": \"ic_print_24px\",\r\n \"ui_app_icon_mnem\": \"print\",\r\n \"is_Global\": 1,\r\n \"application_id\": null,\r\n \"ui_app_icon_file_name\": \"ic_print_24px\",\r\n \"ui_app_icon_file\": \"\"\r\n },\r\n {\r\n \"ui_app_icon_id\": 17,\r\n \"ui_app_icon_name\": \"ic_delete_24px\",\r\n \"ui_app_icon_mnem\": \"delete\",\r\n \"is_Global\": 1,\r\n \"application_id\": null,\r\n \"ui_app_icon_file_name\": \"ic_delete_24px\",\r\n \"ui_app_icon_file\": \"\"\r\n },\r\n {\r\n \"ui_app_icon_id\": 18,\r\n \"ui_app_icon_name\": \"ic_search_24px\",\r\n \"ui_app_icon_mnem\": \"search\",\r\n \"is_Global\": 1,\r\n \"application_id\": null,\r\n \"ui_app_icon_file_name\": \"ic_search_24px\",\r\n \"ui_app_icon_file\": \"\"\r\n },\r\n {\r\n \"ui_app_icon_id\": 19,\r\n \"ui_app_icon_name\": \"ic_save_24px\",\r\n \"ui_app_icon_mnem\": \"save\",\r\n \"is_Global\": 1,\r\n \"application_id\": null,\r\n \"ui_app_icon_file_name\": \"ic_save_24px\",\r\n \"ui_app_icon_file\": \"\"\r\n },\r\n {\r\n \"ui_app_icon_id\": 21,\r\n \"ui_app_icon_name\": \"ic_filter_alt_off_black_24dp\",\r\n \"ui_app_icon_mnem\": \"filteroff\",\r\n \"is_Global\": 1,\r\n \"application_id\": null,\r\n \"ui_app_icon_file_name\": \"ic_filter_alt_off_black_24dp\",\r\n \"ui_app_icon_file\": \"\"\r\n },\r\n {\r\n \"ui_app_icon_id\": 20,\r\n \"ui_app_icon_name\": \"ic_filter_alt_black_24dp\",\r\n \"ui_app_icon_mnem\": \"filter\",\r\n \"is_Global\": 1,\r\n \"application_id\": null,\r\n \"ui_app_icon_file_name\": \"ic_filter_alt_black_24dp\",\r\n \"ui_app_icon_file\": \"\"\r\n }\r\n ],\r\n \"theme\": \"\",\r\n \"blocks\": [\r\n {\r\n \"block_id\": 1,\r\n \"block_parent_id\": null,\r\n \"block\": \"header\",\r\n \"css\": \".AppHeader{\\nbackground-color:#abbd0b;\\ncolor:#000000;\\nheight:10vh;\\nmargin:27px;\\nbox-shadow:10px 4px 5px -1px rgba(105,104,105,0.53);\\n}.TableImgButton{\\nbackground-color:#9ff08d;\\n}.App-header{\\npadding:10px;\\ndisplay:flex;\\nwidth:100%;\\nbackground-color:rgba(52, 52, 51, 1);\\ncolor:#fff;\\nborder-bottom:3px solid #6e767d;\\nheight:8vh;\\nfont-size:16;\\n}\\n\",\r\n \"icons\": [\r\n \r\n ],\r\n \"children\": [\r\n {\r\n \"block_id\": 3,\r\n \"block_parent_id\": 1,\r\n \"block\": \"header-1\",\r\n \"css\": \".AppHeader-1{\\nbackground-color:#0fd430;\\ncolor:#0a0a0a;\\nheight:4vh;\\nborder:1px solid black;\\n}.App-header-1{\\nwidth:30%;\\n}\\n\",\r\n \"icons\": [\r\n {\r\n \"id\": 2,\r\n \"order\": null,\r\n \"title\": \"Пользователь\",\r\n \"style\": \"\"\r\n }\r\n ],\r\n \"children\": [\r\n \r\n ]\r\n },\r\n {\r\n \"block_id\": 11,\r\n \"block_parent_id\": 1,\r\n \"block\": \"header-2\",\r\n \"css\": \".App-header-2{\\nwidth:60%;\\n}\\n\",\r\n \"icons\": [\r\n \r\n ],\r\n \"children\": [\r\n \r\n ]\r\n },\r\n {\r\n \"block_id\": 12,\r\n \"block_parent_id\": 1,\r\n \"block\": \"header-3\",\r\n \"css\": \".App-header-3{\\nwidth:10%;\\n}\\n\",\r\n \"icons\": [\r\n {\r\n \"id\": 1,\r\n \"order\": null,\r\n \"title\": \"Аватар\",\r\n \"style\": \"\"\r\n }\r\n ],\r\n \"children\": [\r\n \r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"block_id\": 2,\r\n \"block_parent_id\": null,\r\n \"block\": \"footer\",\r\n \"css\": `.App-footer{\r\n padding: 10px;\r\n display: flex;\r\n width: 100%;\r\n background-color: #343433;\r\n color: #fff;\r\n border-bottom: 3px solid #6e767d;\r\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\r\n height: 7vh;\r\n font-size: 16\r\n }\\n`,\r\n \"icons\": [\r\n \r\n ],\r\n \"children\": [\r\n \r\n ]\r\n },\r\n {\r\n \"block_id\": 7,\r\n \"block_parent_id\": null,\r\n \"block\": \"maincontent\",\r\n \"css\": \".App-main{\\nwidth:100%;\\n}\\n\",\r\n \"icons\": [\r\n \r\n ],\r\n \"children\": [\r\n \r\n ]\r\n },\r\n {\r\n \"block_id\": 10,\r\n \"block_parent_id\": null,\r\n \"block\": \"toolsbar\",\r\n \"css\": \".App-toolsbar{\\nwidth:100%;\\npadding:15px 15px 15px 12px;\\ndisplay:block;\\nfloat:left;\\nheight:7vh;\\nbackground-color:#f7f7f7;\\ncolor:#fff !important;\\nborder-bottom:1px solid #ddd;\\n}.App-toolsbar-icons-style{\\nmargin-right:20px;\\nfloat:left;\\nfont-size:24px;\\ncolor:#6e767d;\\n}.App-toolsbar-search-style{\\nfloat:left;\\nfont-size:24px;\\ncolor:#6e767d;\\n}\\n\",\r\n \"icons\": [\r\n \r\n ],\r\n \"children\": [\r\n {\r\n \"block_id\": 13,\r\n \"block_parent_id\": 10,\r\n \"block\": \"toolsbar-1\",\r\n \"css\": \"\\n}\\n\",\r\n \"icons\": [\r\n {\r\n \"id\": 12,\r\n \"order\": 1,\r\n \"title\": \"Обновить\",\r\n \"style\": \"{ margin-left:20px; float:left; font-size:24px; color:#6e767d;}\"\r\n },\r\n {\r\n \"id\": 13,\r\n \"order\": 3,\r\n \"title\": \"Добавить\",\r\n \"style\": \"{ margin-left:20px; float:left; font-size:24px; color:#6e767d;}\"\r\n },\r\n {\r\n \"id\": 14,\r\n \"order\": null,\r\n \"title\": \"Копировать\",\r\n \"style\": \"{ margin-left:20px; float:left; font-size:24px; color:#6e767d;}\"\r\n },\r\n {\r\n \"id\": 15,\r\n \"order\": null,\r\n \"title\": \"Редактировать\",\r\n \"style\": \"{ margin-left:20px; float:left; font-size:24px; color:#6e767d;}\"\r\n },\r\n {\r\n \"id\": 20,\r\n \"order\": 7,\r\n \"title\": \"Фильтр\",\r\n \"style\": \"{ marginLeft:20px; float:left; fontSize:24px; color:red;}\"\r\n },\r\n {\r\n \"id\": 21,\r\n \"order\": 7,\r\n \"title\": \"Фильтр не выбран\",\r\n \"style\": \"{ marginLeft:20px; float:left; fontSize:24px; color:#6e767d;}\"\r\n },\r\n {\r\n \"id\": 19,\r\n \"order\": 2,\r\n \"title\": \"Сохранить\",\r\n \"style\": \"{ margin-left:20px; float:left; font-size:24px; color:#6e767d;}\"\r\n },\r\n {\r\n \"id\": 16,\r\n \"order\": null,\r\n \"title\": \"Excel\",\r\n \"style\": \"{ margin-left:20px; float:left; font-size:24px; color:#6e767d;}\"\r\n },\r\n {\r\n \"id\": 17,\r\n \"order\": 5,\r\n \"title\": \"Удалить\",\r\n \"style\": \"{ margin-left:20px; float:left; font-size:24px; color:#6e767d;}\"\r\n }\r\n ],\r\n \"children\": [\r\n \r\n ]\r\n },\r\n {\r\n \"block_id\": 14,\r\n \"block_parent_id\": 10,\r\n \"block\": \"toolsbar-2\",\r\n \"css\": \"\\n}\\n\",\r\n \"icons\": [\r\n {\r\n \"id\": 18,\r\n \"order\": null,\r\n \"title\": \"Поиск\",\r\n \"style\": \"{ margin-right:0px; float:left; font-size:24px; color:grey;}\"\r\n }\r\n ],\r\n \"children\": [\r\n \r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n }","\r\nexport const FETCH_UNIVER_UI = 'FETCH_UNIVER_UI'\r\nexport const FETCH_MAIN_DATA = 'FETCH_MAIN_DATA'\r\nexport const FETCH_LIST_DATA = 'FETCH_LIST_DATA'\r\n\r\nexport const UUI_GLOBAL = 'UUI_GLOBAL'\r\nexport const UUI_THEME = 'UUI_THEME'\r\n\r\nexport const GET_MAIN_DATA = 'GET_MAIN_DATA'\r\nexport const GET_LIST_DATA = 'GET_LIST_DATA'\r\nexport const GET_MAIN_ACCESS = 'GET_MAIN_ACCESS'\r\nexport const GET_USER_SAMNAME = 'GET_USER_SAMNAME'\r\nexport const GET_USER_CULTURE = 'GET_USER_CULTURE'\r\nexport const CLEAR_LIST_DATA = 'CLEAR_LIST_DATA'\r\nexport const SET_LOADING = 'SET_LOADING'\r\n\r\nexport const SHOW_MESS_APP = 'SHOW_MESS_APP'\r\nexport const SHOW_ALERT_APP = 'SHOW_ALERT_APP'\r\nexport const SHOW_DIALOG_APP = 'SHOW_DIALOG_APP'\r\nexport const DIALOG_ANSWER = 'DIALOG_ANSWER'\r\n\r\nexport const SEND_UPDATES_SUCCESS = 'SEND_UPDATES_SUCCESS'\r\nexport const SEND_UPDATES_FAILURE = 'SEND_UPDATES_FAILURE'\r\n","import React,{Fragment,useState,useEffect,useContext} from 'react';\r\nimport App from './App';\r\nimport { apiDataUIUrl,thisMock } from './projConst';\r\nimport mockUIapp from './api/mockUIapp';\r\nimport * as api from './api/apiFunc'\r\nimport * as R from 'ramda'\r\nimport { useQueryParam, NumberParam, StringParam } from 'use-query-params';\r\nimport { shallowEqual, useDispatch,useSelector } from 'react-redux'\r\nimport { DataServerContext } from \"./Server/DataServerContext\";\r\nimport {UiGlobalcss,UiThemecss,UiConfigApp} from './Actions/actions.jsx'\r\n\r\nfunction Main() {\r\n const [db, setDb] = useQueryParam('db', StringParam);\r\n const [tree, setTree] = useQueryParam('tree', NumberParam);\r\n const [argum, setArg] = useQueryParam('argum', StringParam);\r\n\r\n const { getServerDataRedux, } = useContext(DataServerContext);\r\n\r\n const dispatch = useDispatch();\r\n\r\n const appParams = { tree, db };\r\n const mainuniui = useSelector(state=>state.mainuniui,shallowEqual)\r\n \r\n useEffect(async () => {\r\n dispatch(getServerDataRedux(apiDataUIUrl,false, {appParams},true, mockUIapp,'FETCH_UNIVER_UI'))\r\n }, []);\r\n useEffect(() => {\r\n if (api.isEmpty(mainuniui)) return\r\n let header = R.find(R.propEq(\"block\", \"header\"))(mainuniui.serverdata.blocks) \r\n let menu = R.find(R.propEq(\"block\", \"toolsbar\"))(mainuniui.serverdata.blocks) \r\n dispatch(UiGlobalcss(api.parsingCss(mainuniui.serverdata.blocks, '', 'css', 'children')))\r\n dispatch(UiThemecss(mainuniui.serverdata.theme))\r\n dispatch(UiConfigApp({ ...mainuniui.serverdata,header,menu }))\r\n }, [mainuniui]);\r\n\r\n return (\r\n \r\n {mainuniui && mainuniui.globalCss && \r\n \r\n /* userdata={userdata}\r\n maindata={otherdata}\r\n SaveDict={handleSaveDict}\r\n SaveReq={handleSaveReq}\r\n */}\r\n \r\n );\r\n}\r\n\r\nexport default Main;\r\n","import React, { useCallback } from \"react\";\r\nimport {\r\n FETCH_DATA_START,\r\n FETCH_MAIN_DATA,\r\n FETCH_LIST_DATA,\r\n FETCH_DATA_FAILURE,\r\n UUI_GLOBAL,\r\n UUI_THEME,\r\n SHOW_MESS_APP\r\n} from '../types'\r\nimport { shallowEqual, useDispatch,useSelector } from 'react-redux'\r\n\r\nexport const UiGlobalcss = (glcss) => {\r\n return (dispatch, getState) => {\r\n return dispatch({ type: UUI_GLOBAL, payload: {globalCss: glcss} })\r\n }\r\n}\r\nexport const UiThemecss = (glcss) => {\r\n return (dispatch, getState) => {\r\n return dispatch({ type: UUI_THEME, payload: {themeCss: glcss} })\r\n }\r\n}\r\nexport const UiConfigApp = (blocks) => {\r\n return (dispatch, getState) => {\r\n return dispatch({ type: UUI_GLOBAL, payload: blocks })\r\n }\r\n}\r\nexport const ShowMessageApp = (curmess) => {\r\n return (dispatch, getState) => {\r\n //console.log('obj----AddRememberApp-----',obj)\r\n if (!(curmess.draw)) {\r\n curmess.draw = { vertical: 'top', horizontal: 'left' }\r\n }\r\n return dispatch({ type: SHOW_MESS_APP, payload: curmess })\r\n }\r\n}\r\n \r\n/*export const fetchData = (filters) => {\r\n //console.log('filters__',filters)\r\n return async dispatch => {\r\n dispatch( CreateAct(FETCH_DATA_START))\r\n await fetchDataApi(filters)\r\n .then((maindata) => {\r\n //console.log('maindata__',maindata)\r\n dispatch(CreateAct(FETCH_MAIN_DATA,{maindata})) \r\n })\r\n .catch((error) => {\r\n dispatch({\r\n type: FETCH_DATA_FAILURE,\r\n payload: error,\r\n error: true\r\n })\r\n console.log(error)\r\n })\r\n }\r\n }*/","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import * as R from 'ramda'\r\n\r\nimport {FETCH_UNIVER_UI,\r\n UUI_GLOBAL,\r\n UUI_THEME,\r\n } from '../types'\r\n \r\nconst initialState = {};\r\n\r\nexport default function mainuniua(state = initialState, {type,payload}) {\r\n switch (type) {\r\n case FETCH_UNIVER_UI:\r\n return { ...state, ...payload }\r\n case UUI_GLOBAL:\r\n return { ...state, ...payload }\r\n case UUI_THEME:\r\n return { ...state, ...payload }\r\n default:\r\n return state;\r\n }\r\n}","import * as R from 'ramda'\r\n\r\nimport {\r\n FETCH_MAIN_DATA,\r\n} from '../types'\r\n \r\nconst initialState = {};\r\n\r\nexport default function maindata(state = initialState, {type,payload}) {\r\n switch (type) {\r\n case FETCH_MAIN_DATA:\r\n return R.merge(state, payload)\r\n default:\r\n return state;\r\n }\r\n}","import * as R from 'ramda'\r\n\r\nimport {\r\n FETCH_LIST_DATA,\r\n} from '../types'\r\n \r\nconst initialState = {};\r\n\r\nexport default function listdata(state = initialState, {type,payload}) {\r\n switch (type) {\r\n case FETCH_LIST_DATA:\r\n return R.merge(state, payload)\r\n default:\r\n return state;\r\n }\r\n}","import * as R from 'ramda'\r\n\r\nimport { SHOW_MESS_APP,\r\n } from '../types'\r\n \r\nconst initialState = {\r\n curmessage : { open : false , mess : \"\"},\r\n };\r\n\r\nexport default function mainscreen(state = initialState, {type,payload}) {\r\n switch (type) {\r\n case SHOW_MESS_APP:\r\n return {\r\n ...state,\r\n curmessage : payload\r\n }\r\n default:\r\n return state;\r\n }\r\n}","import { combineReducers } from 'redux';\r\n\r\nimport mainuniui from './mainuniui';\r\nimport maindata from './maindata';\r\nimport listdata from './listdata';\r\nimport mainscreen from './mainscreen';\r\n\r\nexport default combineReducers({\r\n mainuniui,maindata,listdata,mainscreen\r\n}); ","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport Button from '@material-ui/core/Button';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport green from '@material-ui/core/colors/green';\r\nimport amber from '@material-ui/core/colors/amber';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport WarningIcon from '@material-ui/icons/Warning';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nconst variantIcon = {\r\n success: CheckCircleIcon,\r\n warning: WarningIcon,\r\n error: ErrorIcon,\r\n info: InfoIcon,\r\n};\r\n\r\nconst styles1 = theme => ({\r\n success: {\r\n backgroundColor: green[600],\r\n },\r\n error: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n info: {\r\n backgroundColor: theme.palette.primary.dark,\r\n },\r\n warning: {\r\n backgroundColor: amber[700],\r\n },\r\n icon: {\r\n fontSize: 20,\r\n },\r\n iconVariant: {\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n message: {\r\n display: 'block',\r\n fontSize: '110%',\r\n /* alignItems: 'left'*/\r\n textAlign: 'left',\r\n color: 'white'\r\n },\r\n});\r\n\r\nfunction MySnackbarContent(props) {\r\n const { classes, className, message, onClose, variant, ...other } = props;\r\n const Icon = variantIcon[variant];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {message}\r\n \r\n \r\n }\r\n action={[\r\n \r\n \r\n ,\r\n ]}\r\n {...other}\r\n />\r\n );\r\n}\r\n\r\nMySnackbarContent.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n className: PropTypes.string,\r\n message: PropTypes.node,\r\n onClose: PropTypes.func,\r\n variant: PropTypes.oneOf(['success', 'warning', 'error', 'info']).isRequired,\r\n};\r\n\r\nconst MySnackbarContentWrapper = withStyles(styles1)(MySnackbarContent);\r\n\r\nconst styles2 = theme => ({\r\n margin: {\r\n margin: theme.spacing(),\r\n },\r\n});\r\n\r\nclass CustomSnackbars extends React.Component {\r\n state = {\r\n open: false,\r\n };\r\n\r\n render() {\r\n const { classes , uservar,usermess,useropen,userClose } = this.props;\r\n // variant=\"success\" \"error\" \"warning\" \"info\"\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nCustomSnackbars.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default withStyles(styles2)(CustomSnackbars);","import React, { Component , Fragment} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Modal from '@material-ui/core/Modal';\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\n\r\n\r\nfunction rand() {\r\n return Math.round(Math.random() * 20) - 10;\r\n}\r\n\r\nfunction getModalStyle() {\r\n const top = 50 + rand();\r\n const left = 50 + rand();\r\n\r\n return {\r\n top: `${top}%`,\r\n left: `${left}%`,\r\n transform: `translate(-${top}%, -${left}%)`,\r\n };\r\n}\r\n\r\nconst styles = theme => ({\r\n paper: {\r\n position: 'absolute',\r\n width: theme.spacing(50),\r\n backgroundColor: theme.palette.background.paper,\r\n boxShadow: theme.shadows[5],\r\n padding: theme.spacing(4),\r\n },\r\n button: {\r\n marginTop: theme.spacing(3),\r\n marginLeft: theme.spacing(8),\r\n color:'navy',\r\n fontWeight : \"bold\",\r\n },\r\n title: {\r\n marginTop: -theme.spacing(2),\r\n marginBottom: theme.spacing(3),\r\n textAlign: 'center',\r\n backgroundColor : '#f0f0f0'\r\n},\r\nmessage: {\r\n margin: theme.spacing(2),\r\n textAlign: 'left',\r\n},\r\n});\r\n\r\nclass ShowDialog extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n open: this.props.open,\r\n };\r\n }\r\n\r\n handleOpen = () => {\r\n this.setState({ open: true });\r\n };\r\n\r\n handleClose = () => {\r\n this.setState({ open: false });\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n return (\r\n
\r\n \r\n {this.props.title}\r\n \r\n \r\n {this.props.message}\r\n \r\n \r\n \r\n {!this.props.statement &&\r\n <> \r\n \r\n \r\n \r\n }\r\n {this.props.statement &&\r\n \r\n }\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nShowDialog.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default withStyles(styles)(ShowDialog);","import {SHOW_ALERT_APP,SHOW_DIALOG_APP,DIALOG_ANSWER,SHOW_MESS_APP} from '../types'\r\n\r\nconst handlers = {\r\n [SHOW_MESS_APP]: (state, {payload}) => ({...state, curmessage: payload}),\r\n [SHOW_ALERT_APP]: (state, {payload}) => ({...state, alertmessage: payload}),\r\n [SHOW_DIALOG_APP]: (state, {payload}) => ({...state, dialog: payload}),\r\n [DIALOG_ANSWER]: (state, {payload}) => ({...state, dialoganswer: payload}),\r\n DEFAULT: state => state\r\n }\r\n \r\nexport const infowinReducer = (state, action) => {\r\n const handler = handlers[action.type] || handlers.DEFAULT\r\n return handler(state, action)\r\n }\r\n \r\n","import React, {useReducer} from 'react' \r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport CustomSnackbars from './CustomSnackbars'\r\nimport ShowDialog from './ShowDialog'\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport {InfoWinContext} from './infowinContext'\r\nimport {infowinReducer} from './infowinReducer'\r\nimport {SHOW_ALERT_APP,SHOW_MESS_APP,SHOW_DIALOG_APP,DIALOG_ANSWER} from '../types'\r\n\r\nconst useStyles = makeStyles( theme => ({ \r\n root: {\r\n textAlign: 'left',\r\n },\r\n content: {\r\n paddingLeft: theme.spacing(3),\r\n },\r\n title: {\r\n paddingLeft: theme.spacing(3),\r\n textAlign: 'left',\r\n color : '#000',\r\n backgroundColor : '#d9d9d9',\r\n fontSize: '75%',\r\n },\r\n dense: {\r\n marginTop: 16,\r\n },\r\n menuButton: {\r\n marginLeft: -18,\r\n marginRight: 10,\r\n }, \r\n clgrid: {\r\n margin: theme.spacing(2),\r\n fontSize: '75%',\r\n textAlign: 'left',\r\n fontWeight : 'bold',\r\n },\r\n divbutton: {\r\n fontSize: '75%',\r\n textAlign: 'left',\r\n fontWeight : 'bold',\r\n },\r\n button: {\r\n margin: theme.spacing(),\r\n display: 'block',\r\n width:'50%',\r\n },\r\n }));\r\n\r\nexport const InfoWinState = ({children}) => {\r\n const initialState = {\r\n curmessage : { open : false , mess : \"\" , draw: { vertical : 'top', horizontal: 'center' }},\r\n alertmessage : { open : false , typemess : \"error\", mess : \"\"},\r\n dialog : { open : false ,id : null, title : \"\", mess : \"\",statement : false},\r\n dialoganswer : {winDialogAnswer : false,userDialogAnswer:{id:null,answer:false}}\r\n }\r\n \r\n const [state, dispatch] = useReducer(infowinReducer, initialState)\r\n const draw = { vertical : 'top', horizontal: 'left' } \r\n\r\n const messageWin = (mess , open = (mess.length ? true : false)) => {\r\n dispatch({\r\n type: SHOW_MESS_APP,\r\n payload: {open, mess, draw}\r\n })\r\n dispatch({\r\n type: DIALOG_ANSWER,\r\n payload: {winDialogAnswer:false,userDialogAnswer:{id:null,answer:false}}\r\n })\r\n\r\n }\r\n\r\n const messageWinClose = () => {\r\n dispatch({\r\n type: SHOW_MESS_APP,\r\n payload: {open:false, mess:\"\", draw}\r\n })\r\n }; \r\n\r\n const alertWin = (typemess = 'info', mess , open = (mess.length ? true : false)) => {\r\n dispatch({\r\n type: SHOW_ALERT_APP,\r\n payload: {open,typemess,mess}\r\n })\r\n dispatch({\r\n type: DIALOG_ANSWER,\r\n payload: {winDialogAnswer:false,userDialogAnswer:{id:null,answer:false}}\r\n })\r\n }\r\n \r\n const alertWinClose = () => {\r\n // console.log('state===',state);\r\n dispatch({\r\n type: SHOW_ALERT_APP,\r\n payload: {open : false, mess : \"\",typemess : state.alertmessage.typemess}\r\n })\r\n }; \r\n \r\n //messageWinExtended\r\n\r\n const dialogWin = (id, title, mess, statement = true, open = true) => {\r\n console.log('statement == ',statement) \r\n dispatch({\r\n type: SHOW_DIALOG_APP,\r\n payload: {open,id,title,mess,statement}\r\n })\r\n dispatch({\r\n type: DIALOG_ANSWER,\r\n payload: {winDialogAnswer:false,userDialogAnswer:{id,answer:false}}\r\n })\r\n }\r\n\r\n const handleDialogAnswer = (answer) => {\r\n const cleaWin = {open : false,id:null,title:\"\",mess:''}\r\n dispatch({\r\n type: SHOW_DIALOG_APP,\r\n payload: {open : false,id:null,title:\"\",mess:'',statement:false}\r\n })\r\n dispatch({\r\n type: DIALOG_ANSWER,\r\n payload: {winDialogAnswer:true,userDialogAnswer:{id:state.dialoganswer.userDialogAnswer.id,answer:answer}}\r\n })\r\n\r\n }\r\n \r\n\r\n // alertWin = (mess,typemess='info') => \r\n // this.props.appAlertOpen({open : true,typemess,mess})\r\n\r\n const {curmessage,alertmessage,dialog,dialoganswer} = state\r\n const classes = useStyles();\r\n \r\n return (\r\n \r\n {children}\r\n {curmessage.mess}}\r\n > \r\n {curmessage.mess}}\r\n action={[\r\n \r\n \r\n ,\r\n ]} \r\n />\r\n \r\n \r\n { }\r\n \r\n )\r\n} \r\n//export default withStyles(styles)(InfoWinState);","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport Button from '@material-ui/core/Button';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport green from '@material-ui/core/colors/green';\r\nimport amber from '@material-ui/core/colors/amber';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport WarningIcon from '@material-ui/icons/Warning';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nconst variantIcon = {\r\n success: CheckCircleIcon,\r\n warning: WarningIcon,\r\n error: ErrorIcon,\r\n info: InfoIcon,\r\n};\r\n\r\nconst styles1 = theme => ({\r\n success: {\r\n backgroundColor: green[600],\r\n },\r\n error: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n info: {\r\n backgroundColor: theme.palette.primary.dark,\r\n },\r\n warning: {\r\n backgroundColor: amber[700],\r\n },\r\n icon: {\r\n fontSize: 20,\r\n },\r\n iconVariant: {\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n message: {\r\n display: 'block',\r\n fontSize: '110%',\r\n /* alignItems: 'left'*/\r\n textAlign: 'left',\r\n color: 'white'\r\n },\r\n});\r\n\r\nfunction MySnackbarContent(props) {\r\n const { classes, className, message, onClose, variant, ...other } = props;\r\n const Icon = variantIcon[variant];\r\n\r\n return (\r\n \r\n \r\n {message}\r\n \r\n \r\n }\r\n action={[\r\n \r\n \r\n ,\r\n ]}\r\n {...other}\r\n />\r\n );\r\n}\r\n\r\nMySnackbarContent.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n className: PropTypes.string,\r\n message: PropTypes.node,\r\n onClose: PropTypes.func,\r\n variant: PropTypes.oneOf(['success', 'warning', 'error', 'info']).isRequired,\r\n};\r\n\r\nconst MySnackbarContentWrapper = withStyles(styles1)(MySnackbarContent);\r\n\r\nconst styles2 = theme => ({\r\n margin: {\r\n margin: theme.spacing(),\r\n },\r\n});\r\n\r\nclass CustomSnackbars extends React.Component {\r\n state = {\r\n open: false,\r\n };\r\n\r\n render() {\r\n const { classes , uservar,usermess,useropen,userClose,userdur } = this.props;\r\n // variant=\"success\" \"error\" \"warning\" \"info\"\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nCustomSnackbars.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default withStyles(styles2)(CustomSnackbars);","import React, { useState,createContext, useContext } from \"react\";\r\n//import axios from 'axios'\r\nimport request from \"superagent\";\r\nimport CustomSnackbars from \"../Components/Lib/CustomSnackbars\";\r\nimport { DataServerContext } from \"./DataServerContext\";\r\n\r\nimport {\r\n thisPost,\r\n thisMock,\r\n apiDataUrl,\r\n apiDataAccessUrl,\r\n apiUserSamNameUrl,\r\n apiListUrl,\r\n apiSaveUpdUrl\r\n} from \"../projConst\";\r\nimport * as api from \"../api/apiFunc\";\r\n\r\n//import { InfoWinContext } from \"../infowindow/infowinContext\";\r\n\r\nexport const DataServer = ({ children }) => {\r\n //const { alertWin, alertmessage } = useContext(InfoWinContext);\r\n const [loading, Setloading] = useState(false) \r\n const [dataserver, SetDataServer] = useState({});\r\n //const [otherdata, SetOtherData] = useState({});\r\n \r\n \r\n const [alertmessage, SetAlertmessage] = useState(0);\r\n const alertTypeMess = ['success', 'warning', 'error', 'info']\r\n const alertWinClose = () => {\r\n SetAlertmessage({ open: false, mess: \"\", typemess: 'error'})\r\n }; \r\n \r\n const getServerData = (apiUrl,param,thismock,mock,SetState=null,showmess=null,durmess=null) => {\r\n setLoading(true);\r\n api.FetchLiteUrl(apiUrl, true, param , thismock, mock).then(onedata => {\r\n const { is_err, mess } = api.HandleFindError(onedata)\r\n if (is_err) \r\n SetAlertmessage({ open: true, mess: mess || ' Ошибка при загрузке данных с сервера', typemess: 'error' })\r\n else {\r\n if (showmess) \r\n SetAlertmessage({ open: true, mess: showmess , typemess: 'success',duration:durmess})\r\n if (typeof SetState === 'function') SetState(onedata)\r\n SetDataServer(onedata)\r\n }\r\n\r\n setLoading(true);\r\n })\r\n }\r\n\r\n const getServerDataRedux = (apiUrl, post, param, thismock, mock, action = null, mockempty = {}, showmess = null, durmess = null) => {\r\n return (dispatch, getState) => {\r\n return api.FetchLiteUrl(apiUrl, post, param, thismock, mock,mockempty )\r\n .then(onedata => {\r\n //console.log('getState===',getState);\r\n const { is_err, mess } = api.HandleFindError(onedata)\r\n if (is_err) \r\n SetAlertmessage({ open: true, mess: mess || ' Ошибка при загрузке данных с сервера', typemess: 'error' })\r\n else {\r\n if (showmess) \r\n SetAlertmessage({ open: true, mess: showmess , typemess: 'success',duration:durmess})\r\n }\r\n return dispatch({ type: action, payload: {serverdata: onedata } })\r\n })\r\n }\r\n }\r\n\r\n const loadData = async (mockdata, url, userarg) => {\r\n if (thisMock) {\r\n return new Promise((resolve, reject) => {\r\n resolve(mockdata);\r\n });\r\n } else {\r\n if (!thisPost) {\r\n const { body } = await request.get(url);\r\n return body;\r\n } else {\r\n const { body } = await request\r\n .post(url)\r\n .set(\"Content-Type\", \"application/json\")\r\n .send({ ...userarg });\r\n return body;\r\n }\r\n }\r\n };\r\n /* const getMainData = async userarg => {\r\n setLoading();\r\n //const response = loadData(mock.maindata, apiDataUrl, userarg);\r\n await loadData(mock.maindata, apiDataUrl, userarg).then(onedata => {\r\n const { is_err, mess } = api.HandleFindError(onedata);\r\n if (is_err) alertWin(\"error\", mess);\r\n else {\r\n dispatch({\r\n type: GET_MAIN_DATA,\r\n payload: onedata\r\n });\r\n }\r\n });\r\n };*/\r\n\r\n const setLoading = (param) => Setloading(param)\r\n\r\n return (\r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport Main from './Main';\nimport * as serviceWorker from './serviceWorker';\nimport { Provider } from 'react-redux';\nimport { createStore, applyMiddleware} from 'redux';\nimport {composeWithDevTools} from 'redux-devtools-extension'\nimport thunk from 'redux-thunk'\nimport reducer from './Reducers';\nimport {InfoWinState} from './infowindow/InfowinState'\nimport {DataServer} from './Server/DataServer'\n\nconst store = createStore(reducer, composeWithDevTools(\n applyMiddleware(thunk)\n))\n\nReactDOM.render(\n \n \n \n
\n \n \n \n , document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}