{"version":3,"sources":["utils/globals.js","actions/index.js","sagas/api.js","actions/files.js","utils/utils.js","actions/auth.js","utils/reducers.js","reducers/auth.js","reducers/app.js","reducers/index.js","reducers/uploader.js","reducers/submittedFiles.js","reducers/notification.js","sagas/auth.js","sagas/index.js","utils/sagas.js","utils/store.js","components/NotificationManager.js","pages/Layout/LeftDrawer.js","fonts/segoeui-regular.woff2","pages/Layout/index.js","components/FetchData.js","components/ConnectedItem.js","components/CardTitle.js","components/EmptyComponent.js","components/Loading.js","pages/Home/index.js","components/TextArray.js","components/JsonArray.js","components/FieldCreator.js","pages/LoginPage/Login.js","pages/LoginPage/index.js","components/ConnectedList.js","components-tm/SearchCommandBar.js","pages/Project/index.js","components/DisplayItem.js","components/FileUploader.js","components-tm/DeleteDialog.js","components-tm/RecordExtension/Attachments.js","components-tm/RecordExtension/Comments.js","components-tm/RecordExtension/index.js","components-tm/StatusBar.js","pages/Project/Detail.js","components-tm/FormLoader.js","pages/Project/Edit.js","pages/Task/Edit.js","pages/Check/Edit.js","pages/Check/Detail.js","pages/Task/Detail.js","components/Protected.js","pages/User/index.js","pages/User/Edit.js","pages/User/Detail.js","components-tm/AppBreadcrumb.js","main.js","index.js"],"names":["require","letters","String","prototype","turkishToLowerCase","this","replace","letter","toLowerCase","turkishToLocaleLowerCase","toLocaleLowerCase","setUploader","createAction","removeNotification","pushNotification","updateUploaderParams","fetchData","clearData","upsertForm","fetchDataSuccess","setTitle","deleteRecord","reloadQuery","setBreadcrumb","addBreadcrumb","queries","payload","queryName","rest","params","tableName","reloadAllQueries","Object","keys","map","item","query","fetchUserInfo","fetch","App","REST_SERVER","method","credentials","then","i","status","json","i2","actions","userInfoFetched","loggedOut","console","error","catch","login","body","JSON","stringify","headers","token","name","value","hours","dateObj","Date","setTime","getTime","document","cookie","toUTCString","setCookie","type","message","logout","state","formName","formPath","pk","values","onSave","_notification","notification","undefined","formValues","form","onFetch","data","deletePath","onDelete","submitFile","deleteFile","guid","c","r","Math","random","toString","dateToStr","date","ff","format","locale","englishLocale","lightenDarkenColor","col","amt","usePound","slice","num","parseInt","b","g","rootReducer","combineReducers","auth","action","checked","userInfo","app","title","path","label","breadcrumb","oldState","uploader","FineUploaderTraditional","options","callbacks","onComplete","onError","id","errorReason","log","multiple","autoUpload","dragAndDrop","reportDirectoryPaths","cors","expected","sendCredentials","methods","addFiles","cache","request","paramsInBody","accept","endpoint","retry","enableAuto","setParams","submittedFiles","newState","push","newFiles","indexToRemove","indexOf","splice","routing","routerReducer","notifications","key","filter","execLogout","execLogin","execfetchUserInfo","rootSaga","userName","call","api","take","fork","getState","execFetchData","execReloadQuery","execUpsertForm","execDeleteRecord","username","authSagas","appSagas","sagaMiddleware","createSagaMiddleware","store","createStore","compose","applyMiddleware","window","devToolsExtension","f","run","typeInfos","success","bgColor","icon","warning","NotificationManager","props","context","onClick","bind","clearFuncs","style","position","top","right","zIndex","width","React","Component","MessageItem","setTimeout","getElementById","className","timer","backgroundColor","display","alignItems","padding","margin","color","Icon","iconName","minHeight","connect","paths","PermanentDrawer","selectedKey","setState","history","selected","location","hash","length","left","height","overflow","transition","cursor","fontWeight","minWidth","fontSize","index","handleClick","whiteSpace","routes","fullScreen","Layout","open","onClose","content","children","LeftDrawer","AppBar","stickyStyle","Title","Profile","user","CommandBarButton","text","fullname","split","iconProps","menuIconProps","menuProps","items","FetchData","nestedGet","obj","args","Array","arguments","ConnectedItem","nextProps","nextState","nextContext","resultSet","component","loadingComponent","emptyComponent","defaultProps","useDiv","ownProps","apply","CardTitle","marginRight","marginTop","EmptyComponent","dsc","cardTextStyle","contentClassName","lineHeight","textAlign","Loading","spinnerLabel","Label","Spinner","size","SpinnerSize","large","ariaLive","Home","Content","Tasks","MyTasks","TaskCountCards","p","completed_tasks","expired_tasks","on_progress_tasks","checklist_count","count","CountCard","inte","_count","setInterval","clearInterval","float","tasks","load","columns","fieldName","maxWidth","iconOnly","isPadded","onRender","styles","root","collabrators","Persona","imageUrl","pp_id","secondaryText","finish_date","DetailsList","selectionMode","SelectionMode","none","setKey","onRenderRow","e","createElement","DetailsRow","event","project_id","itemIndex","isHeaderVisible","selectionPreservedOnEmptyClick","enterModalSelectionOnTouch","ArrayValueController","draggingIndex","onEdit","onSwap","persona","editingIndex","onCopy","draggable","onDragStart","onDragOver","preventDefault","onDrop","onDragEnd","borderRadius","IconButton","TextArray","onKeyPressEnter","onChange","onAdd","input","_value","join","newValue","tempValue","droppingIndex","which","keyCode","initalValue","meta","placeholder","queryParams","errorMessage","TextField","multiline","bottom","onBeforeChange","onBlur","target","rows","onKeyPress","fieldTypes","toggle","typeToComponent","JsonArrayValueController","draggedIndex","draggedItem","canDrop","dropContext","dragContext","canDrag","onDragEnter","onDragLeave","selectedItems","fieldStruct","buttonColumns","isRowHeader","isResizable","isSorted","isSortedDescending","info","keyName","usePageCache","dragDropEvents","_getDragDropEvents","ind","layoutMode","DetailsListLayoutMode","justified","checkboxVisibility","CheckboxVisibility","JsonArray","initialState","fields","sort","i1","order","forEach","_fields","field","PrimaryButton","FieldCreator","fieldsJSON","elementJSON","Textfield","Field","isArray","_TextArray","_Textfield","Switcher","_Switcher","_NumberField","_rest","onChanged","_Textarea","fullWidth","_Datepicker","required","DatePicker","firstDayOfWeek","DayOfWeek","Monday","strings","DayPickerStrings","isRequired","isRequiredErrorMessage","onSelectDate","trueValue","falseValue","valueParser","defaultChecked","check","_CheckBox","Checkbox","__PersonaArray","insertKey","valField","textField","insertItem","val","_index","queryPath","alias","_valField","_textField","selectfieldoptions","CommandBar","ItemRenderer","Dropdown","selectedKeys","multiSelect","disabled","ProgressIndicator","description","_PersonaArray","CommandButton","subMenuProps","_Combobox","ComboBox","shorttext","longtext","switch","checkbox","password","combobox","number","multifield","_JsonArray","hiddenfield","textlistfield","jsonArray","months","shortMonths","days","shortDays","goToToday","prevMonthAriaLabel","nextMonthAriaLabel","prevYearAriaLabel","nextYearAriaLabel","Login","autoComplete","prefix","LoginPage","expand","page","contentController","getParams","search","queryString","string","ConnectedList","customFilter","searchItem","filterField","caseSensitive","customSort","keyField","newProps","SearchCommandBar","searchBox","commandBar","SearchBox","ProjectList","cmd","DocumentCard","DocumentCardTitle","shouldTruncate","showAsSecondaryTitle","DocumentCardStatus","statusIcon","DocumentCardActivity","activity","createdAt","people","profileImageSrc","DisplayItem","marginBlockStart","marginBlockEnd","FileUploader","_","isEqual","on","onUpload","onSubmitted","resp","onCancel","oldStatus","newStatus","onSubmit","a","Files","_Files","hideBeforeStart","ProgressBar","bytesUploaded","hidden","totalSize","_createEventHandlers","_isTotalProgress","_trackProgressEventHandler","_trackStatusEventHandler","_unmounted","_unregisterEventHandlers","percentWidth","percentComplete","statusEnum","qq","hideOnComplete","isUploadComplete","getInProgress","UPLOADING","off","statusToCheck","UPLOAD_FAILED","UPLOAD_SUCCESSFUL","CANCELED","DeleteDialog","Dialog","onDismiss","main","dialogContentProps","DialogType","largeHeader","header","subText","modalProps","isBlocking","containerClassName","DialogFooter","DefaultButton","Attachments","dragging","parentType","parentId","parent_id","parent_type","borderBottom","elipisisAriaLabel","UploadButton","FileList","files","attachments","_files","file_name","List","onRenderCell","ListItem","maxHeight","bytesToSize","bytes","floor","round","pow","FileInputUploader","deleteRecordId","file_size","user_full_name","OverflowSet","vertical","ariaLabel","download","href","click","onRenderItem","TooltipHost","calloutProps","directionalHint","DirectionalHint","rightCenter","beakWidth","scrollToEnd","commentList","scrollTo","scrollHeight","_Comments","comment","onCommit","myUsername","author","CommentList","border","Comments","ListRenderer","comments","firstname","lastname","email","isMyComment","justifyContent","marginLeft","attachmentComponents","attachment","RecordExtension","selectedTab","fieldKey","button","StatusBar","ProjectDetail","match","p2","doneDialog","done_date","done_count","task_count","TaskList","DoneDialog","formInitialize","Actions","initialize","FormLoader","initialValues","_initialized","isNew","formInitialData","ProjectEdit","editPaths","goBack","Button","reduxForm","TaskEdit","task_id","task","CheckEdit","check_id","TaskDetail","check_count","CheckList","checklists","Protected","extra","Users","UserList","users","_users","onRenderPrimaryText","_UserEdit","user_id","currentUserId","UserEdit","currentUsername","_UserDetail","uploadPhoto","user_info","PhotoUpload","toUpperCase","src","updatedAt","alt","reload","UserDetail","AppBreadcrumb","Breadcrumb","listItem","chevron","itemLink","StickyBreadCrumb","boundaryElement","topOffset","stickyClassName","_MainPage","Route","exact","AppPage","Switch","CheckDetail","MainPage","loadTheme","palette","themePrimary","initializeIcons","ApplicationBinder","bindActionCreators","authActions","appActions","fileActions","dispatch","contextTypes","PropTypes","object","animationDuration","_history","createHashHistory","syncHistoryWithStore","AppRenderer","Fabric","ReactDOM","render"],"mappings":"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","file":"static/js/main.fc46fc0c.chunk.js","sourcesContent":["require('string.prototype.includes');\n\nconst letters = {\"İ\": \"i\", \"I\": \"ı\", \"Ş\": \"ş\", \"Ğ\": \"ğ\", \"Ü\": \"ü\", \"Ö\": \"ö\", \"Ç\": \"ç\"};\n\nString.prototype.turkishToLowerCase = function () {\n return this.replace(/(([İI]))+/g, function (letter) {\n return letters[letter];\n }).toLowerCase();\n};\n\nString.prototype.turkishToLocaleLowerCase = function () {\n return this.replace(/(([İI]))+/g, function (letter) {\n return letters[letter];\n }).toLocaleLowerCase();\n};\n","import createAction from 'redux-act/lib/createAction';\n\nexport const setUploader = createAction('setUploader');\nexport const removeNotification = createAction('removeNotification');\nexport const pushNotification = createAction('pushNotification');\nexport const updateUploaderParams = createAction('updateUploaderParams');\nexport const fetchData = createAction('fetchData');\nexport const clearData = createAction('clearData');\nexport const upsertForm = createAction('upsertForm');\nexport const fetchDataSuccess = createAction('fetchDataSuccess');\nexport const setTitle = createAction('setTitle');\nexport const deleteRecord = createAction('deleteRecord');\nexport const reloadQuery = createAction('reloadQuery');\nexport const setBreadcrumb = createAction('setBreadcrumb');\nexport const addBreadcrumb = createAction('addBreadcrumb');","import {App} from \"../index\";\n\n\nexport const cookieByName = function (name) {\n let match = document.cookie.match(new RegExp(name + '=([^;]+)'));\n if (match) return match[1];\n return null;\n}\nexport const setCookie = function (name, value, hours) {\n let dateObj = new Date();\n dateObj.setTime(dateObj.getTime() + (hours * 60 * 60 * 1000));\n document.cookie = name + \"=\" + value + \";\" + \"expires=\" + dateObj.toUTCString()\n}\n\nexport const deleteCookie = function (name) {\n document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';\n}\n\nconst queries = {};\n\nfunction reloadQuery(payload) {\n const {queryName, ...rest} = payload;\n const params = queries[queryName];\n if (params)\n fetchData({tableName: queryName, params, ...rest})\n}\n\nexport function reloadAllQueries() {\n Object.keys(queries).map(item => {\n const query = queries[item]\n reloadQuery({queryName: item, ...query})\n })\n}\n\nfunction fetchUserInfo() {\n fetch(App.REST_SERVER + \"/auth/autherized\", {\n method: \"GET\",\n credentials: \"include\"\n })\n .then(i => {\n if (i.status === 201) {\n i.json().then(i2 => {\n App.actions.userInfoFetched(i2)\n })\n } else if (i.status === 400 || i.status === 403) {\n App.actions.loggedOut({});\n } else {\n App.actions.loggedOut({})\n console.error(\"unexpected error\")\n }\n }).catch(i => {\n App.actions.loggedOut({})\n console.error(\"error\", i)\n });\n}\n\nfunction login(payload) {\n fetch(App.REST_SERVER + \"/auth/login\", {\n method: \"POST\",\n credentials: \"include\",\n body: JSON.stringify(payload),\n headers: {\n \"Content-Type\": \"application/json\"\n }\n })\n .then(i => {\n if (i.status === 201) {\n i.json().then(i2 => {\n const {token, ...rest} = i2;\n setCookie(\"tm-token\", token, 24)\n App.actions.userInfoFetched(rest);\n })\n } else if (i.status === 400 || i.status === 403) {\n App.actions.pushNotification({\n type: \"error\",\n message: \"Username or password is not correct!\"\n })\n App.actions.loggedOut({})\n } else {\n App.actions.loggedOut({})\n console.error(\"unexpected error\")\n }\n }).catch(i => {\n App.actions.loggedOut({})\n console.error(\"error\", i)\n });\n}\n\nfunction logout() {\n fetch(App.REST_SERVER + \"/auth/logout\", {\n method: \"POST\",\n credentials: \"include\",\n headers: {\n \"Content-Type\": \"application/json\"\n }\n })\n .then(i => {\n if (i.status === 201) {\n i.json().then(i2 => {\n deleteCookie(\"tm-token\");\n App.actions.loggedOut({})\n })\n } else if (i.status === 400 || i.status === 403) {\n App.actions.loggedOut({})\n } else {\n App.actions.loggedOut({})\n console.error(\"unexpected error\")\n }\n }).catch(i => {\n App.actions.loggedOut({})\n console.error(\"error\", i)\n });\n}\n\nfunction upsertForm(payload, state) {\n const {formName, formPath, pk, values, onSave, notification: _notification} = payload;\n const notification = _notification === undefined ? true : _notification;\n const formValues = formName ? state.form[formName].values : {};\n\n const method = pk ? \"update\" : \"create\";\n\n fetch(App.REST_SERVER + \"/\" + formPath + \"/\" + method, {\n method: \"POST\",\n credentials: \"include\",\n body: JSON.stringify({...(pk || {}), ...formValues, ...(values || {})}),\n headers: {\n \"Content-Type\": \"application/json\"\n }\n })\n .then(i => {\n if (i.status === 201) {\n i.json().then(i2 => {\n reloadAllQueries();\n if (notification)\n App.actions.pushNotification({\n type: \"success\",\n message: \"Saved successfully\"\n });\n if (onSave)\n onSave(i2);\n })\n } else if (i.status === 400 || i.status === 403) {\n App.actions.loggedOut({})\n App.actions.pushNotification({\n type: \"warning\",\n message: \"Your session has expired!\"\n });\n } else {\n App.actions.loggedOut({});\n console.error(\"unexpected error\");\n }\n });\n}\n\nfunction fetchData(payload) {\n const {tableName, params, onFetch} = payload;\n const body = params ? {body: JSON.stringify(params)} : {};\n fetch(App.REST_SERVER + \"/\" + tableName + \"/fetchData\", {\n method: params ? \"POST\" : \"GET\",\n credentials: \"include\",\n ...body,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n })\n .then(i => {\n if (i.status === 201) {\n i.json().then(i2 => {\n queries[tableName] = params;\n App.actions.fetchDataSuccess({\n name: tableName,\n data: i2\n });\n if (onFetch) {\n onFetch()\n }\n })\n } else if (i.status === 400 || i.status === 403) {\n App.actions.loggedOut({})\n App.actions.pushNotification({\n type: \"warning\",\n message: \"Your session has expired!\"\n });\n } else {\n App.actions.loggedOut({});\n console.error(\"unexpected error\");\n }\n });\n}\n\nfunction deleteRecord(payload) {\n const {deletePath, pk, onDelete} = payload;\n fetch(App.REST_SERVER + \"/\" + deletePath + \"/deleteRecord\", {\n method: \"POST\",\n credentials: \"include\",\n body: JSON.stringify(pk),\n headers: {\n \"Content-Type\": \"application/json\"\n }\n })\n .then(i => {\n if (i.status === 201) {\n i.json().then(i2 => {\n App.actions.pushNotification({\n type: \"success\",\n message: \"Delete successfully\"\n });\n if (onDelete)\n onDelete(i2);\n })\n } else if (i.status === 400 || i.status === 403) {\n App.actions.loggedOut({});\n App.actions.pushNotification({\n type: \"warning\",\n message: \"Your session has expired!\"\n });\n } else {\n App.actions.loggedOut({});\n console.error(\"unexpected error\");\n }\n });\n}\n\n\nexport {fetchUserInfo, login, logout, fetchData, upsertForm, deleteRecord, reloadQuery};\n","import createAction from 'redux-act/lib/createAction';\n\nexport const submitFile = createAction('submitFile');\nexport const deleteFile = createAction('deleteFile');","import format from \"date-fns/format\";\nimport englishLocale from \"date-fns/locale/en\";\n\nexport const guid = () => 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n});\n\nexport function dateToStr(date, ff = 'DD MMMM YYYY') {\n if (!date)\n return '';\n return format(date, ff, {locale: englishLocale});\n}\n\nexport function hash(str) {\n const string = str.toString();\n let hash = 0, i;\n for (i = 0; i < string.length; i++)\n hash = (((hash << 5) - hash) + string.charCodeAt(i)) & 0xFFFFFFFF;\n return hash;\n}\n\nexport function lightenDarkenColor(col, amt) {\n\n var usePound = false;\n\n if (col[0] === \"#\") {\n col = col.slice(1);\n usePound = true;\n }\n\n var num = parseInt(col, 16);\n\n var r = (num >> 16) + amt;\n\n if (r > 255) r = 255;\n else if (r < 0) r = 0;\n\n var b = ((num >> 8) & 0x00FF) + amt;\n\n if (b > 255) b = 255;\n else if (b < 0) b = 0;\n\n var g = (num & 0x0000FF) + amt;\n\n if (g > 255) g = 255;\n else if (g < 0) g = 0;\n\n return (usePound ? \"#\" : \"\") + (g | (b << 8) | (r << 16)).toString(16);\n\n}","import createAction from 'redux-act/lib/createAction';\n\nexport const userInfoFetched = createAction('USER_INFO_FETCHED');\nexport const login = createAction('LOGIN');\nexport const fetchUserInfo = createAction('FETCH_USER_INFO');\nexport const loggedOut = createAction('LOGGED_OUT');\nexport const logout = createAction('LOGOUT');\n","import {combineReducers} from \"redux\";\nimport form from \"redux-form/es/reducer\";\nimport {routerReducer} from \"react-router-redux\";\nimport app from \"../reducers/app\";\nimport data from \"../reducers\";\nimport uploader from \"../reducers/uploader\";\nimport submittedFiles from \"../reducers/submittedFiles\";\nimport notifications from \"../reducers/notification\";\nimport auth from \"../reducers/auth\";\n\nconst rootReducer = combineReducers({\n form,\n auth,\n app,\n data,\n uploader,\n submittedFiles,\n routing: routerReducer,\n notifications\n});\n\nexport default rootReducer;\n","import * as actions from '../actions/auth';\n\nexport default function gui(state = {}, action) {\n switch (action.type) {\n case `${actions.userInfoFetched}`:\n return {checked:true, userInfo: action.payload};\n case `${actions.logout}`:\n return {};\n case `${actions.loggedOut}`:\n return {checked:true};\n default:\n return state;\n }\n}","import * as actions from \"../actions/index\";\n\nexport default function app_reducer(state = {}, action) {\n const {title, path, label, breadcrumb} = action.payload || {};\n switch (action.type) {\n case `${actions.setTitle}`:\n return {...state, title};\n case `${actions.setBreadcrumb}`:\n return {...state, breadcrumb};\n case `${actions.addBreadcrumb}`:\n return {...state, breadcrumb: [...state.breadcrumb, {path, label}]};\n default:\n return state;\n }\n}","import * as actions from \"../actions/index\";\n\nexport default function data_reducer(state = {}, action) {\n switch (action.type) {\n case `${actions.fetchDataSuccess}`:\n const { name, data } = action.payload;\n return { ...state, [name]: data };\n case `${actions.clearData}`:\n const { tableName } = action.payload;\n const oldState = { ...state };\n delete oldState[tableName];\n return oldState;\n default:\n return state;\n }\n}\n","import * as actions from \"../actions/index\";\nimport {App} from \"../index\";\nimport FineUploaderTraditional from \"fine-uploader-wrappers\";\nimport {reloadAllQueries} from \"../sagas/api\";\n\nexport default function uploader_reducer(state = {}, action) {\n switch (action.type) {\n case `${actions.setUploader}`:\n const uploader = new FineUploaderTraditional({\n options: {\n callbacks: {\n onComplete: function () {\n App.actions.pushNotification({\n type: \"success\",\n message: \"Files uploaded!\"\n })\n reloadAllQueries()\n },\n onError: function (id, name, errorReason) {\n console.log(\n \"Error on file number {} - {}. Reason: {}\",\n id,\n name,\n errorReason\n );\n }\n },\n multiple: true,\n autoUpload: true,\n dragAndDrop: {\n reportDirectoryPaths: true\n },\n cors: {\n expected: true,\n\n sendCredentials: true\n },\n methods: {\n addFiles: () => {\n }\n },\n cache: false,\n request: {\n params: {\n \"Content-Type\": \"application/form-data; charset=UTF-8\",\n \"Access-Control-Request-Headers\": \"x-requested-with\"\n },\n paramsInBody: true,\n accept: \"*/*\",\n endpoint: App.REST_SERVER + \"/attachments/upload\",\n },\n retry: {\n enableAuto: false\n }\n }\n });\n return uploader;\n case `${actions.updateUploaderParams}`:\n state.methods.setParams(action.payload);\n return state;\n default:\n return state;\n }\n}\n","import * as actions from \"../actions/files\";\n\nexport default function submitted_files(state = [], action) {\n switch (action.type) {\n case `${actions.submitFile}`:\n const newState = [...state];\n const {id} = action.payload;\n newState.push(id);\n return newState;\n case `${actions.deleteFile}`:\n const newFiles = [...state];\n const indexToRemove = newFiles.indexOf(id);\n newFiles.splice(indexToRemove, 1);\n return newState || [];\n default:\n return state;\n }\n}\n","import * as actions from '../actions/index';\nimport { guid } from '../utils/utils';\n\nexport default function notification_reducer(state = [], action) {\n switch (action.type) {\n case `${actions.pushNotification}`:\n return [...state, { ...action.payload, key: guid() }];\n case `${actions.removeNotification}`:\n return state.filter(i => i.key !== action.payload.key);\n default:\n return state;\n }\n}\n","'use strict'\nimport {take, fork, call} from 'redux-saga/effects';\nimport * as actions from '../actions/auth';\nimport * as api from './api';\n\nfunction* execLogout(action, userName) {\n yield call(api.logout, userName);\n}\n\nfunction* logout(state) {\n while (true) {\n const action = yield take(`${actions.logout}`);\n const {auth: {userName}} = state()\n yield fork(execLogout, action, userName);\n }\n}\n\nfunction* execLogin(action) {\n\n const {payload} = action\n yield call(api.login, payload);\n}\n\nfunction* login() {\n while (true) {\n const action = yield take(`${actions.login}`);\n yield fork(execLogin, action);\n }\n}\n\nfunction* execfetchUserInfo(action, auth) {\n yield call(api.fetchUserInfo, auth);\n}\n\nfunction* fetchUserInfo() {\n while (true) {\n const action = yield take(`${actions.fetchUserInfo}`);\n yield fork(execfetchUserInfo, action);\n }\n}\n\nexport default function* rootSaga(getState) {\n yield fork(logout, getState);\n yield fork(login, getState);\n yield fork(fetchUserInfo, getState);\n}","import {take, fork, call} from \"redux-saga/effects\";\nimport * as actions from \"../actions/index\";\nimport * as api from \"./api\";\n\nfunction* execFetchData(action, getState) {\n const state = getState();\n if (state && state.auth && state.auth.userInfo && state.auth.userInfo.username)\n yield call(api.fetchData, action);\n}\n\nfunction* fetchData(getState) {\n while (true) {\n const action = yield take(`${actions.fetchData}`);\n yield fork(execFetchData, action.payload, getState);\n }\n}\n\nfunction* execReloadQuery(action, getState) {\n const state = getState();\n if (state && state.auth && state.auth.userInfo && state.auth.userInfo.id)\n yield call(api.reloadQuery, action);\n}\n\nfunction* reloadQuery(getState) {\n while (true) {\n const action = yield take(`${actions.reloadQuery}`);\n yield fork(execReloadQuery, action.payload, getState);\n }\n}\n\nfunction* execUpsertForm(action, getState) {\n yield call(api.upsertForm, action, getState());\n}\n\nfunction* upsertForm(getState) {\n while (true) {\n const action = yield take(`${actions.upsertForm}`);\n yield fork(execUpsertForm, action.payload, getState);\n }\n}\n\nfunction* execDeleteRecord(action, getState) {\n yield call(api.deleteRecord, action, getState());\n}\n\nfunction* deleteRecord(getState) {\n while (true) {\n const action = yield take(`${actions.deleteRecord}`);\n yield fork(execDeleteRecord, action.payload, getState);\n }\n}\n\nexport default function* rootSaga(getState) {\n yield fork(fetchData, getState);\n yield fork(upsertForm, getState);\n yield fork(deleteRecord, getState);\n yield fork(reloadQuery, getState);\n}\n","import {fork} from \"redux-saga/effects\";\nimport authSagas from '../sagas/auth'\nimport appSagas from '../sagas/index'\n\nexport default function* rootSaga(getState) {\n yield fork(authSagas, getState);\n yield fork(appSagas, getState);\n}","import 'regenerator-runtime/runtime';\nimport {applyMiddleware, compose, createStore} from \"redux\";\nimport createSagaMiddleware from \"redux-saga\";\nimport rootReducer from \"./reducers\";\nimport rootSaga from \"./sagas\";\n\nconst sagaMiddleware = createSagaMiddleware();\n\nconst store = createStore(\n rootReducer,\n {},\n compose(applyMiddleware(sagaMiddleware), window.devToolsExtension ? window.devToolsExtension() : f => f)\n);\n\nsagaMiddleware.run(rootSaga, store.getState);\n\nexport default store;\n","import React from 'react';\nimport {connect} from 'react-redux';\nimport {Icon} from 'office-ui-fabric-react';\nimport {App} from '../index';\nimport {lightenDarkenColor} from \"../utils/utils\";\n\n\nconst typeInfos = {\n success: {\n bgColor: \"#107c10\",\n icon: \"Completed\",\n title: \"Success\"\n },\n warning: {\n bgColor: \"#ff8c00\",\n icon: \"Info\",\n title: \"Warning\"\n },\n error: {\n bgColor: \"#e81123\",\n icon: \"ErrorBadge\",\n title: \"Error\"\n },\n};\n\nclass NotificationManager extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n this.onClick = this.onClick.bind(this);\n this.clearFuncs = {};\n }\n\n onClick(key) {\n //App.actions.removeNotification({ key })\n }\n\n\n render() {\n const {notifications} = this.props;\n return (\n
\n
\n {\n (notifications || []).map(notification => {\n return (\n \n )\n })\n }\n
\n
\n )\n }\n}\n\n\nclass MessageItem extends React.Component {\n\n componentDidMount() {\n const {notification: {key}} = this.props;\n const timer = 3000;\n setTimeout(() => {\n const item = document.getElementById(key);\n item.className = \"iota-notification-item-out\";\n setTimeout(() => {\n App.actions.removeNotification({key})\n }, timer - 2000)\n }, timer)\n }\n\n\n render() {\n const {notification: {message, key, type}} = this.props;\n const {bgColor, icon, title} = typeInfos[type];\n return (\n
\n
\n
\n \n
\n
{title}
\n
\n
\n {message}\n
\n
\n )\n }\n}\n\n\nexport default connect(state => ({\n notifications: state.notifications\n })\n)(NotificationManager);\n\n","import React from \"react\";\nimport {App} from \"../../index\";\nimport {Icon} from \"office-ui-fabric-react\";\nimport {connect} from \"react-redux\";\n\nconst paths = [\n {\n path: \"/\",\n name: \"Home\",\n icon: \"Home\"\n },\n {\n path: \"projects\",\n name: \"Projects\",\n icon: \"Articles\"\n },\n {\n path: \"users\",\n name: \"Users\",\n icon: \"People\"\n }\n];\n\nclass PermanentDrawer extends React.Component {\n state = {selectedKey: \"\"};\n\n handleClick(path, selectedKey) {\n this.setState({selectedKey});\n App.history.push(path != \"/\" ? \"/\" + path : \"/\");\n }\n\n render() {\n const selected = window.location.hash.slice(2, window.location.hash.length);\n\n return (\n
\n \n App.history.push(\"/\")}\n >\n \n
\n Project Manager\n
\n
\n \n \n \n );\n }\n}\n\nexport default connect(state => ({\n routes: state.routes,\n fullScreen: state.app && state.app.fullScreen\n}))(PermanentDrawer);\n","export default __webpack_public_path__ + \"static/media/segoeui-regular.2943eb3b.woff2\";","import React from 'react';\nimport LeftDrawer from './LeftDrawer';\nimport {CommandBarButton} from 'office-ui-fabric-react';\nimport {App} from '../../index';\nimport {connect} from 'react-redux'\nimport Sticky from 'react-sticky-el'\n\nexport default class Layout extends React.Component {\n constructor(props, context) {\n super(props, context);\n this.state = {open: false};\n this.onClose = this.onClose.bind(this);\n }\n\n onClose() {\n this.setState({open: false, content: null, title: null})\n }\n\n render() {\n const {children} = this.props;\n\n return (\n
\n \n
\n \n
\n {children}\n
\n\n
\n
\n );\n }\n}\n\nconst AppBar = props => {\n return (\n \n
\n \n <div className=\"iota-centered-item\">\n <Profile/>\n </div>\n </div>\n </Sticky>\n )\n}\n\nconst _Title = props => {\n const {title} = props;\n return (\n <h2 className=\"ms-font-xxl ms-fontSize-xxl\">{title || \"Ana Sayfa\"}</h2>\n )\n}\nconst Title = connect(state => ({\n title: state.app && state.app.title\n}))(_Title)\n\nconst _Profile = (props) => {\n\n function logout() {\n App.actions.logout({})\n }\n\n const {user} = props;\n if (!user)\n return <span/>;\n return (\n <CommandBarButton\n text={user.fullname}\n split={true}\n iconProps={{iconName: 'Contact', style: {color: \"white\"}}}\n style={{\n height: '35px',\n backgroundColor: \"rgb(0,120,212)\",\n color: \"white\",\n }}\n menuIconProps={{\n style: {\n color: \"white\",\n }\n }}\n menuProps={{\n items: [\n {\n key: 'profile',\n name: 'Profile',\n iconProps: {iconName: 'Contact'},\n onClick: () => App.history.push(\"/users/\" + user.id)\n },\n {\n key: 'logout',\n name: 'Logout',\n iconProps: {iconName: 'SignOut'},\n onClick: logout\n }\n ],\n style: {color: \"white\"}\n }\n }\n />\n\n );\n}\nconst Profile = connect(state => ({\n user: state.auth && state.auth.userInfo\n}))(_Profile)\n","import React from \"react\";\nimport { App } from \"../index\";\n\nclass FetchData extends React.Component {\n componentWillMount() {\n App.actions.fetchData(this.props);\n }\n\n componentWillUnmount() {\n App.actions.clearData(this.props);\n }\n\n render() {\n return null;\n }\n}\n\nexport default FetchData;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport {connect} from \"react-redux\";\n\nexport function nestedGet(obj) {\n var args = Array.prototype.slice.call(arguments, 1);\n for (var i = 0; i < args.length; i++) {\n if (!obj)\n return undefined;\n obj = obj[args[i]];\n }\n return obj;\n};\n\nclass ConnectedItem extends React.Component {\n\n shouldComponentUpdate(nextProps, nextState, nextContext) {\n return this.props.resultSet != nextProps.resultSet;\n }\n\n render() {\n const {component, resultSet, loadingComponent, emptyComponent} = this.props;\n\n if (resultSet === undefined) {\n if (loadingComponent)\n return <this.props.loadingComponent/>;\n else\n return null;\n }\n let data = resultSet || {};\n\n if (!Object.keys(data).length) {\n if (emptyComponent)\n return <this.props.emptyComponent/>;\n return null;\n }\n\n return <this.props.component item={data}/>\n }\n\n\n static propTypes = {\n component: PropTypes.func.isRequired,\n emptyComponent: PropTypes.any,\n loadingComponent: PropTypes.any,\n path: PropTypes.array.isRequired,\n keyField: PropTypes.string,\n useDiv: PropTypes.bool.isRequired,\n style: PropTypes.object,\n customFilter: PropTypes.any,\n customSort: PropTypes.any,\n className: PropTypes.string,\n searchItem: PropTypes.string,\n caseSensitive: PropTypes.bool,\n filterField: PropTypes.array,\n };\n\n static defaultProps = {\n useDiv: false\n };\n\n}\n\nfunction mapStateToProps(state, ownProps) {\n return {resultSet: nestedGet.apply(null, [state, ...ownProps.path])}\n}\n\nexport default connect(mapStateToProps)(ConnectedItem);\n","import React from \"react\";\nimport { Icon } from \"office-ui-fabric-react\";\n\nconst CardTitle = props => {\n const { children, className, style, onClick, icon } = props;\n return (\n <div\n className={className + \" iota-card-title ms-font-xl\"}\n style={style}\n onClick={onClick}\n >\n <div style={{ display: \"flex\" }}>\n <div className=\"ms-font-xl-plus\" style={{marginRight: 16}}>\n <Icon iconName={icon} style={{ color: \"rgb(16, 110, 190)\" }} />\n </div>\n <div style={{ marginTop: 0, width: \"100%\", overflow: \"hidden\" }} >\n <p className=\"ms-fontWeight-semibold ms-font-xl ms-fontSize-l\" style={{ margin: 0 }}>\n {children}\n </p>\n </div>\n </div>\n </div>\n );\n};\n\nexport default CardTitle;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst EmptyComponent = props => {\n const {dsc, className, style, cardTextStyle, contentClassName, ...rest} = props;\n return (\n <div {...rest} className={className + \" iota-centered-item\"}\n style={{\n lineHeight: 1.5,\n minHeight: 150,\n width: \"auto\",\n height: \"100%\",\n ...cardTextStyle\n }}>\n <div style={{\n height: \"100%\",\n textAlign: \"center\",\n margin: 0,\n ...style\n }} className={\"iota-centered-item ms-fontSize-xl ms-font-xl \" + contentClassName}\n >{dsc}</div>\n </div>\n )\n};\n\n\nEmptyComponent.propTypes = {\n dsc: PropTypes.any,\n className: PropTypes.string,\n style: PropTypes.object,\n cardTextStyle: PropTypes.object\n};\n\nexport default EmptyComponent","import React from 'react';\nimport {Label, Spinner, SpinnerSize} from \"office-ui-fabric-react\";\nimport EmptyComponent from \"./EmptyComponent\";\n\nconst Loading = props => {\n const {label, spinnerLabel} = props;\n return (\n <EmptyComponent style={{width: \"100%\", fontSize: 15, minHeight: 216}} dsc={\n <div>\n <Label>{label || \"Yükleniyor\"}</Label>\n <Spinner size={SpinnerSize.large}\n label={spinnerLabel || 'Kayıtlar Yükleniyor'}\n ariaLive='assertive'/>\n </div>\n }/>\n )\n}\n\nexport default Loading;","import React from \"react\";\nimport {Icon} from \"office-ui-fabric-react/lib/Icon\";\nimport {App} from \"../..\";\nimport {connect} from \"react-redux\";\nimport FetchData from \"../../components/FetchData\";\nimport ConnectedItem from \"../../components/ConnectedItem\";\nimport CardTitle from \"../../components/CardTitle\";\nimport {DetailsList, DetailsRow, Persona, SelectionMode} from \"office-ui-fabric-react\";\nimport Loading from \"../../components/Loading\";\nimport EmptyComponent from \"../../components/EmptyComponent\";\nimport {dateToStr} from \"../../utils/utils\";\n\nexport default class Home extends React.Component {\n constructor(props, context) {\n super(props, context);\n App.actions.setTitle({title: \"Home\"});\n App.actions.setBreadcrumb({\n breadcrumb: []\n })\n }\n\n render() {\n return (\n <div>\n <Content/>\n </div>\n );\n }\n}\n\nconst Content = props => {\n return (\n <div className=\"ms-Grid\">\n <TaskCountCards/>\n <Tasks/>\n </div>\n );\n};\n\nconst Tasks = props => {\n return (\n <div className=\"ms-Grid-row iota-row\">\n <FetchData tableName=\"dashboard/tasks\"/>\n <div className=\"ms-Grid-col ms-sm12 ms-md12 ms-lg12\">\n <div style={{backgroundColor: \"white\", padding: 16}}>\n <CardTitle icon={\"TaskManager\"}>Assigned to Me</CardTitle>\n <MyTasks/>\n </div>\n </div>\n </div>\n )\n}\n\nconst TaskCountCards = props => {\n return (\n <div className=\"ms-Grid-row\">\n <FetchData tableName=\"dashboard/task_count\"/>\n <ConnectedItem path={[\"data\", \"dashboard/task_count\", 0]} component={p => {\n const {completed_tasks, expired_tasks, on_progress_tasks, checklist_count} = p.item;\n return (\n <div style={{width: \"100%\"}}>\n <div className=\"ms-Grid-col ms-sm12 ms-md12 ms-lg6\">\n <CountCard color=\"#0078d4\"\n count={checklist_count}\n label={\"Checklist\"}\n icon={\"CheckList\"}/>\n </div>\n <div className=\"ms-Grid-col ms-sm12 ms-md12 ms-lg6\">\n <CountCard color=\"#e81123\"\n count={expired_tasks}\n label={\"Expired\"}\n icon={\"CaloriesAdd\"}/>\n </div>\n <div className=\"ms-Grid-col ms-sm12 ms-md12 ms-lg6\">\n <CountCard color=\"#ff8c00\"\n count={on_progress_tasks}\n label={\"On Progress\"}\n icon={\"CalendarSettingsMirrored\"}/>\n </div>\n <div className=\"ms-Grid-col ms-sm12 ms-md12 ms-lg6\">\n <CountCard color=\"#107c10\"\n count={completed_tasks}\n label={\"Completed\"}\n icon={\"Completed\"}/>\n </div>\n </div>\n )\n }}/>\n </div>\n )\n};\n\nclass CountCard extends React.Component {\n constructor(props, context) {\n super(props, context);\n this.state = {count: 0}\n }\n\n\n componentDidMount() {\n const {count: _count} = this.props;\n let inte;\n if (this.state.count < _count)\n inte = setInterval(() => {\n this.setState({count: this.state.count + 1}, () => {\n if (this.state.count >= _count)\n clearInterval(inte);\n })\n }, 1000 / _count);\n\n }\n\n\n render() {\n const {color, icon, label} = this.props;\n\n return (\n <div style={{color: \"white\", width: \"100%\"}}>\n <div\n style={{\n height: 150,\n margin: \"8px 0\",\n backgroundColor: color\n }}\n >\n <div style={{width: \"100%\", height: \"100%\"}} className=\"center\">\n <div className=\"center\">\n <div style={{padding: 16}}>\n <Icon iconName={icon} style={{fontSize: 54}}/>\n </div>\n </div>\n <div style={{width: \"80%\", float: \"right\", height: \"100%\"}}>\n <div className=\"center\" style={{height: \"100%\"}}>\n <div style={{padding: 16, textAlign: \"center\"}}>\n <div className=\"ms-font-xxl ms-fontSize-su\">{this.state.count}</div>\n <div className=\"ms-font-xl\">{label}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n };\n};\n\nconst _MyTasks = props => {\n const {tasks, load, id} = props;\n\n const columns = [\n {\n key: \"column0\",\n name: \"Status\",\n iconName: \"Status\",\n fieldName: \"status\",\n minWidth: 30,\n maxWidth: 50,\n iconOnly: true,\n padding: true,\n isPadded: true,\n onRender: item => {\n return (\n <Icon\n styles={{root: {fontSize: 18}}}\n iconName={item.status ? \"Completed\" : \"DRM\"}\n />\n );\n }\n },\n {\n key: \"column1\",\n name: \"Title\",\n fieldName: \"title\",\n minWidth: 100,\n maxWidth: 150\n },\n {\n key: \"column2\",\n name: \"Description\",\n fieldName: \"dsc\",\n minWidth: 100,\n maxWidth: 150\n },\n {\n key: \"column3\",\n name: \"Collaborators\",\n fieldName: \"collabrators\",\n minWidth: 100,\n maxWidth: 150,\n onRender: item => {\n if (item.collabrators && item.collabrators.length) {\n return item.collabrators.map((user, index) => (\n <Persona\n text={user.name}\n imageUrl={App.REST_SERVER + \"/attachments/download?id=\" + user.pp_id}\n secondaryText={user.username}\n key={index}\n size={1}\n styles={{root: {margin: \"8px 0\"}}}\n />\n ));\n }\n return <div>No Collaborator</div>;\n }\n },\n {\n key: \"column4\",\n name: \"Finish Date\",\n fieldName: \"finish_date\",\n minWidth: 30,\n maxWidth: 50,\n iconOnly: true,\n padding: true,\n isPadded: true,\n onRender: item => {\n return dateToStr(item.finish_date);\n }\n }\n ];\n if (load === undefined) return <Loading/>;\n if (!load) return <EmptyComponent dsc=\"No Task\"/>;\n if (load)\n return (\n <DetailsList\n items={tasks || []}\n columns={columns}\n selectionMode={SelectionMode.none}\n setKey=\"set\"\n onRenderRow={e => {\n return React.createElement(DetailsRow, {\n onClick: event =>\n App.history.push(\"/projects/\" + e.item.project_id + \"/tasks/\" + e.item.id),\n key: e.itemIndex,\n ...e,\n className: \"cursor-pointer\"\n });\n }}\n isHeaderVisible={true}\n selectionPreservedOnEmptyClick={true}\n enterModalSelectionOnTouch={true}\n />\n );\n};\n\nconst MyTasks = connect(state => ({\n tasks: state.data && state.data[\"dashboard/tasks\"],\n load: state.data && state.data[\"dashboard/tasks\"] && state.data[\"dashboard/tasks\"].length\n}))(_MyTasks);\n","import React from \"react\";\nimport {IconButton, TextField, Persona} from 'office-ui-fabric-react';\nimport FieldCreator from './FieldCreator'\nimport {App} from \"../index\";\n\nexport class ArrayValueController extends React.Component {\n constructor(props) {\n super(props);\n this.state = {draggingIndex: -1}\n }\n\n render() {\n const {items, onDelete, onEdit, onSwap, persona, onCopy, editingIndex, ...rest} = this.props;\n return (\n <div>\n {(items || []).map((item, index) => {\n //console.log(\"item\",item)\n return (\n <span draggable={true}\n onDragStart={() => this.setState({draggingIndex: index})}\n onDragOver={e => {\n if (this.state.draggingIndex != index) {\n onSwap(this.state.draggingIndex, index);\n this.setState({draggingIndex: index})\n }\n e.preventDefault()\n }}\n onDrop={() => this.setState({draggingIndex: -1})}\n onDragEnd={() => this.setState({draggingIndex: -1})}\n style={{\n margin: 2,\n display: \"inline-block\",\n //padding: 8,\n backgroundColor: index === editingIndex ? \"#dadada\" : \"#f4f4f4\",\n borderRadius: 10\n }} key={index}>\n <div className=\"iota-centered-item\">\n <span style={{float: \"right\"}}>\n <IconButton iconProps={{iconName: \"Delete\"}} onClick={() => onDelete(index)}/>\n </span>\n {persona ?\n <Persona\n text={item.name}\n //secondaryText={user.name}\n imageUrl={App.REST_SERVER + \"/attachments/download?id=\" + item.pp_id}\n size={3}\n onClick={() => onEdit(index)}\n styles={{root: {margin: \"8px 0\"}}}\n />\n :\n <span style={{height: \"100%\", padding: 8}} onClick={() => onEdit(index)}>\n {item.name}\n </span>\n }\n </div>\n </span>\n )\n })}\n </div>\n )\n }\n}\n\nclass TextArray extends React.Component {\n constructor(props) {\n super(props);\n this.state = {value: \"\", editingIndex: -1}\n this.onKeyPressEnter = this.onKeyPressEnter.bind(this);\n this.onChange = this.onChange.bind(this);\n this.onAdd = this.onAdd.bind(this);\n this.onDelete = this.onDelete.bind(this);\n this.onSwap = this.onSwap.bind(this);\n this.onEdit = this.onEdit.bind(this);\n this.onCopy = this.onCopy.bind(this);\n }\n\n onCopy(index) {\n const {value, onChange} = this.props.input || this.props;\n onChange([...value, value[index]]);\n }\n\n onAdd(_value) {\n if (!_value || !_value.split(\" \").join(\"\"))\n return;\n const {value, onChange} = this.props.input || this.props;\n if (this.state.editingIndex > -1) {\n const newValue = [...value];\n newValue[this.state.editingIndex] = _value;\n onChange(newValue);\n } else {\n onChange([...value, _value]);\n }\n this.setState({value: \"\", editingIndex: -1})\n }\n\n onDelete(index) {\n const {value, onChange} = this.props.input || this.props;\n const newValue = [...value];\n newValue[index] = undefined;\n if (this.state.editingIndex > -1)\n this.setState({value: this.state.tempValue, editingIndex: -1});\n else\n this.setState({editingIndex: -1});\n onChange(newValue.filter(i => i))\n }\n\n onSwap(draggingIndex, droppingIndex) {\n const {value, onChange} = this.props.input || this.props;\n const newValue = [...value];\n const tempValue = newValue[draggingIndex];\n newValue[draggingIndex] = newValue[droppingIndex];\n newValue[droppingIndex] = tempValue\n onChange(newValue);\n }\n\n onEdit(index) {\n const {value} = this.props.input || this.props;\n if (this.state.editingIndex != index)\n this.setState({\n value: value[index],\n editingIndex: index,\n tempValue: this.state.editingIndex > -1 ? this.state.tempValue : this.state.value\n });\n else\n this.setState({value: this.state.tempValue, editingIndex: -1})\n }\n\n onChange(e) {\n this.setState({value: e})\n }\n\n onKeyPressEnter(e) {\n if (e.which === 13 || e.keyCode === 13)\n this.onAdd(this.state.value)\n }\n\n render() {\n const {value, onChange, ..._rest} = this.props.input || this.props;\n const {initalValue, meta, label, queryName, placeholder, queryParams, type, ...rest} = this.props;\n const errorMessage = meta ? meta.error : undefined;\n //console.log(\"fieldKey\", this.props.label)\n return [\n <ArrayValueController key={\"viewer\"}\n items={value || initalValue}\n onEdit={this.onEdit}\n onSwap={this.onSwap}\n onCopy={this.onCopy}\n onDelete={this.onDelete}\n editingIndex={this.state.editingIndex}\n />,\n queryName ?\n <FieldCreator key={\"selectfield\"}\n type={\"selectfield\"}\n label={label}\n queryName={queryName}\n queryParams={queryParams}\n />\n :\n type === \"longtext\" ?\n <TextField placeholder={placeholder}\n multiline\n key={\"textarea\"}\n iconProps={{\n iconName: \"Add\",\n className: \"ms-fontColor-themePrimary ms-bgColor-neutralLighter--hover\",\n style: {\n position: \"absolute\",\n right: 0,\n padding: 8,\n bottom: 8,\n borderRadius: 16,\n fontSize: 20,\n cursor: \"pointer\"\n },\n onClick: () => this.onAdd(this.state.value)\n }}\n onBeforeChange={this.onChange}\n label={label}\n onBlur={e => this.onAdd(e.target.value)}\n value={this.state.value}\n errorMessage={errorMessage}\n rows={4}\n /> :\n <TextField key={\"textfield\"}\n onBeforeChange={this.onChange}\n label={label}\n placeholder={placeholder}\n onBlur={e => this.onAdd(e.target.value)}\n value={this.state.value}\n onKeyPress={this.onKeyPressEnter}\n errorMessage={errorMessage}/>\n ]\n }\n};\n\n\nexport default TextArray","/* eslint react/prop-types: 0 */\nimport React from 'react';\nimport {\n CheckboxVisibility,\n DetailsListLayoutMode,\n DetailsRow,\n DetailsList,\n Icon,\n PrimaryButton\n} from \"office-ui-fabric-react\";\nimport FieldCreator from './FieldCreator'\nimport {dateToStr} from \"../utils/utils\";\nimport EmptyComponent from './EmptyComponent'\n\nconst fieldTypes = {\n toggle: \"switch\",\n};\nconst typeToComponent = {\n date: (item) => {\n return <div>{dateToStr(item)}</div>\n }\n};\n\nconst typeToText = {\n date: (item) => dateToStr(item)\n};\n\nclass JsonArrayValueController extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n items: [],\n columns: [],\n draggedIndex: -1,\n draggedItem: null,\n }\n }\n\n\n _getDragDropEvents() {\n return {\n canDrop: (dropContext, dragContext) => {\n return true;\n },\n canDrag: (item) => {\n return true;\n },\n onDragEnter: (item, event) => {\n return 'dragEnter';\n }, // return string is the css classes that will be added to the entering element.\n onDragLeave: (item, event) => {\n return;\n },\n onDragOver: (item, event) => {\n if (this.state.draggedItem != item.index) {\n this.props.onSwap(item.index, this.state.draggedIndex);\n this.setState({draggedIndex: item.index});\n }\n },\n onDrop: (item, event) => {\n if (this.state.draggedItem) {\n this.props.onSwap(item.index, this.state.draggedIndex)\n //this._insertBeforeItem(item);\n }\n },\n onDragStart: (item, itemIndex, selectedItems, event) => {\n this.setState({draggedItem: item, draggedIndex: itemIndex})\n },\n onDragEnd: (item, event) => {\n this.setState({draggedItem: null, draggedIndex: -1})\n }\n };\n }\n\n\n render() {\n const {items, fieldStruct} = this.props;\n const {onDelete, onEdit, onSwap, onCopy, editingIndex, ...rest} = this.props;\n const buttonColumns = [\n {\n key: \"delete\",\n name: \"\",\n fieldName: \"delete\",\n minWidth: 10,\n maxWidth: 20,\n className: \"field-button\",\n isRowHeader: true,\n isResizable: false,\n onRender: e => <Icon iconName=\"Clear\" className=\"field-button\" onClick={() => onDelete(e.index)}/>,\n isPadded: true,\n isSorted: false,\n isSortedDescending: false,\n data: \"delete\",\n },\n {\n key: \"copy\",\n name: \"\",\n fieldName: \"copy\",\n className: \"field-button\",\n minWidth: 10,\n maxWidth: 20,\n isRowHeader: true,\n isResizable: false,\n onRender: e => <Icon iconName=\"Copy\" className=\"field-button\" onClick={() => onCopy(e.index)}/>,\n isPadded: true,\n isSorted: false,\n isSortedDescending: false,\n data: \"copy\"\n }\n ]\n\n const columns = (fieldStruct || []).map((info, index) => {\n if (info.label && info.label != \"-\" && info.type != \"hiddenfield\") {\n return {\n key: info.keyName,\n name: info.label,\n fieldName: info.keyName,\n minWidth: 100,\n maxWidth: 150,\n isRowHeader: true,\n isResizable: true,\n onRender: typeToComponent[info.type] ? (item) => typeToComponent[info.type](item[info.keyName]) : undefined,\n isPadded: true,\n isSorted: false,\n isSortedDescending: false,\n data: info.type,\n }\n } else\n return null\n }\n ).filter(i => i);\n return (\n <div className=\"ms-Grid\">\n <div className=\"ms-Grid-row\" style={{margin: \"16px 1px\"}}>\n <div style={{backgroundColor: \"white\"}} className=\"ms-Grid-col ms-sm12 ms-md12 ms-lg12\">\n {\n columns ?\n <DetailsList\n setKey='items'\n items={items}\n usePageCache\n dragDropEvents={this._getDragDropEvents()}\n columns={[...buttonColumns, ...columns].map((i, ind) => ({...i, key: ind}))}\n onRenderRow={e => {\n return React.createElement(DetailsRow, {\n onClick: (event) => event.target.className.indexOf(\"field-button\") > -1 ? null : onEdit(e.itemIndex),\n key: e.itemIndex,\n ...e,\n onDragOver: () => {\n if (this.state.draggedIndex != e.itemIndex) {\n onSwap(e.itemIndex, this.state.draggedIndex);\n this.setState({draggedIndex: e.itemIndex});\n }\n },\n item: {...e.item, index: e.itemIndex},\n className: \"iota-cursor-pointer\"\n })\n }}\n layoutMode={DetailsListLayoutMode.justified}\n selectionPreservedOnEmptyClick={true}\n checkboxVisibility={CheckboxVisibility[\"hidden\"]}\n />\n : null}\n\n {items && items.length ? null : <EmptyComponent dsc={\"Kayıt Bulunmamaktadır\"}/>}\n\n </div>\n </div>\n </div>\n )\n }\n}\n\nclass JsonArray extends React.Component {\n constructor(props) {\n super(props);\n\n this.initialState = {editingIndex: -1};\n (props.fields || []).sort((i1, i2) => i1.order > i2.order ? 1 : -1).forEach(i => {\n this.initialState[i.keyName] = \"\"\n });\n\n this.state = this.initialState;\n this.onKeyPressEnter = this.onKeyPressEnter.bind(this);\n this.onChange = this.onChange.bind(this);\n this.onAdd = this.onAdd.bind(this);\n this.onDelete = this.onDelete.bind(this);\n this.onSwap = this.onSwap.bind(this);\n this.onEdit = this.onEdit.bind(this);\n this.onCopy = this.onCopy.bind(this);\n }\n\n onCopy(index) {\n const {value, onChange} = this.props.input || this.props;\n onChange([...value, value[index]]);\n }\n\n onAdd(_value) {\n if (!_value)\n return;\n const {value, onChange} = this.props.input || this.props;\n\n if (this.state.editingIndex > -1) {\n const newValue = [...value];\n newValue[this.state.editingIndex] = _value;\n onChange(newValue);\n } else {\n onChange([...value, _value]);\n }\n this.setState(this.initialState)\n }\n\n onDelete(index) {\n const {value, onChange} = this.props.input || this.props;\n const newValue = [...value];\n newValue[index] = undefined;\n if (this.state.editingIndex > -1)\n this.setState({...this.initialState, ...this.state.tempValue});\n else\n this.setState(this.initialState);\n onChange(newValue.filter(i => i))\n }\n\n onSwap(draggingIndex, droppingIndex) {\n const {value, onChange} = this.props.input || this.props;\n const newValue = [...value];\n const tempValue = newValue[draggingIndex];\n newValue[draggingIndex] = newValue[droppingIndex];\n newValue[droppingIndex] = tempValue\n onChange(newValue);\n }\n\n onEdit(index) {\n const {value} = this.props.input || this.props;\n if (this.state.editingIndex != index)\n this.setState({\n ...value[index],\n editingIndex: index,\n tempValue: this.state.editingIndex > -1 ? this.state.tempValue : this.state.value\n });\n else\n this.setState({...this.initialState, ...this.state.tempValue})\n }\n\n onChange(keyName, value) {\n this.setState({[keyName]: value})\n }\n\n onKeyPressEnter(e) {\n if (e.which === 13 || e.keyCode === 13)\n this.onAdd(this.state)\n }\n\n render() {\n const {value, onChange, ..._rest} = this.props.input || this.props;\n const {initalValue, label, fields: _fields, ...rest} = this.props;\n const fields = _fields.filter(i => i.label && i.label !== \"-\");\n return [\n <p key={label}>{label}</p>,\n <JsonArrayValueController key={\"viewer\"}\n items={value}\n fieldStruct={fields}\n onEdit={this.onEdit}\n onSwap={this.onSwap}\n onCopy={this.onCopy}\n onDelete={this.onDelete}\n editingIndex={this.state.editingIndex}\n />,\n <div style={{display: \"flex\", alignItems: \"flex-end\", padding: \"16px 0\"}} key={\"fields\"}>\n {(fields || []).map((field, index) => {\n const {type, ...rest} = field;\n if (type && type != \"hiddenfield\") {\n return (\n <div\n className={`ms-Grid-col ms-sm12 ms-md${12 / fields.length} ms-lg${12 / fields.length}`}\n key={index}>\n <FieldCreator {...rest}\n type={fieldTypes[type] || type}\n value={this.state[field.keyName]}\n onChange={e => this.onChange(field.keyName, e)}/>\n </div>\n )\n }\n return null//<div key={index}>bilinmeyen alan ({type}) ({field.keyName})</div>\n })\n }\n <PrimaryButton onClick={() => this.onAdd(this.state)} text={\"Ekle\"} iconProps={{iconName: \"Add\"}}/>\n </div>\n ]\n }\n};\nexport default JsonArray","/* eslint react/prop-types: 0 */\nimport React from 'react';\nimport {TextField} from 'office-ui-fabric-react';\nimport {Toggle as Switch} from 'office-ui-fabric-react';\nimport {DatePicker, DayOfWeek} from 'office-ui-fabric-react';\nimport {Field} from 'redux-form';\nimport {Dropdown} from 'office-ui-fabric-react';\nimport {Checkbox, CommandBar, CommandButton} from 'office-ui-fabric-react';\nimport {ComboBox, ProgressIndicator} from 'office-ui-fabric-react';\nimport _TextArray, {ArrayValueController} from './TextArray'\nimport _JsonArray from './JsonArray'\nimport {connect} from 'react-redux'\nimport FetchData from './FetchData';\n\nclass FieldCreator extends React.Component {\n render() {\n const {type, name, ...rest} = this.props;\n const component = (name ? fieldsJSON : elementJSON)[type];\n if (component)\n return (\n React.createElement(component, {name, type, ...rest})\n )\n else\n return <p>Desteklenmeyen field ( {name} ) ( {type} )</p>\n }\n}\n\nconst Textfield = props => {\n const {name, ...rest} = props;\n return (\n <Field name={name} {...rest} component={rest.isArray ? _TextArray : _Textfield}/>\n )\n};\n\nconst JsonArray = props => {\n const {name, ...rest} = props;\n return (\n <Field name={name} {...rest} component={_JsonArray}/>\n )\n};\n\nconst Textarea = props => {\n const {name, ...rest} = props;\n return (\n <Field name={name} {...rest} component={rest.isArray ? _TextArray : _Textarea}/>\n )\n};\n\nconst Datepicker = props => {\n const {name, ...rest} = props;\n return (\n <Field name={name} {...rest} component={_Datepicker}/>\n )\n};\n\nconst Combobox = props => {\n const {name, ...rest} = props;\n return (\n <Field name={name} {...rest} component={_Combobox}/>\n )\n};\n\nconst Switcher = props => {\n const {name, ...rest} = props;\n\n return (\n <Field name={name} {...rest} component={_Switcher}/>\n )\n};\n\nconst CheckBox = props => {\n const {name, ...rest} = props;\n\n return (\n <Field name={name} {...rest} component={_CheckBox}/>\n )\n};\n\nconst PersonaArray = props => {\n const {name, ...rest} = props;\n\n return (\n <Field name={name} {...rest} component={_PersonaArray}/>\n )\n};\n\nconst NumberField = props => {\n const {name, ...rest} = props;\n\n return (\n <Field name={name} {...rest} component={_NumberField}/>\n )\n};\n\nconst _NumberField = props => {\n const {value, onChange, ..._rest} = props.input || props;\n const {initalValue, ...rest} = props;\n return (\n <TextField onChanged={onChange}\n value={value || initalValue}\n {...rest}\n {..._rest}\n />\n )\n};\n\nconst _Textfield = props => {\n const {value, onChange, ..._rest} = props.input || props;\n const {initalValue, meta, ...rest} = props;\n const errorMessage = meta ? meta.error : undefined;\n return (\n <TextField onChanged={onChange} value={value || initalValue} {...rest} {..._rest} errorMessage={errorMessage}/>\n )\n};\n\nconst _Textarea = props => {\n const {value, onChange, ..._rest} = props.input || props;\n const {initalValue, ...rest} = props;\n return (\n <TextField\n multiline\n fullWidth\n rows=\"4\"\n onChanged={onChange}\n {...rest}\n {..._rest}\n value={value}\n />\n )\n};\n\nconst _Datepicker = props => {\n const {value, onChange, required, ..._rest} = props.input || props;\n const {initalValue, meta, ...rest} = props;\n const errorMessage = meta ? meta.error : undefined;\n return (\n <DatePicker firstDayOfWeek={DayOfWeek.Monday}\n strings={DayPickerStrings}\n placeholder='Select a date..'\n label={rest.label}\n {...rest}\n {..._rest}\n isRequired={required}\n isRequiredErrorMessage={errorMessage}\n value={value ? new Date(value) : null}\n onSelectDate={onChange}\n />\n )\n};\n\nconst _Switcher = props => {\n const {value, onChange, ..._rest} = props.input || props;\n const {initalValue, trueValue, falseValue, valueParser, ...rest} = props;\n return (\n <Switch checked={trueValue === value}\n defaultChecked={trueValue === value}\n {...rest}\n {..._rest}\n onChange={(e, check) => onChange(check ? trueValue === undefined ? \"1\" : trueValue : falseValue === undefined ? \"0\" : falseValue)}/>\n\n )\n};\n\nconst _CheckBox = props => {\n const {value, onChange, ..._rest} = props.input || props;\n const {initalValue, trueValue, falseValue, ...rest} = props;\n return (\n <Checkbox value={value ? parseInt(value) : undefined}\n checked={value ? parseInt(value) : undefined}\n defaultChecked={value ? parseInt(value) : undefined}\n {...rest}\n {..._rest}\n onChange={(event, check) => onChange(check ? trueValue === undefined ? \"1\" : trueValue : falseValue === undefined ? \"0\" : falseValue)}/>\n\n )\n}\n\nclass __PersonaArray extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {value: \"\", editingIndex: -1}\n this.onKeyPressEnter = this.onKeyPressEnter.bind(this);\n this.onChange = this.onChange.bind(this);\n this.onAdd = this.onAdd.bind(this);\n this.onDelete = this.onDelete.bind(this);\n this.onSwap = this.onSwap.bind(this);\n this.onEdit = this.onEdit.bind(this);\n this.onCopy = this.onCopy.bind(this);\n }\n\n onCopy(index) {\n const {value, onChange} = this.props.input || this.props;\n onChange([...value, value[index]]);\n }\n\n onAdd(_value) {\n if (!_value)\n return;\n const {value, onChange} = this.props.input || this.props;\n if (this.state.editingIndex > -1) {\n const newValue = [...value];\n newValue[this.state.editingIndex] = _value;\n onChange(newValue);\n } else {\n onChange([...value, _value]);\n }\n this.setState({value: \"\", editingIndex: -1})\n }\n\n onDelete(index) {\n const {value, onChange} = this.props.input || this.props;\n const newValue = [...value];\n newValue[index] = undefined;\n if (this.state.editingIndex > -1)\n this.setState({value: this.state.tempValue, editingIndex: -1});\n else\n this.setState({editingIndex: -1});\n onChange(newValue.filter(i => i))\n }\n\n onSwap(draggingIndex, droppingIndex) {\n const {value, onChange} = this.props.input || this.props;\n const newValue = [...value];\n const tempValue = newValue[draggingIndex];\n newValue[draggingIndex] = newValue[droppingIndex];\n newValue[droppingIndex] = tempValue\n onChange(newValue);\n }\n\n onEdit(index) {\n const {value} = this.props.input || this.props;\n if (this.state.editingIndex != index)\n this.setState({\n value: value[index],\n editingIndex: index,\n tempValue: this.state.editingIndex > -1 ? this.state.tempValue : this.state.value\n });\n else\n this.setState({value: this.state.tempValue, editingIndex: -1})\n }\n\n onKeyPressEnter(e) {\n if (e.which === 13 || e.keyCode === 13)\n this.onAdd(this.state.value)\n }\n\n onChange(event, item, index) {\n const {value, onChange, ..._rest} = this.props.input || this.props;\n const {isArray, insertKey, valField, textField, items, insertItem} = this.props;\n if (isArray) {\n if (item.selected) {\n const val = !!insertItem ? item : !!insertKey ? item.key : {\n [valField]: item.key,\n [textField]: item.text\n }\n this.onAdd(val)\n } else {\n const _index = value.map(i => i[valField]).indexOf(item.key);\n this.onDelete(_index)\n }\n } else {\n onChange(!!insertItem ? item : !!insertKey ? item.key : {[valField]: item.key, [textField]: item.text})\n }\n }\n\n render() {\n const {value, onChange, ..._rest} = this.props.input || this.props;\n const {queryName, queryParams, queryPath, insertItem, params, alias, load, insertKey, valField: _valField, textField: _textField, items, selectfieldoptions, initalValue, isArray, ...rest} = this.props;\n const valField = _valField || \"val\";\n const textField = _textField || \"dsc\";\n return [\n isArray ? <CommandBar\n key={\"commandbar\"}\n className=\"iota-fullwidth\"\n style={{width: \"100% !important\"}}\n items={\n [\n {\n label: \"Select All\",\n onClick: () => onChange([...items.map(i => insertKey ? i[valField] : i)]),\n icon: \"CheckList\",\n onRender: ItemRenderer,\n key: \"selectall\"\n },\n {\n label: \"Clear All\",\n onClick: () => onChange([]),\n icon: \"Delete\",\n onRender: ItemRenderer,\n key: \"deletetall\"\n },\n ]\n }\n /> : null,\n queryPath ? <FetchData tableName={queryPath} key={\"query\"} params={params}/> : null,\n isArray ? <ArrayValueController key={\"viewer\"}\n items={(value || []).map(i => insertKey ? items.filter(i2 => i2[valField] === i)[0] : i)}\n onEdit={this.onEdit}\n onSwap={this.onSwap}\n persona\n onCopy={this.onCopy}\n onDelete={this.onDelete}\n editingIndex={this.state.editingIndex}\n /> : null,\n (queryPath ? load != undefined : items) ? items.length ? <Dropdown\n {...rest}\n {..._rest}\n options={(items || []).map((item) => ({\n key: item[valField],\n text: item[textField],\n ...(insertItem ? item : {})\n }))}\n key={\"selectfield\"}\n selectedKeys={isArray ? (value || []).map(i => insertKey ? i : i[valField]) : false}\n multiSelect={isArray}\n selectedKey={isArray ? false : !!insertKey ? value : value[valField]}\n onChange={this.onChange}\n /> : <FieldCreator key={\"empty\"} type={\"shorttext\"} disabled value={\"Kayıt Bulunmamaktadır\"}\n label={rest.label}/> :\n <ProgressIndicator key={\"progress\"} label={rest.label} description={\"Yükleniyor...\"}/>\n ]\n }\n};\n\nconst _PersonaArray = connect((state, ownProps) => ({\n items: state.data && state.data[ownProps.queryPath],\n load: state.data && state.data[ownProps.queryPath] && state.data[ownProps.queryPath].length\n}))(__PersonaArray);\n\n\n\nconst ItemRenderer = function (props) {\n return <CommandButton text={props.label}\n key={props.key}\n disabled={!!props.disabled}\n iconProps={{iconName: props.icon}}\n onClick={props.onClick}\n menuProps={props.subMenuProps}/>\n};\nconst _Combobox = props => {\n const {value, onChange, ..._rest} = props.input || props;\n const {initalValue, ...rest} = props;\n\n return (\n <ComboBox\n {...rest}\n {..._rest}\n onChanged={onChange}\n />\n )\n}\n\nconst fieldsJSON = {\n shorttext: Textfield,\n longtext: Textarea,\n date: Datepicker,\n switch: Switcher,\n toggle: Switcher,\n checkbox: CheckBox,\n password: Textfield,\n combobox: Combobox,\n persona: PersonaArray,\n number: NumberField,\n multifield: JsonArray,\n hiddenfield: () => null\n};\n\nexport const elementJSON = {\n shorttext: _Textfield,\n longtext: _Textarea,\n switch: _Switcher,\n combobox: _Combobox,\n password: _Textfield,\n date: _Datepicker,\n checkbox: _CheckBox,\n number: _NumberField,\n textlistfield: _TextArray,\n jsonArray: _JsonArray\n};\n\nconst DayPickerStrings = {\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n ],\n\n shortMonths: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n ],\n\n days: [\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n 'Sunday'\n ],\n\n shortDays: [\n 'M',\n 'T',\n 'W',\n 'T',\n 'F',\n 'S',\n 'S'\n ],\n\n goToToday: 'Today',\n prevMonthAriaLabel: 'Previous Month',\n nextMonthAriaLabel: 'Next Ay',\n prevYearAriaLabel: 'Previous Year',\n nextYearAriaLabel: 'Next Year'\n};\n\nexport default FieldCreator;","import React, {Component} from 'react';\nimport {Icon, PrimaryButton} from 'office-ui-fabric-react'\nimport FieldCreator from \"../../components/FieldCreator\";\nimport {App} from '../../index';\n\nclass Login extends Component {\n\n constructor(props, context) {\n super(props, context);\n this.state = {\n username: \"admin\",\n password: '1'\n };\n this.login = this.login.bind(this)\n }\n\n login() {\n if (this.state.username && this.state.password) {\n App.actions.login(this.state)\n }\n }\n\n render() {\n return (\n <div>\n <div className=\"iota-cell\">\n <div style={{margin: \"8px 0\", padding: \"8px 0\"}}>\n <FieldCreator type=\"shorttext\"\n onChange={(username) => this.setState({username})}\n autoComplete=\"new-password\"\n value={this.state.username}\n prefix={<Icon iconName=\"Contact\"/>}\n placeholder=\"Username\"/>\n </div>\n <div style={{margin: \"8px 0\", padding: \"8px 0\"}}>\n <FieldCreator type=\"password\"\n autoComplete=\"new-password\"\n value={this.state.password}\n onChange={(password) => this.setState({password})}\n prefix={<Icon iconName=\"LockSolid\"/>}\n placeholder={\"Password\"}/>\n </div>\n </div>\n <div className=\"iota-space-between\">\n <PrimaryButton text={\"Sign In\"}\n disabled={!this.state.username || !this.state.password}\n style={{width: \"100%\", margin: 8}}\n onClick={this.login}\n />\n </div>\n </div>\n );\n }\n}\n\nexport default Login;\n","import React, {Component} from 'react';\nimport Login from './Login';\n\nclass LoginPage extends Component {\n\n constructor(props, context) {\n super(props, context);\n this.state = {expand: [], page: \"login\", params: {}};\n this.contentController = this.contentController.bind(this);\n this.getParams = this.getParams.bind(this);\n }\n\n componentDidMount() {\n this.getParams()\n }\n\n getParams() {\n const search = this.props.location.search;\n if (search) {\n let queryString = search.split(\"?\")[1];\n const params = {};\n if (queryString) {\n queryString.split(\"&\").map(string => {\n params[string.split(\"=\")[0]] = string.split(\"=\")[1]\n });\n this.setState({params, page: \"register\"})\n }\n }\n }\n\n contentController(index) {\n const expand = [...this.state.expand];\n expand[index] = !expand[index];\n this.setState({expand})\n }\n\n render() {\n return (\n <div className=\"login-background iota-centered-item\">\n <div className=\"ms-Grid-col ms-sm12 ms-md12 ms-lg9 \">\n <div style={{minHeight: 400, backgroundColor: \"white\", position: \"relative\"}}>\n <div className=\"ms-Grid\">\n <div className=\"ms-Grid-row\">\n <div className=\"ms-Grid-col ms-sm12 ms-md12 ms-lg12\" style={{height: 370}}>\n <div style={{padding: 32, backgroundColor: \"rgb(0, 120, 212)\", color: \"white\"}}>\n <p className=\"ms-fontSize-xxl ms-font-xl\">Login</p>\n </div>\n <div style={{padding: 32}}>\n <Login params={this.state.params}/>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default LoginPage;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport {connect} from \"react-redux\";\n\nexport function nestedGet(obj) {\n var args = Array.prototype.slice.call(arguments, 1);\n for (var i = 0; i < args.length; i++) {\n if (!obj)\n return undefined;\n obj = obj[args[i]];\n }\n return obj;\n};\n\nclass ConnectedList extends React.Component {\n\n filter(data){\n const {customFilter} = this.props;\n return data.filter((i1,i2)=> !customFilter || customFilter(i1,i2))\n }\n\n search(data){\n\n const {searchItem, filterField,caseSensitive} = this.props;\n\n return data.filter(i => (!searchItem) || !filterField || (caseSensitive ? (filterField.map(i2 => i[i2])).join(\" - \").indexOf(searchItem) > -1 : (filterField.map(i2 => (i[i2] + '').turkishToLowerCase())).join(\" - \").indexOf(searchItem.turkishToLowerCase()) > -1 ))\n }\n\n sort(data){\n const {customSort} = this.props;\n return data.sort((i1,i2) => customSort(i1,i2))\n }\n\n render() {\n const {component, resultSet, loadingComponent,emptyComponent,keyField, useDiv, style, customFilter,className,customSort,searchItem} = this.props;\n \n if(resultSet === undefined){\n if(loadingComponent)\n return <this.props.loadingComponent/>;\n else \n return null;\n } \n let data = resultSet || [];\n\n if(customFilter){\n data = this.filter(data)\n }\n\n if(searchItem){\n data = this.search(data)\n }\n\n if(customSort){\n data = this.sort(data)\n }\n\n if (!data.length) {\n if (emptyComponent)\n return <this.props.emptyComponent/>;\n return null;\n }\n\n const newProps = {style, className};\n\n return useDiv ? <div {...newProps}>\n {data.map((item, index) => <this.props.component item={item} index={index} count={(data && data.length) || undefined} key={keyField ? item[keyField] : index}/>)}\n </div>\n :\n <span {...newProps}>\n {data.map((item, index) => <this.props.component item={item} index={index} count={(data && data.length) || undefined} key={keyField ? item[keyField] : index}/>)}\n </span>\n }\n\n\n\n static propTypes = {\n component: PropTypes.func.isRequired,\n emptyComponent: PropTypes.any,\n loadingComponent: PropTypes.any,\n path: PropTypes.array.isRequired,\n keyField: PropTypes.string,\n useDiv: PropTypes.bool.isRequired,\n style: PropTypes.object,\n customFilter: PropTypes.any,\n customSort: PropTypes.any,\n className: PropTypes.string,\n searchItem: PropTypes.string,\n caseSensitive: PropTypes.bool,\n filterField: PropTypes.array,\n };\n\n static defaultProps = {\n useDiv: false\n };\n\n}\n\nfunction mapStateToProps(state, ownProps) {\n return {resultSet: nestedGet.apply(null, [state, ...ownProps.path])}\n}\n\nexport default connect(mapStateToProps)(ConnectedList);\n","import React, {Component} from \"react\";\nimport {CommandBar, SearchBox} from \"office-ui-fabric-react\";\n\nclass SearchCommandBar extends Component {\n render() {\n const {searchBox, commandBar} = this.props;\n return (\n <div style={{display: \"flex\", alignItems: \"center\", margin: \"8px 16px\"}}>\n <SearchBox placeholder=\"Search\" {...searchBox} />\n <CommandBar {...commandBar} />\n </div>\n );\n }\n}\n\nexport default SearchCommandBar;\n","import React, {Component} from \"react\";\nimport FetchData from \"../../components/FetchData\";\nimport ConnectedList from \"../../components/ConnectedList\";\nimport {\n DocumentCard,\n DocumentCardTitle,\n DocumentCardStatus,\n DocumentCardActivity\n} from \"office-ui-fabric-react\";\nimport {dateToStr} from \"../../utils/utils\";\nimport {App} from \"../..\";\nimport SearchCommandBar from \"../../components-tm/SearchCommandBar\";\nimport EmptyComponent from \"../../components/EmptyComponent\";\nimport ConnectedItem from \"../../components/ConnectedItem\";\n\nclass ProjectList extends Component {\n constructor(props, context) {\n super(props, context);\n this.state = {search: \"\"};\n App.actions.setTitle({title: \"Project List\"});\n App.actions.setBreadcrumb({\n breadcrumb: [\n {\n path: \"/projects\",\n label: \"Project List\"\n }\n ]\n })\n }\n\n render() {\n const cmd = [\n {\n key: \"newItem\",\n name: \"New\",\n iconProps: {\n iconName: \"Add\"\n },\n onClick: () => App.history.push(\"/projects/new\")\n }\n ];\n return (\n <div>\n <FetchData tableName=\"projects\"/>\n <ConnectedItem path={[\"auth\", \"userInfo\"]}\n component={p => {\n const items = p.item.id === 1 ? cmd : [];\n return (\n <SearchCommandBar commandBar={{items}} searchBox={{\n onChange: e => this.setState({search: e})\n }}/>\n )\n }}/>\n\n <div className=\"ms-Grid\">\n <ConnectedList\n customFilter={item => !this.state.search || (item.title.toLowerCase() + item.dsc.toLowerCase()).indexOf(this.state.search.toLowerCase()) > -1}\n path={[\"data\", \"projects\"]}\n component={p => {\n return (\n <div className=\"ms-Grid-col ms-sm12 ms-md6 ms-lg4\">\n <DocumentCard\n className=\"tm-cell cursor-pointer-shadow tm-document-card\"\n styles={{root: {maxWidth: \"auto\"}}}\n onClick={() => App.history.push(\"/projects/\" + p.item.id)}\n >\n <div>\n <DocumentCardTitle\n title={p.item.title}\n shouldTruncate={true}\n />\n <DocumentCardTitle\n title={p.item.dsc}\n shouldTruncate={true}\n showAsSecondaryTitle={true}\n />\n <DocumentCardStatus\n statusIcon=\"AwayStatus\"\n status={p.item.status ? \"Completed\" : \"On Progress\"}\n />\n </div>\n <DocumentCardActivity\n activity={`Created at ${dateToStr(p.item.createdAt)}`}\n people={(p.item.collabrators || []).map(i => ({\n ...i,\n profileImageSrc: App.REST_SERVER + \"/attachments/download?id=\" + i.pp_id\n }))}\n />\n </DocumentCard>\n </div>\n );\n }}\n emptyComponent={() => {\n if (this.state.search)\n return <div className={\"tm-card\"}><EmptyComponent\n dsc={'\"' + this.state.search + '\" Not Found!'}/></div>;\n else\n return <div className={\"tm-card\"}><EmptyComponent dsc=\"No Project\"/></div>;\n }}\n />\n </div>\n </div>\n );\n }\n}\n\nexport default ProjectList;\n","import React, { Component } from \"react\";\nimport { Icon } from \"office-ui-fabric-react\";\n\nclass DisplayItem extends Component {\n render() {\n const { icon, children, label, ...rest } = this.props;\n return (\n <div style={{ display: \"flex\" }} {...rest}>\n <div className=\"ms-font-xl-plus iota-cell\">\n <Icon iconName={icon} style={{ color: \"rgb(16, 110, 190)\" }} />\n </div>\n <div\n className={\"iota-cell\"}\n style={{ marginTop: 0, width: \"100%\", overflow: \"hidden\" }}\n >\n <p\n className=\"ms-fontWeight-semibold ms-font-xl ms-fontSize-l\"\n style={{ margin: 0 }}\n >\n {label}\n </p>\n <div\n style={{ marginBlockStart: \"1em\", marginBlockEnd: \"1em\" }}\n className=\"ms-font-m ms-fontSize-m\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default DisplayItem;\n","import React from \"react\";\nimport _ from \"lodash\";\nimport {Icon, ProgressIndicator} from \"office-ui-fabric-react\";\nimport Dropzone from \"react-fine-uploader/dropzone\";\nimport FileInput from \"react-fine-uploader/file-input\";\nimport Thumbnail from \"react-fine-uploader/thumbnail\";\nimport Filename from \"react-fine-uploader/filename\";\nimport Filesize from \"react-fine-uploader/filesize\";\nimport CancelButton from \"react-fine-uploader/cancel-button\";\nimport \"react-fine-uploader/gallery/gallery.css\";\nimport {connect} from \"react-redux\";\nimport {App} from \"..\";\n\nclass FileUploader extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n submittedFiles: []\n };\n //this.uploader = {};\n this.setUploader();\n App.actions.updateUploaderParams(this.props.params);\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props != nextProps) {\n if (this.props.uploader != nextProps.uploader) {\n this.setUploader(nextProps);\n }\n if (!_.isEqual(this.props.params, nextProps.params)) {\n App.actions.updateUploaderParams(nextProps.params);\n }\n }\n }\n\n setUploader(nextProps) {\n const {uploader} = nextProps || this.props;\n if (!uploader) {\n console.error(\"not uplaoder\");\n return;\n }\n this.uploader = uploader;\n this.uploader.on(\"onUpload\", (id, name) => {\n if (this.props.onUpload) {\n this.props.onUpload(name);\n }\n });\n this.uploader.on(\"onSubmit\", (id, name) => {\n if (this.props.onSubmitted) {\n this.props.onSubmitted(name);\n }\n });\n\n this.uploader.on(\"onComplete\", (id, name, resp) => {\n if (this.props.onComplete) {\n this.props.onComplete(name, resp);\n }\n });\n\n this.uploader.on(\"onCancel\", (id, name) => {\n if (this.props.onCancel) {\n this.props.onCancel(name);\n }\n });\n\n this.uploader.on(\"statusChange\", (id, oldStatus, newStatus) => {\n if (newStatus === \"submitted\") {\n App.actions.submitFile({id});\n } else if ([\"canceled\", \"deleted\"].indexOf(newStatus) > -1) {\n App.actions.deleteFile({id})\n } else if (\"upload successful\" === newStatus) {\n App.actions.deleteFile({id})\n }\n });\n }\n\n render() {\n const {submittedFiles} = this.props\n if (!this.uploader) return null;\n return (\n <div className=\"iota-fileupload-card\">\n <Dropzone\n style={{height: 150, margin: 8}}\n className={\"iota-centered-item\"}\n multiple\n uploader={this.uploader}\n >\n <div style={{textAlign: \"center\"}}>\n <p className=\"ms-font-xl\" style={{margin: 0}}>\n Dosyaları Buraya Sürükleyin veya\n </p>\n <FileInput\n uploader={this.uploader}\n multiple={true}\n onSubmit={(a, b, c) => console.log(\"input\", a, b, c)}\n >\n <p className=\"ms-font-xl\" style={{color: \"#3f51b5\", margin: 0}}>\n Buradan Seçin\n </p>\n </FileInput>\n </div>\n </Dropzone>\n\n {submittedFiles.length ? (\n <Files/>\n ) : null}\n </div>\n );\n }\n}\n\nclass _Files extends React.Component {\n render() {\n const {submittedFiles, uploader} = this.props;\n if (!submittedFiles || !submittedFiles.length) {\n return null;\n }\n return (\n <div style={{width: \"100%\", height: \"100%\", padding: 8}}>\n <div className={\"ms-Grid\"}>\n <div className={\"ms-Grid-row\"}>\n {submittedFiles.map((id, index) => {\n if (id === false) return null;\n return (\n <div\n key={index}\n className=\"ms-Grid-col ms-sm12 ms-md6 ms-lg4\"\n style={{textAlign: \"center\", position: \"relative\"}}\n >\n <div className={\"iota-centered-item\"}>\n <div>\n <div className={\"iota-three-dot\"}>\n <div\n style={{\n position: \"relative\",\n width: 128,\n margin: \"0 auto\"\n }}\n className={\"iota-centered-item\"}\n >\n <Thumbnail id={id} uploader={uploader}/>\n <CancelButton id={id} uploader={uploader}>\n <Icon\n style={{\n position: \"absolute\",\n top: 0,\n right: 0,\n padding: 4,\n color: \"white\",\n borderRadius: \"50%\",\n backgroundColor: \"#212121\"\n }}\n iconName=\"Cancel\"\n />\n </CancelButton>\n </div>\n </div>\n <ProgressBar\n id={id}\n uploader={uploader}\n label={\n <Filename\n id={id}\n className={\"iota-three-dot ms-font-s\"}\n uploader={uploader}\n />\n }\n dsc={\n <Filesize\n id={id}\n className=\"ms-font-xs\"\n uploader={uploader}\n />\n }\n className=\"react-fine-uploader-gallery-total-progress-bar\"\n hideBeforeStart={false}\n style={{margin: \"0 auto\", position: \"static\"}}\n />\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n <div style={{width: \"calc(100% - 16px)\", height: 50}}>\n <ProgressBar\n uploader={uploader}\n className=\"react-fine-uploader-gallery-total-progress-bar\"\n />\n </div>\n </div>\n );\n }\n}\n\nexport const Files = connect(state => ({\n uploader: state.uploader,\n submittedFiles: state.submittedFiles\n}))(_Files);\n\nclass ProgressBar extends React.Component {\n static defaultProps = {\n hideBeforeStart: true,\n hideOnComplete: true\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n bytesUploaded: null,\n hidden: props.hideBeforeStart,\n totalSize: null\n };\n\n this._createEventHandlers();\n }\n\n componentDidMount() {\n if (this._isTotalProgress) {\n this.props.uploader.on(\"totalProgress\", this._trackProgressEventHandler);\n } else {\n this.props.uploader.on(\"progress\", this._trackProgressEventHandler);\n }\n\n this.props.uploader.on(\"statusChange\", this._trackStatusEventHandler);\n }\n\n componentWillUnmount() {\n this._unmounted = true;\n this._unregisterEventHandlers();\n }\n\n render() {\n const {label, dsc} = this.props;\n const percentWidth = this.state.bytesUploaded / this.state.totalSize || 0;\n return (\n <ProgressIndicator\n label={label || \"\"}\n description={dsc || \"\"}\n percentComplete={percentWidth}\n />\n );\n }\n\n _createEventHandlers() {\n if (this._isTotalProgress) {\n this._trackProgressEventHandler = (bytesUploaded, totalSize) => {\n this.setState({bytesUploaded, totalSize});\n };\n } else {\n this._trackProgressEventHandler = (\n id,\n name,\n bytesUploaded,\n totalSize\n ) => {\n if (id === this.props.id) {\n this.setState({bytesUploaded, totalSize});\n }\n };\n }\n\n const statusEnum = this.props.uploader.qq.status;\n\n this._trackStatusEventHandler = (id, oldStatus, newStatus) => {\n if (!this._unmounted) {\n if (this._isTotalProgress) {\n if (\n !this.state.hidden &&\n this.props.hideOnComplete &&\n isUploadComplete(newStatus, statusEnum) &&\n !this.props.uploader.methods.getInProgress()\n ) {\n this.setState({hidden: true});\n } else if (\n this.state.hidden &&\n this.props.uploader.methods.getInProgress()\n ) {\n this.setState({hidden: false});\n }\n } else if (id === this.props.id) {\n if (this.state.hidden && newStatus === statusEnum.UPLOADING) {\n this.setState({hidden: false});\n } else if (\n !this.state.hidden &&\n this.props.hideOnComplete &&\n isUploadComplete(newStatus, statusEnum)\n ) {\n this.setState({hidden: true});\n }\n }\n }\n };\n }\n\n get _isTotalProgress() {\n return this.props.id === null;\n }\n\n _unregisterEventHandlers() {\n if (this._isTotalProgress) {\n this.props.uploader.off(\"totalProgress\", this._trackProgressEventHandler);\n } else {\n this.props.uploader.off(\"progress\", this._trackProgressEventHandler);\n }\n\n this.props.uploader.off(\"statusChange\", this._trackStatusEventHandler);\n }\n}\n\nconst isUploadComplete = (statusToCheck, statusEnum) =>\n statusToCheck === statusEnum.UPLOAD_FAILED ||\n statusToCheck === statusEnum.UPLOAD_SUCCESSFUL ||\n statusToCheck === statusEnum.CANCELED;\n\nexport default connect(state => ({\n uploader: state.uploader,\n submittedFiles: state.submittedFiles\n}))(FileUploader);\n","import React, {Component} from \"react\";\nimport {\n Dialog,\n DialogFooter,\n DefaultButton,\n DialogType\n} from \"office-ui-fabric-react\";\nimport {App} from \"../index\";\n\nclass DeleteDialog extends Component {\n constructor(props, context) {\n super(props, context);\n this.onDelete = this.onDelete.bind(this)\n }\n\n onDelete() {\n const {onDelete, pk, deletePath} = this.props;\n App.actions.deleteRecord({\n deletePath,\n pk,\n onDelete\n })\n }\n\n\n render() {\n const {onClose, open} = this.props;\n return (\n <Dialog\n hidden={!open}\n onDismiss={onClose}\n styles={{main: {maxWidth: \"500px !important\"}}}\n dialogContentProps={{\n type: DialogType.largeHeader,\n title: \"Are you sure?\",\n styles: {header: {backgroundColor: \"#e81123\"}},\n subText:\n \"Delete action can't undo! Do you want to delete anyway?\"\n }}\n modalProps={{\n isBlocking: false,\n containerClassName: \"ms-dialogMainOverride\"\n }}\n >\n <DialogFooter>\n <DefaultButton onClick={onClose} text=\"Cancel\"/>\n <DefaultButton className={\"tm-delete-button\"}\n onClick={this.onDelete}\n text=\"Delete\"/>\n </DialogFooter>\n </Dialog>\n );\n }\n}\n\nexport default DeleteDialog;","import React from \"react\";\nimport {\n List,\n Icon,\n DirectionalHint,\n CommandBarButton,\n TooltipHost,\n OverflowSet,\n CommandBar,\n SearchBox\n} from \"office-ui-fabric-react\";\nimport Loading from \"../../components/Loading\";\nimport {dateToStr} from \"../../utils/utils\";\nimport EmptyComponent from \"../../components/EmptyComponent\";\nimport FileUploader from \"../../components/FileUploader\";\nimport {Files} from \"../../components/FileUploader\";\nimport FileInput from \"react-fine-uploader/file-input\";\nimport {connect} from \"react-redux\";\nimport FetchData from \"../../components/FetchData\";\nimport {App} from \"../..\";\nimport DeleteDialog from \"../DeleteDialog\";\n\nclass Attachments extends React.Component {\n constructor(props, context) {\n super(props, context);\n this.state = {items: undefined};\n this.onDragOver = this.onDragOver.bind(this);\n this.onDragLeave = this.onDragLeave.bind(this);\n this.onDragEnter = this.onDragEnter.bind(this);\n this.onDragEnd = this.onDragEnd.bind(this);\n }\n\n onDragOver(e) {\n e.preventDefault();\n }\n\n onDragEnter(e) {\n this.setState({dragging: true});\n }\n\n onDragLeave(e) {\n this.setState({dragging: false});\n }\n\n onDragEnd(e) {\n this.setState({dragging: false});\n }\n\n render() {\n const {parentType, parentId} = this.props;\n return (\n <div\n onDragOver={this.onDragOver}\n onDragEnter={this.onDragEnter}\n className={\"attachment\"}\n >\n <FetchData\n tableName={\"attachments\"}\n params={{parent_id: parentId, parent_type: parentType}}\n />\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n borderBottom: \"3px solid #f4f4f4\"\n }}\n >\n <div style={{minWidth: 200, backgroundColor: \"white\"}}>\n <SearchBox\n placeholder=\"Search...\"\n className=\"iota-borderless\"\n onChange={val => {\n this.setState({search: val})\n }}\n />\n </div>\n <CommandBar\n className={\"iota-fullwidth\"}\n style={{width: \"100% !important\"}}\n elipisisAriaLabel=\"More options\"\n items={[\n {\n key: \"download\",\n icon: \"CloudUpload\",\n name: \"Upload\",\n onRender: UploadButton,\n onClick: () => {\n return;\n }\n },\n {\n key: \"preview\",\n iconProps: {iconName: \"Refresh\"},\n name: \"Refresh\",\n onClick: () => {\n App.actions.reloadQuery({queryName: \"attachments\"})\n }\n }\n ]}\n />\n </div>\n <div>\n <div\n style={{\n height: this.state.dragging ? 150 : 0,\n transition: \"0.4s\",\n overflow: \"hidden\"\n }}\n >\n <FileUploader\n key={\"file-upload\"}\n params={{parentId, parentType}}\n />\n </div>\n <Files/>\n <FileList search={this.state.search}/>\n </div>\n </div>\n );\n }\n}\n\nconst _FileList = props => {\n const {files: _files, search} = props;\n const files = (_files || []).filter(i => !search || !i.file_name || i.file_name.toLowerCase().indexOf(search.toLowerCase()) > -1)\n return _files ? (\n files.length ? (\n <div>\n <List\n items={files}\n onRenderCell={(e) => React.createElement(ListItem, e)}\n style={{maxHeight: 500, overflow: \"auto\"}}\n />\n </div>\n ) :\n search && search.length ?\n <EmptyComponent dsc={'\"' + search + '\"' + \" Not Found\"}/>\n :\n (\n <EmptyComponent dsc={\"No Attachment\"}/>\n )\n ) : (\n <Loading/>\n );\n};\n\nconst FileList = connect(state => ({\n files: state.data && state.data.attachments\n}))(_FileList);\n\nfunction bytesToSize(bytes) {\n var sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\n if (bytes === 0) return \"0 Byte\";\n var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));\n return Math.round(bytes / Math.pow(1024, i), 2) + \" \" + sizes[i];\n}\n\nconst UploadButton = props => {\n return (\n <div>\n <FileInputUploader {...props} />\n </div>\n );\n};\n\nconst _FileInputUploader = props => {\n const {icon, name, onClick, uploader} = props;\n if (!uploader)\n return null;\n\n return (\n <FileInput multiple uploader={uploader}>\n <CommandBarButton\n styles={{root: {padding: \"10px\"}}}\n iconProps={{iconName: icon}}\n onClick={onClick}\n text={name}\n />\n </FileInput>\n );\n};\n\nconst FileInputUploader = connect(state => ({\n uploader: state.uploader\n}))(_FileInputUploader);\n\nclass ListItem extends React.Component {\n\n constructor(props, context) {\n super(props, context);\n this.state = {deleteRecordId: false};\n }\n\n\n render() {\n const {id, file_name, file_size, user_full_name, createdAt} = this.props;\n return (\n <div className=\"iota-attachment-list-item\">\n {this.state.deleteRecordId ?\n <DeleteDialog open={this.state.deleteRecordId}\n deletePath={\"attachments\"}\n pk={{id}}\n onDelete={() =>\n this.setState({deleteRecordId: false},\n () => App.actions.reloadQuery({queryName: \"attachments\"}))}\n /> : null}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n padding: \"1px 0\"\n }}\n className=\"iota-attachment-list-item-content-wrapper\"\n >\n <Icon\n style={{fontSize: 24, padding: 16, margin: 16}}\n iconName={\"Cloud\"}\n />\n <div style={{padding: \"8px 0\"}}>\n <p\n className=\"ms-fontSize-m ms-font-m-plus\"\n style={{margin: \"8px 0\"}}\n >\n {file_name}\n </p>\n <p className=\"ms-fontSize-s ms-font-m\" style={{margin: 0}}>\n {bytesToSize(file_size)}\n </p>\n <p className=\"ms-fontSize-sPlus ms-font-s-plus\">\n <span className=\"ms-fontSize-m ms-font-s-plus ms-fontWeight-semibold\">\n {user_full_name || \"Murat Güney\"}\n </span>{\" \"}\n tarafından{\" \"}\n <span className=\"ms-fontSize-m ms-font-s-plus ms-fontWeight-semibold\">\n {\" \"}\n {dateToStr(\n createdAt,\n \"DD MMMM YYYY [tarihinde saat] HH:mm\"\n )}'{\" \"}\n </span>\n de {user_full_name === \"Sistem\" ? \"oluşturuldu.\" : \"eklendi.\"}\n </p>\n </div>\n </div>\n <OverflowSet\n className=\"iota-attachment-list-item-buttons\"\n vertical\n items={[\n {\n key: \"download\",\n icon: \"CloudDownload\",\n name: \"İndir\",\n ariaLabel: \"İndir\",\n onClick: () => {\n const a = document.createElement(\"a\");\n a.download = true;\n a.target = \"blank\";\n a.href = App.REST_SERVER + \"/attachments/download?id=\" + id;\n a.click();\n }\n },\n {\n key: \"delete\",\n icon: \"Delete\",\n name: \"Sil\",\n style: {color: \"red\"},\n onClick: () => {\n this.setState({deleteRecordId: id})\n }\n }\n ]}\n onRenderItem={ItemRenderer}\n />\n </div>\n )\n ;\n };\n};\n\nconst ItemRenderer = props => {\n const {icon, name, onClick, style} = props;\n return (\n <TooltipHost\n content={name}\n calloutProps={{\n directionalHint: DirectionalHint.rightCenter,\n beakWidth: 12\n }}\n >\n <CommandBarButton\n styles={{root: {padding: \"10px\"}}}\n iconProps={{iconName: icon, style}}\n onClick={onClick}\n />\n </TooltipHost>\n );\n};\n\nexport default Attachments;\n","import React from \"react\";\nimport {\n List,\n Persona,\n IconButton,\n TextField\n} from \"office-ui-fabric-react\";\nimport Loading from \"../../components/Loading\";\nimport {dateToStr} from \"../../utils/utils\";\nimport EmptyComponent from \"../../components/EmptyComponent\";\nimport FetchData from \"../../components/FetchData\";\nimport {connect} from \"react-redux\";\nimport {App} from \"../../index\";\n\nfunction scrollToEnd() {\n const commentList = document.getElementById(\"comment-list\");\n commentList.scrollTo(0, commentList.scrollHeight);\n}\n\nclass _Comments extends React.Component {\n constructor(props, context) {\n super(props, context);\n this.state = {items: undefined, comment: \"\"};\n this.onCommit = this.onCommit.bind(this)\n this.onChange = this.onChange.bind(this)\n }\n\n onCommit() {\n if (!this.state.comment)\n return;\n const {parentType, parentId, myUsername} = this.props;\n App.actions.upsertForm({\n formPath: \"comments\",\n notification: false,\n values: {\n comment: this.state.comment,\n author: myUsername,\n parent_id: parentId,\n parent_type: parentType,\n },\n onSave: () => {\n App.actions.reloadQuery({\n queryName: \"comments\",\n onFetch: scrollToEnd\n });\n this.setState({comment: \"\"})\n }\n })\n }\n\n onChange(e, comment) {\n this.setState({comment})\n }\n\n render() {\n const {parentId, parentType, myUsername} = this.props;\n return (\n <div>\n <FetchData tableName={\"comments\"}\n params={{parent_id: parentId, parent_type: parentType}}/>\n <CommentList myUsername={myUsername}/>\n <div style={{border: \"8px solid white\", padding: 16}}\n className=\"ms-bgColor-neutralLighter\">\n <TextField\n placeholder=\"Type a comment...\"\n multiline\n value={this.state.comment}\n iconProps={{\n iconName: \"Send\",\n disabled: !this.state.comment,\n className:\n \"ms-fontColor-themePrimary ms-bgColor-neutralLighter--hover\",\n style: {\n position: \"absolute\",\n right: 0,\n padding: 8,\n bottom: 8,\n borderRadius: 16,\n fontSize: 20,\n cursor: \"pointer\"\n },\n onClick: this.onCommit\n }}\n onChange={this.onChange}\n rows={4}\n />\n </div>\n </div>\n );\n }\n}\n\nconst Comments = connect(state => ({\n myUsername: state.auth && state.auth.userInfo && state.auth.userInfo.username\n}))(_Comments);\n\n\nclass ListRenderer extends React.Component {\n\n\n componentDidMount() {\n const commentList = document.getElementById(\"comment-list\");\n setTimeout(() => {\n commentList.scrollTo(0, commentList.scrollHeight);\n }, 100)\n }\n\n render() {\n const {comments, myUsername} = this.props;\n return <List\n id={\"comment-list\"}\n items={comments}\n onRenderCell={e => React.createElement(ListItem, {...e, myUsername})}\n style={{maxHeight: 300, overflow: \"auto\"}}\n />\n }\n}\n\nconst _CommentList = props => {\n const {comments} = props;\n return comments ? (\n comments.length ? (\n <ListRenderer {...props}/>\n ) : (\n <EmptyComponent dsc={\"No Comment\"}/>\n )\n ) : (\n <Loading/>\n );\n};\n\nconst CommentList = connect(state => ({\n comments: state.data && state.data.comments,\n}))(_CommentList);\n\nconst ListItem = props => {\n const {\n firstname,\n lastname,\n pp_id,\n createdAt,\n author,\n comment,\n email,\n myUsername,\n id\n } = props;\n const isMyComment = author === myUsername;\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: isMyComment ? \"flex-end\" : \"flex-start\",\n padding: 8,\n margin: 8\n }}\n data-is-focusable={true}\n >\n <div\n style={{padding: \"0 8px\", borderRadius: 10, maxWidth: \"60%\"}}\n className={\n isMyComment\n ? \"ms-bgColor-themePrimary ms-fontColor-white\"\n : \"ms-bgColor-neutralLighter \"\n }\n >\n <div style={{display: \"flex\"}}>\n {isMyComment && false ? (\n <IconButton\n className=\"ms-bgColor-neutralLighter--hover\"\n iconProps={{iconName: \"Delete\", style: {color: \"red\"}}}\n />\n ) : null}\n {!isMyComment ? (\n <Persona text={firstname ? firstname + \" \" + lastname : author}\n size={3}\n imageUrl={App.REST_SERVER + \"/attachments/download?id=\" + pp_id}\n secondaryText={email}\n />\n ) : null}\n </div>\n <div\n className=\"ms-fontSize-m ms-font-l\"\n style={{\n padding: 8,\n margin: 0,\n display: \"flex\",\n alignItems: \"flex-end\"\n }}\n >\n {comment}\n <div\n className=\"ms-fontSize-s ms-font-l ms-fontColor-neutralDark\"\n style={{textAlign: \"center\", marginLeft: 8}}\n >\n {dateToStr(createdAt, \"HH:mm\")}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Comments;\n","import React, {Component} from \"react\";\nimport {PrimaryButton} from \"office-ui-fabric-react\";\nimport Attachments from \"./Attachments\";\nimport Comments from \"./Comments\";\n\nconst attachmentComponents = {\n attachment: Attachments,\n comment: Comments\n};\n\nclass RecordExtension extends Component {\n constructor(props, context) {\n super(props, context);\n this.state = {selectedTab: \"attachment\"};\n }\n\n onClick(selectedTab) {\n this.setState({selectedTab});\n }\n\n render() {\n const buttons = [\n {\n icon: \"Attach\",\n text: \"Attachments\",\n fieldKey: \"attachment\"\n },\n {\n icon: \"Comment\",\n text: \"Comments\",\n fieldKey: \"comment\"\n }\n ];\n return (\n <div className=\"ms-Grid\" style={{padding: 0}}>\n <div className=\"ms-Grid-row\" style={{margin: \"8px 0\"}}>\n <div\n className={\"ms-Grid-col ms-sm12 ms-md12 ms-lg12\"}\n style={{backgroundColor: \"white\", padding: 0, minHeight: 100}}\n >\n <div style={{borderBottom: \"1px solid #ccc\"}}>\n {buttons.map((button, index) => {\n const {icon, text, fieldKey} = button;\n const checked = this.state.selectedTab === fieldKey;\n let style = {};\n if (!checked)\n style = {\n root: {backgroundColor: \"white\", color: \"black\"},\n icon: {color: \"rgb(16, 110, 190)\"}\n };\n else style = {icon: {color: \"white\"}};\n return (\n <PrimaryButton\n iconProps={{iconName: icon}}\n key={index}\n text={text}\n onClick={() => this.onClick(fieldKey)}\n styles={{\n root: {\n height: 40,\n width: \"50%\",\n ...(style.root || {})\n },\n ...(style.icon || {})\n }}\n />\n );\n })}\n </div>\n {React.createElement(attachmentComponents[this.state.selectedTab], {\n ...this.props\n })}\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default RecordExtension;\n","import React from \"react\";\nimport {Icon} from \"office-ui-fabric-react\";\n\nconst StatusBar = props => {\n const {status} = props;\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n padding: \"0 16px\",\n color: \"white\",\n backgroundColor: status ? \"#107c10\" : \"#ff8c00\"\n }}\n >\n <div style={{padding: 16}} className={\"iota-centered-item\"}>\n <Icon\n styles={{root: {fontSize: 24}}}\n iconName={status ? \"Completed\" : \"DRM\"}\n />\n </div>\n <div>{status ? \"Completed\" : \"On Progress\"}</div>\n </div>\n );\n};\n\nexport default StatusBar;\n","import React, {Component} from \"react\";\nimport FetchData from \"../../components/FetchData\";\nimport CardTitle from \"../../components/CardTitle\";\nimport ConnectedList from \"../../components/ConnectedList\";\nimport {\n Persona,\n CommandBar,\n DetailsList,\n SelectionMode,\n DetailsRow,\n Icon,\n ProgressIndicator, Dialog, DialogType, DialogFooter, PrimaryButton, DefaultButton\n} from \"office-ui-fabric-react\";\nimport DisplayItem from \"../../components/DisplayItem\";\nimport RecordExtension from \"../../components-tm/RecordExtension\";\nimport {App} from \"../..\";\nimport EmptyComponent from \"../../components/EmptyComponent\";\nimport {connect} from \"react-redux\";\nimport Loading from \"../../components/Loading\";\nimport StatusBar from \"../../components-tm/StatusBar\";\nimport DeleteDialog from \"../../components-tm/DeleteDialog\";\nimport {dateToStr} from \"../../utils/utils\";\nimport ConnectedItem from \"../../components/ConnectedItem\";\n\nclass ProjectDetail extends Component {\n\n constructor(props, context) {\n super(props, context);\n this.state = {deleteRecordId: false};\n const {id} = props.match.params;\n App.actions.setTitle({title: \"Project Detail\"});\n App.actions.setBreadcrumb({\n breadcrumb: [\n {\n path: \"/projects\",\n label: \"Project List\"\n },\n {\n path: \"/projects/\" + id,\n label: \"Project Detail\"\n }\n ]\n })\n }\n\n render() {\n const {id} = this.props.match.params;\n const cmd = item => [\n {\n key: \"newItem\",\n name: \"Edit\",\n iconProps: {\n iconName: \"Edit\"\n },\n onClick: () => App.history.push(\"/projects/\" + id + \"/edit\")\n },\n {\n key: \"delete\",\n name: \"Delete\",\n iconProps: {\n iconName: \"Delete\"\n },\n onClick: () => this.setState({deleteRecordId: id})\n },\n {\n key: \"task\",\n name: \"Task\",\n iconProps: {\n iconName: \"Add\"\n },\n onClick: () => App.history.push(\"/projects/\" + id + \"/newTask\")\n },\n !item.status\n ? {\n key: \"done\",\n name: \"Done\",\n iconProps: {\n iconName: \"Completed\"\n },\n onClick: () => this.setState({doneDialog: true})\n }\n : null\n ].filter(i => i);\n\n return (\n <div className=\"tm-cell\">\n <ConnectedItem path={[\"auth\", \"userInfo\"]}\n component={p2 => {\n return (\n <ConnectedList\n path={[\"data\", \"projects\"]}\n component={p => {\n const items = p2.item.id === 1 ? cmd(p.item) : [];\n if (p.item.status || !items.length)\n return null;\n return <CommandBar items={items}/>;\n }}\n />\n )\n }}/>\n <DoneDialog\n open={this.state.doneDialog}\n onClose={() => this.setState({doneDialog: false})}\n id={id}\n />\n <DeleteDialog pk={{id: this.state.deleteRecordId}} open={this.state.deleteRecordId}\n onClose={() => this.setState({deleteRecordId: false})}\n deletePath={\"projects\"}\n onDelete={() => App.history.push(\"/projects\")}\n />\n <div className=\"ms-Grid\">\n <FetchData tableName=\"projects\" params={{id}}/>\n <FetchData tableName=\"tasks\" params={{project_id: id}}/>\n <div className=\"ms-Grid-row\">\n <div className=\"ms-Grid-col ms-sm8\">\n <ConnectedList\n path={[\"data\", \"projects\"]}\n component={p => {\n return (\n <div>\n <StatusBar status={p.item.status}/>\n <div className=\"tm-card\" style={{padding: 16}}>\n <DisplayItem icon={\"ClipboardSolid\"} label={\"Title\"}>\n {p.item.title}\n </DisplayItem>\n <DisplayItem icon={\"TextDocument\"} label={\"Description\"}>\n {p.item.dsc}\n </DisplayItem>\n <DisplayItem icon={\"Calendar\"} label={\"Created Date\"}>\n {dateToStr(p.item.createdAt)}\n </DisplayItem>\n <DisplayItem icon={\"DateTime\"} label={\"Finish Date\"}>\n {dateToStr(p.item.finish_date)}\n </DisplayItem>\n {p.item.done_date ?\n <DisplayItem icon={\"EventAccepted\"} label={\"Done Date\"}>\n {dateToStr(p.item.done_date)}\n </DisplayItem> : null}\n <DisplayItem icon={\"AwayStatus\"} label={\"Status\"}>\n <ProgressIndicator\n description={\n (p.item.done_count || \"0\") + \"/\" + p.item.task_count\n }\n percentComplete={\n p.item.done_count / p.item.task_count\n }\n />\n </DisplayItem>\n </div>\n </div>\n );\n }}\n loadingComponent={\n () => {\n return (\n <div className={\"tm-card\"}>\n <Loading/>\n </div>\n )\n }\n }\n />\n </div>\n <div className=\"ms-Grid-col ms-sm4\">\n <div className=\"tm-card\">\n <ConnectedList\n path={[\"data\", \"projects\"]}\n component={p => {\n return (\n <div>\n <CardTitle icon={\"Group\"}>Collaborators</CardTitle>\n <div className=\"tm-cell\">\n {p.item.collabrators && p.item.collabrators.length ? (\n p.item.collabrators.map((user, index) => {\n return (\n <Persona\n size={3}\n text={user.name}\n imageUrl={App.REST_SERVER + \"/attachments/download?id=\" + user.pp_id}\n secondaryText={user.username}\n key={index}\n styles={{root: {margin: \"8px 0\"}}}\n />\n );\n })\n ) : (\n <EmptyComponent dsc=\"No Collaborator\"/>\n )}\n </div>\n </div>\n );\n }}\n loadingComponent={\n () => {\n return (\n <div className={\"tm-card\"}>\n <Loading/>\n </div>\n )\n }\n }\n />\n </div>\n </div>\n </div>\n <div className=\"ms-Grid-row\" style={{marginTop: 8}}>\n <div className=\"ms-Grid-col ms-sm12\">\n <div className=\"tm-card\">\n <CardTitle icon={\"TaskManager\"}>Tasks</CardTitle>\n <TaskList id={id}/>\n </div>\n </div>\n </div>\n <RecordExtension parentType=\"projects\" parentId={id}/>\n </div>\n </div>\n );\n }\n}\n\nconst _TaskList = props => {\n const {tasks, load, id} = props;\n\n const columns = [\n {\n key: \"column0\",\n name: \"Status\",\n iconName: \"Status\",\n fieldName: \"status\",\n minWidth: 30,\n maxWidth: 50,\n iconOnly: true,\n padding: true,\n isPadded: true,\n onRender: item => {\n return (\n <Icon\n styles={{root: {fontSize: 18}}}\n iconName={item.status ? \"Completed\" : \"DRM\"}\n />\n );\n }\n },\n {\n key: \"column1\",\n name: \"Title\",\n fieldName: \"title\",\n minWidth: 100,\n maxWidth: 150\n },\n {\n key: \"column2\",\n name: \"Description\",\n fieldName: \"dsc\",\n minWidth: 100,\n maxWidth: 150\n },\n {\n key: \"column3\",\n name: \"Collaborators\",\n fieldName: \"collabrators\",\n minWidth: 100,\n maxWidth: 150,\n onRender: item => {\n if (item.collabrators && item.collabrators.length) {\n return item.collabrators.map((user, index) => (\n <Persona\n text={user.name}\n imageUrl={App.REST_SERVER + \"/attachments/download?id=\" + user.pp_id}\n secondaryText={user.username}\n key={index}\n size={1}\n styles={{root: {margin: \"8px 0\"}}}\n />\n ));\n }\n return <div>No Collaborator</div>;\n }\n }\n ];\n if (load === undefined) return <Loading/>;\n if (!load) return <EmptyComponent dsc=\"No Task\"/>;\n if (load)\n return (\n <DetailsList\n items={tasks || []}\n columns={columns}\n selectionMode={SelectionMode.none}\n setKey=\"set\"\n onRenderRow={e => {\n return React.createElement(DetailsRow, {\n onClick: event =>\n App.history.push(\"/projects/\" + id + \"/tasks/\" + e.item.id),\n key: e.itemIndex,\n ...e,\n className: \"cursor-pointer\"\n });\n }}\n isHeaderVisible={true}\n selectionPreservedOnEmptyClick={true}\n enterModalSelectionOnTouch={true}\n />\n );\n};\n\nconst TaskList = connect(state => ({\n tasks: state.data && state.data.tasks,\n load: state.data && state.data.tasks && state.data.tasks.length\n}))(_TaskList);\n\n\nconst DoneDialog = props => {\n const {open, onClose, id} = props;\n\n function onDone() {\n App.actions.upsertForm({\n formPath: \"projects\",\n pk: {id},\n values: {\n status: 1,\n done_date: new Date()\n },\n onSave: i => {\n onClose();\n }\n });\n }\n\n return (\n <Dialog\n hidden={!open}\n onDismiss={onClose}\n dialogContentProps={{\n type: DialogType.largeHeader,\n title: \"Are you sure?\",\n subText:\n \"Are you sure to complete? This action can't undo!\"\n }}\n modalProps={{\n isBlocking: false,\n containerClassName: \"ms-dialogMainOverride\"\n }}\n >\n <DialogFooter>\n <PrimaryButton onClick={onDone} text=\"Done\"/>\n <DefaultButton onClick={onClose} text=\"Cancel\"/>\n </DialogFooter>\n </Dialog>\n );\n};\n\nexport default ProjectDetail;\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport { fetchData } from \"../actions\";\nimport Actions from \"redux-form/es/actions\";\n\nconst formInitialize = Actions.initialize;\n\nclass FormLoader extends React.Component {\n static defaultProps = {};\n\n constructor(props, context) {\n super(props, context);\n this.props.initialValues && this.initialize(this.props.initialValues);\n this.state = {\n _initialized: !!this.props.initialValues\n };\n this.initialize = this.initialize.bind(this);\n }\n\n initialize([data]) {\n if (this.props.initialize) this.props.initialize(data);\n else\n this.props.formInitialize(\n this.props.formName,\n this.props.isNew ? this.props.formInitialData || {} : data\n );\n }\n\n componentWillMount() {\n this.props.fetchData({\n tableName: this.props.queryPath,\n params: this.props.params\n });\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.initialValues && !this.state._initialized) {\n this.setState({ _initialized: true }, () =>\n this.initialize(nextProps.initialValues)\n );\n }\n }\n\n componentWillUnmount() {\n // this.props.clearFormResult({\n // name: this.props.formName\n // });\n }\n\n shouldComponentUpdate() {\n return false;\n }\n\n render() {\n return null;\n }\n}\n\nfunction mapStateToProps(state, ownProps) {\n return {\n initialValues: state.data && state.data[ownProps.queryPath]\n };\n}\n\nexport default connect(\n mapStateToProps,\n { fetchData, formInitialize }\n)(FormLoader);\n","import React, {Component} from \"react\";\nimport FieldCreator from \"../../components/FieldCreator\";\nimport {reduxForm} from \"redux-form\";\nimport {Button, PrimaryButton} from \"office-ui-fabric-react\";\nimport {App} from \"../..\";\nimport FormLoader from \"../../components-tm/FormLoader\";\n\nclass ProjectEdit extends Component {\n constructor(props, context) {\n super(props, context);\n this.state = {};\n this.onSave = this.onSave.bind(this);\n const {id} = props.match.params;\n\n App.actions.setTitle({title: id ? \"Project Edit\" : \"New Project\"});\n\n const editPaths = id ? [{\n path: \"/projects/\" + id,\n label: \"Project Detail\"\n },\n {\n path: \"/projects/\" + id + \"/edit\",\n label: \"Project Edit\"\n }] : [{\n path: \"/projects/new\",\n label: \"New Project\"\n }];\n\n App.actions.setBreadcrumb({\n breadcrumb: [\n {\n path: \"/projects\",\n label: \"Project List\"\n },\n ...editPaths\n ]\n })\n }\n\n onSave() {\n const {id} = this.props.match.params;\n App.actions.upsertForm({\n formName: \"project-edit\",\n formPath: \"projects\",\n pk: id ? {id} : undefined,\n onSave: (item) => id ? App.history.goBack() : App.history.push(\"/projects/\" + item.id)\n\n });\n }\n\n render() {\n const {id} = this.props.match.params;\n return (\n <div className=\"tm-card tm-cell\">\n <FormLoader\n formName=\"project-edit\"\n queryPath={\"projects\"}\n params={{id}}\n isNew={!id}\n />\n <div className=\"tm-cell\">\n <FieldCreator type=\"shorttext\" label=\"Title\" name=\"title\"/>\n </div>\n <div className=\"tm-cell\">\n <FieldCreator type=\"shorttext\" label=\"Description\" name=\"dsc\"/>\n </div>\n <div className=\"tm-cell\">\n <FieldCreator type=\"date\" label=\"Finish Date\" name=\"finish_date\"/>\n </div>\n <div className=\"tm-cell\">\n <FieldCreator\n type=\"persona\"\n queryPath=\"users\"\n valField=\"id\"\n insertItem={true}\n isArray\n textField=\"name\"\n label=\"Collaborators\"\n name=\"collabrators\"\n />\n </div>\n <span className=\"tm-cell\">\n <Button onClick={() => App.history.goBack()}>Decline</Button>\n </span>\n <span className=\"tm-cell\">\n <PrimaryButton onClick={this.onSave}>Save</PrimaryButton>\n </span>\n </div>\n );\n }\n}\n\nexport default reduxForm({form: \"project-edit\"})(ProjectEdit);\n","import React, {Component} from \"react\";\nimport FieldCreator from \"../../components/FieldCreator\";\nimport {reduxForm} from \"redux-form\";\nimport {Button, PrimaryButton} from \"office-ui-fabric-react\";\nimport {App} from \"../..\";\nimport FormLoader from \"../../components-tm/FormLoader\";\n\nclass TaskEdit extends Component {\n constructor(props, context) {\n super(props, context);\n this.state = {};\n this.onSave = this.onSave.bind(this);\n const {id, task_id} = props.match.params;\n\n const editPaths = task_id ?\n [{\n path: \"/projects/\" + id + \"/tasks/\" + task_id,\n label: \"Task Detail\"\n },\n {\n path: \"/projects/\" + id + \"/task/\" + task_id + \"/edit\",\n label: \"Task Edit\"\n }] :\n [{\n path: \"/projects/\" + id + \"/task/new\",\n label: \"New Task\"\n }]\n\n App.actions.setTitle({title: \"Task Edit\"});\n\n App.actions.setBreadcrumb({\n breadcrumb: [\n {\n path: \"/projects\",\n label: \"Project List\"\n },\n {\n path: \"/projects/\" + id,\n label: \"Project Detail\"\n },\n ...editPaths\n ]\n })\n\n }\n\n onSave() {\n const {id, task_id} = this.props.match.params;\n App.actions.upsertForm({\n formName: \"task-edit\",\n formPath: \"tasks\",\n pk: task_id ? {id: task_id} : undefined,\n onSave: (task) => task_id ? App.history.goBack() : App.history.push(\"/projects/\" + id + \"/tasks/\" + task.id)\n });\n }\n\n render() {\n const {id, task_id} = this.props.match.params;\n return (\n <div className=\"tm-card tm-cell\">\n <FormLoader\n formName=\"task-edit\"\n queryPath={\"tasks\"}\n params={{id: task_id}}\n isNew={!task_id}\n formInitialData={{project_id: id, status: 0}}\n />\n <div className=\"tm-cell\">\n <FieldCreator type=\"shorttext\" label=\"Title\" name=\"title\"/>\n </div>\n <div className=\"tm-cell\">\n <FieldCreator type=\"shorttext\" label=\"Description\" name=\"dsc\"/>\n </div>\n <div className=\"tm-cell\">\n <FieldCreator type=\"date\" label=\"Finish Date\" name=\"finish_date\"/>\n </div>\n <div className=\"tm-cell\">\n <FieldCreator\n type=\"persona\"\n queryPath=\"projects/collabrators\"\n params={{id}}\n valField=\"username\"\n isArray\n insertItem\n textField=\"name\"\n label=\"Collaborators\"\n name=\"collabrators\"\n />\n </div>\n <span className=\"tm-cell\">\n <Button onClick={() => App.history.goBack()}>Decline</Button>\n </span>\n <span className=\"tm-cell\">\n <PrimaryButton onClick={this.onSave}>Save</PrimaryButton>\n </span>\n </div>\n );\n }\n}\n\nexport default reduxForm({form: \"task-edit\"})(TaskEdit);\n","import React, {Component} from \"react\";\nimport FieldCreator from \"../../components/FieldCreator\";\nimport {reduxForm} from \"redux-form\";\nimport {Button, PrimaryButton} from \"office-ui-fabric-react\";\nimport {App} from \"../..\";\nimport FormLoader from \"../../components-tm/FormLoader\";\n\nclass CheckEdit extends Component {\n constructor(props, context) {\n super(props, context);\n this.state = {};\n this.onSave = this.onSave.bind(this);\n\n const {id, task_id, check_id} = props.match.params;\n\n const editPaths = check_id ?\n [{\n path: \"/projects/\" + id + \"/tasks/\" + task_id + \"/checks/\" + check_id,\n label: \"Check Detail\"\n },\n {\n path: \"/projects/\" + id + \"/task/\" + task_id + \"/checks/\" + check_id + \"/edit\",\n label: \"Check Edit\"\n }] :\n [{\n path: \"/projects/\" + id + \"/task/\" + task_id + \"/newCheck\",\n label: \"New Check\"\n }]\n\n App.actions.setTitle({title: \"Check Edit\"});\n\n App.actions.setBreadcrumb({\n breadcrumb: [\n {\n path: \"/projects\",\n label: \"Project List\"\n },\n {\n path: \"/projects/\" + id,\n label: \"Project Detail\"\n },\n {\n path: \"/projects/\" + id + \"/tasks/\" + task_id,\n label: \"Task Detail\"\n },\n ...editPaths\n ]\n })\n\n }\n\n onSave() {\n const {id, task_id, check_id} = this.props.match.params;\n App.actions.upsertForm({\n formName: \"check-edit\",\n formPath: \"checklists\",\n pk: check_id ? {id: check_id} : undefined,\n onSave: (check) => check_id ? App.history.goBack() : App.history.push(\"/projects/\" + id + \"/tasks/\" + task_id + \"/checks/\" + check.id)\n });\n }\n\n render() {\n const {id, task_id, check_id} = this.props.match.params;\n return (\n <div className=\"tm-card tm-cell\">\n <FormLoader\n formName=\"check-edit\"\n queryPath={\"checklists\"}\n params={{id: check_id}}\n isNew={!check_id}\n formInitialData={{task_id, status: 0}}\n />\n <div className=\"tm-cell\">\n <FieldCreator type=\"shorttext\" label=\"Title\" name=\"title\"/>\n </div>\n <div className=\"tm-cell\">\n <FieldCreator type=\"shorttext\" label=\"Description\" name=\"dsc\"/>\n </div>\n <div className=\"tm-cell\">\n <FieldCreator type=\"date\" label=\"Finish Date\" name=\"finish_date\"/>\n </div>\n <div className=\"tm-cell\">\n <FieldCreator\n type=\"persona\"\n queryPath=\"tasks/collabrators\"\n params={{id: task_id}}\n valField=\"username\"\n insertItem\n isArray\n textField=\"name\"\n label=\"Collaborators\"\n name=\"collabrators\"\n />\n </div>\n <span className=\"tm-cell\">\n <Button onClick={() => App.history.goBack()}>Decline</Button>\n </span>\n <span className=\"tm-cell\">\n <PrimaryButton onClick={this.onSave}>Save</PrimaryButton>\n </span>\n </div>\n );\n }\n}\n\nexport default reduxForm({form: \"check-edit\"})(CheckEdit);\n","import React, {Component} from \"react\";\nimport FetchData from \"../../components/FetchData\";\nimport CardTitle from \"../../components/CardTitle\";\nimport ConnectedList from \"../../components/ConnectedList\";\nimport {\n Persona,\n CommandBar,\n Dialog,\n DialogFooter,\n PrimaryButton,\n DefaultButton,\n DialogType\n} from \"office-ui-fabric-react\";\nimport DisplayItem from \"../../components/DisplayItem\";\nimport {App} from \"../..\";\nimport EmptyComponent from \"../../components/EmptyComponent\";\nimport StatusBar from \"../../components-tm/StatusBar\";\nimport RecordExtension from \"../../components-tm/RecordExtension\";\nimport DeleteDialog from \"../../components-tm/DeleteDialog\";\nimport Loading from \"../../components/Loading\";\nimport {dateToStr} from \"../../utils/utils\";\nimport ConnectedItem from \"../../components/ConnectedItem\";\n\nclass TaskDetail extends Component {\n constructor(props, context) {\n super(props, context);\n this.state = {doneDialog: false};\n\n const {id, task_id, check_id} = props.match.params;\n\n App.actions.setTitle({title: \"Check Detail\"});\n\n App.actions.setBreadcrumb({\n breadcrumb: [\n {\n path: \"/projects\",\n label: \"Project List\"\n },\n {\n path: \"/projects/\" + id,\n label: \"Project Detail\"\n },\n {\n path: \"/projects/\" + id + \"/tasks/\" + task_id,\n label: \"Task Detail\"\n },\n {\n path: \"/projects/\" + id + \"/tasks/\" + task_id + \"/checks/\" + check_id,\n label: \"Check Detail\"\n }\n ]\n })\n }\n\n render() {\n const {id, task_id, check_id} = this.props.match.params;\n const cmd = item => [\n {\n key: \"newItem\",\n name: \"Edit\",\n iconProps: {\n iconName: \"Edit\"\n },\n onClick: () =>\n App.history.push(\n \"/projects/\" + id + \"/tasks/\" + task_id + \"/checks/\" + check_id + \"/edit\"\n )\n },\n {\n key: \"delete\",\n name: \"Delete\",\n iconProps: {\n iconName: \"Delete\"\n },\n onClick: () => this.setState({deleteRecordId: check_id})\n },\n !item.status\n ? {\n key: \"done\",\n name: \"Done\",\n iconProps: {\n iconName: \"Completed\"\n },\n onClick: () => this.setState({doneDialog: true})\n }\n : null\n ].filter(i => i);\n\n return (\n <div className=\"tm-cell\">\n <DoneDialog\n open={this.state.doneDialog}\n onClose={() => this.setState({doneDialog: false})}\n id={check_id}\n />\n <DeleteDialog pk={{id: this.state.deleteRecordId}} open={this.state.deleteRecordId}\n onClose={() => this.setState({deleteRecordId: false})}\n deletePath={\"checklists\"}\n onDelete={() => App.history.push(\"/projects/\" + id + \"/tasks/\" + task_id)}\n />\n <ConnectedItem path={[\"auth\", \"userInfo\"]}\n component={p2 => {\n return (\n <ConnectedList\n path={[\"data\", \"checklists\"]}\n component={p => {\n const items = p2.item.id === 1 ? cmd(p.item) : [];\n if (p.item.status || !items.length)\n return null;\n return <CommandBar items={items}/>;\n }}\n />\n )\n }}/>\n <div className=\"ms-Grid\">\n <FetchData tableName=\"checklists\" params={{id: check_id}}/>\n <div className=\"ms-Grid-row\">\n <div className=\"ms-Grid-col ms-sm8\">\n <ConnectedList\n path={[\"data\", \"checklists\"]}\n component={p => {\n return (\n <div>\n <StatusBar status={p.item.status}/>\n <div className=\"tm-card\" style={{padding: 16}}>\n <DisplayItem icon={\"TextDocument\"} label={\"Title\"}>\n {p.item.title}\n </DisplayItem>\n <DisplayItem icon={\"TextDocument\"} label={\"Description\"}>\n {p.item.dsc}\n </DisplayItem>\n <DisplayItem icon={\"Calendar\"} label={\"Created Date\"}>\n {dateToStr(p.item.createdAt)}\n </DisplayItem>\n <DisplayItem icon={\"DateTime\"} label={\"Finish Date\"}>\n {dateToStr(p.item.finish_date)}\n </DisplayItem>\n {p.item.done_date ?\n <DisplayItem icon={\"EventAccepted\"} label={\"Done Date\"}>\n {dateToStr(p.item.done_date)}\n </DisplayItem> : null}\n </div>\n </div>\n );\n }}\n loadingComponent={\n () => {\n return (\n <div className={\"tm-card\"}>\n <Loading/>\n </div>\n )\n }\n }\n />\n </div>\n <div className=\"ms-Grid-col ms-sm4\">\n <div className=\"tm-card\">\n <ConnectedList\n path={[\"data\", \"checklists\"]}\n component={p => {\n return (\n <div>\n <CardTitle icon={\"Group\"}>Collaborators</CardTitle>\n <div className=\"tm-cell\">\n {p.item.collabrators && p.item.collabrators.length ? (\n p.item.collabrators.map((user, index) => {\n return (\n <Persona\n size={3}\n imageUrl={App.REST_SERVER + \"/attachments/download?id=\" + user.pp_id}\n text={user.name}\n secondaryText={user.username}\n key={index}\n styles={{root: {margin: \"8px 0\"}}}\n />\n );\n })\n ) : (\n <EmptyComponent dsc=\"No Collaborator\"/>\n )}\n </div>\n </div>\n );\n }}\n loadingComponent={\n () => {\n return (\n <div className={\"tm-card\"}>\n <Loading/>\n </div>\n )\n }\n }\n />\n </div>\n </div>\n </div>\n <div className={\"ms-Grid-row\"}>\n <div className=\"ms-Grid-col ms-sm12\">\n <RecordExtension parentType=\"checklists\" parentId={check_id}/>\n </div>\n </div>\n </div>\n </div>\n );\n }\n}\n\nconst DoneDialog = props => {\n const {open, onClose, id} = props;\n\n function onDone() {\n App.actions.upsertForm({\n formPath: \"checklists\",\n pk: {id},\n values: {\n status: 1,\n done_date: new Date()\n },\n onSave: i => {\n onClose();\n }\n });\n }\n\n return (\n <Dialog\n hidden={!open}\n onDismiss={onClose}\n dialogContentProps={{\n type: DialogType.largeHeader,\n title: \"Are you sure?\",\n subText:\n \"Are you sure to complete? This action can't undo!\"\n }}\n modalProps={{\n isBlocking: false,\n containerClassName: \"ms-dialogMainOverride\"\n }}\n >\n <DialogFooter>\n <PrimaryButton onClick={onDone} text=\"Done\"/>\n <DefaultButton onClick={onClose} text=\"Cancel\"/>\n </DialogFooter>\n </Dialog>\n );\n};\n\nexport default TaskDetail;\n","import React, {Component} from \"react\";\nimport FetchData from \"../../components/FetchData\";\nimport CardTitle from \"../../components/CardTitle\";\nimport ConnectedList from \"../../components/ConnectedList\";\nimport {\n Persona,\n CommandBar,\n DetailsList,\n SelectionMode,\n DetailsRow,\n Icon,\n Dialog,\n DialogFooter,\n DialogType,\n PrimaryButton,\n DefaultButton,\n ProgressIndicator\n} from \"office-ui-fabric-react\";\nimport DisplayItem from \"../../components/DisplayItem\";\nimport RecordExtension from \"../../components-tm/RecordExtension\";\nimport {App} from \"../..\";\nimport EmptyComponent from \"../../components/EmptyComponent\";\nimport {connect} from \"react-redux\";\nimport Loading from \"../../components/Loading\";\nimport StatusBar from \"../../components-tm/StatusBar\";\nimport DeleteDialog from \"../../components-tm/DeleteDialog\";\nimport {dateToStr} from \"../../utils/utils\";\nimport ConnectedItem from \"../../components/ConnectedItem\";\n\nclass TaskDetail extends Component {\n constructor(props, context) {\n super(props, context);\n this.state = {doneDialog: false};\n const {id, task_id} = props.match.params;\n\n App.actions.setTitle({title: \"Task Detail\"});\n\n App.actions.setBreadcrumb({\n breadcrumb: [\n {\n path: \"/projects\",\n label: \"Project List\"\n },\n {\n path: \"/projects/\" + id,\n label: \"Project Detail\"\n },\n {\n path: \"/projects/\" + id + \"/tasks/\" + task_id,\n label: \"Task Detail\"\n }\n ]\n })\n\n }\n\n render() {\n const {id, task_id} = this.props.match.params;\n const cmd = item => [\n {\n key: \"newItem\",\n name: \"Edit\",\n iconProps: {\n iconName: \"Edit\"\n },\n onClick: () =>\n App.history.push(\"/projects/\" + id + \"/tasks/\" + task_id + \"/edit\")\n },\n {\n key: \"delete\",\n name: \"Delete\",\n iconProps: {\n iconName: \"Delete\"\n },\n onClick: () => this.setState({deleteRecordId: task_id})\n },\n {\n key: \"check\",\n name: \"Check\",\n iconProps: {\n iconName: \"Add\"\n },\n onClick: () =>\n App.history.push(\n \"/projects/\" + id + \"/tasks/\" + task_id + \"/newCheck\"\n )\n },\n !item.status\n ? {\n key: \"done\",\n name: \"Done\",\n iconProps: {\n iconName: \"Completed\"\n },\n onClick: () => this.setState({doneDialog: true})\n }\n : null\n ].filter(i => i);\n\n return (\n <div className=\"tm-cell\">\n <ConnectedItem path={[\"auth\", \"userInfo\"]}\n component={p2 => {\n return (\n <ConnectedList\n path={[\"data\", \"tasks\"]}\n component={p => {\n const items = p2.item.id === 1 ? cmd(p.item) : [];\n if (p.item.status || !items.length)\n return null;\n return <CommandBar items={items}/>;\n }}\n />\n )\n }}/>\n\n <DeleteDialog pk={{id: this.state.deleteRecordId}} open={this.state.deleteRecordId}\n onClose={() => this.setState({deleteRecordId: false})}\n deletePath={\"tasks\"}\n onDelete={() => App.history.push(\"/projects/\" + id)}\n />\n\n <DoneDialog\n open={this.state.doneDialog}\n onClose={() => this.setState({doneDialog: false})}\n id={task_id}\n />\n <div className=\"ms-Grid\">\n <FetchData tableName=\"tasks\" params={{id: task_id}}/>\n <FetchData tableName=\"checklists\" params={{task_id}}/>\n <div className=\"ms-Grid-row\">\n <div className=\"ms-Grid-col ms-sm8\">\n <ConnectedList\n path={[\"data\", \"tasks\"]}\n component={p => {\n return (\n <div>\n <StatusBar status={p.item.status}/>\n <div className=\"tm-card\" style={{padding: 16}}>\n <DisplayItem icon={\"TextDocument\"} label={\"Title\"}>\n {p.item.title}\n </DisplayItem>\n <DisplayItem icon={\"TextDocument\"} label={\"Description\"}>\n {p.item.dsc}\n </DisplayItem>\n <DisplayItem icon={\"Calendar\"} label={\"Created Date\"}>\n {dateToStr(p.item.createdAt)}\n </DisplayItem>\n <DisplayItem icon={\"DateTime\"} label={\"Finish Date\"}>\n {dateToStr(p.item.finish_date)}\n </DisplayItem>\n {p.item.done_date ?\n <DisplayItem icon={\"EventAccepted\"} label={\"Done Date\"}>\n {dateToStr(p.item.done_date)}\n </DisplayItem> : null}\n <DisplayItem icon={\"AwayStatus\"} label={\"Status\"}>\n <ProgressIndicator\n description={\n (p.item.done_count || \"0\") + \"/\" + p.item.check_count\n }\n percentComplete={\n p.item.done_count / p.item.check_count\n }\n />\n </DisplayItem>\n </div>\n </div>\n );\n }}\n loadingComponent={\n () => {\n return (\n <div className={\"tm-card\"}>\n <Loading/>\n </div>\n )\n }\n }\n />\n </div>\n <div className=\"ms-Grid-col ms-sm4\">\n <div className=\"tm-card\">\n <ConnectedList\n path={[\"data\", \"tasks\"]}\n component={p => {\n return (\n <div>\n <CardTitle icon={\"Group\"}>Collaborators</CardTitle>\n <div className=\"tm-cell\">\n {p.item.collabrators && p.item.collabrators.length ? (\n p.item.collabrators.map((user, index) => {\n return (\n <Persona\n size={3}\n imageUrl={App.REST_SERVER + \"/attachments/download?id=\" + user.pp_id}\n text={user.name}\n secondaryText={user.username}\n key={index}\n styles={{root: {margin: \"8px 0\"}}}\n />\n );\n })\n ) : (\n <EmptyComponent dsc=\"No Collaborator\"/>\n )}\n </div>\n </div>\n );\n }}\n loadingComponent={\n () => {\n return (\n <div className={\"tm-card\"}>\n <Loading/>\n </div>\n )\n }\n }\n />\n </div>\n </div>\n </div>\n </div>\n <div className=\"ms-Grid-row\">\n <div className=\"ms-Grid-col ms-sm12\">\n <div className=\"tm-card tm-cell\">\n <CardTitle icon={\"CheckList\"}>Check-List</CardTitle>\n <CheckList id={id} task_id={task_id}/>\n </div>\n </div>\n </div>\n <div>\n <div className=\"ms-Grid-col ms-sm12\">\n <RecordExtension parentType=\"tasks\" parentId={task_id}/>\n </div>\n </div>\n </div>\n );\n }\n}\n\nconst _CheckList = props => {\n const {checklists, load, id, task_id} = props;\n\n const columns = [\n {\n key: \"column0\",\n name: \"Status\",\n iconName: \"Status\",\n fieldName: \"status\",\n minWidth: 30,\n maxWidth: 50,\n iconOnly: true,\n padding: true,\n isPadded: true,\n onRender: item => {\n return (\n <Icon\n styles={{root: {fontSize: 18}}}\n iconName={item.status ? \"Completed\" : \"DRM\"}\n />\n );\n }\n },\n {\n key: \"column1\",\n name: \"Title\",\n fieldName: \"title\",\n minWidth: 100,\n maxWidth: 150\n },\n {\n key: \"column2\",\n name: \"Description\",\n fieldName: \"dsc\",\n minWidth: 100,\n maxWidth: 150\n },\n {\n key: \"column3\",\n name: \"Collaborators\",\n fieldName: \"collabrators\",\n minWidth: 100,\n maxWidth: 150,\n onRender: item => {\n if (item.collabrators && item.collabrators.length) {\n return item.collabrators.map((user, index) => (\n <Persona\n text={user.name}\n imageUrl={App.REST_SERVER + \"/attachments/download?id=\" + user.pp_id}\n secondaryText={user.username}\n key={index}\n size={1}\n styles={{root: {margin: \"8px 0\"}}}\n />\n ));\n }\n return <div>No Collaborator</div>;\n }\n }\n ];\n if (load === undefined) return <Loading/>;\n if (!load) return <EmptyComponent dsc=\"No Check-list\"/>;\n if (load)\n return (\n <DetailsList\n items={checklists || []}\n columns={columns}\n selectionMode={SelectionMode.none}\n setKey=\"set\"\n onRenderRow={e => {\n return React.createElement(DetailsRow, {\n onClick: event =>\n App.history.push(\n \"/projects/\" + id + \"/tasks/\" + task_id + \"/checks/\" + e.item.id\n ),\n key: e.itemIndex,\n ...e,\n className: \"cursor-pointer\"\n });\n }}\n isHeaderVisible={true}\n selectionPreservedOnEmptyClick={true}\n enterModalSelectionOnTouch={true}\n />\n );\n};\n\nconst CheckList = connect(state => ({\n checklists: state.data && state.data.checklists,\n load: state.data && state.data.checklists && state.data.checklists.length\n}))(_CheckList);\n\nconst DoneDialog = props => {\n const {open, onClose, id} = props;\n\n function onDone() {\n App.actions.upsertForm({\n formPath: \"tasks\",\n pk: {id},\n values: {\n status: 1,\n done_date: new Date()\n },\n onSave: i => {\n onClose();\n }\n });\n }\n\n return (\n <Dialog\n hidden={!open}\n onDismiss={onClose}\n dialogContentProps={{\n type: DialogType.largeHeader,\n title: \"Are you sure?\",\n subText:\n \"Are you sure to complete? This action can't undo!\"\n }}\n modalProps={{\n isBlocking: false,\n containerClassName: \"ms-dialogMainOverride\"\n }}\n >\n <DialogFooter>\n <PrimaryButton onClick={onDone} text=\"Done\"/>\n <DefaultButton onClick={onClose} text=\"Cancel\"/>\n </DialogFooter>\n </Dialog>\n );\n};\n\nexport default TaskDetail;\n","import React from 'react';\nimport ConnectedItem from './ConnectedItem'\n\nconst Protected = props => {\n const {extra} = props;\n return (\n <ConnectedItem path={[\"auth\", \"userInfo\"]}\n component={p2 => {\n if (p2.item.id === 1 || !!(extra ? extra(p2.item) : true))\n return props.children\n return null;\n }} />\n );\n}\n\nexport default Protected;","import React, { Component } from \"react\";\nimport FetchData from \"../../components/FetchData\";\nimport {\n Persona, DetailsList, SelectionMode, DetailsRow\n} from \"office-ui-fabric-react\";\nimport Loading from \"../../components/Loading\";\nimport EmptyComponent from \"../../components/EmptyComponent\";\nimport ConnectedItem from \"../../components/ConnectedItem\";\nimport ConnectedList from \"../../components/ConnectedList\";\nimport { App } from \"../../index\";\nimport connect from \"react-redux/es/connect/connect\";\nimport SearchCommandBar from \"../../components-tm/SearchCommandBar\";\nimport Protected from \"../../components/Protected\";\n\nclass Users extends Component {\n\n constructor(props, context) {\n super(props, context);\n this.state = { search: \"\" };\n\n App.actions.setTitle({ title: \"Users List\" });\n App.actions.setBreadcrumb({\n breadcrumb: [\n {\n path: \"/users\",\n label: \"User List\"\n }\n ]\n })\n }\n\n render() {\n const cmd = [\n {\n key: \"newItem\",\n name: \"\",\n iconProps: {\n iconName: \"AddFriend\"\n },\n onClick: () => App.history.push(\"/users/new\")\n }\n ];\n\n return (\n <div>\n <FetchData tableName=\"users\" />\n\n <Protected>\n <SearchCommandBar commandBar={{ items: cmd }}\n searchBox={{\n onChange: e => this.setState({ search: e })\n }}\n />\n </Protected>\n <div className=\"tm-cell\">\n <div className=\"ms-Grid\">\n <div className=\"ms-Grid-row\">\n <div className=\"ms-Col ms-sm12\">\n <UserList search={this.state.search} />\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n}\n\nconst _UserList = props => {\n const { users: _users, load, id, search } = props;\n\n const users = (_users || []).filter(i => !search || (i.firstname + i.lastname + i.username + i.email).toLowerCase().indexOf(search.toLowerCase()) > -1)\n const columns = [\n {\n key: \"column0\",\n name: \"\",\n fieldName: \"pp\",\n minWidth: 30,\n maxWidth: 50,\n iconOnly: true,\n padding: true,\n isPadded: true,\n onRender: item => {\n return (\n <Persona size={3}\n imageUrl={item.pp_id ? App.REST_SERVER + \"/attachments/download?id=\" + item.pp_id : null}\n text={item.firstname + \" \" + item.lastname} onRenderPrimaryText={() => <span />} />\n );\n }\n },\n {\n key: \"column1\",\n name: \"First Name\",\n fieldName: \"firstname\",\n minWidth: 100,\n maxWidth: 150\n },\n {\n key: \"column2\",\n name: \"Last Name\",\n fieldName: \"lastname\",\n minWidth: 100,\n maxWidth: 150\n },\n {\n key: \"column3\",\n name: \"E-mail\",\n fieldName: \"email\",\n minWidth: 100,\n maxWidth: 150\n }\n ];\n if (load === undefined) return <Loading />;\n if (!load) return <div className={\"tm-card\"}><EmptyComponent dsc=\"No User\" /></div>;\n if (load)\n if (users.length)\n return (\n <DetailsList\n items={users || []}\n columns={columns}\n selectionMode={SelectionMode.none}\n setKey=\"set\"\n onRenderRow={e => {\n return React.createElement(DetailsRow, {\n onClick: event =>\n App.history.push(\"/users/\" + e.item.id),\n key: e.itemIndex,\n ...e,\n className: \"cursor-pointer\"\n });\n }}\n isHeaderVisible={true}\n selectionPreservedOnEmptyClick={true}\n enterModalSelectionOnTouch={true}\n />\n );\n else if (search) {\n return <EmptyComponent dsc={'\"' + search + '\"' + \" Not Found\"} />\n } else {\n return <EmptyComponent dsc={\"No User!\"} />\n }\n\n};\n\nconst UserList = connect(state => ({\n users: state.data && state.data.users,\n load: state.data && state.data.users && state.data.users.length\n}))(_UserList);\n\nexport default Users;","import React, {Component} from \"react\";\nimport FieldCreator from \"../../components/FieldCreator\";\nimport {reduxForm} from \"redux-form\";\nimport {Button, PrimaryButton} from \"office-ui-fabric-react\";\nimport {App} from \"../..\";\nimport FormLoader from \"../../components-tm/FormLoader\";\nimport connect from \"react-redux/es/connect/connect\";\n\nclass _UserEdit extends Component {\n constructor(props, context) {\n super(props, context);\n this.state = {};\n this.onSave = this.onSave.bind(this);\n\n const {user_id} = props.match.params;\n\n App.actions.setTitle({title: user_id ? \"User Edit\" : \"New User\"});\n\n const editPaths = user_id ? [{\n path: \"/users/\" + user_id,\n label: \"User Detail\"\n },\n {\n path: \"/users/\" + user_id + \"/edit\",\n label: \"User Edit\"\n }] : [{\n path: \"/users/new\",\n label: \"New User\"\n }];\n\n App.actions.setBreadcrumb({\n breadcrumb: [\n {\n path: \"/users\",\n label: \"User List\"\n },\n ...editPaths\n ]\n })\n\n }\n\n onSave() {\n const {user_id} = this.props.match.params;\n App.actions.upsertForm({\n formName: \"user-edit\",\n formPath: \"users\",\n pk: user_id ? {id: user_id} : undefined,\n onSave: (item) => user_id ? App.history.goBack() : App.history.push(\"/users/\" + item.id)\n\n });\n }\n\n render() {\n const {currentUserId} = this.props;\n const {user_id} = this.props.match.params;\n return (\n <div className=\"tm-card tm-cell\">\n <FormLoader\n formName=\"user-edit\"\n queryPath={\"users\"}\n params={{id: user_id}}\n isNew={!user_id}\n />\n <div className=\"tm-cell\">\n <FieldCreator type=\"shorttext\" label=\"Username\" name=\"username\"/>\n </div>\n <div className=\"tm-cell\">\n <FieldCreator type=\"shorttext\" label=\"First Name\" name=\"firstname\"/>\n </div>\n <div className=\"tm-cell\">\n <FieldCreator type=\"shorttext\" label=\"Last Name\" name=\"lastname\"/>\n </div>\n <div className=\"tm-cell\">\n <FieldCreator type=\"shorttext\" label=\"E-mail\" name=\"email\"/>\n </div>\n {!user_id || currentUserId === 1 ?\n <div className=\"tm-cell\">\n <FieldCreator type=\"shorttext\" label=\"Password\" name=\"password\"/>\n </div> : null}\n <span className=\"tm-cell\">\n <Button onClick={() => App.history.goBack()}>Decline</Button>\n </span>\n <span className=\"tm-cell\">\n <PrimaryButton onClick={this.onSave}>Save</PrimaryButton>\n </span>\n </div>\n );\n }\n}\n\nconst UserEdit = reduxForm({form: \"user-edit\"})(\n connect(state => ({\n currentUserId: state.auth && state.auth.userInfo && state.auth.userInfo.id,\n currentUsername: state.auth && state.auth.userInfo && state.auth.userInfo.username\n }))(_UserEdit));\nexport default UserEdit","import React, { Component } from \"react\";\nimport FetchData from \"../../components/FetchData\";\nimport ConnectedList from \"../../components/ConnectedList\";\nimport {\n CommandBar,\n Icon,\n} from \"office-ui-fabric-react\";\nimport DisplayItem from \"../../components/DisplayItem\";\nimport { App } from \"../..\";\nimport { connect } from \"react-redux\";\nimport DeleteDialog from \"../../components-tm/DeleteDialog\";\nimport Protected from \"../../components/Protected\";\nimport FileInput from \"react-fine-uploader/file-input\";\n\nclass _UserDetail extends Component {\n\n constructor(props, context) {\n super(props, context);\n this.state = { deleteRecordId: false }\n\n const { user_id } = props.match.params;\n App.actions.setTitle({ title: \"User Detail\" });\n App.actions.setBreadcrumb({\n breadcrumb: [\n {\n path: \"/users\",\n label: \"User List\"\n },\n {\n path: \"/users/\" + user_id,\n label: \"User Detail\"\n }\n ]\n })\n\n this.uploadPhoto = this.uploadPhoto.bind(this);\n if (props.match.params.user_id)\n App.actions.updateUploaderParams({\n parentType: \"profile-photo\",\n parentId: props.match.params.user_id\n });\n }\n\n uploadPhoto(id) {\n if (id)\n App.actions.updateUploaderParams({\n parentType: \"profile-photo\",\n parentId: this.props.match.params.user_id,\n id\n });\n document.getElementById(\"profile-photo\").click();\n }\n\n render() {\n const { currentUsername, currentUserId } = this.props;\n const { user_id } = this.props.match.params;\n const cmd = [\n {\n key: \"edit\",\n name: \"Edit\",\n iconProps: {\n iconName: \"Edit\"\n },\n onClick: () => App.history.push(user_id ? \"/users/\" + user_id + \"/edit\" : \"/profile/edit\")\n },\n user_id === 1 ? false : {\n key: \"delete\",\n name: \"Delete\",\n iconProps: {\n iconName: \"Delete\"\n },\n onClick: () => this.setState({ deleteRecordId: user_id })\n }\n ].filter(i => i);\n return (\n <div className=\"tm-cell\" key={this.state.reload || user_id}>\n <Protected extra={user_info => user_id == user_info.id}>\n <CommandBar items={cmd} />\n </Protected>\n <DeleteDialog pk={{ id: this.state.deleteRecordId }} open={this.state.deleteRecordId}\n onClose={() => this.setState({ deleteRecordId: false })}\n deletePath={\"users\"}\n onDelete={() => App.history.push(\"/users\")}\n />\n <FetchData tableName=\"users\" params={{ id: user_id || currentUserId }} />\n <PhotoUpload />\n <div className=\"ms-Grid\">\n <div className=\"ms-Grid-row\">\n <div className=\"ms-Grid-col ms-sm12\">\n <ConnectedList\n path={[\"data\", \"users\"]}\n component={p => {\n return (\n <div className=\"tm-card\" style={{ padding: 16 }}>\n <div className=\"ms-Grid\">\n <div className=\"ms-Grid-row\">\n <div className=\"ms-Grid-col ms-sm6\">\n <DisplayItem icon={\"Contact\"} label={\"Username\"}>\n {p.item.username}\n </DisplayItem>\n <DisplayItem icon={\"ContactInfo\"} label={\"Fullname\"}>\n {p.item.firstname + \" \" + p.item.lastname.toUpperCase()}\n </DisplayItem>\n <DisplayItem icon={\"Mail\"} label={\"E-mail\"}>\n {p.item.email}\n </DisplayItem>\n {p.item.username === currentUsername || currentUserId === 1 ?\n <DisplayItem icon={\"LockSolid\"} label={\"Password\"}>\n {p.item.password}\n </DisplayItem> : null}\n </div>\n <div className=\"ms-Grid-col ms-sm6\">\n {p.item.pp_id ?\n <img\n src={App.REST_SERVER + \"/attachments/download?id=\" + p.item.pp_id + \"&dt=\" + p.item.updatedAt}\n style={{ cursor: (p.item.username === currentUsername || currentUserId === 1) ? \"pointer\" : \"\" }}\n onClick={() => (p.item.username === currentUsername || currentUserId === 1) && this.uploadPhoto(p.item.pp_id)}\n alt=\"Profile Photo\"\n width={\"100%\"}\n height={\"auto\"}\n />\n : <div style={{\n padding: 32,\n backgroundColor: \"#eee\",\n cursor: (p.item.username === currentUsername || currentUserId === 1) ? \"pointer\" : \"\"\n }}\n onClick={() => (p.item.username === currentUsername || currentUserId === 1) && this.uploadPhoto()}\n className=\"iota-centered-item\">\n <Icon iconName={\"Contact\"}\n styles={{ root: { fontSize: 160, color: \"#ccc\" } }} />\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n );\n }}\n />\n </div>\n </div>\n </div>\n </div>\n );\n }\n}\n\nconst UserDetail = connect(state => ({\n currentUserId: state.auth && state.auth.userInfo && state.auth.userInfo.id,\n currentUsername: state.auth && state.auth.userInfo && state.auth.userInfo.username\n}))(_UserDetail)\n\nconst _PhotoUpload = props => {\n const { icon, name, onClick, uploader } = props;\n return (\n <FileInput multiple uploader={uploader} id={\"profile-photo\"}>\n <span />\n </FileInput>\n );\n};\n\nconst PhotoUpload = connect(state => ({\n uploader: state.uploader\n}))(_PhotoUpload);\n\nexport default UserDetail;\n","import React from 'react';\nimport {Breadcrumb, Icon} from 'office-ui-fabric-react'\nimport {connect} from 'react-redux'\nimport {App} from \"../index\";\nimport Sticky from \"react-sticky-el\";\n\nconst AppBreadcrumb = props => {\n\n const {breadcrumb} = props;\n\n const paths = [{\n text: <Icon iconName=\"Home\"/>,\n key: \"Home\",\n onClick: () => App.history.push(\"/\")\n },\n ...(breadcrumb || []).map(i => ({text: i.label, onClick: () => App.history.push(i.path)}))];\n\n return (\n <Breadcrumb\n className=\"iota-breadcrumb ms-bgColor-themePrimary ms-fontColor-white ms-bgColor-themePrimary--hover\"\n items={paths}\n styles={{\n listItem:\n {\n backgroundColor: \"#0078d4 !important\",\n color: \"white\",\n },\n chevron:\n {\n backgroundColor: \"#0078d4 !important\",\n color: \"white\",\n },\n itemLink:\n\n {\n backgroundColor: \"#0078d4 !important\",\n color: \"white\"\n }\n ,\n }}\n />\n )\n};\n\nconst _StickyBreadCrumb = props => {\n const {breadcrumb} = props;\n\n if (!breadcrumb || !breadcrumb.length)\n return null;\n\n return (\n <Sticky boundaryElement={\".app-bar\"}\n topOffset={-140}\n stickyClassName={\"sticky-breadCrumb\"}>\n <div style={{height: 55, overflow: \"hidden\"}}>\n <AppBreadcrumb breadcrumb={breadcrumb}/>\n </div>\n </Sticky>\n )\n}\n\nconst StickyBreadCrumb = connect(state => ({\n breadcrumb: state.app && state.app.breadcrumb\n}))(_StickyBreadCrumb);\n\nexport default StickyBreadCrumb;\n","import React, {Component} from 'react';\nimport Layout from './pages/Layout';\nimport {HashRouter as Router, Route, Switch} from \"react-router-dom\";\nimport Home from './pages/Home'\nimport {connect} from 'react-redux';\nimport Loading from \"./components/Loading\";\nimport LoginPage from \"./pages/LoginPage\";\nimport ProjectList from './pages/Project'\nimport ProjectDetail from './pages/Project/Detail'\nimport ProjectEdit from './pages/Project/Edit'\nimport TaskEdit from './pages/Task/Edit'\nimport CheckEdit from './pages/Check/Edit'\nimport CheckDetail from './pages/Check/Detail'\nimport TaskDetail from './pages/Task/Detail'\nimport UserList from './pages/User'\nimport {App} from '.';\nimport UserEdit from \"./pages/User/Edit\";\nimport UserDetail from \"./pages/User/Detail\";\nimport StickyBreadCrumb from \"./components-tm/AppBreadcrumb\";\n\n\nclass _MainPage extends Component {\n\n constructor(props, context) {\n super(props, context);\n this.state = {auth: {}};\n App.actions.fetchUserInfo({});\n }\n\n\n render() {\n\n const {checked, userInfo} = this.props;\n if (!checked)\n return <div style={{minHeight: \"100vh\"}} className={\"iota-centered-item\"}><Loading/></div>;\n return userInfo ? <AppPage/> :\n <Router>\n <div>\n <Route exact path={\"*\"} component={LoginPage}/>\n </div>\n </Router>\n }\n}\n\nconst AppPage = props => {\n App.actions.setUploader();\n return (\n <div>\n <Layout>\n <StickyBreadCrumb/>\n <Router>\n <div style={{width: \"100%\"}}>\n <Switch>\n <Route exact path={\"/\"} component={Home}/>\n <Route exact path={\"/projects\"} component={ProjectList}/>\n <Route exact path={\"/projects/new\"} component={ProjectEdit}/>\n <Route exact path={\"/projects/:id\"} component={ProjectDetail}/>\n <Route exact path={\"/projects/:id/newTask\"} component={TaskEdit}/>\n <Route exact path={\"/projects/:id/edit\"} component={ProjectEdit}/>\n <Route exact path={\"/projects/:id/tasks/:task_id\"} component={TaskDetail}/>\n <Route exact path={\"/projects/:id/tasks/:task_id/edit\"} component={TaskEdit}/>\n <Route exact path={\"/projects/:id/tasks/:task_id/newCheck\"} component={CheckEdit}/>\n <Route exact path={\"/projects/:id/tasks/:task_id/checks/:check_id\"} component={CheckDetail}/>\n <Route exact path={\"/projects/:id/tasks/:task_id/checks/:check_id/edit\"} component={CheckEdit}/>\n <Route exact path={\"/users\"} component={UserList}/>\n <Route exact path={\"/users/new\"} component={UserEdit}/>\n <Route exact path={\"/users/:user_id\"} component={UserDetail}/>\n <Route exact path={\"/profile\"} component={UserDetail}/>\n <Route exact path={\"/profile/edit\"} component={UserEdit}/>\n <Route exact path={\"/users/:user_id/edit\"} component={UserEdit}/>\n </Switch>\n </div>\n </Router>\n </Layout>\n </div>\n )\n};\n\nconst MainPage = connect(state => ({\n userInfo: state.auth && state.auth.userInfo,\n checked: state.auth && state.auth.checked\n}))(_MainPage);\n\nexport default MainPage;\n","import React from \"react\";\nimport \"whatwg-fetch\";\nimport PropTypes from 'prop-types'\nimport ReactDOM from \"react-dom\";\nimport {Provider} from \"react-redux\";\nimport store from \"./utils/store\";\nimport {syncHistoryWithStore} from \"react-router-redux\";\nimport {createHashHistory} from \"history\";\nimport \"./utils/globals\";\nimport \"./css/app.css\";\nimport * as authActions from \"./actions/auth\";\nimport * as appActions from \"./actions/index\";\nimport * as fileActions from \"./actions/files\";\nimport NotificationManager from \"./components/NotificationManager\";\nimport \"office-ui-fabric-react/dist/css/fabric.css\";\nimport {Fabric} from \"office-ui-fabric-react\";\nimport {initializeIcons} from \"@uifabric/icons\";\nimport {loadTheme} from \"office-ui-fabric-react\";\nimport \"./fonts/segoeui-regular.woff2\";\nimport MainPage from \"./main\";\nimport bindActionCreators from 'redux/es/bindActionCreators';\n\nloadTheme({\n palette: {\n themePrimary: \"#0078d4\"\n }\n});\n\ninitializeIcons();\nconst moment = require(\"moment\");\nmoment.locale(\"tr\");\n\n\nconst App = {actions: {}};\nApp.store = store;\n\n\nclass ApplicationBinder extends React.Component {\n\n static contextTypes = {\n store: PropTypes.object\n };\n\n componentWillMount() {\n App.actions = bindActionCreators({...authActions, ...appActions, ...fileActions}, this.context.store.dispatch);\n }\n\n render() {\n return null;\n }\n}\n\nApp.animationDuration = 300;\n\nconst _history = createHashHistory();\nconst history = syncHistoryWithStore(_history, store);\nApp.history = history;\n\nApp.REST_SERVER = \"/api\";\n\nexport {App};\n\nconst AppRenderer = () => {\n return (\n <Provider store={store}>\n <Fabric>\n <ApplicationBinder/>\n <NotificationManager/>\n <MainPage/>\n </Fabric>\n </Provider>\n );\n};\n\nReactDOM.render(<AppRenderer/>, document.getElementById(\"root\"));\n"],"sourceRoot":""}