PageSourceSearch

https://touraz.kr/humanframe/theme/kto/assets/script/ms01-1600-0000.js

js touraz.kr collected 2026-10-06 05:17:24 UTC 28,232 bytes, 663 lines download raw bytes

1/*
2 * 공통모듈 기본형
3 */
4$(function() {
5	var $M = CommonModuleFactory();
6	$M.init({
7		// isUseTest: true,
8		moduleMode: "private",
9		moduleName: "ms01_1600_0000",
10	});
11
12	// 변수
13	$M.def.vars = function() {
14		$M.vars.actUser = "admin";
15		$M.vars.actBase = {
16			admin: "/ktoipadmin/ps/calendar",
17			user: "/mySchedule",
18		};
19	}
20
21	// 데이터 객체
22	$M.def.vo = function() {
23
24	}
25
26	// 함수, 프로시저 등
27	$M.def.proc = function() {
28	    $M.func.dateText = function(year, month, date) {
29            var dt = new Date(year, month-1, date);
30            var dayStr = ["일", "월", "화", "수", "목", "금", "토"];
31            return month+"월 "+date+"일 ("+dayStr[dt.getDay()]+")";
32	    }
33	    $M.func.calendarData = function(opt) {
34	        if (!opt) {
35	            var dt = new Date();
36	            opt = {
37	                year: dt.getFullYear(),
38	                month: dt.getMonth()+1,
39	                date: 1,
40	            };
41	        }
42
43	        var ret = {
44	            map: [
45                    [0, 0, 0, 0, 0, 0, 0],
46                    [0, 0, 0, 0, 0, 0, 0],
47                    [0, 0, 0, 0, 0, 0, 0],
48                    [0, 0, 0, 0, 0, 0, 0],
49                    [0, 0, 0, 0, 0, 0, 0],
50                    [0, 0, 0, 0, 0, 0, 0],
51	            ],
52	            data: {},
53	        };
54
55	        var data = {};
56	        var isPrvNx = true;
57	        if (typeof(opt.isPrvNx) == "boolean") {
58	            isPrvNx = opt.isPrvNx;
59	        }
60	        var dt = $M.func.numDate(opt.year, opt.month, opt.date);
61
62	        ret.data.curYear = dt.getFullYear();
63	        ret.data.curMonth = dt.getMonth()+1;
64
65	        ret.data.curStartDate = dt.getDate();
66	        ret.data.curStartDay = dt.getDay();
67
68            dt.setMonth(dt.getMonth() + 1);
69            dt.setDate(0);
70
71	        ret.data.curEndDate = dt.getDate();
72	        ret.data.curEndDay = dt.getDay();
73
74            dt.setDate(0);
75            ret.data.prevEndDate = dt.getDate();
76            ret.data.prevEndDay = dt.getDay();
77
78            ret.data.finish = false;
79	        ret.data.calcDate = 1;
80	        ret.data.calcShift = ret.data.prevEndDay+1;
81
82	        for (var y = 0; y < ret.map.length; y++) {
83	            var row = ret.map[y];
84	            for (var x = 0; x < row.length; x++) {
85	                if (ret.data.calcShift > 0) {
86	                    if (isPrvNx) {
87	                        row[x] = ret.data.prevEndDate-ret.data.calcShift+1;
88	                    }
89	                    ret.data.calcShift--;
90	                    continue;
91	                }
92	                row[x] = ret.data.calcDate;
93	                ret.data.calcDate++;
94
95	                if (ret.data.curEndDate < ret.data.calcDate) {
96	                    ret.data.calcDate = 1;
97	                    if (!isPrvNx) {
98	                        ret.data.finish = true;
99	                        break;
100	                    }
101	                }
102	            }
103	            if (!isPrvNx && ret.data.finish) break;
104	        }
105
106	        delete ret.data.calcDate;
107	        delete ret.data.calcShift;
108	        delete ret.data.finish;
109
110            return ret;
111	    }
112        $M.func.schedFilter = function(opt) {
113            var ret = [];
114            var tCur = dateStr(new Date(opt.year, opt.month-1, opt.date, 0, 0, 0));
115
116            for (var i = opt.listSched.length-1; i >= 0; i--) {
117                var isSched = false;
118                var sched = opt.listSched[i];
119                var tSched = dateStr(new Date(new Date(sched.bgng_dt * 1000)));
120
121                if (tCur == tSched) isSched = true;
122
123                if (isSched) {
124                    var is_type = false;
125                    if (opt.listBucket) {
126                        for (var j = 0; j < opt.listBucket.length; j++) {
127                            var _bucket = opt.listBucket[j];
128                            if (!_bucket.selected) continue;
129                            if (_bucket.cd != sched.rls_cd) continue;
130                            for (var k = 0;
130 k < sched.group_id.length; k++) {
131                                var groupId = sched.group_id[k];
132                                if (groupId.indexOf("_") > -1) {
133                                    var sptGroupId = groupId.split("_");
134                                    groupId = sptGroupId[0];
135                                }
136                                if (groupId == _bucket.groupId) {
137                                    is_type = true;
138                                    break;
139                                }
140                            }
141                            if (is_type) break;
142                        }
143                    } else {
144                        is_type = true;
145                    }
146
147                    var is_cate = false;
148                    if (opt.listCate) {
149                        for (var j = 0; j < opt.listCate.length; j++) {
150                            var _cate = opt.listCate[j];
151                            if (_cate.groupId == sched.ctgry_cd && _cate.selected) {
152                                is_cate = true;
153                                break;
154                            }
155                        }
156                    } else {
157                        is_cate = true;
158                    }
159
160                    if (is_type && is_cate) {
161                        ret.push(sched);
162                    }
163                }
164            }
165            return ret;
166        }
167
168        $M.func.schedTimeText = function(bgngTs, endTs, mode) {
169            var ret = "";
170
171            var sDt = new Date(bgngTs * 1000);
172            var eDt = new Date(endTs * 1000);
173
174            var ymdBgng = [sDt.getFullYear(), sDt.getMonth()+1, sDt.getDate()];
175            var ymdEnd = [eDt.getFullYear(), eDt.getMonth()+1, eDt.getDate()];
176            var hmBgng = [sDt.getHours(), sDt.getMinutes()];
177            var hmEnd = [eDt.getHours(), eDt.getMinutes()];
178
179            var sYmd = [
180                ["0000"+ymdBgng[0], "00"+ymdBgng[1], "00"+ymdBgng[2]],
181                ["0000"+ymdEnd[0], "00"+ymdEnd[1], "00"+ymdEnd[2]],
182            ];
183            var sHm = [
184                ["00"+hmBgng[0], "00"+hmBgng[1]],
185                ["00"+hmEnd[0], "00"+hmEnd[1]],
186            ];
187
188            for (var i = 0; i < sYmd.length; i++) {
189                var arr = sYmd[i];
190                for (var j = 0; j < arr.length; j++) {
191                    if (j == 0) {
192                        arr[j] = arr[j].substring(arr[j].length - 4);
193                    } else {
194                        arr[j] = arr[j].substring(arr[j].length - 2);
195                    }
196                }
197            }
198
199            for (var i = 0; i < sHm.length; i++) {
200                var arr = sHm[i];
201                for (var j = 0; j < arr.length; j++) {
202                    arr[j] = arr[j].substring(arr[j].length - 2);
203                }
204            }
205
206            var sYmdBgng = sYmd[0].join("-");
207            var sYmdEnd = sYmd[1].join("-");
208            var sHmBgng = sHm[0].join(":");
209            var sHmEnd = sHm[1].join(":");
210
211            if (sYmdBgng == sYmdEnd && sHmBgng == "00:00" && sHmEnd == "23:59") {
212                ret = "종일";
213            } else if (mode == "full") {
214                if (sYmdBgng == sYmdEnd) {
215                    if (sHmBgng == sHmEnd) {
216                        ret = sYmdBgng + " " + sHmBgng;
217                    } else {
218                        ret = sYmdBgng + " " + sHmBgng + " ~ " + sHmEnd;
219                    }
220                } else {
221                    ret = sYmdBgng + " " + sHmBgng + " ~ "
222                        + sYmdEnd + " " + sHmEnd;
223                }
224            } else if (mode == "simple") {
225                if (sYmdBgng != sYmdEnd) {
226                    ret = '<small style="font-style:italic;">(~'+[ymdEnd[1], ymdEnd[2]].join("/")+')</small>';
227                } else {
228                    ret = sHmBgng;
229                }
230            }
231            return ret;
232        }
233
234		$M.prom.calendAction = function(form) {
235			var actBase = $M.vars.actBase[$M.vars.actUser];
236			var url = actBase+"/calendAction";
237			return $M.prom.request(url, form);
238		}
239
240	    $M.prom.getListMySchedule = function(opt) {
241	        return new Promise(function(resolve, reject) {
242	            var form = {};
243	            form.actKey = "getListMySchedule";
244	            form.year = opt.year;
245	            form.month = opt.month;
246
247	            if (opt.myYn) form.myYn = opt.myYn;
248	            if (opt.myWrksYn) form.myWrksYn = opt.myWrksYn;
249	            if (opt.myWrksGrpYn) form.myWrksGrpYn = opt.myWrksGrpYn;
250	            if (opt.portalYn) form.portalYn = opt.portalYn;
251	            if (opt.wrksId) form.wrksId = opt.wrksId;
252
253	            $M.prom.calendAction(form).then(function(res) {
254	                resolve(res);
255	            }).catch(function(e) {
256	                reject(e);
257	            });
258	        });
259	    }
260
261		$M.proc.setActUser = function(user) {
262			$M.vars.actUser = user;
263		}
264
265		/** (팝업) 일정 상세 */
266		$M.proc.popScheduleView = $.mods.common.proc.classPopup({
267            vars: {
268                modalSize: "",
269                theme: "portal",
270                themeColor: "workspace",
271                tempId: "calendar/popScheduleView",
272            },
273            proc: {
274                init: function($P) {
275                    //
276                },
277                load: function($P) {
278                    // proc
279                    if (true) {
280                        $P.proc.bindView = function(dataset) {
281                            var schedDet = dataset[0];
282                            var schedRls = dataset[1];
283
284                            var isAdmin = ($P.params.isAdmin == true);
285                            var isWritten = schedDet.dataVO.rgtrId == schedDet.mberId;
286
287                            if ($P.params.isAuthWrite && (isWritten || isAdmin)) {
288                                // $P.$el.find(".sect_footer").removeAttr("style");
289                                $P.$el.find(".sect_footer > .btn_edit").removeAttr("style");
290                                $P.$el.find(".sect_footer > .btn_delete").removeAttr("style");
291                                $P.$el.find(".sect_footer").removeAttr("style");
292
293                                if (!$P.$el.find(".sect_footer > .btn_close").hasClass("width40 radius-right")) {
294                                    $P.$el.find(".sect_footer > .btn_close").addClass("width40 radius-right");
295                                }
296                            } else {
297                                // $P.$el.find(".sect_footer").remove();
298                                $P.$el.find(".sect_footer > .btn_edit").remove();
299                                $P.$el.find(".sect_footer > .btn_delete").remove();
300                                $P.$el.find(".sect_footer").removeAttr("style");
301
302                                if ($P.$el.find(".sect_footer > .btn_close").hasClass("width40 radius-right")) {
303                                    $P.$el.find(".sect_footer > .btn_close").removeClass("width40 radius-right");
304                                }
305                            }
306
307                            /*
308                                if ($M.vars.preload.auth.isAuthWrite) {
309                                    $P.$el.find(".sect_footer > .btn_edit").removeAttr("style");
310                                    $P.$el.find(".sect_footer > .btn_delete").removeAttr("style");
311                                    $P.$el.find(".sect_footer").removeAttr("style");
312                                } else {
313                                    $P.$el.find(".sect_footer > .btn_edit").remove();
314                                    $P.$el.find(".sect_footer > .btn_delete").remove();
315                                    $P.$el.find(".sect_footer").removeAttr("style");
316                                }
317                            */
318
319
320                            var title = "["+schedDet.dataVO.ctgryNm+"] ";
321                            title += schedDet.dataVO.fxNm;
322
323                            // $P.$el.find(".event-subject").html(title);
324                            // $P.$el.find(".modal-title").html(title);
325                            $P.$el.find(".event-subject").html(title);
326                            // modal-title
327                            // $P.$el.find(".txt_ctgryNm").html("["+schedDet.dataVO.ctgryNm+"]");
328                            // $P.$el.find(".txt_fxNm").html(schedDet.dataVO.fxNm);
329                            $P.$el.find(".sched_data.loc").html(schedDet.dataVO.place);
330                            $P.$el.find(".sched_data.descr").html(schedDet.dataVO.cn.replace(/\n/g, "<br>"));
331
332                            /*
333                            if (typeof(schedDet.dataVO.bgngDt) == "string") {
334                                schedDet.dataVO.bgngDt = parseInt(schedDet.dataVO.bgngDt);
335                                schedDet.dataVO.endDt = parseInt(schedDet.dataVO.endDt);
336                            }
337                            */
338
339                            // var bgngTs = (new Date(schedDet.dataVO.bgngDt)).getTime() / 1000;
340                            // var endTs = (new Date(schedDet.dataVO.endDt)).getTime() / 1000;
341                            // var bgngTs = (new Date(schedDet.dataVO.bgngDt)).getTime();
342                            // var endTs = (new Date(schedDet.dataVO.endDt)).getTime();
343                            var bgngTs = $M.func.unixTimeDate(schedDet.dataVO.bgngDt).getTime();
344                            var endTs = $M.func.unixTimeDate(schedDet.dataVO.endDt).getTime();
345
346                            var timeStr = $M.func.schedTimeText(bgngTs, endTs, "full");
347                            $P.$el.find(".sched_data.time").html(timeStr);
348
349                            if (schedDet.dataVO.ntcnYn == "Y") {
350                                var mapMth = {
351                                    "TY01": "쪽지",
352                                    "TY02": "카카오알림",
353                                };
354
355                                var mapTime = {
356                                    "t1440": "1일 전",
357                                    "t60": "1시간 전",
358                                    "t10": "10분 전",
359                                };
360
361                                var _alerts = [
362                                    mapTime["t"+schedDet.dataVO.ntcnTime],
363                                    mapMth[schedDet.dataVO.ntcnMth],
364                                ].join(" ");
365
366                                $P.$el.find(".sched_data.alerts").html(_alerts);
367                            } else {
368                                $P.$el.find(".sect_alerts").css("display", "none");
369                            }
370
371                            var $contRls = $P.$el.find(".sched_data.rls");
372                            $contRls.find("li").remove();
373
374                            for (var i = 0; i < schedRls.listMap.length; i++) {
375                                var item = schedRls.listMap[i];
376                                var $li = $('<li></li>');
377                                var ttl = item.ttl;
378                                $li.html(ttl);
379                                $contRls.append($li);
380                            }
381                        }
382                    }
383
384                    // event
385                    if (true) {
386                        $P.$el.find(".btn_close").click(function(e) {
387                            $P.$modal.modal("hide");
388                            e.preventDefault();
389                        });
390
391                        $P.$el.find(".btn_edit").click(function(e) {
392                            $P.$modal.modal("hide");
393                            var _params = {
394                                mode: "update",
395                                fxSeq: $P.params.fxSeq,
396                            };
397                            if ($P.params.fnEditCallback) {
398                                _params.callback = $P.params.fnEditCallback;
399                            }
400                            if ($P.params.useCalendType) {
401                                _params.useCalendType = $P.params.useCalendType;
402                            }
403                            $.mods.common.proc.popCalendForm(_params);
404                            e.preventDefault();
405                        });
406
407                        $P.$el.find(".btn_delete").click(function(e) {
408                            var msg = "삭제하시겠습니까?";
409                            $M.proc.confirm("", msg, function() {
410                                $M.prom.calendAction({actKey:"deleteSched", fxSeq:$P.params.fxSeq}).then(function(res) {
411                                    if (res.isSuccess) {
412                                        $P.$modal.modal("hide");
413                                        if ($P.params.fnDeleteCallback) {
414                                            $P.params.fnDeleteCallback();
415                                        }
416                                    }
417                                }).catch(function(e) {
418                                    console.log(e);
419                                });
420                            });
421                            e.preventDefault();
422                        });
423                    }
424
425                    // main
426                    if (true) {
427                        Promise.all([
428                            $M.prom.calendAction({actKey:"getSchedDetail", fxSeq:$P.params.fxSeq}),
429                            $M.prom.calendAction({actKey:"getSchedRls", fxSeq:$P.params.fxSeq}),
430                        ]).then(function(dataset) {
431                            $P.proc.bindView(dataset);
432                        }).catch(function(e) {
433                            console.log(e);
434                        });
435                    }
436                },
437                destroy: function($P) {
438                    //
439                },
440            }
441        });
442
443		/** (팝업) 일정 승인 */
444		$M.proc.popScheduleAccept = $.mods.common.proc.classPopup({
445            vars: {
446                modalSize: "",
447                theme: "portal",
448                themeColor: "workspace",
449                tempId: "calendar/popScheduleAccept",
450            },
451            proc: {
452                init: function($P) {
453                    //
454                },
455                load: function($P) {
456                    // init
457                    if (true) {
458                        $P.vars.preload = {
459                            schedDet: null,
460                            schedRls: null,
461                        };
462                    }
463
464                    // proc
465                    if (true) {
466                        $P.proc.bindData = function(dataset) {
467                            var schedDet = dataset[0];
468                            var schedRls = dataset[1];
469
470                            $P.vars.preload.schedDet = schedDet;
471                            $P.vars.preload.schedRls = schedRls;
472                        }
473                        $P.proc.bindView = function() {
474                            var schedDet = $P.vars.preload.schedDet;
475                            var schedRls = $P.vars.preload.schedRls;
476
477                            var title = "["+schedDet.dataVO.ctgryNm+"] ";
478                            title += schedDet.dataVO.fxNm;
479
480                            // $P.$el.find(".event-subject").html(title);
481                            $P.$el.find(".modal-title").html(title);
482                            // $P.$el.find(".txt_ctgryNm").html("["+schedDet.dataVO.ctgryNm+"]");
483                            // $P.$el.find(".txt_fxNm").html(schedDet.dataVO.fxNm);
484                            $P.$el.find(".sched_data.loc").html(schedDet.dataVO.place);
485                            $P.$el.find(".sched_data.descr").html(schedDet.dataVO.cn.replace(/\n/g, "<br>"));
486
487                            // var bgngTs = (new Date(schedDet.dataVO.bgngDt)).getTime() / 1000;
488                            // var endTs = (new Date(schedDet.dataVO.endDt)).getTime() / 1000;
489                            var bgngTs = $M.func.unixTimeDate(schedDet.dataVO.bgngDt).getTime();
490                            var endTs = $M.func.unixTimeDate(schedDet.dataVO.endDt).getTime();
491
492                            var timeStr = $M.func.schedTimeText(bgngTs, endTs, "full");
493                            $P.$el.find(".sched_data.time").html(timeStr);
494
495                            if (schedDet.dataVO.ntcnYn == "Y") {
496                                var mapMth = {
497                                    "TY01": "쪽지",
498                                    "TY02": "카카오알림",
499                                };
500
501                                var mapTime = {
502                                    "t1440": "1일 전",
503                                    "t60": "1시간 전",
504                                    "t10": "10분 전",
505                                };
506
507                                var _alerts = [
508                                    mapTime["t"+schedDet.dataVO.ntcnTime],
509                                    mapMth[schedDet.dataVO.ntcnMth],
510                                ].join(" ");
511
512                                $P.$el.find(".sched_data.alerts").html(_alerts);
513                            } else {
514                                $P.$el.find(".sect_alerts").css("display", "none");
515                            }
516
517                            if ($P.params.actMode == "wrks") {
518                                var $rdo = $P.$el.find("input[name=rdoAccept]");
519                                var $txt = $P.$el.find("#popSchedAcptTextReject").find("textarea");
520
521                                var wrksId = $.mods.wrks.vars.wrksId;
522                                var _list = $P.vars.preload.schedRls.listMap.filter(function(obj, idx) {
523                                    return obj.group_id.indexOf(wrksId) > -1;
524                                });
525
526                                var rls = _list[0];
527                                if (rls.prcs_stat_cd == "PR02") {
528                                    $rdo.eq(0).prop("checked", true);
529                                } else if (rls.prcs_stat_cd == "PR03") {
530                                    $rdo.eq(1).prop("checked", true);
531                                }
532                                $txt.val(rls.prcs_stat_cn);
533                                $txt.keyup();
534                            } else if ($P.params.actMode == "portal") {
535                                var $rdo = $P.$el.find("input[name=rdoAccept]");
536                                var $txt = $P.$el.find("#popSchedAcptTextReject").find("textarea");
537
538                                var rls = $P.vars.preload.schedRls.listMap[0];
539                                if (rls.prcs_stat_cd == "PR02") {
540                                    $rdo.eq(0).prop("checked", true);
541                                } else if (rls.prcs_stat_cd == "PR03") {
542                                    $rdo.eq(1).prop("checked", true);
543                                }
544                                $txt.val(rls.prcs_stat_cn);
545                                $txt.keyup();
546                            }
547                        }
548                    }
549
550                    // event
551                    if (true) {
552                        $.mods.common.proc.comInputText({
553                            mode: "textarea",
554                            maxlength: 300,
555                            placeholder: "반려사유를 입력하세요.",
556                        }).then(function(res) {
557                            $("#popSchedAcptTextReject").append(res.$el);
558                        });
559
560                        $P.$el.find(".btn_close").click(function() {
561                            $P.$modal.modal("hide");
562                        });
563
564                        $P.$el.find(".btn_submit").click(function() {
565                            var reqIdx = 0;
566                            var listRls = [];
567                            var params = {};
568
569                            var fn_request = function() {
570                                var rls = listRls[reqIdx];
571
572                                $M.prom.calendAction({
573                                    actKey: "updateAcptRls",
574                                    rlsSeq: rls.rls_seq,
575                                    acptYn: params.acptYn,
576                                    rjCn: params.rjCn,
577                                }).then(function(res) {
578                                    reqIdx++;
579                                    if (listRls.length > reqIdx) {
580                                        fn_request();
581                                    } else {
582                                        fn_complete();
583                                    }
584                                }).catch(function(e) {
585                                    console.log(e);
586                                });
587                            }
588
589                            var fn_complete = function() {
590                                window.location.reload();
591                            }
592
593                            if ($P.params.actMode == "wrks") {
594                                var wrksId = $.mods.wrks.vars.wrksId;
595                                var _list = $P.vars.preload.schedRls.listMap.filter(function(obj, idx) {
596                                    return obj.group_id.indexOf(wrksId) > -1;
597                                });
598                                listRls.push(..._list);
599                            } else if ($P.params.actMode == "portal") {
600                                var rls = $P.vars.preload.schedRls.listMap[0];
601                                listRls.push(rls);
602                            }
603
604                            if (listRls.length == 0) {
605                                var msg = "error";
606                                $M.proc.alert("", msg);
607                                return;
608                            }
609
610                            var $rdo = $P.$el.find("input[name=rdoAccept]:checked");
611                            if ($rdo.length == 0) {
612                                var msg = "error";
613                                $M.proc.alert("", msg);
614                                return;
615                            }
616
617                            var cnfmsg = "저장 하시겠습니까?";
618                            $M.proc.confirm("", cnfmsg, function() {
619                                params.acptYn = $rdo.val();
620                                params.rjCn = $P.$el.find("#popSchedAcptTextReject").find("textarea").val();
621                                fn_request();
622                            });
623                        });
624                    }
625
626                    // main
627                    if (true) {
628                        Promise.all([
629                            $M.prom.calendAction({actKey:"getSchedDetail", fxSeq:$P.params.fxSeq}),
630                            $M.prom.calendAction({actKey:"getSchedRls", fxSeq:$P.params.fxSeq}),
631                        ]).then(function(dataset) {
632                            $P.proc.bindData(dataset);
633                            $P.proc.bindView();
634                        }).catch(function(e) {
635                            console.log(e);
636                        });
637                    }
638                },
639                destroy: function($P) {
640                    //
641                },
642            }
643        });
644
645	}
646
647	// 이벤트
648	$M.def.event = function() {
649
650	}
651
652	// 초기 상태
653	$M.def.status = function() {
654
655	}
656
657	// 테스트 케이스
658	$M.def.test = function() {
659
660	}
661
662	$M.start();
663});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.