{"version":3,"sources":["Function/Function.js","Scheduler/Scheduler.js","Scheduler/Loading/Loading.js","Scheduler/Modal/ClickEventModal.js","Scheduler/Modal/MoveEventModal.js","Scheduler/NavBar/NavBar.js","config.js","User.js","Auth.js","Login/Login.js","Logout/Logout.js","App.js","serviceWorker.js","index.js"],"names":["formatDate","date","format","replace","getFullYear","getMonth","slice","getDate","getHours","getMinutes","getSeconds","match","milliSeconds","getMilliseconds","length","i","substring","hankaku2Zenkaku","str","s","String","fromCharCode","charCodeAt","getDayOfWeek","dateStr","Date","getDay","blackOrWhite","hexcolor","parseInt","Scheduler","props","handleSortChange","value","schedulerData","setResources","setEvents","selectedSort","setState","viewModel","selectedLine","selectedArticle","isLoading","startDate","endDate","getFMSchdules","then","res","linestatus","lines","articles","handleLineChange","state","handleArticleChange","handlePrevClick","prev","handleNextClick","viewType","ViewTypes","Custom","localeMoment","add","DATE_FORMAT","next","handleViewChange","view","setViewType","showAgenda","isEventPerspective","localStorage","setItem","JSON","stringify","handleSelectDate","setDate","eventClicked","event","start","modalParam","resources","find","v","id","resourceId","partflg","UUID","製品番号","立米","配合","ステータス","出荷日テキスト","出荷日テキストフラグ","日付","備考","備考フラグ","clickEventOpenModal","handleSelectedDateUpdateButtonClicked","a","renderData","events","window","confirm","scriptparam","clickEventRefStatus","current","clickEventRefText","従業員UUID","User","getUserId","json","Buffer","toString","axios","post","API_URL","result","data","scriptResult","parse","decodeURIComponent","escape","atob","response","fmevents","error_code","alert","clickEventModalIsOpen","forEach","item","filter","expanded","toggleExpandStatus","slotId","newEvent","slotName","end","type","handleBikouUpdateButtonClicked","split","articleUUID","katawaku","buiCode","lineCode","bikou","物件UUID","部位コード","製造ラインコード","型枠番号","備考UUID","title","push","splice","findIndex","handleSyukkaUpdateButtonClicked","text","出荷日テキストUUID","moveEvent","beforeArticleUUID","beforeKatawaku","beforeBuiCode","beforeLineCode","beforeLineName","製造ライン名称","afterLineName","after","afterArticleUUID","afterKatawaku","afterBuiCode","afterLineCode","beforeDate","afterDate","変更元型枠番号","変更元予定日","変更先予定日","最終日","変更元製造ラインコード","型枠調整フラグ","製造ライン調整フラグ","moveEventOpenModal","変更先リソースID","変更先型枠番号","変更先製造ラインコード","変更元製造ライン名称","変更先製造ライン名称","handleSelectedDateMoveButtonClicked","layout","script","Promise","reject","moveEventModalIsOpen","catch","error","console","log","bugakarijson","bugakari","headers","time","休日","nonWorkingTime","型枠数","打設数","打設量","計画人工合計","配置予定人工合計","実施人工合計","差異","handleSelectedDateAndLaterMoveButtonClicked","handleKatawakuMoveButtonClicked","afterResourceId","afterkatawaku","beforelineCode","afterlineCode","変更先_型枠番号","handleToggleExpand","handleCheckedChanged","checkedValues","handleScaleChange","scale","dummy","eventItemTemplateResolver","bgColor","isStart","isEnd","mustAddCssClass","mustBeHeight","agendaMaxEventWidth","key","className","checkedValue","status","bgcolor","undefined","color","style","backgroundColor","slotItemTemplateResolver","slot","slotClickedFunc","width","clsName","indents","groupclass","groupOnly","indent","hasChildren","onClick","textAlign","nonAgendaCellHeaderTemplateResolver","formattedDateItems","content","datetime","startdate","nowdate","Day","isSame","katawakunum","Number","dasetsunum","dasetsuqua","toFixed","kaitenrate","isNaN","ninku_keikaku","ninku_haichi","ninku_jisshi","sai","sai_class","map","formattedItem","index","dangerouslySetInnerHTML","__html","getDateLabel","dateLabel","Week","month","year","Month","Quarter","Year","getCustomDate","num","selectDate","cellUnit","CellUnits","bikoujson","syukkajson","schedulerParam","code","getFMSchdulesDataAPI","messages","eventdate","eventsstart","eventsend","fieldData","打設完了予定日","c_ライン別_型枠番号","c_物件別_型枠番号","Object","keys","bikou_keys","bikou_len","bikou_loop_cnt","bikou_cnt","bikou_key","bikou_date_keys","bikou_date_len","bikou_date_cnt","bikou_date","bikou_start","bikou_end","bikou_id","bikou_resourceId","bikou_text","syukka","syukka_keys","syukka_len","syukka_loop_cnt","syukka_cnt","syukka_key","syukka_date_keys","syukka_date_len","syukka_date_cnt","syukka_date","syukka_start","syukka_end","syukka_id","syukka_resourceId","syukka_text","header_date","Map","sort","values","line","label","name","articleflg","article","enddate","_startdate","_enddate","field","schedulesresult","getFMBugakariDataAPI","initdate","getItem","SchedulerData","SCHEDULER_DATA_CONFIG","getCustomDateFunc","getDateLabelFunc","moment","handleClickEventCloseModal","bind","React","createRef","handleMoveEventCloseModal","this","navBarProps","clickEventModalProps","modalIsOpen","refStatus","refText","moveEventModalProps","scalesize","fontSize","config","monthCellWidth","defaultCellWidth","customCellWidth","t_katawakunum","t_dasetsunum","t_dasetsuqua","t_kaitenrate","t_ninku_keikaku","t_ninku_haichi","t_ninku_jisshi","t_sai","t_sai_class","getResourceTableWidth","height","tableHeaderHeight","reduce","p","resourcename","prevClick","nextClick","onSelectDate","onViewChange","eventItemClick","Component","DragDropContext","HTML5Backend","useStyles","makeStyles","theme","root","position","marginLeft","spacing","verticalAlign","Circular","classes","size","Modal","setAppElement","customStyles","overlay","zIndex","maxWidth","top","left","right","bottom","marginRight","padding","transform","ClickEventModal","options","isOpen","onRequestClose","contentLabel","href","FM_ACCOUNT_NAME","FM_ACCOUNT_PASSWORD","FM_DOMAIN_NAME","FM_FILENAME_QUALITY","FM_CHECKLIST_SHORTCUT","scriptName","xs","defaultValue","ref","MoveEventModal","NavBar","printClick","print","handleCalenderOpen","e","preventDefault","calenderOpen","anchorEl","currentTarget","handleCalenderClose","handleMenuOpen","menuOpen","handleMenuClose","target","charAt","onSortChange","goNext","blur","goBack","onSelect","visible","onCheck","onZoomIn","onZoomOut","dropdown1","isClearable","isSearchable","onChange","placeholder","dropdown2","popover","fullscreen","radioButtonList","views","Button","margin","viewName","control","checked","container","direction","justify","alignItems","grey","cursor","open","onClose","anchorOrigin","vertical","horizontal","transformOrigin","Group","buttonStyle","getUserName","to","schedulerWidth","besidesWidth","schedulerMaxHeight","monthResourceTableWidth","customResourceTableWidth","monthMaxEvents","customMaxEvents","eventItemHeight","eventItemLineHeight","defaultEventBgColor","selectedAreaColor","groupOnlySlotColor","startResizable","endResizable","movable","creatable","crossResourceMove","checkConflict","scrollToSpecialMomentEnabled","eventItemPopoverEnabled","calendarPopoverEnabled","recurringEventsEnabled","headerEnabled","displayWeekend","relativeMove","defaultExpanded","resourceName","taskName","agendaViewHeader","addMorePopoverHeaderFormat","eventItemPopoverDateFormat","nonAgendaDayCellHeaderFormat","nonAgendaOtherCellHeaderFormat","isLoggedIn","get","set","sessionStorage","getSessionStorage","ret","login","usercode","password","user","氏名","logout","Auth","children","Login","click","history","pathname","errMessage","handleChange","keyDown","keyCode","Container","Row","Form","Alert","variant","controlId","Label","Control","onKeyDown","withRouter","Logout","App","exact","path","component","from","Boolean","location","hostname","ReactDOM","render","document","getElementById","navigator","serviceWorker","ready","registration","unregister","message"],"mappings":"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","file":"static/js/main.d951ea3f.chunk.js","sourcesContent":["//---------------------------------------\n// 日付フォーマット\n// 引数\n// date [in] 日付でフォーマットされた値\n// format [in] フォーマットしたい形式(例 YYYY年MM月DD日)\n// 戻値\n// format : フォーマットされた日付の文字列\n//---------------------------------------\nexport function formatDate(date, format) {\n if (!format) format = 'YYYY-MM-DD hh:mm:ss.SSS';\n format = format.replace(/YYYY/g, date.getFullYear());\n format = format.replace(/MM/g, ('0' + (date.getMonth() + 1)).slice(-2));\n format = format.replace(/DD/g, ('0' + date.getDate()).slice(-2));\n format = format.replace(/hh/g, ('0' + date.getHours()).slice(-2));\n format = format.replace(/mm/g, ('0' + date.getMinutes()).slice(-2));\n format = format.replace(/ss/g, ('0' + date.getSeconds()).slice(-2));\n if (format.match(/S/g)) {\n var milliSeconds = ('00' + date.getMilliseconds()).slice(-3);\n var length = format.match(/S/g).length;\n for (var i = 0; i < length; i++) format = format.replace(/S/, milliSeconds.substring(i, i + 1));\n }\n return format;\n}\n\nexport function hankaku2Zenkaku(str) {\n return str.replace(/[A-Za-z0-9]/g, function (s) {\n return String.fromCharCode(s.charCodeAt(0) - 0xFEE0);\n });\n}\n\nexport function toBoolean(data) {\n return data.toString().toLowerCase() === 'true';\n}\n\nexport function getDayOfWeek(dateStr) {\n var date = new Date(dateStr);\n var dayOfWeekStr = [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"][date.getDay()];\n\n return dayOfWeekStr;\n}\n\n//CHANGED ADD 2023/07/04 #17\nexport function blackOrWhite(hexcolor) {\n let r = parseInt(hexcolor.substring(1, 3), 16);\n let g = parseInt(hexcolor.substring(3, 5), 16);\n let b = parseInt(hexcolor.substring(5, 7), 16);\n\n return ((((r * 299) + (g * 587) + (b * 114)) / 1000) < 128) ? \"white\" : \"black\";\n}\n","import React, { Component } from \"react\";\nimport { Icon } from 'antd'\nimport axios from 'axios';\nimport { API_URL, SCHEDULER_DATA_CONFIG } from \"../config.js\";\n\nimport BigScheduler, {\n SchedulerData,\n ViewTypes,\n CellUnits,\n DATE_FORMAT\n} from \"react-big-scheduler\";\n\nimport { DragDropContext } from \"react-dnd\";\nimport HTML5Backend from \"react-dnd-html5-backend\";\n\nimport 'moment/locale/ja'\nimport moment from \"moment\";\nimport { formatDate, hankaku2Zenkaku, blackOrWhite } from '../Function/Function';\nimport Loading from \"./Loading/Loading\";\nimport ClickEventModal from \"./Modal/ClickEventModal\";\nimport MoveEventModal from \"./Modal/MoveEventModal\";\nimport NavBar from \"./NavBar/NavBar\";\n\nimport \"react-big-scheduler/lib/css/style.css\";\nimport './Scheduler.css';\nimport User from \"../User.js\";\n\nclass Scheduler extends Component {\n constructor(props) {\n super(props);\n\n //====================================\n //表の基本設定\n //====================================\n //日付の初期値をセット\n const initdate = new Date();\n \n //CHANGED ADD 2023/07/12 #19\n // ローカルストレージから週次・月次切替情報を取得\n const value = localStorage.getItem(\"viewType\");\n const view = value\n ? JSON.parse(value)\n : {\n viewType: ViewTypes.Month,\n showAgenda: false,\n isEventPerspective: false,\n };\n\n //表の基本設定をセット\n let schedulerData = new SchedulerData(\n initdate,\n view.viewType,\n view.showAgenda,\n view.isEventPerspective,\n SCHEDULER_DATA_CONFIG,\n {\n getCustomDateFunc: this.getCustomDate,\n getDateLabelFunc: this.getDateLabel,\n },\n moment\n );\n\n this.state = {\n viewModel: schedulerData,\n clickEventModalIsOpen: false,\n moveEventModalIsOpen: false,\n modalParam: null,\n linestatus: [],\n lines: null,\n articles: null,\n selectedSort: \"ライン別\",\n selectedLine: null,\n selectedArticle: null,\n checkedValues: [],\n scale: 1,\n isLoading: true\n };\n\n this.handleClickEventCloseModal = this.handleClickEventCloseModal.bind(this);\n this.clickEventRefStatus = React.createRef();\n this.clickEventRefText = React.createRef();\n\n this.handleMoveEventCloseModal = this.handleMoveEventCloseModal.bind(this);\n }\n\n //====================================\n //初回読込\n //====================================\n componentDidMount() {\n //CHANGED UPDATE 2023/07/12 #19\n const startDate = new Date(this.state.viewModel.startDate);\n const endDate = new Date(this.state.viewModel.endDate);\n\n // 絞り込み情報を取得\n let selectedSort = this.state.selectedSort;\n let lines = null;\n let articles = null;\n\n this.getFMSchdules(startDate, endDate, selectedSort, lines, articles)\n .then(res =>\n // レンダー情報のセット\n this.setState({\n viewModel: res.schedulerData,\n linestatus: res.linestatus,\n lines: res.lines,\n articles: res.articles,\n selectedLine: null,\n selectedArticle: null,\n checkedValues: res.checkedValues,\n isLoading: false\n })\n );\n }\n\n clickEventOpenModal(modalParam) {\n this.setState({\n clickEventModalIsOpen: true,\n modalParam: modalParam\n });\n }\n\n handleClickEventCloseModal() {\n this.setState({ clickEventModalIsOpen: false });\n }\n\n moveEventOpenModal(modalParam) {\n this.setState({\n moveEventModalIsOpen: true,\n modalParam: modalParam\n });\n }\n\n handleMoveEventCloseModal() {\n this.setState({ moveEventModalIsOpen: false });\n }\n\n handleSortChange = (value, schedulerData) => {\n schedulerData.setResources([]);\n schedulerData.setEvents([]);\n\n // 絞り込み情報を取得\n let selectedSort = value;\n let selectedLine = null;\n let selectedArticle = null;\n\n // レンダー情報のリセット\n this.setState({\n viewModel: schedulerData,\n selectedSort: selectedSort,\n selectedLine: selectedLine,\n selectedArticle: selectedArticle,\n isLoading: true\n }, () => {\n let startDate = schedulerData.startDate;\n let endDate = schedulerData.endDate;\n\n this.getFMSchdules(startDate, endDate, selectedSort, selectedLine, selectedArticle)\n .then(res =>\n // レンダー情報のセット\n this.setState({\n viewModel: res.schedulerData,\n linestatus: res.linestatus,\n lines: res.lines,\n articles: res.articles,\n isLoading: false\n })\n )\n });\n }\n\n handleLineChange = (value, schedulerData, selectedSort, selectedArticle) => {\n schedulerData.setResources([]);\n schedulerData.setEvents([]);\n\n // 絞り込み情報を取得\n let selectedLine = value;\n if (selectedSort === 'ライン別' && selectedLine !== this.state.selectedLine) {\n selectedArticle = null;\n }\n\n // レンダー情報のリセット\n this.setState({\n viewModel: schedulerData,\n selectedSort: selectedSort,\n selectedLine: selectedLine,\n selectedArticle: selectedArticle,\n isLoading: true\n }, () => {\n let startDate = schedulerData.startDate;\n let endDate = schedulerData.endDate;\n\n this.getFMSchdules(startDate, endDate, selectedSort, selectedLine, selectedArticle)\n .then(res =>\n // レンダー情報のセット\n this.setState({\n viewModel: res.schedulerData,\n linestatus: res.linestatus,\n lines: res.lines,\n articles: res.articles,\n isLoading: false\n })\n )\n });\n }\n\n handleArticleChange = (value, schedulerData, selectedSort, selectedLine) => {\n schedulerData.setResources([]);\n schedulerData.setEvents([]);\n\n // 絞り込み情報を取得\n let selectedArticle = value;\n if (selectedSort === '物件別' && selectedArticle !== this.state.selectedArticle) {\n selectedLine = null;\n }\n\n // レンダー情報のリセット\n this.setState({\n viewModel: schedulerData,\n selectedSort: selectedSort,\n selectedLine: selectedLine,\n selectedArticle: selectedArticle,\n isLoading: true\n }, () => {\n let startDate = schedulerData.startDate;\n let endDate = schedulerData.endDate;\n\n this.getFMSchdules(startDate, endDate, selectedSort, selectedLine, selectedArticle)\n .then(res =>\n // レンダー情報のセット\n this.setState({\n viewModel: res.schedulerData,\n linestatus: res.linestatus,\n lines: res.lines,\n articles: res.articles,\n isLoading: false\n })\n )\n });\n }\n\n handlePrevClick = (schedulerData) => {\n schedulerData.setResources([]);\n schedulerData.setEvents([]);\n schedulerData.prev();\n\n // 絞り込み情報を取得\n let selectedSort = this.state.selectedSort;\n let selectedLine = null;\n let selectedArticle = null;\n\n // レンダー情報のリセット\n this.setState({\n viewModel: schedulerData,\n selectedSort: selectedSort,\n selectedLine: selectedLine,\n selectedArticle: selectedArticle,\n isLoading: true\n }, () => {\n let startDate = schedulerData.startDate;\n let endDate = schedulerData.endDate;\n\n this.getFMSchdules(startDate, endDate, selectedSort, selectedLine, selectedArticle)\n .then(res =>\n // レンダー情報のセット\n this.setState({\n viewModel: res.schedulerData,\n linestatus: res.linestatus,\n lines: res.lines,\n articles: res.articles,\n isLoading: false\n })\n )\n });\n };\n\n handleNextClick = (schedulerData) => {\n schedulerData.setResources([]);\n schedulerData.setEvents([]);\n\n if (schedulerData.viewType === ViewTypes.Custom) {\n let startDate = schedulerData.startDate;\n schedulerData.startDate = schedulerData.localeMoment(startDate).add(30, 'days').format(DATE_FORMAT);\n }\n\n schedulerData.next();\n\n // 絞り込み情報を取得\n let selectedSort = this.state.selectedSort;\n let selectedLine = null;\n let selectedArticle = null;\n\n // レンダー情報のリセット\n this.setState({\n viewModel: schedulerData,\n selectedSort: selectedSort,\n selectedLine: selectedLine,\n selectedArticle: selectedArticle,\n isLoading: true\n }, () => {\n let startDate = schedulerData.startDate;\n let endDate = schedulerData.endDate;\n\n this.getFMSchdules(startDate, endDate, selectedSort, selectedLine, selectedArticle)\n .then(res =>\n // レンダー情報のセット\n this.setState({\n viewModel: res.schedulerData,\n linestatus: res.linestatus,\n lines: res.lines,\n articles: res.articles,\n isLoading: false\n })\n )\n });\n };\n\n handleViewChange = (schedulerData, view) => {\n schedulerData.setResources([]);\n schedulerData.setEvents([]);\n schedulerData.setViewType(\n view.viewType,\n view.showAgenda,\n view.isEventPerspective\n );\n\n //CHANGED ADD 2023/07/12 #19\n // ローカルストレージに週次・月次切替情報を保存\n localStorage.setItem(\"viewType\", JSON.stringify(view));\n\n // 絞り込み情報を取得\n let selectedSort = this.state.selectedSort;\n let selectedLine = null;\n let selectedArticle = null;\n\n // レンダー情報のリセット\n this.setState({\n viewModel: schedulerData,\n selectedSort: selectedSort,\n selectedLine: selectedLine,\n selectedArticle: selectedArticle,\n isLoading: true\n }, () => {\n let startDate = new Date(schedulerData.startDate);\n let endDate = new Date(schedulerData.endDate);\n\n this.getFMSchdules(startDate, endDate, selectedSort, selectedLine, selectedArticle)\n .then(res =>\n // レンダー情報のセット\n this.setState({\n viewModel: res.schedulerData,\n linestatus: res.linestatus,\n lines: res.lines,\n articles: res.articles,\n isLoading: false\n })\n )\n });\n };\n\n handleSelectDate = (schedulerData, date) => {\n schedulerData.setResources([]);\n schedulerData.setEvents([]);\n schedulerData.setDate(date);\n\n // 絞り込み情報を取得\n let selectedSort = this.state.selectedSort;\n let selectedLine = null;\n let selectedArticle = null;\n\n // レンダー情報のリセット\n this.setState({\n viewModel: schedulerData,\n selectedSort: selectedSort,\n selectedLine: selectedLine,\n selectedArticle: selectedArticle,\n isLoading: true\n }, () => {\n let startDate = new Date(schedulerData.startDate);\n let endDate = new Date(schedulerData.endDate);\n\n this.getFMSchdules(startDate, endDate, selectedSort, selectedLine, selectedArticle)\n .then(res =>\n // レンダー情報のセット\n this.setState({\n viewModel: res.schedulerData,\n linestatus: res.linestatus,\n lines: res.lines,\n articles: res.articles,\n isLoading: false\n })\n )\n });\n };\n\n eventClicked = (schedulerData, event) => {\n let date = schedulerData.localeMoment(event.start).format(\"YYYY/MM/DD\")\n\n const modalParam = schedulerData.resources.find((v) => v.id === event.resourceId).partflg ?\n {\n UUID: event.id,\n 製品番号: \"\",\n 立米: \"\",\n 配合: \"\",\n ステータス: \"\",\n 出荷日テキスト: event.出荷日テキスト,\n 出荷日テキストフラグ: true,\n 日付: date,\n resourceId: event.resourceId\n } :\n {\n UUID: event.id,\n 製品番号: event.製品番号,\n 立米: event.立米,\n 配合: event.配合,\n ステータス: event.ステータス,\n 備考: event.備考,\n 備考フラグ: true,\n 日付: date,\n resourceId: event.resourceId\n }\n\n this.clickEventOpenModal(modalParam);\n };\n\n handleSelectedDateUpdateButtonClicked = async (schedulerData, UUID) => {\n let renderData = schedulerData.renderData;\n let events = schedulerData.events;\n\n if (window.confirm(`更新してもよろしいですか?`)) {\n let layout = 'D1001_dataapi';\n let script = 'D1003_更新[DataAPIMap]';\n let scriptparam = {\n UUID: UUID,\n ステータス: this.clickEventRefStatus.current.value,\n 備考: this.clickEventRefText.current.value,\n 従業員UUID: User.getUserId()\n }\n let json = {\n 'layout': layout,\n 'data': {\n 'query': [],\n 'script.prerequest': script,\n 'script.prerequest.param': new Buffer(JSON.stringify(scriptparam)).toString('base64')\n }\n };\n\n try {\n const result = (await axios.post(API_URL + '/filemaker', json)).data;\n const scriptResult = JSON.parse(decodeURIComponent(escape(window.atob(result.response['scriptResult.prerequest']))));\n const fmevents = JSON.parse(scriptResult.fmevents);\n\n const error_code = parseInt(scriptResult.error_code, 10);\n if (error_code !== 0) {\n window.alert(\"更新に失敗しました。時間をおいて再度お試しください。\");\n this.setState({ clickEventModalIsOpen: false });\n return;\n }\n\n events.forEach(item => {\n const res = fmevents.find((v) => v.id === item.id);\n if (res) {\n item.ステータス = res.ステータス;\n item.備考 = res.備考;\n }\n });\n } catch {\n window.alert(\"更新に失敗しました。時間をおいて再度お試しください。\");\n this.setState({ clickEventModalIsOpen: false });\n return;\n }\n\n schedulerData.setEvents(events);\n renderData.filter((v) => v.expanded === false)\n .forEach(item => {\n schedulerData.toggleExpandStatus(item.slotId);\n });\n\n this.setState({\n viewModel: schedulerData,\n clickEventModalIsOpen: false\n });\n }\n }\n\n newEvent = (schedulerData, slotId, slotName, start, end, type, item) => {\n const date = schedulerData.localeMoment(start).format(\"YYYY/MM/DD\")\n\n const modalParam = schedulerData.resources.find((v) => v.id === slotId).partflg ?\n {\n UUID: \"\",\n 製品番号: \"\",\n 立米: \"\",\n 配合: \"\",\n ステータス: \"\",\n 出荷日テキスト: \"\",\n 出荷日テキストフラグ: true,\n 備考フラグ: false,\n 日付: date,\n resourceId: slotId\n } :\n {\n UUID: \"\",\n 製品番号: \"\",\n 立米: \"\",\n 配合: \"\",\n ステータス: \"\",\n 備考: \"\",\n 備考フラグ: true,\n 日付: date,\n resourceId: slotId\n }\n\n this.clickEventOpenModal(modalParam);\n };\n\n handleBikouUpdateButtonClicked = async (schedulerData, UUID, resourceId, date) => {\n let renderData = schedulerData.renderData;\n let events = schedulerData.events;\n let str = resourceId.split('|');\n\n const articleUUID = str[0];\n let katawaku = \"\";\n let buiCode = \"\";\n let lineCode = \"\";\n\n if (this.state.selectedSort === \"ライン別\") {\n katawaku = str[2];\n buiCode = str[1];\n lineCode = str[3];\n }\n else if (this.state.selectedSort === \"物件別\") {\n katawaku = str[3];\n buiCode = str[2];\n lineCode = str[1];\n }\n\n if (window.confirm(`更新してもよろしいですか?`)) {\n let layout = 'D1001_dataapi';\n let script = 'D1003_フリーテキストのみ調整[DataAPI]';\n let bikou = this.clickEventRefText.current.value;\n let scriptparam = {\n 物件UUID: articleUUID,\n 部位コード: buiCode,\n 製造ラインコード: lineCode,\n 型枠番号: katawaku,\n 日付: date,\n 備考: bikou,\n 従業員UUID: User.getUserId()\n }\n let json = {\n 'layout': layout,\n 'data': {\n 'query': [],\n 'script.prerequest': script,\n 'script.prerequest.param': new Buffer(JSON.stringify(scriptparam)).toString('base64')\n }\n };\n\n try {\n const result = (await axios.post(API_URL + '/filemaker', json)).data;\n const scriptResult = JSON.parse(decodeURIComponent(escape(window.atob(result.response['scriptResult.prerequest']))));\n\n const error_code = parseInt(scriptResult.error_code, 10);\n if (error_code !== 0) {\n window.alert(\"更新に失敗しました。時間をおいて再度お試しください。\");\n this.setState({ clickEventModalIsOpen: false });\n return;\n }\n\n if (bikou) {\n const fmevents = JSON.parse(scriptResult.fmevents);\n\n fmevents.forEach(item => {\n const res = events.find((v) => v.備考UUID === item.id);\n if (res) {\n res.備考 = item.備考;\n } else {\n var event = {\n id: item.id,\n 備考: item.備考,\n 備考UUID: item.id,\n start: item.start,\n end: item.end,\n resourceId: resourceId,\n title: \"\"\n }\n\n events.push(event);\n }\n });\n } else {\n events.splice(events.findIndex(v => v.備考UUID === UUID), 1);\n }\n } catch {\n window.alert(\"更新に失敗しました。時間をおいて再度お試しください。\");\n this.setState({ clickEventModalIsOpen: false });\n return;\n }\n\n schedulerData.setEvents(events);\n renderData.filter((v) => v.expanded === false)\n .forEach(item => {\n schedulerData.toggleExpandStatus(item.slotId);\n });\n\n this.setState({\n viewModel: schedulerData,\n clickEventModalIsOpen: false\n });\n }\n }\n\n handleSyukkaUpdateButtonClicked = async (schedulerData, UUID, resourceId, date) => {\n let renderData = schedulerData.renderData;\n let events = schedulerData.events;\n let str = resourceId.split('|');\n\n const articleUUID = str[0];\n let buiCode = \"\";\n let lineCode = \"\";\n\n if (this.state.selectedSort === \"ライン別\") {\n buiCode = str[1];\n lineCode = \"\";\n }\n else if (this.state.selectedSort === \"物件別\") {\n buiCode = str[2];\n lineCode = str[1];\n }\n\n if (window.confirm(`更新してもよろしいですか?`)) {\n let layout = 'D1001_dataapi';\n let script = 'D1003_出荷日テキストのみ調整[DataAPI]';\n let text = this.clickEventRefText.current.value;\n let scriptparam = {\n 物件UUID: articleUUID,\n 部位コード: buiCode,\n 製造ラインコード: lineCode,\n 日付: date,\n 出荷日テキスト: text,\n 従業員UUID: User.getUserId()\n }\n let json = {\n 'layout': layout,\n 'data': {\n 'query': [],\n 'script.prerequest': script,\n 'script.prerequest.param': new Buffer(JSON.stringify(scriptparam)).toString('base64')\n }\n };\n\n try {\n const result = (await axios.post(API_URL + '/filemaker', json)).data;\n const scriptResult = JSON.parse(decodeURIComponent(escape(window.atob(result.response['scriptResult.prerequest']))));\n\n const error_code = parseInt(scriptResult.error_code, 10);\n if (error_code !== 0) {\n window.alert(\"更新に失敗しました。時間をおいて再度お試しください。\");\n this.setState({ clickEventModalIsOpen: false });\n return;\n }\n\n if (text) {\n const fmevents = JSON.parse(scriptResult.fmevents);\n\n fmevents.forEach(item => {\n const res = events.find((v) => v.出荷日テキストUUID === item.id);\n if (res) {\n res.出荷日テキスト = item.出荷日テキスト;\n } else {\n var event = {\n id: item.id,\n 出荷日テキスト: item.出荷日テキスト,\n 出荷日テキストUUID: item.id,\n start: item.start,\n end: item.end,\n resourceId: resourceId,\n title: \"\"\n }\n\n events.push(event);\n }\n });\n } else {\n events.splice(events.findIndex(v => v.出荷日テキストUUID === UUID), 1);\n }\n } catch {\n window.alert(\"更新に失敗しました。時間をおいて再度お試しください。\");\n this.setState({ clickEventModalIsOpen: false });\n return;\n }\n\n schedulerData.setEvents(events);\n renderData.filter((v) => v.expanded === false)\n .forEach(item => {\n schedulerData.toggleExpandStatus(item.slotId);\n });\n\n this.setState({\n viewModel: schedulerData,\n clickEventModalIsOpen: false\n });\n }\n }\n\n moveEvent = (schedulerData, event, slotId, slotName, start, end) => {\n if (schedulerData.resources.find((v) => v.id === slotId).partflg) {\n return;\n }\n\n const beforeArticleUUID = event.物件UUID;\n const beforeKatawaku = event.型枠番号;\n const beforeBuiCode = event.部位コード;\n const beforeLineCode = event.製造ラインコード;\n\n // CHANGED:ADD 2023/7/12 #20\n const beforeLineName = event.製造ライン名称;\n const afterLineName = slotName.split('|')[0];\n\n const after = slotId.split('|');\n const afterArticleUUID = after[0];\n let afterKatawaku = \"\";\n let afterBuiCode = \"\";\n let afterLineCode = \"\";\n\n if (this.state.selectedSort === \"ライン別\") {\n afterKatawaku = after[2];\n afterBuiCode = after[1];\n afterLineCode = after[3];\n }\n else if (this.state.selectedSort === \"物件別\") {\n afterKatawaku = after[3];\n afterBuiCode = after[2];\n afterLineCode = after[1];\n }\n\n const beforeDate = schedulerData.localeMoment(event.start).format(\"YYYY/MM/DD\")\n const afterDate = schedulerData.localeMoment(start).format(\"YYYY/MM/DD\")\n const endDate = schedulerData.localeMoment(schedulerData.endDate).format(\"YYYY/MM/DD\")\n\n if (event.製品番号 &&\n (beforeArticleUUID === afterArticleUUID) && (beforeBuiCode === afterBuiCode)) {\n if ((beforeKatawaku === afterKatawaku) && (beforeLineCode === afterLineCode) && (beforeDate !== afterDate)) {\n const modalParam = {\n UUID: event.id,\n 製品番号: event.製品番号,\n 変更元型枠番号: beforeKatawaku,\n 変更元予定日: beforeDate,\n 変更先予定日: afterDate,\n 最終日: endDate,\n 変更元製造ラインコード: beforeLineCode,\n 型枠調整フラグ: false,\n 製造ライン調整フラグ: false,\n }\n\n this.moveEventOpenModal(modalParam);\n // CHANGED:ADD 2023/7/12 #20\n } else if ((beforeKatawaku === afterKatawaku) && (beforeLineCode !== afterLineCode)) {\n const modalParam = {\n UUID: event.id,\n 製品番号: event.製品番号,\n 変更先リソースID: slotId,\n 変更元型枠番号: beforeKatawaku,\n 変更先型枠番号: afterKatawaku,\n 変更元予定日: beforeDate,\n 変更先予定日: afterDate,\n 最終日: endDate,\n 変更元製造ラインコード: beforeLineCode,\n 変更先製造ラインコード: afterLineCode,\n 変更元製造ライン名称: beforeLineName,\n 変更先製造ライン名称: afterLineName,\n 型枠調整フラグ: false,\n 製造ライン調整フラグ: true,\n }\n\n this.moveEventOpenModal(modalParam);\n } else if ((beforeKatawaku !== afterKatawaku) || (beforeLineCode !== afterLineCode)) {\n const modalParam = {\n UUID: event.id,\n 製品番号: event.製品番号,\n 変更先リソースID: slotId,\n 変更元型枠番号: beforeKatawaku,\n 変更先型枠番号: afterKatawaku,\n 変更元予定日: beforeDate,\n 変更先予定日: afterDate,\n 最終日: endDate,\n 変更元製造ラインコード: beforeLineCode,\n 変更先製造ラインコード: afterLineCode,\n 型枠調整フラグ: true,\n 製造ライン調整フラグ: false,\n }\n\n this.moveEventOpenModal(modalParam);\n }\n }\n };\n\n handleSelectedDateMoveButtonClicked = async (schedulerData, UUID, afterDate, lineCode) => {\n let renderData = schedulerData.renderData;\n let events = schedulerData.events;\n let selectedLine = this.state.selectedLine == null ? '' : this.state.selectedLine.value;\n let selectedArticle = this.state.selectedArticle == null ? '' : this.state.selectedArticle.value;\n\n if (window.confirm(`更新してもよろしいですか?`)) {\n // 選択日のみ調整スクリプト実行\n let layout = 'D1001_dataapi';\n let script = 'D1003_選択日のみ調整[DataAPIMap]';\n let scriptparam = {\n UUID: UUID,\n 変更先予定日: afterDate,\n 従業員UUID: User.getUserId(),\n start: schedulerData.startDate,\n end: schedulerData.endDate,\n 変更元製造ラインコード: lineCode,\n 製造ラインコード: selectedLine,\n 物件UUID: selectedArticle,\n }\n let json = {\n 'layout': layout,\n 'data': {\n 'query': [],\n 'script.prerequest': script,\n 'script.prerequest.param': new Buffer(JSON.stringify(scriptparam)).toString('base64')\n }\n };\n\n await axios.post(API_URL + '/filemaker', json)\n .then((result) => {\n const scriptResult = JSON.parse(decodeURIComponent(escape(window.atob(result.data.response['scriptResult.prerequest']))));\n const error_code = parseInt(scriptResult.error_code, 10);\n\n if (error_code !== 0) {\n return Promise.reject(scriptResult);\n }\n\n const fmevents = JSON.parse(scriptResult.fmevents);\n\n events.forEach(item => {\n const res = fmevents.find((v) => v.id === item.id);\n if (res) {\n item.start = res.start;\n item.end = res.end;\n }\n })\n\n schedulerData.setEvents(events);\n renderData.filter((v) => v.expanded === false)\n .forEach(item => {\n schedulerData.toggleExpandStatus(item.slotId);\n });\n\n this.setState({\n viewModel: schedulerData,\n moveEventModalIsOpen: false\n });\n })\n .catch((error) => {\n console.log(error);\n window.alert(\"更新に失敗しました。時間をおいて再度お試しください。\");\n this.setState({ moveEventModalIsOpen: false });\n });\n\n // 歩掛更新スクリプト実行\n layout = 'D1001_dataapi';\n script = 'D1003_製品移動_歩掛更新[DataAPIMap]';\n json = {\n 'layout': layout,\n 'data': {\n 'query': [],\n 'script.prerequest': script,\n 'script.prerequest.param': new Buffer(JSON.stringify(scriptparam)).toString('base64')\n }\n };\n\n await axios.post(API_URL + '/filemaker', json)\n .then((result) => {\n const scriptResult = JSON.parse(decodeURIComponent(escape(window.atob(result.data.response['scriptResult.prerequest']))));\n const error_code = parseInt(scriptResult.error_code, 10);\n\n if (error_code !== 0) {\n return Promise.reject(scriptResult);\n }\n\n const bugakarijson = JSON.parse(scriptResult.bugakari);\n for (let i = 0; i < schedulerData.headers.length; i++) {\n let date = schedulerData.localeMoment(schedulerData.headers[i].time);\n let header_date = formatDate(new Date(date), \"YYYY/MM/DD\");\n let bugakari = bugakarijson[header_date];\n\n if (bugakari) {\n if (bugakari.休日 !== true) {\n schedulerData.headers[i].nonWorkingTime = false;\n } else {\n schedulerData.headers[i].nonWorkingTime = true;\n }\n\n schedulerData.headers[i].型枠数 = bugakari.型枠数;\n schedulerData.headers[i].打設数 = bugakari.打設数;\n schedulerData.headers[i].打設量 = bugakari.打設量;\n schedulerData.headers[i].計画人工合計 = bugakari.計画人工合計;\n schedulerData.headers[i].配置予定人工合計 = bugakari.配置予定人工合計;\n schedulerData.headers[i].実施人工合計 = bugakari.実施人工合計;\n schedulerData.headers[i].差異 = bugakari.差異;\n\n schedulerData.headers[i].休日 = bugakari.休日;\n }\n }\n\n this.setState({\n viewModel: schedulerData,\n });\n })\n .catch((error) => {\n console.log(error);\n });\n }\n }\n\n handleSelectedDateAndLaterMoveButtonClicked = async (schedulerData, UUID, beforeDate, afterDate, endDate, lineCode) => {\n let renderData = schedulerData.renderData;\n let events = schedulerData.events;\n let selectedLine = this.state.selectedLine == null ? '' : this.state.selectedLine.value;\n let selectedArticle = this.state.selectedArticle == null ? '' : this.state.selectedArticle.value;\n\n if (window.confirm(`更新してもよろしいですか?`)) {\n // 選択日および以降の調整スクリプト実行\n let layout = 'D1001_dataapi';\n let script = 'D1003_選択日および以降の調整[DataAPIMap]';\n let scriptparam = {\n UUID: UUID,\n 変更元予定日: beforeDate,\n 変更先予定日: afterDate,\n 最終日: endDate,\n 従業員UUID: User.getUserId(),\n start: schedulerData.startDate,\n end: schedulerData.endDate,\n 変更元製造ラインコード: lineCode,\n 製造ラインコード: selectedLine,\n 物件UUID: selectedArticle,\n }\n let json = {\n 'layout': layout,\n 'data': {\n 'query': [],\n 'script.prerequest': script,\n 'script.prerequest.param': new Buffer(JSON.stringify(scriptparam)).toString('base64')\n }\n };\n\n await axios.post(API_URL + '/filemaker', json)\n .then((result) => {\n const scriptResult = JSON.parse(decodeURIComponent(escape(window.atob(result.data.response['scriptResult.prerequest']))));\n const error_code = parseInt(scriptResult.error_code, 10);\n\n if (error_code !== 0) {\n return Promise.reject(scriptResult);\n }\n\n const fmevents = JSON.parse(scriptResult.fmevents);\n\n events.forEach(item => {\n const res = fmevents.find((v) => v.id === item.id);\n if (res) {\n item.start = res.start;\n item.end = res.end;\n }\n });\n\n schedulerData.setEvents(events);\n renderData.filter((v) => v.expanded === false)\n .forEach(item => {\n schedulerData.toggleExpandStatus(item.slotId);\n });\n\n this.setState({\n viewModel: schedulerData,\n moveEventModalIsOpen: false\n });\n })\n .catch((error) => {\n console.log(error);\n window.alert(\"更新に失敗しました。時間をおいて再度お試しください。\");\n this.setState({ moveEventModalIsOpen: false });\n });\n\n // 歩掛更新スクリプト実行\n layout = 'D1001_dataapi';\n script = 'D1003_製品移動_歩掛更新[DataAPIMap]';\n json = {\n 'layout': layout,\n 'data': {\n 'query': [],\n 'script.prerequest': script,\n 'script.prerequest.param': new Buffer(JSON.stringify(scriptparam)).toString('base64')\n }\n };\n\n await axios.post(API_URL + '/filemaker', json)\n .then((result) => {\n const scriptResult = JSON.parse(decodeURIComponent(escape(window.atob(result.data.response['scriptResult.prerequest']))));\n const error_code = parseInt(scriptResult.error_code, 10);\n\n if (error_code !== 0) {\n return Promise.reject(scriptResult);\n }\n\n const bugakarijson = JSON.parse(scriptResult.bugakari);\n for (let i = 0; i < schedulerData.headers.length; i++) {\n let date = schedulerData.localeMoment(schedulerData.headers[i].time);\n let header_date = formatDate(new Date(date), \"YYYY/MM/DD\");\n let bugakari = bugakarijson[header_date];\n\n if (bugakari) {\n if (bugakari.休日 !== true) {\n schedulerData.headers[i].nonWorkingTime = false;\n } else {\n schedulerData.headers[i].nonWorkingTime = true;\n }\n\n schedulerData.headers[i].型枠数 = bugakari.型枠数;\n schedulerData.headers[i].打設数 = bugakari.打設数;\n schedulerData.headers[i].打設量 = bugakari.打設量;\n schedulerData.headers[i].計画人工合計 = bugakari.計画人工合計;\n schedulerData.headers[i].配置予定人工合計 = bugakari.配置予定人工合計;\n schedulerData.headers[i].実施人工合計 = bugakari.実施人工合計;\n schedulerData.headers[i].差異 = bugakari.差異;\n\n schedulerData.headers[i].休日 = bugakari.休日;\n }\n }\n\n this.setState({\n viewModel: schedulerData,\n });\n })\n .catch((error) => {\n console.log(error);\n });\n }\n }\n\n handleKatawakuMoveButtonClicked = async (schedulerData, UUID, afterResourceId, afterkatawaku, beforeDate, afterDate, beforelineCode, afterlineCode) => {\n let renderData = schedulerData.renderData;\n let events = schedulerData.events;\n let selectedLine = this.state.selectedLine == null ? '' : this.state.selectedLine.value;\n let selectedArticle = this.state.selectedArticle == null ? '' : this.state.selectedArticle.value;\n\n // 型枠跨ぎ調整スクリプト実行\n if (window.confirm(`更新してもよろしいですか?`)) {\n let layout = 'D1001_dataapi';\n let script = 'D1003_型枠跨ぎ調整[DataAPIMap]';\n let scriptparam = {\n UUID: UUID,\n 変更元予定日: beforeDate,\n 変更先予定日: afterDate,\n 変更先_型枠番号: afterkatawaku,\n 従業員UUID: User.getUserId(),\n start: schedulerData.startDate,\n end: schedulerData.endDate,\n 変更元製造ラインコード: beforelineCode,\n 変更先製造ラインコード: afterlineCode,\n 製造ラインコード: selectedLine,\n 物件UUID: selectedArticle,\n }\n let json = {\n 'layout': layout,\n 'data': {\n 'query': [],\n 'script.prerequest': script,\n 'script.prerequest.param': new Buffer(JSON.stringify(scriptparam)).toString('base64')\n }\n };\n\n await axios.post(API_URL + '/filemaker', json)\n .then((result) => {\n const scriptResult = JSON.parse(decodeURIComponent(escape(window.atob(result.data.response['scriptResult.prerequest']))));\n const error_code = parseInt(scriptResult.error_code, 10);\n\n if (error_code !== 0) {\n return Promise.reject(scriptResult);\n }\n\n const fmevents = JSON.parse(scriptResult.fmevents);\n\n events.forEach(item => {\n const res = fmevents.find((v) => v.id === item.id);\n if (res) {\n item.resourceId = afterResourceId;\n item.start = res.start;\n item.end = res.end;\n item.製造ラインコード = res.製造ラインコード;\n item.製造ライン名称 = res.製造ライン名称;\n item.型枠番号 = res.型枠番号;\n }\n });\n\n schedulerData.setEvents(events);\n renderData.filter((v) => v.expanded === false)\n .forEach(item => {\n schedulerData.toggleExpandStatus(item.slotId);\n });\n\n this.setState({\n viewModel: schedulerData,\n moveEventModalIsOpen: false\n });\n })\n .catch((error) => {\n console.log(error);\n window.alert(\"更新に失敗しました。時間をおいて再度お試しください。\");\n this.setState({ moveEventModalIsOpen: false });\n });\n\n // 歩掛更新スクリプト実行\n layout = 'D1001_dataapi';\n script = 'D1003_型枠移動_歩掛更新[DataAPIMap]';\n json = {\n 'layout': layout,\n 'data': {\n 'query': [],\n 'script.prerequest': script,\n 'script.prerequest.param': new Buffer(JSON.stringify(scriptparam)).toString('base64')\n }\n };\n\n await axios.post(API_URL + '/filemaker', json)\n .then((result) => {\n const scriptResult = JSON.parse(decodeURIComponent(escape(window.atob(result.data.response['scriptResult.prerequest']))));\n const error_code = parseInt(scriptResult.error_code, 10);\n\n if (error_code !== 0) {\n return Promise.reject(scriptResult);\n }\n\n const bugakarijson = JSON.parse(scriptResult.bugakari);\n for (let i = 0; i < schedulerData.headers.length; i++) {\n let date = schedulerData.localeMoment(schedulerData.headers[i].time);\n let header_date = formatDate(new Date(date), \"YYYY/MM/DD\");\n let bugakari = bugakarijson[header_date];\n\n if (bugakari) {\n if (bugakari.休日 !== true) {\n schedulerData.headers[i].nonWorkingTime = false;\n } else {\n schedulerData.headers[i].nonWorkingTime = true;\n }\n\n schedulerData.headers[i].型枠数 = bugakari.型枠数;\n schedulerData.headers[i].打設数 = bugakari.打設数;\n schedulerData.headers[i].打設量 = bugakari.打設量;\n schedulerData.headers[i].計画人工合計 = bugakari.計画人工合計;\n schedulerData.headers[i].配置予定人工合計 = bugakari.配置予定人工合計;\n schedulerData.headers[i].実施人工合計 = bugakari.実施人工合計;\n schedulerData.headers[i].差異 = bugakari.差異;\n\n schedulerData.headers[i].休日 = bugakari.休日;\n }\n }\n\n this.setState({\n viewModel: schedulerData,\n });\n })\n .catch((error) => {\n console.log(error);\n });\n }\n }\n\n handleToggleExpand = (schedulerData, slotId) => {\n schedulerData.toggleExpandStatus(slotId);\n this.setState({\n viewModel: schedulerData\n });\n };\n\n handleCheckedChanged = (checkedValues) => {\n this.setState({\n checkedValues: checkedValues\n });\n }\n\n handleScaleChange = (scale) => {\n this.setState({\n scale: scale\n });\n }\n\n dummy = () => {\n // Nothing\n }\n\n eventItemTemplateResolver = (schedulerData, event, bgColor, isStart, isEnd, mustAddCssClass, mustBeHeight, agendaMaxEventWidth) => {\n\n let value = \"\";\n if (schedulerData.resources.find((v) => v.id === event.resourceId).partflg) {\n value = \n
\n
\n
{event.出荷日テキスト}
\n
\n
\n }\n else {\n let checkedValue = this.state.checkedValues.find((v) => v.status === event.ステータス); \n let bgcolor = checkedValue === undefined ? \"white\" : checkedValue.color;\n // let color = checkedValue === undefined ? \"#191919\" : \"white\";\n // let color = \"#191919\";\n\n //CHANGED UPDATE 2023/06/30 #17\n let color = checkedValue === undefined ? \"black\" : blackOrWhite(checkedValue.color);\n\n value = \n
\n
\n
{event.ステータス}
\n
{event.製品番号}
\n
{event.立米}
\n
{event.配合}
\n
{event.備考}
\n
\n
;\n }\n\n return (\n value\n );\n }\n\n slotItemTemplateResolver = (schedulerData, slot, slotClickedFunc, width, clsName) => {\n let indents = [];\n\n let groupclass = slot.groupOnly === true ? \" slot-group\" : \"\"; \n\n for (let i = 0; i < slot.indent; i++) {\n indents.push();\n }\n\n let indent = ;\n\n if (slot.hasChildren) {\n indent = slot.expanded ? (\n {\n this.handleToggleExpand(schedulerData, slot.slotId);\n }} />\n ) : (\n {\n this.handleToggleExpand(schedulerData, slot.slotId);\n }} />\n );\n }\n indents.push(indent);\n\n return (\n
\n {indents}\n {slot.slotName}\n \n
\n );\n }\n\n nonAgendaCellHeaderTemplateResolver = (schedulerData, item, formattedDateItems, style) => {\n\n let content;\n\n let datetime = schedulerData.localeMoment(item.time);\n let startdate = new Date(schedulerData.startDate.replace(/-/g, '/'));\n // let enddate = new Date(schedulerData.endDate.replace(/-/g, '/'));\n let nowdate = new Date(datetime);\n let i = ( nowdate - startdate ) / 86400000;\n formattedDateItems[0] = formatDate(nowdate , 'MM/DD');\n\n if (!this.state.isLoading && schedulerData.events.length > 0 ){\n\n\n let isCurrentDate = false;\n\n if (schedulerData.viewType === ViewTypes.Day) {\n isCurrentDate = datetime.isSame(new Date(), 'hour');\n }\n else {\n isCurrentDate = datetime.isSame(new Date(), 'day');\n }\n\n if (isCurrentDate) {\n // style.backgroundColor = '#118dea';\n // style.color = 'white';\n }\n\n //歩掛データの登録\n let bugakarijson = {};\n bugakarijson = schedulerData.headers[i];\n\n //型枠数、打設数、打設量、回転率\n //型枠数\n let digits = 1;\n let katawakunum = Number(bugakarijson.型枠数)//.toFixed(digits);\n let dasetsunum = Number(bugakarijson.打設数)//.toFixed(digits);\n let dasetsuqua = Number(bugakarijson.打設量).toFixed(digits);\n let kaitenrate = (Number(dasetsunum) / Number(katawakunum)* 100).toFixed(digits);\n kaitenrate = isNaN(kaitenrate) ? '0%' :kaitenrate + '%';\n\n //人工関連\n let ninku_keikaku = Number(bugakarijson.計画人工合計).toFixed(digits);\n let ninku_haichi = Number(bugakarijson.配置予定人工合計).toFixed(digits);\n let ninku_jisshi = Number(bugakarijson.実施人工合計).toFixed(digits);\n\n //差異を計算\n let boundary = 20; //%\n let sai = Number(bugakarijson.差異) !== 0 ? Number(bugakarijson.差異).toFixed(digits) : (0).toFixed(digits);\n let sai_class = \"\";\n if(ninku_jisshi > 0){\n if(Number(sai) > 0){\n if( Number(ninku_jisshi) / Number(ninku_keikaku) >= 1 + ( boundary / 100 ) ){\n sai_class = \"bugakari-sai-plus-boundary\";\n }else {\n sai_class = \"bugakari-sai-plus\";\n }\n sai = \"+\" + sai; \n \n }else if(Number(sai) < 0){\n if( Number(ninku_jisshi) / Number(ninku_keikaku) <= 1 - ( boundary / 100 ) ){\n sai_class = \"bugakari-sai-minus-boundary\";\n }else {\n sai_class = \"bugakari-sai-minus\";\n }\n }\n }else{\n if(Number(sai) > 0){\n if( Number(ninku_haichi) / Number(ninku_keikaku) >= 1 + ( boundary / 100 ) ){\n sai_class = \"bugakari-sai-plus-boundary\";\n }else {\n sai_class = \"bugakari-sai-plus\";\n }\n sai = \"+\" + sai; \n \n }else if(Number(sai) < 0){\n if( Number(ninku_haichi) / Number(ninku_keikaku) <= 1 - ( boundary / 100 ) ){\n sai_class = \"bugakari-sai-minus-boundary\";\n }else {\n sai_class = \"bugakari-sai-minus\";\n }\n }\n }\n\n\n content =\n
\n
{dasetsunum}
\n
{dasetsuqua}
\n
{katawakunum}
\n
{kaitenrate}
\n
{ninku_keikaku}
\n
{ninku_haichi}
\n
{ninku_jisshi}
\n
{sai}
\n
\n } else {\n content =\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n }\n\n return (\n \n {\n formattedDateItems.map((formattedItem, index) => (\n
\n ))\n }\n {content}\n \n );\n };\n\n getDateLabel = (schedulerData, viewType, startDate, endDate) => {\n let start = schedulerData.localeMoment(startDate);\n let end = schedulerData.localeMoment(endDate);\n let dateLabel = start.format('YYYY年M月D日');\n\n if (viewType === ViewTypes.Week) {\n dateLabel = `${start.format('YYYY年M月D日')}-${end.format('D日')}`;\n if (start.month() !== end.month())\n dateLabel = `${start.format('YYYY年M月D日')}-${end.format('M月D日')}`;\n if (start.year() !== end.year())\n dateLabel = `${start.format('YYYY年M月D日')}-${end.format('YYYY年M月D日')}`;\n }\n else if (viewType === ViewTypes.Month) {\n dateLabel = start.format('YYYY年M月');\n }\n else if (viewType === ViewTypes.Quarter) {\n dateLabel = `${start.format('YYYY年M月D日')}-${end.format('M月D日')}`;\n }\n else if (viewType === ViewTypes.Year) {\n dateLabel = start.format('YYYY年');\n }\n else if (viewType === ViewTypes.Custom) {\n dateLabel = start.add(15, 'days').format('YYYY年M月D日の週');\n }\n\n return dateLabel;\n };\n\n getCustomDate = (schedulerData, num, date = undefined) => {\n let selectDate = schedulerData.startDate;\n\n if (date !== undefined)\n selectDate = date;\n\n let startDate = schedulerData.localeMoment(selectDate).add(-15, 'days').format(DATE_FORMAT),\n endDate = schedulerData.localeMoment(selectDate).add(15, 'days').format(DATE_FORMAT),\n cellUnit = CellUnits.Day;\n\n return {\n startDate,\n endDate,\n cellUnit\n };\n };\n\n getFMSchdules = async (startDate, endDate, selectedSort, selectedLine, selectedArticle) => {\n let schedulerData = this.state.viewModel;\n let resources = [];\n let events = [];\n let bikoujson = null;\n let syukkajson = null;\n let schedulerParam = null;\n let scriptResult = null; \n let lines = [];\n let articles = [];\n let linestatus = [];\n let checkedValues = [];\n\n // CHANGED:ADD #12\n linestatus.push({code: 0, status: \"\", color: \"#FFFFFF\" });\n\n try {\n schedulerParam = await this.getFMSchdulesDataAPI(startDate, endDate, selectedSort, selectedLine, selectedArticle);\n const code = parseInt(schedulerParam.messages[0].code, 10);\n if (code !== 0) {\n return {\n schedulerData,\n linestatus,\n lines,\n articles,\n checkedValues\n };\n }\n\n //スクリプトの結果を取得\n scriptResult = JSON.parse(decodeURIComponent(escape(window.atob(schedulerParam.response['scriptResult']))));\n const error_code = parseInt(scriptResult.error_code, 10);\n if (error_code !== 0) {\n return {\n schedulerData,\n linestatus,\n lines,\n articles,\n checkedValues\n };\n }\n } catch {\n return {\n schedulerData,\n linestatus,\n lines,\n articles,\n checkedValues\n };\n }\n\n //リソースファイルの取得\n resources = JSON.parse(scriptResult.resources);\n\n //備考の取得\n bikoujson = JSON.parse(scriptResult.bikou);\n\n //################################\n //イベントファイルの設定\n //################################\n const fmevents = schedulerParam.response.data;\n events = [];\n let eventdate = new Date();\n let eventsstart = new Date();\n let eventsend = new Date();\n let fieldData = {};\n let resourceId = \"\";\n let bikou = {};\n\n for (var i in fmevents) {\n //ループ中のフィールドデータを取得\n fieldData = fmevents[i].fieldData;\n\n //フィールドデータを挿入\n events[i] = {};\n events[i] = fieldData;\n\n //日付\n eventdate = new Date(fieldData.打設完了予定日);\n eventsstart = formatDate(eventdate,\"YYYY/MM/DD\");\n eventsend = formatDate(new Date(eventdate.setDate(eventdate.getDate() + 1)),\"YYYY/MM/DD\");\n // _eventsstart = formatDate(new Date(fieldData.打設完了予定日),\"YYYY/MM/DD\");\n // _eventsend = eventsstart.setDate(eventsstart.getDate() + 1);\n resourceId = (selectedSort === \"ライン別\") ? fieldData.c_ライン別_型枠番号 : fieldData.c_物件別_型枠番号;\n\n events[i].id = fieldData.UUID;\n events[i].start = eventsstart;\n events[i].end = eventsend;\n events[i].resourceId = resourceId;\n events[i].title = \"\";\n\n //備考の取得\n bikou = bikoujson[resourceId];\n if (bikou !== undefined) {\n bikou = bikou[eventsstart];\n\n if (bikou !== undefined) {\n events[i].備考 = bikou.text;\n events[i].備考UUID = bikou.id;\n\n delete bikoujson[resourceId][eventsstart];\n if ((Object.keys(bikoujson[resourceId]).length) === 0) {\n delete bikoujson[resourceId];\n }\n }\n }\n }\n\n //################################\n //製品に紐づかない、単独の備考を登録する\n //################################\n const bikou_keys = Object.keys(bikoujson);\n const bikou_len = bikou_keys.length;\n let bikou_loop_cnt = Number(i) + 1;\n\n for (let bikou_cnt = 0; bikou_cnt < bikou_len; bikou_cnt++) {\n\n let bikou_key = bikou_keys[bikou_cnt];\n let bikou_date_keys = Object.keys(bikoujson[bikou_key]);\n let bikou_date_len = bikou_date_keys.length;\n\n for (let bikou_date_cnt = 0; bikou_date_cnt < bikou_date_len; bikou_date_cnt++) {\n let bikou_date = new Date(bikou_date_keys[bikou_date_cnt])\n let bikou_start = formatDate(bikou_date, \"YYYY/MM/DD\");\n let bikou_end = formatDate(new Date(bikou_date.setDate(bikou_date.getDate() + 1)), \"YYYY/MM/DD\");\n let bikou_id = bikoujson[bikou_key][bikou_start].id;\n let bikou_resourceId = bikoujson[bikou_key][bikou_start].resourceId;\n let bikou_text = bikoujson[bikou_key][bikou_start].text;\n // let bikou_date = Object.keys(bikoujson[bikou_key]);\n // let bikou_date_len = bikou_date.length;\n events[bikou_loop_cnt] = {};\n events[bikou_loop_cnt].id = bikou_id;\n events[bikou_loop_cnt].備考 = bikou_text;\n events[bikou_loop_cnt].備考UUID = bikou_id;\n events[bikou_loop_cnt].start = bikou_start;\n events[bikou_loop_cnt].end = bikou_end;\n events[bikou_loop_cnt].resourceId = bikou_resourceId;\n events[bikou_loop_cnt].title = \"\";\n\n bikou_loop_cnt++;\n }\n }\n\n //出荷日テキストの取得\n syukkajson = JSON.parse(scriptResult.syukka);\n\n //################################\n //出荷日テキスト設定\n //################################\n const syukka_keys = Object.keys(syukkajson);\n const syukka_len = syukka_keys.length;\n let syukka_loop_cnt = bikou_loop_cnt;\n\n for (let syukka_cnt = 0; syukka_cnt < syukka_len; syukka_cnt++) {\n\n let syukka_key = syukka_keys[syukka_cnt];\n let syukka_date_keys = Object.keys(syukkajson[syukka_key]);\n let syukka_date_len = syukka_date_keys.length;\n\n for (let syukka_date_cnt = 0; syukka_date_cnt < syukka_date_len; syukka_date_cnt++) {\n let syukka_date = new Date(syukka_date_keys[syukka_date_cnt])\n let syukka_start = formatDate(syukka_date, \"YYYY/MM/DD\");\n let syukka_end = formatDate(new Date(syukka_date.setDate(syukka_date.getDate() + 1)), \"YYYY/MM/DD\");\n let syukka_id = syukkajson[syukka_key][syukka_start].id;\n let syukka_resourceId = syukkajson[syukka_key][syukka_start].resourceId;\n let syukka_text = syukkajson[syukka_key][syukka_start].text;\n // let syukka_date = Object.keys(syukkajson[syukka_key]);\n // let syukka_date_len = syukka_date.length;\n events[syukka_loop_cnt] = {};\n events[syukka_loop_cnt].id = syukka_id;\n events[syukka_loop_cnt].出荷日テキスト = syukka_text;\n events[syukka_loop_cnt].出荷日テキストUUID = syukka_id;\n events[syukka_loop_cnt].start = syukka_start;\n events[syukka_loop_cnt].end = syukka_end;\n events[syukka_loop_cnt].resourceId = syukka_resourceId;\n events[syukka_loop_cnt].title = \"\";\n\n syukka_loop_cnt++;\n }\n }\n\n //################################\n //歩掛設定・休日設定\n //################################\n const bugakarijson = JSON.parse(scriptResult.bugakari);\n\n for (let i = 0; i < schedulerData.headers.length; i++) {\n let date = schedulerData.localeMoment(schedulerData.headers[i].time);\n let header_date = formatDate(new Date(date), \"YYYY/MM/DD\");\n let bugakari = bugakarijson[header_date];\n\n if (bugakari) {\n if (bugakari.休日 !== true) {\n schedulerData.headers[i].nonWorkingTime = false;\n } else {\n schedulerData.headers[i].nonWorkingTime = true;\n }\n\n schedulerData.headers[i].型枠数 = bugakari.型枠数;\n schedulerData.headers[i].打設数 = bugakari.打設数;\n schedulerData.headers[i].打設量 = bugakari.打設量;\n schedulerData.headers[i].計画人工合計 = bugakari.計画人工合計;\n schedulerData.headers[i].配置予定人工合計 = bugakari.配置予定人工合計;\n schedulerData.headers[i].実施人工合計 = bugakari.実施人工合計;\n schedulerData.headers[i].差異 = bugakari.差異;\n\n schedulerData.headers[i].休日 = bugakari.休日;\n }\n }\n\n //################################\n //製造ラインステータス設定\n //################################\n const linestatusjson = JSON.parse(scriptResult.linestatus);\n\n linestatusjson.forEach(item => {\n var status = {\n code: item.code,\n status: item.status,\n color: item.color\n }\n\n linestatus.push(status);\n checkedValues.push(status);\n });\n\n //################################\n //製造ライン設定\n //################################\n if ((selectedSort === \"ライン別\" && selectedLine === null && selectedArticle === null) ||\n (selectedSort === \"物件別\" && selectedLine === null)) {\n const lineMap = [...new Map(events.map((v) => [v.製造ラインコード, v]).sort()).values()];\n\n lineMap.forEach(item => {\n if (item.製造ラインコード) {\n var line = {\n value: item.製造ラインコード,\n label: hankaku2Zenkaku(item.製造ライン名称)\n }\n lines.push(line);\n }\n });\n } else {\n lines = this.state.lines;\n }\n\n //################################\n //物件設定\n //################################\n if ((selectedSort === \"物件別\" && selectedLine === null && selectedArticle === null) ||\n (selectedSort === \"ライン別\" && selectedArticle === null)) {\n const articleMap = [...new Map(resources.map((v) => [v.name, v]).sort()).values()];\n\n articleMap.forEach(item => {\n if (item.articleflg) {\n var article = {\n value: item.id,\n label: item.name\n }\n articles.push(article);\n }\n });\n } else {\n articles = this.state.articles;\n }\n\n //################################\n //結果を返す\n //################################\n schedulerData.setResources(resources);\n schedulerData.setEvents(events);\n\n return {\n schedulerData,\n linestatus,\n lines,\n articles,\n checkedValues\n };\n }\n\n getFMSchdulesDataAPI = async (startdate, enddate, selectedSort, selectedLine, selectedArticle) => {\n let layout = 'D1002_製品情報取得_mst製品';\n\n //検索設定\n let _startdate = formatDate(new Date(startdate), 'MM/DD/YYYY');\n let _enddate = formatDate(new Date(enddate), 'MM/DD/YYYY');\n\n let field = {\n '打設完了予定日': _startdate + '...' + _enddate,\n '削除済みフラグ': 0,\n '製造ラインコード': selectedLine === null ? '' : selectedLine.value,\n '物件UUID': selectedArticle === null ? '' : selectedArticle.value\n };\n\n //検索の最大件数\n let limit = 1000;\n\n //スクリプト\n let script = 'D1002_WEB工程表_データ生成[DataAPIMap]';\n let scriptparam = {\n 'sort': selectedSort,\n 'start': formatDate(new Date(startdate), 'YYYY/MM/DD'),\n 'end': formatDate(new Date(enddate), 'YYYY/MM/DD'),\n '製造ラインコード': selectedLine === null ? '' : selectedLine.value,\n '物件UUID': selectedArticle === null ? '' : selectedArticle.value,\n 従業員UUID: User.getUserId() \n }\n\n //FMパラメータ生成\n let json = {\n 'layout': layout,\n 'data': {\n 'query': [field],\n 'limit': limit,\n 'script': script,\n 'script.param': new Buffer(JSON.stringify(scriptparam)).toString('base64')\n }\n };\n const schedulesresult = (await axios.post(API_URL + '/filemaker', json)).data;\n\n return schedulesresult;\n }\n\n getFMBugakariDataAPI = async (startdate, enddate, selectedSort, lines, articles) => {\n let layout = 'D1002_製品情報取得_mst製品';\n\n //検索設定\n let _startdate = formatDate(new Date(startdate), 'MM/DD/YYYY');\n let _enddate = formatDate(new Date(enddate), 'MM/DD/YYYY');\n let field = {\n '打設完了予定日': _startdate + '...' + _enddate,\n '削除済みフラグ': 0\n };\n\n //検索の最大件数\n let limit = 1000;\n\n //スクリプト\n let script = 'D1002_WEB工程表_データ生成[DataAPIMap]';\n let scriptparam = {\n 'sort': selectedSort,\n 'start': formatDate(new Date(startdate), 'YYYY/MM/DD'),\n 'end': formatDate(new Date(enddate), 'YYYY/MM/DD'),\n '製造ラインコード': lines,\n '物件UUID': articles\n }\n\n //FMパラメータ生成\n let json = {\n 'layout': layout,\n 'data': {\n 'query': [field],\n 'limit': limit,\n 'script': script,\n 'script.param': new Buffer(JSON.stringify(scriptparam)).toString('base64')\n }\n };\n const schedulesresult = (await axios.post(API_URL + '/filemaker', json)).data;\n\n return schedulesresult;\n }\n\n render() {\n const { viewModel, clickEventModalIsOpen, moveEventModalIsOpen, modalParam, linestatus, lines, articles, selectedSort, selectedLine, selectedArticle, checkedValues, scale, isLoading } = this.state;\n const navBarProps = {\n schedulerData: viewModel,\n linestatus: linestatus,\n lines: lines,\n articles: articles,\n selectedSort: selectedSort,\n selectedLine: selectedLine,\n selectedArticle: selectedArticle,\n checkedValues: checkedValues,\n scale: scale,\n handleNextClick: this.handleNextClick,\n handlePrevClick: this.handlePrevClick,\n handleSelectDate: this.handleSelectDate,\n handleViewChange: this.handleViewChange,\n handleSortChange: this.handleSortChange,\n handleLineChange: this.handleLineChange,\n handleArticleChange: this.handleArticleChange,\n handleCheckedChanged: this.handleCheckedChanged,\n handleScaleChange: this.handleScaleChange\n }\n const clickEventModalProps = {\n modalIsOpen: clickEventModalIsOpen,\n schedulerData: viewModel,\n modalParam: modalParam,\n linestatus: linestatus,\n refStatus: this.clickEventRefStatus,\n refText: this.clickEventRefText,\n handleClickEventCloseModal: this.handleClickEventCloseModal,\n handleSelectedDateUpdateButtonClicked: this.handleSelectedDateUpdateButtonClicked,\n handleBikouUpdateButtonClicked: this.handleBikouUpdateButtonClicked,\n handleSyukkaUpdateButtonClicked: this.handleSyukkaUpdateButtonClicked\n }\n const moveEventModalProps = {\n modalIsOpen: moveEventModalIsOpen,\n schedulerData: viewModel,\n modalParam: modalParam,\n handleMoveEventCloseModal: this.handleMoveEventCloseModal,\n handleSelectedDateMoveButtonClicked: this.handleSelectedDateMoveButtonClicked,\n handleSelectedDateAndLaterMoveButtonClicked: this.handleSelectedDateAndLaterMoveButtonClicked,\n handleKatawakuMoveButtonClicked: this.handleKatawakuMoveButtonClicked\n }\n const scalesize = {\n fontSize: (16 * scale ).toFixed(0) +'px'\n // transformOrigin: 'top left',\n // height: '240px'\n }\n viewModel.config.monthCellWidth = Number((viewModel.config.defaultCellWidth * scale).toFixed(0));\n viewModel.config.customCellWidth = Number((viewModel.config.defaultCellWidth * scale).toFixed(0));\n\n //歩掛集計\n let width = viewModel.getResourceTableWidth();\n let height = viewModel.config.tableHeaderHeight;\n let t_katawakunum;\n let t_dasetsunum;\n let t_dasetsuqua;\n let t_kaitenrate;\n\n let t_ninku_keikaku;\n let t_ninku_haichi;\n let t_ninku_jisshi;\n let t_sai;\n let t_sai_class;\n\n if(isLoading === false){\n\n let digits = 1;\n t_katawakunum = viewModel.headers.reduce((p, v) => p + v.型枠数, 0)//.toFixed(digits);;\n t_dasetsunum = viewModel.headers.reduce((p, v) => p + v.打設数, 0)//.toFixed(digits);;\n t_dasetsuqua = viewModel.headers.reduce((p, v) => p + v.打設量, 0).toFixed(digits);\n t_kaitenrate = (Number(t_dasetsunum) / Number(t_katawakunum)*100).toFixed(digits);\n t_kaitenrate = isNaN(t_kaitenrate) ? '0%' :t_kaitenrate + '%';\n \n t_ninku_keikaku = (viewModel.headers.reduce((p, v) => p + Number(v.計画人工合計), 0)).toFixed(digits);\n t_ninku_haichi = (viewModel.headers.reduce((p, v) => p + Number(v.配置予定人工合計), 0)).toFixed(digits);\n t_ninku_jisshi = (viewModel.headers.reduce((p, v) => p + Number(v.実施人工合計), 0)).toFixed(digits);\n\n //差異を計算\n let boundary = 20; //%\n t_sai = (viewModel.headers.reduce((p, v) => p + Number(v.差異), 0)).toFixed(digits);\n t_sai_class = \"\";\n if(Number(t_sai) > 0){\n if( Number(t_ninku_jisshi) / Number(t_ninku_keikaku) >= 1 + ( boundary / 100 ) ){\n t_sai_class = \"bugakari-sai-plus-boundary\";\n } else {\n t_sai_class = \"bugakari-sai-plus\";\n }\n t_sai = \"+\" + t_sai; \n }else if(Number(t_sai) < 0){\n if( Number(t_ninku_jisshi) / Number(t_ninku_keikaku) <= 1 - ( boundary / 100 ) ){\n t_sai_class = \"bugakari-sai-minus-boundary\";\n } else {\n t_sai_class = \"bugakari-sai-minus\";\n }\n }\n }\n let resourcename =\n
\n \n \n \n \n \n \n
\n
\n
\n {\"日付\"}\n {\"集計\"}\n
\n
\n {\"総打設数(P)\"}\n {t_dasetsunum}\n
\n
\n {\"総打設量(㎥)\"}\n {t_dasetsuqua}\n
\n
\n {\"総型枠数(P)\"}\n {/*t_katawakunum*/}\n
\n
\n {\"回転率\"}\n {t_kaitenrate}\n
\n
\n {\"計画人工合計(人工)\"}\n {t_ninku_keikaku}\n
\n
\n {\"配置予定人工合計(人工)\"}\n {t_ninku_haichi}\n
\n
\n {\"実施人工合計(人工)\"}\n {t_ninku_jisshi}\n
\n
\n {\"差異(人工)\"}\n {t_sai}\n
\n
\n
\n
;\n\n return (\n
\n {/* */}\n \n {/* */}\n
\n {resourcename}\n
\n \n
\n
\n {/* */}\n {isLoading &&\n \n }\n {/* */}\n {clickEventModalIsOpen &&\n \n }\n {moveEventModalIsOpen &&\n \n }\n
\n );\n }\n}\n\nexport default DragDropContext(HTML5Backend)(Scheduler);","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport CircularProgress from '@material-ui/core/CircularProgress';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n position: 'relative',\n '& > * + *': {\n marginLeft: theme.spacing(2),\n },\n textAlign: 'center',\n verticalAlign: 'middle',\n },\n}));\n\nexport default function Circular() {\n const classes = useStyles();\n\n return (\n
\n \n
\n );\n}\n","import React from 'react';\nimport Modal from 'react-modal';\nimport { Container, Button, Row, Col } from 'react-bootstrap';\nimport { FM_DOMAIN_NAME, FM_FILENAME_QUALITY, FM_CHECKLIST_SHORTCUT, FM_ACCOUNT_NAME, FM_ACCOUNT_PASSWORD } from \"../../config.js\"; //CHANGED UPDATE 2023/07/04 #25\n\nModal.setAppElement(\"#root\");\n\nconst customStyles = {\n overlay: {\n zIndex: \"100\",\n backgroundColor: \"rgba(0, 0, 0, 0.5)\"\n },\n content: {\n width: \"70%\",\n maxWidth: \"460px\",\n height: \"auto\",\n top: \"50%\",\n left: \"50%\",\n right: \"auto\",\n bottom: \"auto\",\n marginRight: \"-50%\",\n padding: \"0\",\n transform: \"translate(-50%, -50%)\"\n }\n};\n\nconst ClickEventModal = (props) => {\n const { modalIsOpen, schedulerData, modalParam, linestatus, refStatus, refText, handleClickEventCloseModal, handleSelectedDateUpdateButtonClicked, handleBikouUpdateButtonClicked, handleSyukkaUpdateButtonClicked } = props;\n const { UUID, 製品番号, 立米, 配合, ステータス, 備考, 備考フラグ, 出荷日テキスト, 出荷日テキストフラグ, 日付, resourceId } = modalParam;\n\n var options = linestatus.map(\n (item) => (\n \n )\n );\n\n return (\n \n {modalParam && 製品番号 &&\n {/* CHANGED UPDATE 2023/07/12 #28 */}\n \n {/* CHANGED:ADD 2023/07/04 #25 */}\n \n \n \n 製品番号\n {製品番号}\n \n \n ㎥\n {立米}\n \n \n 配合\n {配合}\n \n \n ステータス\n \n \n \n \n \n 備考\n \n \n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n }\n {modalParam && !製品番号 && 備考フラグ &&\n \n \n 備考\n \n \n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n }\n {modalParam && !製品番号 && 出荷日テキストフラグ &&\n \n \n 出荷\n \n \n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n }\n \n )\n}\n\nexport default ClickEventModal; ","import React from 'react';\nimport Modal from 'react-modal';\nimport { Container, Button, Row, Col } from 'react-bootstrap';\nimport { getDayOfWeek } from '../../Function/Function';\n\nModal.setAppElement(\"#root\");\n\nconst customStyles = {\n overlay: {\n zIndex: \"100\",\n backgroundColor: \"rgba(0, 0, 0, 0.5)\"\n },\n content: {\n width: \"70%\",\n maxWidth: \"460px\",\n height: \"360px\",\n top: \"50%\",\n left: \"50%\",\n right: \"auto\",\n bottom: \"auto\",\n marginRight: \"-50%\",\n padding: \"0\",\n transform: \"translate(-50%, -50%)\"\n }\n};\n\nconst MoveEventModal = (props) => {\n const { modalIsOpen, schedulerData, modalParam, handleMoveEventCloseModal, handleSelectedDateMoveButtonClicked, handleSelectedDateAndLaterMoveButtonClicked, handleKatawakuMoveButtonClicked } = props;\n const { UUID, 製品番号, 変更先リソースID, 変更元型枠番号, 変更先型枠番号, 変更元予定日, 変更先予定日, 最終日, 変更元製造ラインコード, 変更先製造ラインコード, 変更元製造ライン名称, 変更先製造ライン名称, 型枠調整フラグ, 製造ライン調整フラグ } = modalParam;\n const beforeDate = 変更元予定日 + '(' + getDayOfWeek(変更元予定日) + ')';\n const afterDate = 変更先予定日 + '(' + getDayOfWeek(変更先予定日) + ')';\n\n return (\n \n {modalParam && !型枠調整フラグ && !製造ライン調整フラグ &&\n \n \n 製品番号\n {製品番号}\n \n \n 型枠番号\n {変更元型枠番号}\n \n \n 日付\n {beforeDate}\n →\n {afterDate}\n \n \n
\n
\n \n \n
\n
\n \n
\n
\n
\n
\n }\n {/* CHANGED:ADD 2023/7/12 #20 */}\n {modalParam && !型枠調整フラグ && 製造ライン調整フラグ &&\n \n \n 製品番号\n {製品番号}\n \n \n ライン\n {変更元製造ライン名称}\n →\n {変更先製造ライン名称}\n \n \n 日付\n {beforeDate}\n →\n {afterDate}\n \n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n }\n {modalParam && 型枠調整フラグ && !製造ライン調整フラグ &&\n \n \n 製品番号\n {製品番号}\n \n \n 型枠番号\n {変更元型枠番号}\n →\n {変更先型枠番号}\n \n \n 日付\n {beforeDate}\n →\n {afterDate}\n \n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n }\n \n )\n}\n\nexport default MoveEventModal; ","import React, { Component } from \"react\";\nimport Select from 'react-select'\nimport { Link } from 'react-router-dom';\nimport { Radio, Calendar } from 'antd'\nimport { FormLabel, FormGroup, FormControlLabel, Checkbox, Grid, Popover } from '@material-ui/core';\nimport { grey } from '@material-ui/core/colors';\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\nimport MenuIcon from '@material-ui/icons/Menu';\nimport ZoomInIcon from '@material-ui/icons/ZoomIn';\nimport ZoomOutIcon from '@material-ui/icons/ZoomOut';\nimport User from './../../User';\n\nexport default class NavBar extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n calenderOpen: false,\n menuOpen: false,\n anchorEl: null\n }\n }\n\n printClick = () => {\n window.print();\n };\n\n handleCalenderOpen = (e) => {\n e.preventDefault();\n this.setState({\n calenderOpen: !this.state.calenderOpen,\n anchorEl: e.currentTarget,\n });\n }\n\n handleCalenderClose = () => {\n this.setState({\n calenderOpen: false,\n });\n }\n\n handleMenuOpen = (e) => {\n e.preventDefault();\n this.setState({\n menuOpen: !this.state.menuOpen,\n anchorEl: e.currentTarget,\n });\n }\n\n handleMenuClose = () => {\n this.setState({\n menuOpen: false,\n });\n }\n\n onViewChange = (e) => {\n const { handleViewChange, schedulerData } = this.props;\n let viewType = parseInt(e.target.value.charAt(0));\n let showAgenda = e.target.value.charAt(1) === '1';\n let isEventPerspective = e.target.value.charAt(2) === '1';\n handleViewChange(schedulerData, { viewType: viewType, showAgenda: showAgenda, isEventPerspective: isEventPerspective });\n }\n\n onSortChange = (e) => {\n const { handleSortChange, schedulerData } = this.props;\n handleSortChange(e.target.value, schedulerData);\n }\n\n goNext = (e) => {\n const { handleNextClick, schedulerData } = this.props;\n handleNextClick(schedulerData);\n e.currentTarget.blur();\n }\n\n goBack = (e) => {\n const { handlePrevClick, schedulerData } = this.props;\n handlePrevClick(schedulerData);\n e.currentTarget.blur();\n }\n\n onSelect = (date) => {\n this.setState({\n visible: false,\n calenderOpen: false,\n });\n\n const { handleSelectDate, schedulerData } = this.props;\n handleSelectDate(schedulerData, date);\n }\n\n onCheck = (item) => {\n const { handleCheckedChanged, checkedValues } = this.props;\n checkedValues.filter(v => v.status === item.status).length > 0\n ? checkedValues.splice(checkedValues.findIndex(v => v.status === item.status), 1)\n : checkedValues.push(item);\n handleCheckedChanged(checkedValues);\n }\n\n onZoomIn = () => {\n const { handleScaleChange, scale } = this.props;\n handleScaleChange(scale + 0.17);\n }\n\n onZoomOut = () => {\n const { handleScaleChange, scale } = this.props;\n handleScaleChange(scale - 0.17);\n }\n\n printClick = () => {\n window.print();\n }\n\n render() {\n const { schedulerData, linestatus, lines, articles, selectedSort, selectedLine, selectedArticle, checkedValues, handleLineChange, handleArticleChange } = this.props;\n const { viewType, showAgenda, isEventPerspective, config } = schedulerData;\n\n const dropdown1 = selectedSort === \"ライン別\" ?\n { handleArticleChange(value, schedulerData, selectedSort, selectedLine); }} placeholder=\"物件を選択\" />;\n\n const dropdown2 = selectedSort === \"ライン別\" ?\n { handleLineChange(value, schedulerData, selectedSort, selectedArticle); }} placeholder=\"ラインを選択\" />;\n\n const dateLabel = schedulerData.getDateLabel();\n const defaultValue = `${viewType}${showAgenda ? 1 : 0}${isEventPerspective ? 1 : 0}`;\n const popover =
;\n const radioButtonList = config.views.map(\n (item) => (\n \n \n {item.viewName}\n \n \n )\n );\n\n var options = linestatus.map(\n (item) => (\n { this.onCheck(item); }} checked={checkedValues.filter(e => e.status === item.status).length > 0} value={item} size=\"small\" color=\"primary\" />}\n label={{item.status}}\n />\n )\n );\n\n return (\n \n );\n }\n}","import { ViewTypes } from \"react-big-scheduler\";\n\n// ドメイン名\nexport const BACKEND_DOMAIN_NAME = 'daieisng.com:8443';\nexport const FM_DOMAIN_NAME = 'fms.daieisng.com';\nexport const FM_ACCOUNT_NAME = 'daiei';\nexport const FM_ACCOUNT_PASSWORD = 'daiei8100';\nexport const FM_FILENAME_QUALITY = '品質管理システム'; //CHANGED UPDATE 2023/07/04 #25\n\n// API接続先\nlet URL = 'http://localhost:8081';\nif (process.env.NODE_ENV === 'production') {\n URL = `https://${BACKEND_DOMAIN_NAME}`;\n}\n\nexport const API_URL = URL;\n\n// カレンダー設定\nexport const SCHEDULER_DATA_CONFIG = {\n schedulerWidth: '100%',\n besidesWidth: 20,\n schedulerMaxHeight: 0,\n tableHeaderHeight: 200,\n\n // agendaResourceTableWidth: 160,\n // agendaMaxEventWidth: 100,\n\n // dayResourceTableWidth: 160,\n // weekResourceTableWidth: '16%',\n monthResourceTableWidth: 200,\n // quarterResourceTableWidth: 160,\n // yearResourceTableWidth: 160,\n customResourceTableWidth: 200,\n\n // dayCellWidth: 30,\n // weekCellWidth: '12%',\n monthCellWidth: 70,\n // quarterCellWidth: 80,\n // yearCellWidth: 80,\n customCellWidth: 70,\n defaultCellWidth:70,\n\n // dayMaxEvents: 99,\n // weekMaxEvents: 99,\n monthMaxEvents: 99,\n // quarterMaxEvents: 99,\n // yearMaxEvents: 99,\n customMaxEvents: 99,\n\n eventItemHeight: 75,\n eventItemLineHeight: 75,\n // nonAgendaSlotMinHeight: 0,\n // dayStartFrom: 0,\n // dayStopTo: 23,\n defaultEventBgColor: '#80C5F6',\n selectedAreaColor: null,\n // nonWorkingTimeHeadColor: '#999999',\n // nonWorkingTimeHeadBgColor: '#fff0f6',\n // nonWorkingTimeBodyBgColor: '#fff0f6',\n // summaryColor: '#666',\n // summaryPos: 1,\n groupOnlySlotColor: '#F8F8F8',\n\n startResizable: false,\n endResizable: false,\n movable: true,\n creatable: true,\n crossResourceMove: true,\n checkConflict: false,\n scrollToSpecialMomentEnabled: false,\n eventItemPopoverEnabled: false,\n calendarPopoverEnabled: true,\n recurringEventsEnabled: false,\n headerEnabled: false,\n displayWeekend: true,\n relativeMove: true,\n defaultExpanded: true,\n\n resourceName: \"\",\n taskName: 'タスク名',\n agendaViewHeader: '',\n addMorePopoverHeaderFormat: 'YYYY年M月D日 dddd',\n eventItemPopoverDateFormat: 'M月D日',\n nonAgendaDayCellHeaderFormat: 'HH:mm',\n nonAgendaOtherCellHeaderFormat: 'YYYY/MM/DD|ddd',\n\n // minuteStep: 30,\n\n views: [\n // {viewName: '日', viewType: ViewTypes.Day, showAgenda: false, isEventPerspective: false},\n // {viewName: '週', viewType: ViewTypes.Week, showAgenda: false, isEventPerspective: false},\n {viewName: '月次', viewType: ViewTypes.Month, showAgenda: false, isEventPerspective: false},\n // {viewName: '年', viewType: ViewTypes.Year, showAgenda: false, isEventPerspective: false},\n {viewName: '週次', viewType: ViewTypes.Custom, showAgenda: false, isEventPerspective: false},\n ]\n};\n\n//CHANGED ADD 2023/07/04 #25\nexport const FM_CHECKLIST_SHORTCUT = {\n scriptName : \"チェックリスト\",\n};","import axios from 'axios';\nimport { API_URL } from \"./config.js\";\n\nclass User {\n isLoggedIn = () => this.get('isLoggedIn') === 'true';\n getUserId = () => this.get('userId');\n getUserName = () => this.get('userName');\n\n set = (key, value) => sessionStorage.setItem(key, value);\n\n get = key => this.getSessionStorage(key);\n\n getSessionStorage = key => {\n const ret = sessionStorage.getItem(key);\n if (ret) {\n return ret;\n }\n return null;\n };\n\n // ログイン処理\n login = async (usercode, password) => {\n const layout = 'D0001_mst従業員';\n\n const field = {\n 'コード': '==' + usercode,\n 'パスワード': '==' + password,\n '削除済みフラグ': 0\n }\n \n const json = {\n 'layout': layout,\n 'data':{\n 'query': [ field ],\n 'limit': 1\n }\n };\n\n const result = (await axios.post(API_URL + '/filemaker', json)).data;\n const code = parseInt(result.messages[0].code);\n\n if (code !== 0) {\n return false;\n }\n\n const user = result.response.data[0].fieldData;\n\n this.set('isLoggedIn', true);\n this.set('userId', user.UUID);\n this.set('userName', user.氏名);\n return true;\n };\n\n // ログアウト処理\n logout = async () => {\n if (this.isLoggedIn()) {\n this.set('isLoggedIn', false);\n this.set('userId', null);\n this.set('userName', null);\n }\n };\n}\n\nexport default new User();\n","import React from 'react';\nimport { Redirect } from 'react-router-dom';\nimport User from './User';\n\nconst Auth = props =>\n User.isLoggedIn() ? props.children : ;\n\nexport default Auth;\n","import React, { Component } from 'react';\nimport { Form, Button, Container, Row, Alert } from 'react-bootstrap';\nimport { withRouter } from 'react-router-dom';\nimport User from '../User';\nimport './Login.css';\n\nclass Login extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n usercode: '',\n password: '',\n errMessage: '',\n };\n }\n\n click = async () => {\n try {\n const isLoggedIn = await User.login(this.state.usercode, this.state.password);\n if (isLoggedIn === true) {\n this.props.history.push({ pathname: 'schedule' });\n } else {\n this.setState({ errMessage: '従業員コードかパスワードが違います' });\n }\n } catch (e) {\n this.setState({ errMessage: 'ログインできませんでした' });\n }\n };\n\n handleChange = e => {\n this.setState({ [e.target.id]: e.target.value });\n };\n\n keyDown = e => {\n var ENTER = 13;\n if (e.keyCode === ENTER) {\n this.click();\n }\n };\n\n render() {\n return (\n \n \n
\n {this.state.errMessage && (\n {this.state.errMessage}\n )}\n

\n ログイン\n

\n \n 従業員コード\n \n \n \n パスワード\n \n \n \n
\n
\n
\n );\n }\n}\n\nexport default withRouter(Login);\n","import React, { Component } from 'react';\nimport { Container, Row } from 'react-bootstrap';\nimport { Link } from 'react-router-dom';\nimport User from '../User';\n\nexport default class Logout extends Component {\n async componentDidMount() {\n await User.logout();\n }\n\n render() {\n return (\n \n \n
\n

ログアウトしました

\n
\n ログイン画面へ\n
\n
\n
\n
\n );\n }\n}\n","import React, { Component } from 'react';\nimport { Route, Switch, Redirect } from 'react-router-dom';\nimport Auth from './Auth';\nimport Login from './Login/Login';\nimport Logout from './Logout/Logout';\nimport Scheduler from './Scheduler/Scheduler';\n\nclass App extends Component {\n render() {\n return (\n
\n \n \n \n\n \n \n \n \n \n
\n );\n }\n}\n\nexport default App;","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport {BrowserRouter} from 'react-router-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(\n \n \n \n, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: http://bit.ly/CRA-PWA\nserviceWorker.unregister();"],"sourceRoot":""}