From 6ee7dd9c3d8cc211ee5a01bbe481cabbb9c890eb Mon Sep 17 00:00:00 2001 From: wyu <kknd09321@nate.com> Date: 월, 22 11월 2021 12:42:31 +0900 Subject: [PATCH] 이슈 상세 연관,하위 테이블 표시 설정 - [프론트] --- src/main/webapp/scripts/app/project/projectModify.controller.js | 6 src/main/webapp/scripts/app/issue/issue.js | 2 src/main/webapp/scripts/components/issueTableConfig/issueTableConfig.service.js | 14 + src/main/webapp/views/issue/issueDownTableConfig.html | 95 ++++++ src/main/webapp/views/issue/issueListNormal.html | 10 src/main/webapp/scripts/app/issue/issueAddDownTableConfig.controller.js | 187 +++++++++++++ src/main/webapp/assets/styles/main.css | 13 src/main/webapp/scripts/app/project/projectAdd.controller.js | 4 src/main/webapp/scripts/app/issue/issueAdd.controller.js | 18 + src/main/webapp/scripts/app/issue/issueModify.controller.js | 95 +++--- src/main/webapp/scripts/app/issue/issueAddRelationTableConfig.controller.js | 194 +++++++++++++ src/main/webapp/views/issue/issueRelationTableConfig.html | 95 ++++++ src/main/webapp/views/project/projectAdd.html | 7 src/main/webapp/views/project/projectModify.html | 6 src/main/webapp/scripts/app/issue/issueList.controller.js | 19 + src/main/webapp/i18n/ko/global.json | 3 src/main/webapp/views/issue/issueDetail.html | 69 +++- src/main/webapp/scripts/main.js | 2 18 files changed, 738 insertions(+), 101 deletions(-) diff --git a/src/main/webapp/assets/styles/main.css b/src/main/webapp/assets/styles/main.css index 1d10159..05ee9d2 100644 --- a/src/main/webapp/assets/styles/main.css +++ b/src/main/webapp/assets/styles/main.css @@ -934,6 +934,9 @@ margin-left: 91.6666666667%; } +.offset-12 { + margin-left: 100%; +} @media (min-width: 576px) { .col-sm { -ms-flex-preferred-size: 0; @@ -3339,6 +3342,12 @@ color: #fff; background-color: #343a40; border-color: #343a40; +} + +.btn-darkgrey { + color: #fff; + background-color: #727072; + border-color: #727072; } .btn-dark:hover { @@ -30223,4 +30232,8 @@ color:#0066ff; } +.mgr-1 { + margin-right: 1rem; +} + /* 媛꾪듃李⑦듃 end */ diff --git a/src/main/webapp/i18n/ko/global.json b/src/main/webapp/i18n/ko/global.json index ed49941..ffd617d 100644 --- a/src/main/webapp/i18n/ko/global.json +++ b/src/main/webapp/i18n/ko/global.json @@ -788,7 +788,8 @@ "detectingData": "�깘吏��씪�떆", "import": "媛��졇�삤湲�", "diffuserURL": "�쑀�룷�옄URL", - "country": "援�媛�" + "country": "援�媛�", + "tableView": "�뀒�씠釉� �몴�떆�꽕�젙" }, "tasks": { "agileBoardTitle": "移몃컲 蹂대뱶" diff --git a/src/main/webapp/scripts/app/issue/issue.js b/src/main/webapp/scripts/app/issue/issue.js index cf9e407..41384ce 100644 --- a/src/main/webapp/scripts/app/issue/issue.js +++ b/src/main/webapp/scripts/app/issue/issue.js @@ -37,7 +37,7 @@ 'chartLoader', 'jsTable', 'tableColumnGenerator', 'modalFormAutoScroll', 'summerNote', 'summerNote-ko-KR', 'fullScroll', 'workflowService', 'priorityService', 'issueSearchService', 'issueTableConfigService', 'inputRegex', 'severityService', 'issueTypeService', 'issueTypeCustomFieldService', 'issueService', 'issueStatusService', 'issueUserService','issueDepartmentService','issueModifyUserController', 'issueModifyDepartmentController', 'customFieldService', 'issueSearchFieldKeyViewElement', 'issueSearchCustomFieldViewElement', 'tableUserImage', 'fullScroll', 'issueCommentService', 'detectIssueEditor', 'formSubmit', 'issueModifyStatusController', 'jsShortCut', - 'issueAddTableConfigController', 'domAppend', 'issueDetailImagePreview', 'issueSendMailController', 'htmlDiff', 'issueVersionViewController', 'issueVersionService', + 'issueAddTableConfigController','issueAddRelationTableConfigController','issueAddDownTableConfigController','domAppend', 'issueDetailImagePreview', 'issueSendMailController', 'htmlDiff', 'issueVersionViewController', 'issueVersionService', 'jsHtmlDiff', 'issueReservationController', 'issueReservationService', 'issueVersionService', 'issueStatusAutoFocus', 'issueRelationService' ], function () { deferred.resolve(); diff --git a/src/main/webapp/scripts/app/issue/issueAdd.controller.js b/src/main/webapp/scripts/app/issue/issueAdd.controller.js index 53ef440..c08a3e0 100644 --- a/src/main/webapp/scripts/app/issue/issueAdd.controller.js +++ b/src/main/webapp/scripts/app/issue/issueAdd.controller.js @@ -33,6 +33,7 @@ getIssueTypeCustomFields : getIssueTypeCustomFields, // �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 �궗�슜�옄 �젙�쓽 �븘�뱶 紐⑸줉 媛��졇�삤湲� removeUploadFile : removeUploadFile, // �뾽濡쒕뱶�븯�젮�뒗 �듅�젙 �뙆�씪�쓣 �궘�젣 removeManager : removeManager, // �떞�떦�옄 �궘�젣 + removeDepartment : removeDepartment, // �떞�떦遺��꽌 �궘�젣 setIssueTypeTemplate : setIssueTypeTemplate, // �씠�뒋 �쑀�삎 �뀥�뵆由� �쟻�슜�븯湲� startExecute : startExecute // 而⑦듃濡� 濡쒕뵫�떆 泥섏쓬�쑝濡� �떆�옉�릺�뒗 �븿�닔 }; @@ -294,6 +295,11 @@ $scope.vm.form.departments.splice(index, 1); } + // �떞�떦遺��꽌 �궘�젣 + function removeDepartment(index) { + $scope.vm.form.departments.splice(index, 1); + } + // �뾽濡쒕뱶 �뙆�씪 �궘�젣 function removeUploadFile(index) { $scope.vm.form.files.splice(index, 1); @@ -344,6 +350,7 @@ // �뾽泥댁젙蹂� 寃곌낵 媛� Event 泥섎━(set) $scope.$on("companyFieldEvent", function (event, result) { $scope.vm.companyId = result[0].id; + $scope.vm.companyName = result[0].id; $scope.vm.companyManager = result[0].manager; $scope.vm.companyTel = result[0].tel; $scope.vm.companyEmail = result[0].email; @@ -354,6 +361,7 @@ // ISP�젙蹂� 寃곌낵 媛� Event 泥섎━(set) $scope.$on("ispFieldEvent", function (event, result) { $scope.vm.ispId = result[0].id; + $scope.vm.ispName = result[0].name; $scope.vm.ispCode = result[0].code; $scope.vm.ispManager = result[0].manager; $scope.vm.ispTel = result[0].tel; @@ -364,6 +372,7 @@ // �샇�뒪�똿�젙蹂� 寃곌낵 媛� Event 泥섎━(set) $scope.$on("hostingFieldEvent", function (event, result) { $scope.vm.hostingId = result[0].id; + $scope.vm.hostingName = result[0].name; $scope.vm.hostingCode = result[0].code; $scope.vm.hostingManager = result[0].manager; $scope.vm.hostingTel = result[0].tel; @@ -378,6 +387,7 @@ var content = { title : $rootScope.preventXss($scope.vm.form.title), // �젣紐� description : $rootScope.preventXss($scope.vm.form.description), // �궡�슜 + projectId : (function () { // �봽濡쒖젥�듃 �븘�씠�뵒 var projectId = ""; @@ -387,9 +397,11 @@ return projectId; })(), + issueTypeId : $scope.vm.form.issueTypeId, // �씠�뒋 �쑀�삎 �븘�씠�뵒 priorityId : $scope.vm.form.priorityId, // �슦�꽑�닚�쐞 �븘�씠�뵒 severityId : $scope.vm.form.severityId, // 以묒슂�룄 �븘�씠�뵒 + companyId : (function () { // �뾽泥� �븘�씠�뵒 var companyId = -1; if ($scope.vm.form.issueCompanyFields.length > 0) { @@ -445,9 +457,6 @@ return attachedFileIds; })(), - - startCompleteDateRange : $scope.vm.form.startCompleteDateRange, - detectingDateRange : $scope.vm.form.detectingDateRange, issueCompanyFields : (function () { var issueCompanyFields = []; @@ -510,6 +519,9 @@ return issueHostingFields; })(), + startCompleteDateRange : $scope.vm.form.startCompleteDateRange, + detectingDateRange : $scope.vm.form.detectingDateRange, + issueCustomFields : (function () { // �씠�뒋�뿉�꽌 �궗�슜�릺�뒗 �궗�슜�옄 �젙�쓽 �븘�뱶 var issueCustomFields = []; diff --git a/src/main/webapp/scripts/app/issue/issueAddDownTableConfig.controller.js b/src/main/webapp/scripts/app/issue/issueAddDownTableConfig.controller.js new file mode 100644 index 0000000..74a08f9 --- /dev/null +++ b/src/main/webapp/scripts/app/issue/issueAddDownTableConfig.controller.js @@ -0,0 +1,187 @@ +/** + * Created by wisestone on 2019-02-07. + */ +'use strict'; + +define([ + 'app', + 'angular' + ], + function (app, angular) { + app.controller('issueAddDownTableConfigController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$uibModalInstance', 'SweetAlert', '$timeout', 'IssueTableConfig', 'CustomField', '$q', '$filter', + function ($scope, $rootScope, $log, $resourceProvider, $uibModalInstance, SweetAlert, $timeout, IssueTableConfig, CustomField, $q, $filter) { + + // �븿�닔 紐⑥쓬 + $scope.fn = { + cancel : cancel, // �뙘�뾽 李� �떕湲� + formSubmit : formSubmit, // �뤌 �쟾�넚 + formCheck : formCheck, // �뤌 泥댄겕 + getCustomFields : getCustomFields, // �궗�슜�옄 �젙�쓽 �븘�뱶 紐⑸줉�쓣 媛��졇�삩�떎. + getIssueTableConfigs : getIssueTableConfigs // �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 �젙蹂대�� 媛��졇�삩�떎. + }; + + // 蹂��닔 紐⑥쓬 + $scope.vm = { + issueTableConfigs : [{ + name : $filter("translate")("common.priority"), // �슦�꽑�닚�쐞 + key : "PRIORITY", + width : "width-100-p", + position : 1, + display : true + }, { + name : $filter("translate")("common.importance"), // 以묒슂�룄 + key : "SEVERITY", + width : "width-80-p", + position : 2, + display : true + }, { + name : $filter("translate")("issue.issueType"), // �씠�뒋 ���엯 + key : "ISSUE_TYPE", + width : "width-140-p", + position : 3, + display : true + }, { + name : $filter("translate")("common.assignee"), // �떞�떦�옄 + key : "ASSIGNEE", + width : "width-100-p", + position : 4, + display : true + }, { + name : $filter("translate")("common.register"), // �벑濡앹옄 + key : "REGISTER", + width : "width-100-p", + position : 5, + display : false + }, { + name : $filter("translate")("common.period"), // 湲곌컙 + key : "PERIOD", + width : "width-140-p", + position : 6, + display : false + }, { + name : $filter("translate")("common.lastChangeDate"), // 理쒓렐 蹂�寃쎌씪 + key : "MODIFY_DATE", + width : "width-100-p", + position : 7, + display : false + }, { + }] + }; + + + // �뤌 �쟾�넚 + function formCheck(formInvalid) { + if (formInvalid) { + return true; + } + + return false; + } + + // �뤌 �쟾�넚 + function formSubmit() { + $rootScope.spinner = true; + + var content = { + issueTableConfigs : JSON.stringify($scope.vm.issueTableConfigs) + }; + + IssueTableConfig.addDown($resourceProvider.getContent(content, + $resourceProvider.getPageContent(0, 0))).then(function (result) { + + if (result.data.message.status === "success") { + SweetAlert.success($filter("translate")("issue.completedSavingIssueTable"), $filter("translate")("issue.saveIssueTableSettingsInformation")); // "�씠�뒋 �뀒�씠釉� �꽕�젙 ���옣 �셿猷�", "�씠�뒋 �뀒�씠釉� �꽕�젙 �젙蹂닿� ���옣�릺�뿀�뒿�땲�떎." + // 蹂�寃쎈맂 �씠�뒋 �뀒�씠釉� �젙蹂대�� �씠�뒋 紐⑸줉 �뀒�씠釉붿뿉 媛깆떊�븳�떎. + $rootScope.$broadcast("getIssueTableConfigs", {}); + } + else { + SweetAlert.error($filter("translate")("issue.failedToSaveIssueTableSetting"), result.data.message.message); // �씠�뒋 �뀒�씠釉� �꽕�젙 ���옣 �떎�뙣 + } + + $rootScope.spinner = false; + }); + } + + + // �뙘�뾽 李� �떕湲� + function cancel() { + $rootScope.$broadcast("closeLayer"); // �뙘�뾽�씠 �뿴由ш퀬 �굹�꽌 js-multi, js-single �벑�뿉�꽌 body �씠踰ㅽ듃媛� �궇�븘媛��뒗 �쁽�긽 �닔�젙 + $uibModalInstance.dismiss('cancel'); + $(document).unbind("keydown"); // �떒異뺥궎 �씠踰ㅽ듃 �젣嫄� + } + + // �궗�슜�옄 �젙�쓽 �븘�뱶 紐⑸줉�쓣 媛��졇�삩�떎. + function getCustomFields() { + var deferred = $q.defer(); + + CustomField.find($resourceProvider.getContent({}, + $resourceProvider.getPageContent(0, 1000))).then(function (result) { + if (result.data.message.status !== "success") { + SweetAlert.error($filter("translate")("issue.failedToUserDefinedFieldListLookup"), result.data.message.message); // �궗�슜�옄 �젙�쓽 �븘�뱶 紐⑸줉 議고쉶 �떎�뙣 + } + + deferred.resolve(result.data.data); + }); + + return deferred.promise; + } + + // �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 �젙蹂대�� 媛��졇�삩�떎. + function getIssueTableConfigs() { + var deferred = $q.defer(); + + IssueTableConfig.detail($resourceProvider.getContent({}, + $resourceProvider.getPageContent(0, 1000))).then(function (result) { + if (result.data.message.status !== "success") { + SweetAlert.error($filter("translate")("issue.failedToIssueTableColumnLookup"), result.data.message.message); // �씠�뒋 �뀒�씠釉� 而щ읆 議고쉶 �떎�뙣 + } + + deferred.resolve(result.data.data); + }); + + return deferred.promise; + } + + // �궗�슜�옄 �젙�쓽 �븘�뱶瑜� 議고쉶�븳 �썑 �몴�떆�븷 �씠�뒋 �뀒�씠釉� 而щ읆�쓣 以�鍮꾪븳�떎. + $scope.fn.getCustomFields().then(function (result) { + var count = 7; + angular.forEach(result, function (customField) { + $scope.vm.issueTableConfigs.push({ + name : customField.name, + key : "CUSTOM_FIELD_" + customField.id, + width : "width-100-p", + display : false, + position : count + }); + + count++; + }); + + // �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 �젙蹂대�� 媛��졇�삩�떎. + $scope.fn.getIssueTableConfigs().then(function (issueTableConfigs) { + if ($rootScope.isDefined(issueTableConfigs)) { + $rootScope.spinner = true; + + var saveTableConfigs = JSON.parse(issueTableConfigs); + + angular.forEach(saveTableConfigs, function (saveTableConfig) { + + for (var count in $scope.vm.issueTableConfigs) { + var issueTableConfig = $scope.vm.issueTableConfigs[count]; + + if (issueTableConfig.key === saveTableConfig.key) { + issueTableConfig.display = saveTableConfig.display; + issueTableConfig.width = saveTableConfig.width; + issueTableConfig.position = saveTableConfig.position; + break; + } + } + }); + + $rootScope.spinner = false; + } + }); + }); + + }]); + }); diff --git a/src/main/webapp/scripts/app/issue/issueAddRelationTableConfig.controller.js b/src/main/webapp/scripts/app/issue/issueAddRelationTableConfig.controller.js new file mode 100644 index 0000000..6e890a9 --- /dev/null +++ b/src/main/webapp/scripts/app/issue/issueAddRelationTableConfig.controller.js @@ -0,0 +1,194 @@ +/** + * Created by wisestone on 2019-02-07. + */ +'use strict'; + +define([ + 'app', + 'angular' + ], + function (app, angular) { + app.controller('issueAddRelationTableConfigController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$uibModalInstance', 'SweetAlert', '$timeout', 'IssueTableConfig', 'CustomField', '$q', '$filter', + function ($scope, $rootScope, $log, $resourceProvider, $uibModalInstance, SweetAlert, $timeout, IssueTableConfig, CustomField, $q, $filter) { + + // �븿�닔 紐⑥쓬 + $scope.fn = { + cancel : cancel, // �뙘�뾽 李� �떕湲� + formSubmit : formSubmit, // �뤌 �쟾�넚 + formCheck : formCheck, // �뤌 泥댄겕 + getCustomFields : getCustomFields, // �궗�슜�옄 �젙�쓽 �븘�뱶 紐⑸줉�쓣 媛��졇�삩�떎. + getIssueTableConfigs : getIssueTableConfigs // �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 �젙蹂대�� 媛��졇�삩�떎. + }; + + // 蹂��닔 紐⑥쓬 + $scope.vm = { + issueTableConfigs : [{ + name : $filter("translate")("common.priority"), // �슦�꽑�닚�쐞 + issueId : "", + key : "PRIORITY", + width : "width-100-p", + position : 1, + display : true + }, { + name : $filter("translate")("common.importance"), // 以묒슂�룄 + issueId : "", + key : "SEVERITY", + width : "width-80-p", + position : 2, + display : true + }, { + name : $filter("translate")("issue.issueType"), // �씠�뒋 ���엯 + issueId : "", + key : "ISSUE_TYPE", + width : "width-140-p", + position : 3, + display : true + }, { + name : $filter("translate")("common.assignee"), // �떞�떦�옄 + issueId : "", + key : "ASSIGNEE", + width : "width-100-p", + position : 4, + display : true + }, { + name : $filter("translate")("common.register"), // �벑濡앹옄 + issueId : "", + key : "REGISTER", + width : "width-100-p", + position : 5, + display : false + }, { + name : $filter("translate")("common.period"), // 湲곌컙 + issueId : "", + key : "PERIOD", + width : "width-140-p", + position : 6, + display : false + }, { + name : $filter("translate")("common.lastChangeDate"), // 理쒓렐 蹂�寃쎌씪 + issueId : "", + key : "MODIFY_DATE", + width : "width-100-p", + position : 7, + display : false + }, { + }] + }; + + + // �뤌 �쟾�넚 + function formCheck(formInvalid) { + if (formInvalid) { + return true; + } + + return false; + } + + // �뤌 �쟾�넚 + function formSubmit() { + $rootScope.spinner = true; + + var content = { + issueTableConfigs : JSON.stringify($scope.vm.issueTableConfigs) + }; + + IssueTableConfig.addRelation($resourceProvider.getContent(content, + $resourceProvider.getPageContent(0, 0))).then(function (result) { + + if (result.data.message.status === "success") { + SweetAlert.success($filter("translate")("issue.completedSavingIssueTable"), $filter("translate")("issue.saveIssueTableSettingsInformation")); // "�씠�뒋 �뀒�씠釉� �꽕�젙 ���옣 �셿猷�", "�씠�뒋 �뀒�씠釉� �꽕�젙 �젙蹂닿� ���옣�릺�뿀�뒿�땲�떎." + // 蹂�寃쎈맂 �씠�뒋 �뀒�씠釉� �젙蹂대�� �씠�뒋 紐⑸줉 �뀒�씠釉붿뿉 媛깆떊�븳�떎. + $rootScope.$broadcast("getIssueTableConfigs", {}); + } + else { + SweetAlert.error($filter("translate")("issue.failedToSaveIssueTableSetting"), result.data.message.message); // �씠�뒋 �뀒�씠釉� �꽕�젙 ���옣 �떎�뙣 + } + + $rootScope.spinner = false; + }); + } + + + // �뙘�뾽 李� �떕湲� + function cancel() { + $rootScope.$broadcast("closeLayer"); // �뙘�뾽�씠 �뿴由ш퀬 �굹�꽌 js-multi, js-single �벑�뿉�꽌 body �씠踰ㅽ듃媛� �궇�븘媛��뒗 �쁽�긽 �닔�젙 + $uibModalInstance.dismiss('cancel'); + $(document).unbind("keydown"); // �떒異뺥궎 �씠踰ㅽ듃 �젣嫄� + } + + // �궗�슜�옄 �젙�쓽 �븘�뱶 紐⑸줉�쓣 媛��졇�삩�떎. + function getCustomFields() { + var deferred = $q.defer(); + + CustomField.find($resourceProvider.getContent({}, + $resourceProvider.getPageContent(0, 1000))).then(function (result) { + if (result.data.message.status !== "success") { + SweetAlert.error($filter("translate")("issue.failedToUserDefinedFieldListLookup"), result.data.message.message); // �궗�슜�옄 �젙�쓽 �븘�뱶 紐⑸줉 議고쉶 �떎�뙣 + } + + deferred.resolve(result.data.data); + }); + + return deferred.promise; + } + + // �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 �젙蹂대�� 媛��졇�삩�떎. + function getIssueTableConfigs() { + var deferred = $q.defer(); + + IssueTableConfig.detail($resourceProvider.getContent({}, + $resourceProvider.getPageContent(0, 1000))).then(function (result) { + if (result.data.message.status !== "success") { + SweetAlert.error($filter("translate")("issue.failedToIssueTableColumnLookup"), result.data.message.message); // �씠�뒋 �뀒�씠釉� 而щ읆 議고쉶 �떎�뙣 + } + + deferred.resolve(result.data.data); + }); + + return deferred.promise; + } + + // �궗�슜�옄 �젙�쓽 �븘�뱶瑜� 議고쉶�븳 �썑 �몴�떆�븷 �씠�뒋 �뀒�씠釉� 而щ읆�쓣 以�鍮꾪븳�떎. + $scope.fn.getCustomFields().then(function (result) { + var count = 7; + angular.forEach(result, function (customField) { + $scope.vm.issueTableConfigs.push({ + name : customField.name, + key : "CUSTOM_FIELD_" + customField.id, + width : "width-100-p", + display : false, + position : count + }); + + count++; + }); + + // �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 �젙蹂대�� 媛��졇�삩�떎. + $scope.fn.getIssueTableConfigs().then(function (issueTableConfigs) { + if ($rootScope.isDefined(issueTableConfigs)) { + $rootScope.spinner = true; + + var saveTableConfigs = JSON.parse(issueTableConfigs); + + angular.forEach(saveTableConfigs, function (saveTableConfig) { + + for (var count in $scope.vm.issueTableConfigs) { + var issueTableConfig = $scope.vm.issueTableConfigs[count]; + + if (issueTableConfig.key === saveTableConfig.key) { + issueTableConfig.display = saveTableConfig.display; + issueTableConfig.width = saveTableConfig.width; + issueTableConfig.position = saveTableConfig.position; + break; + } + } + }); + + $rootScope.spinner = false; + } + }); + }); + + }]); + }); diff --git a/src/main/webapp/scripts/app/issue/issueList.controller.js b/src/main/webapp/scripts/app/issue/issueList.controller.js index 3b68c16..0be7e8d 100644 --- a/src/main/webapp/scripts/app/issue/issueList.controller.js +++ b/src/main/webapp/scripts/app/issue/issueList.controller.js @@ -52,7 +52,7 @@ severityIds : [], // 以묒슂�룄 寃��깋 priorityIds : [], // �슦�꽑�닚�쐞 寃��깋 issueStatusIds : [], // �씠�뒋 �긽�깭 寃��깋 - issueTypeIds : [] // �씠�뒋 �쑀�삎 寃��깋 + issueTypeIds : [], // �씠�뒋 �쑀�삎 寃��깋 }, searchView : false, // �긽�꽭 寃��깋 議곌굔 �몴�떆 �뿬遺� detailView : false, // �긽�꽭 紐⑤뱶 蹂�寃� 媛� @@ -64,10 +64,12 @@ responseData : { data : [] }, + departmentName : "", projectName : "", // �봽濡쒖젥�듃 寃��깋 userName : "", // �떞�떦�옄 寃��깋 registerName : "", // �벑濡앹옄 寃��깋 projects : [], // �봽濡쒖젥�듃 + departments : [], issueStatuses : [], // �씠�뒋 �긽�깭 issueTypes : [], // �씠�뒋 �쑀�삎 priorities : [], // �슦�꽑 �닚�쐞 @@ -103,6 +105,7 @@ search : $scope.vm.search, projects : $scope.vm.projects, users : $scope.vm.users, + departments : $scope.vm.departments, registers : $scope.vm.registers, parentIssueId : $scope.vm.parentIssueId }) @@ -130,9 +133,10 @@ var issueListSearchObject = JSON.parse(result.data.data); // �씠�뒋 踰덊샇留� �쟻�슜�븳�떎. - �궘�젣�떆 泥섎━諛⑸쾿�븣臾몄뿉 �떎瑜� �냽�꽦�� �쟻�슜 蹂대쪟 $scope.vm.search = issueListSearchObject.search; - /*$scope.vm.users = issueListSearchObject.users; + $scope.vm.users = issueListSearchObject.users; + $scope.vm.departments = issueListSearchObject.departments; $scope.vm.projects = issueListSearchObject.projects; - $scope.vm.registers = issueListSearchObject.registers;*/ + $scope.vm.registers = issueListSearchObject.registers; $scope.fn.getPageList(0, true); } else { @@ -377,6 +381,15 @@ return userIds; })(), + departmentIds : (function () { + var departmentIds = []; + + angular.forEach($scope.vm.departments, function (department) { + departmentIds.push(department.id); + }); + + return departmentIds; + })(), registerIds : (function () { var registerIds = []; diff --git a/src/main/webapp/scripts/app/issue/issueModify.controller.js b/src/main/webapp/scripts/app/issue/issueModify.controller.js index deda875..e454587 100644 --- a/src/main/webapp/scripts/app/issue/issueModify.controller.js +++ b/src/main/webapp/scripts/app/issue/issueModify.controller.js @@ -33,7 +33,7 @@ setFormByIssueTypeCustomFields : setFormByIssueTypeCustomFields, // �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 �궗�슜�옄 �젙�쓽 �븘�뱶 �젙蹂대�� �엯�젰 �뤌�뿉�꽌 �궗�슜�븷 �닔 �엳寃� 媛�怨듯븳�떎. setUseValueByIssueTypeCustomFields : setUseValueByIssueTypeCustomFields, // �씠�뒋�뿉�꽌 �궗�슜�옄媛� �꽑�깮�븳 �궗�슜�옄 �젙�쓽 �븘�뱶 媛믪쓣 �엯�젰 �뤌�뿉 �뀑�똿�븳�떎. detail : detail, // �씠�뒋 �젙蹂� 議고쉶 - // removeManager : removeManager, // �떞�떦�옄 �궘�젣 + removeManager : removeManager, // �떞�떦�옄 �궘�젣 removeDepartment : removeDepartment, // �떞�떦遺��꽌 �궘�젣 removeUploadFile : removeUploadFile, // �듅�젙 �뙆�씪�쓣 �궘�젣 setIssueTypeTemplate : setIssueTypeTemplate, // �씠�뒋 �쑀�삎 �뀥�뵆由� �쟻�슜�븯湲� @@ -161,9 +161,9 @@ } // �떞�떦�옄 �궘�젣 - // function removeManager(index) { - // $scope.vm.form.users.splice(index, 1); - // } + function removeManager(index) { + $scope.vm.form.users.splice(index, 1); + } // �떞�떦遺��꽌 �궘�젣 function removeDepartment(index) { @@ -386,6 +386,19 @@ id : parameter.id, title : $rootScope.preventXss($scope.vm.form.title), // �젣紐� description : $rootScope.preventXss($scope.vm.form.description), // �궡�슜 + ispName : $scope.vm.ispName, + ispCode : $scope.vm.ispCode, + ispManager : $scope.vm.ispManager, + ispTel : $scope.vm.ispTel, + ispEmail : $scope.vm.ispEmail, + ispMemo : $scope.vm.ispMemo, + hostingName : $scope.vm.hostingName, + hostingCode : $scope.vm.hostingCode, + hostingManager : $scope.vm.hostingManager, + hostingTel : $scope.vm.hostingTel, + hostingEmail : $scope.vm.hostingEmail, + hostingMemo : $scope.vm.hostingMemo, + projectId : (function () { // �봽濡쒖젥�듃 �븘�씠�뵒 var projectId = ""; @@ -430,6 +443,37 @@ return hostingId; }), + + userIds : (function () { + var userIds = []; + + angular.forEach($scope.vm.form.users, function (user) { + userIds.push(user.id); + }); + + return userIds; + })(), + departmentIds : (function () { + var departmentIds = []; + + angular.forEach($scope.vm.form.departments, function (department) { + departmentIds.push(department.id); + }); + + return departmentIds; + })(), + + attachedFileIds : (function () { + var attachedFileIds = []; + + angular.forEach($scope.vm.form.attachedFiles, function (attachedFile) { + if ($scope.vm.form.description.indexOf(attachedFile.path) !== -1) { + attachedFileIds.push(attachedFile.id); + } + }); + + return attachedFileIds; + })(), issueCompanyFields : (function () { var issueCompanyFields = []; @@ -492,50 +536,7 @@ return issueHostingFields; })(), - ispName : $scope.vm.ispName, - ispCode : $scope.vm.ispCode, - ispManager : $scope.vm.ispManager, - ispTel : $scope.vm.ispTel, - ispEmail : $scope.vm.ispEmail, - ispMemo : $scope.vm.ispMemo, - - hostingName : $scope.vm.hostingName, - hostingCode : $scope.vm.hostingCode, - hostingManager : $scope.vm.hostingManager, - hostingTel : $scope.vm.hostingTel, - hostingEmail : $scope.vm.hostingEmail, - hostingMemo : $scope.vm.hostingMemo, - - userIds : (function () { - var userIds = []; - - angular.forEach($scope.vm.form.users, function (user) { - userIds.push(user.id); - }); - - return userIds; - })(), - departmentIds : (function () { - var departmentIds = []; - - angular.forEach($scope.vm.form.departments, function (department) { - departmentIds.push(department.id); - }); - - return departmentIds; - })(), removeFiles : $scope.vm.form.removeFiles, - attachedFileIds : (function () { - var attachedFileIds = []; - - angular.forEach($scope.vm.form.attachedFiles, function (attachedFile) { - if ($scope.vm.form.description.indexOf(attachedFile.path) !== -1) { - attachedFileIds.push(attachedFile.id); - } - }); - - return attachedFileIds; - })(), startCompleteDateRange : $scope.vm.form.startCompleteDateRange, issueCustomFields : (function () { // �씠�뒋�뿉�꽌 �궗�슜�릺�뒗 �궗�슜�옄 �젙�쓽 �븘�뱶 diff --git a/src/main/webapp/scripts/app/project/projectAdd.controller.js b/src/main/webapp/scripts/app/project/projectAdd.controller.js index aed7636..b1ba192 100644 --- a/src/main/webapp/scripts/app/project/projectAdd.controller.js +++ b/src/main/webapp/scripts/app/project/projectAdd.controller.js @@ -74,10 +74,6 @@ return true; } - if (!$rootScope.isDefined($scope.vm.form.startEndDateRange)) { - return true; - } - return false; } diff --git a/src/main/webapp/scripts/app/project/projectModify.controller.js b/src/main/webapp/scripts/app/project/projectModify.controller.js index 3b22844..57cc6ce 100644 --- a/src/main/webapp/scripts/app/project/projectModify.controller.js +++ b/src/main/webapp/scripts/app/project/projectModify.controller.js @@ -100,15 +100,9 @@ return true; } - if ($scope.vm.form.startEndDateRange == "") { - return true; - } - if ($scope.vm.form.managers.length < 1) { return true; } - - return false; } diff --git a/src/main/webapp/scripts/components/issueTableConfig/issueTableConfig.service.js b/src/main/webapp/scripts/components/issueTableConfig/issueTableConfig.service.js index 45f7c99..9310243 100644 --- a/src/main/webapp/scripts/components/issueTableConfig/issueTableConfig.service.js +++ b/src/main/webapp/scripts/components/issueTableConfig/issueTableConfig.service.js @@ -17,6 +17,20 @@ $log.debug("�씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 �벑濡� : ", response); return response; }); + }, + + addRelation : function (conditions) { + return $http.post("issueTableConfig/relationAdd", conditions).then(function (response) { + $log.debug("�뿰愿� �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 �벑濡� : ", response); + return response; + }); + }, + + addDown : function (conditions) { + return $http.post("issueTableConfig/downAdd", conditions).then(function (response) { + $log.debug("�븯�쐞 �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 �벑濡� : ", response); + return response; + }); } } } diff --git a/src/main/webapp/scripts/main.js b/src/main/webapp/scripts/main.js index 8b1694c..4e22f59 100644 --- a/src/main/webapp/scripts/main.js +++ b/src/main/webapp/scripts/main.js @@ -184,6 +184,8 @@ 'issueImportExcelController' : 'app/issue/issueImportExcel.controller', // �씠�뒋 �뿊�� ���웾 import 'issueModifyStatusController' : 'app/issue/issueModifyStatus.controller', // �씠�뒋 �떎以� �긽�깭 蹂�寃� 而⑦듃濡ㅻ윭 'issueAddTableConfigController' : 'app/issue/issueAddTableConfig.controller', // �씠�뒋 �뀒�씠釉� �꽕�젙 而⑦듃濡ㅻ윭 + 'issueAddRelationTableConfigController' : 'app/issue/issueAddRelationTableConfig.controller', // �씠�뒋 �뀒�씠釉� �꽕�젙 而⑦듃濡ㅻ윭 + 'issueAddDownTableConfigController' : 'app/issue/issueAddDownTableConfig.controller', // �씠�뒋 �뀒�씠釉� �꽕�젙 而⑦듃濡ㅻ윭 'issueSendMailController' : 'app/issue/issueSendMail.controller', // �씠�뒋 �씠硫붿씪 諛쒖넚 而⑦듃濡ㅻ윭 'issueVersionViewController' : 'app/issue/issueVersionView.controller', // �씠�뒋 踰꾩쟾 �솗�씤 而⑦듃濡ㅻ윭 'issueReservationController' : 'app/issue/issueReservation.controller', // �씠�뒋 諛쒖깮 �삁�빟 而⑦듃濡ㅻ윭 diff --git a/src/main/webapp/views/issue/issueDetail.html b/src/main/webapp/views/issue/issueDetail.html index 3fe8695..5385b12 100644 --- a/src/main/webapp/views/issue/issueDetail.html +++ b/src/main/webapp/views/issue/issueDetail.html @@ -376,36 +376,44 @@ </div> </div> + <!-- �궗�슜�옄 �젙�쓽 �븘�뱶 --> +<!-- <div class="row">--> +<!-- <div class="col-md-4" ng-repeat="issueCustomField in vm.viewer.issueCustomFields">--> +<!-- <label class="issue-detail-label">{{::issueCustomField.customFieldVo.name}}</label>--> - <div class="row"> - <div class="col-md-4" ng-repeat="issueCustomField in vm.viewer.issueCustomFields"> - <label class="issue-detail-label">{{::issueCustomField.customFieldVo.name}}</label> +<!-- <div ng-switch on="issueCustomField.customFieldVo.customFieldType">--> +<!-- <!– 湲곕낯 �엯�젰 –>--> +<!-- <div ng-switch-when="INPUT" class="form-group">--> +<!-- <!– �씫湲� 紐⑤뱶 –>--> +<!-- <span class="issue-detail-word-break">{{::issueCustomField.useValues}}</span>--> +<!-- <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span>--> +<!-- </div>--> - <div ng-switch on="issueCustomField.customFieldVo.customFieldType"> - <!-- 湲곕낯 �엯�젰 --> - <div ng-switch-when="INPUT" class="form-group"> - <!-- �씫湲� 紐⑤뱶 --> - <span class="issue-detail-word-break">{{::issueCustomField.useValues}}</span> - <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span> - </div> +<!-- <!– �떒�씪 ���젆�듃 –>--> +<!-- <div ng-switch-when="SINGLE_SELECT" class="form-group">--> +<!-- <span class="issue-detail-word-break">{{::issueCustomField.useValues}}</span>--> +<!-- <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span>--> +<!-- </div>--> - <!-- �떒�씪 ���젆�듃 --> - <div ng-switch-when="SINGLE_SELECT" class="form-group"> - <span class="issue-detail-word-break">{{::issueCustomField.useValues}}</span> - <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span> - </div> +<!-- <!– 硫��떚 ���젆�듃 –>--> +<!-- <div ng-switch-when="MULTI_SELECT" class="form-group">--> +<!-- <span class="issue-detail-word-break"--> +<!-- ng-repeat="useValue in issueCustomField.useValues">{{::useValue.value}}, </span>--> +<!-- <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span>--> +<!-- </div>--> +<!-- </div>--> +<!-- </div>--> +<!-- </div>--> - <!-- 硫��떚 ���젆�듃 --> - <div ng-switch-when="MULTI_SELECT" class="form-group"> - <span class="issue-detail-word-break" - ng-repeat="useValue in issueCustomField.useValues">{{::useValue.value}}, </span> - <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span> - </div> - </div> + <div class="row mt-30"> + <div class="col-md-10"> + <span class="info_font h3" translate="issue.relationIssue">�뿰愿� �씠�뒋</span> + </div> + <div class="col-md-1"> + <button class="btn btn-darkgrey offset-12" ng-click="fn.addRelationIssueTableConfig()" type="button"><span translate="issue.settingTableDisplay">�뀒�씠釉� �몴�떆 �꽕�젙</span></button> </div> </div> - <h6 class="todo-content-subheader mt-20" translate="issue.relationIssue">�뿰愿� �씪媛�</h6> <!-- �뀒�씠釉� --> <div class="mt-10 issue-detail-word-break width-100"> <js-table data="vm.viewer.issueRelationVos" table-configs="vm.relTableConfigs" @@ -444,7 +452,15 @@ </div> </div> - <h6 class="todo-content-subheader mt-20" translate="issue.downIssue">�븯�쐞 �씪媛�</h6> + <div class="row mt-30"> + <div class="col-md-10"> + <span class="info_font h3" translate="issue.downIssue">�븯�쐞 �씠�뒋</span> + </div> + <div class="col-md-1"> + <button class="btn btn-darkgrey offset-12" ng-click="fn.addDownIssueTableConfig()" type="button"><span translate="issue.settingTableDisplay">�뀒�씠釉� �몴�떆 �꽕�젙</span></button> + </div> + </div> + <!-- �뀒�씠釉� --> <div class="mt-10 issue-detail-word-break width-100"> <js-table data="vm.viewer.issueDownVos" table-configs="vm.downTableConfigs" @@ -472,7 +488,7 @@ </div> </div> - <h6 class="todo-content-subheader mt-20" translate="common.content">�궡�슜</h6> + <h6 class="todo-content-subheader mt-30" translate="common.content">�궡�슜</h6> <div class="box mt-10 issue-detail-word-break width-100" > <div ng-bind-html="$root.$sce.trustAsHtml(vm.viewer.description)"></div> <span class="fc-grey" ng-if="!$root.isDefined(vm.viewer.description)" translate="common.noContent"> @@ -664,6 +680,9 @@ translate="common.noRecord"> 湲곕줉�씠 �뾾�뒿�땲�떎. </div> + <div> + {{vm.viewer.issueHistoryVos}} + </div> <div class="activity-item" ng-repeat="issueHistory in vm.viewer.issueHistoryVos"> diff --git a/src/main/webapp/views/issue/issueDownTableConfig.html b/src/main/webapp/views/issue/issueDownTableConfig.html new file mode 100644 index 0000000..81506ba --- /dev/null +++ b/src/main/webapp/views/issue/issueDownTableConfig.html @@ -0,0 +1,95 @@ +<div class="formModal"> + <div class="modal-header faded smaller"> + <div class="modal-title"> + <strong translate="issue.setIssueTableDisplay">�씠�뒋 �뀒�씠釉� �몴�떆 �꽕�젙</strong> + </div> + <button aria-label="Close" class="close" type="button" ng-click="fn.cancel()"> + <span aria-hidden="true"> ×</span> + </button> + </div> + + <div class="modal-body"> + <form role="form" name="issueTableConfigForm"> + <table class="table table-dash table-lightborder table-layout-fixed"> + <thead> + <tr> + <th class="text-center width-80-p"> + <span translate="issue.columnName">而щ읆紐�</span> + </th> + <th class="text-center width-80-p"> + <span translate="issue.area">�꼻�씠</span> + </th> + <th class="text-center width-80-p"> + <span translate="issue.displayed">�몴�떆 �뿬遺�</span> + </th> + <th class="text-center width-40-p"> + <span translate="issue.sequence">�닚�꽌</span> + </th> + </tr> + </thead> + <tbody> + <tr> + <td class="text-center"> + <span class="bold" translate="issue.issueTitle">�씠�뒋 �젣紐�</span> + </td> + <td class="text-center" colspan="3"> + <span class="text-danger bold" translate="issue.cannotChangedIssueTitle">�씠�뒋 �젣紐⑹� 蹂�寃쏀븷 �닔 �뾾�뒿�땲�떎.</span> + </td> + </tr> + <tr ng-repeat="issueTableConfig in vm.issueTableConfigs"> + <td class="text-center"> + <span class="bold">{{issueTableConfig.name}}</span> + </td> + <td class="text-center"> + <select class="form-control" ng-model="issueTableConfig.width"> + <option>�꽑�깮�븯�꽭�슂.</option> + <option value="width-20-p">20px</option> + <option value="width-30-p">30px</option> + <option value="width-40-p">40px</option> + <option value="width-50-p">50px</option> + <option value="width-60-p">60px</option> + <option value="width-70-p">70px</option> + <option value="width-80-p">80px</option> + <option value="width-90-p">90px</option> + <option value="width-100-p">100px</option> + <option value="width-110-p">110px</option> + <option value="width-120-p">120px</option> + <option value="width-130-p">130px</option> + <option value="width-140-p">140px</option> + <option value="width-150-p">150px</option> + <option value="width-160-p">160px</option> + <option value="width-170-p">170px</option> + <option value="width-180-p">180px</option> + <option value="width-190-p">190px</option> + <option value="width-200-p">200px</option> + <option value="width-220-p">220px</option> + <option value="width-240-p">240px</option> + <option value="width-260-p">260px</option> + <option value="width-280-p">280px</option> + <option value="width-300-p">300px</option> + <option value="width-20">20%</option> + <option value="width-30">30%</option> + <option value="width-40">40%</option> + <option value="width-50">50%</option> + </select> + </td> + <td class="text-center"> + <label class='switch'><input type='checkbox' ng-model='issueTableConfig.display'><span class='slider round'></span></label> + </td> + <td class="text-center"> + <input type="text" class="form-control" ng-model="issueTableConfig.position" maxlength="2" input-regex="[^0-9]"> + </td> + </tr> + </tbody> + </table> + </form> + </div> + + <div class="modal-footer buttons-on-right"> + <button type="button" class="btn btn-md btn-grey" ng-click="fn.cancel()"><span translate="common.close">�떕湲�</span></button> + <button type="button" class="btn btn-md btn-primary bold" + ng-disabled="fn.formCheck(issueTableConfigForm.$invalid)" + ng-click="fn.formSubmit()"><span translate="common.save">���옣</span> + </button> + </div> +</div> diff --git a/src/main/webapp/views/issue/issueListNormal.html b/src/main/webapp/views/issue/issueListNormal.html index b52df46..a85a020 100644 --- a/src/main/webapp/views/issue/issueListNormal.html +++ b/src/main/webapp/views/issue/issueListNormal.html @@ -186,12 +186,12 @@ <div class="col-lg-3"> <div class="form-group"> <label> <span translate="common.assigneeTeam">�떞�떦遺��꽌</span></label> - <js-autocomplete-multi data-input-name="users" - selected-model="vm.users" - search="vm.userName" + <js-autocomplete-multi data-input-name="departments" + selected-model="vm.departments" + search="vm.departmentName" input-disabled="false" - source="fn.getUserList(vm.userName, vm.users)" - translation-texts="{ count : 'common.userNum', empty : 'common.emptyUser' }" + source="fn.getUserDepartmentList(vm.departmentName, vm.departments)" + translation-texts="{ count : 'common.userNum', empty : 'common.emptyDepartment' }" extra-settings="{ displayProp : 'byName' , idProp : 'id', widthable : false, width : '', imageable : true, imagePathProp : 'profile', type : 'user', maxlength : 100 }"> </js-autocomplete-multi> </div> diff --git a/src/main/webapp/views/issue/issueRelationTableConfig.html b/src/main/webapp/views/issue/issueRelationTableConfig.html new file mode 100644 index 0000000..81506ba --- /dev/null +++ b/src/main/webapp/views/issue/issueRelationTableConfig.html @@ -0,0 +1,95 @@ +<div class="formModal"> + <div class="modal-header faded smaller"> + <div class="modal-title"> + <strong translate="issue.setIssueTableDisplay">�씠�뒋 �뀒�씠釉� �몴�떆 �꽕�젙</strong> + </div> + <button aria-label="Close" class="close" type="button" ng-click="fn.cancel()"> + <span aria-hidden="true"> ×</span> + </button> + </div> + + <div class="modal-body"> + <form role="form" name="issueTableConfigForm"> + <table class="table table-dash table-lightborder table-layout-fixed"> + <thead> + <tr> + <th class="text-center width-80-p"> + <span translate="issue.columnName">而щ읆紐�</span> + </th> + <th class="text-center width-80-p"> + <span translate="issue.area">�꼻�씠</span> + </th> + <th class="text-center width-80-p"> + <span translate="issue.displayed">�몴�떆 �뿬遺�</span> + </th> + <th class="text-center width-40-p"> + <span translate="issue.sequence">�닚�꽌</span> + </th> + </tr> + </thead> + <tbody> + <tr> + <td class="text-center"> + <span class="bold" translate="issue.issueTitle">�씠�뒋 �젣紐�</span> + </td> + <td class="text-center" colspan="3"> + <span class="text-danger bold" translate="issue.cannotChangedIssueTitle">�씠�뒋 �젣紐⑹� 蹂�寃쏀븷 �닔 �뾾�뒿�땲�떎.</span> + </td> + </tr> + <tr ng-repeat="issueTableConfig in vm.issueTableConfigs"> + <td class="text-center"> + <span class="bold">{{issueTableConfig.name}}</span> + </td> + <td class="text-center"> + <select class="form-control" ng-model="issueTableConfig.width"> + <option>�꽑�깮�븯�꽭�슂.</option> + <option value="width-20-p">20px</option> + <option value="width-30-p">30px</option> + <option value="width-40-p">40px</option> + <option value="width-50-p">50px</option> + <option value="width-60-p">60px</option> + <option value="width-70-p">70px</option> + <option value="width-80-p">80px</option> + <option value="width-90-p">90px</option> + <option value="width-100-p">100px</option> + <option value="width-110-p">110px</option> + <option value="width-120-p">120px</option> + <option value="width-130-p">130px</option> + <option value="width-140-p">140px</option> + <option value="width-150-p">150px</option> + <option value="width-160-p">160px</option> + <option value="width-170-p">170px</option> + <option value="width-180-p">180px</option> + <option value="width-190-p">190px</option> + <option value="width-200-p">200px</option> + <option value="width-220-p">220px</option> + <option value="width-240-p">240px</option> + <option value="width-260-p">260px</option> + <option value="width-280-p">280px</option> + <option value="width-300-p">300px</option> + <option value="width-20">20%</option> + <option value="width-30">30%</option> + <option value="width-40">40%</option> + <option value="width-50">50%</option> + </select> + </td> + <td class="text-center"> + <label class='switch'><input type='checkbox' ng-model='issueTableConfig.display'><span class='slider round'></span></label> + </td> + <td class="text-center"> + <input type="text" class="form-control" ng-model="issueTableConfig.position" maxlength="2" input-regex="[^0-9]"> + </td> + </tr> + </tbody> + </table> + </form> + </div> + + <div class="modal-footer buttons-on-right"> + <button type="button" class="btn btn-md btn-grey" ng-click="fn.cancel()"><span translate="common.close">�떕湲�</span></button> + <button type="button" class="btn btn-md btn-primary bold" + ng-disabled="fn.formCheck(issueTableConfigForm.$invalid)" + ng-click="fn.formSubmit()"><span translate="common.save">���옣</span> + </button> + </div> +</div> diff --git a/src/main/webapp/views/project/projectAdd.html b/src/main/webapp/views/project/projectAdd.html index 4b51bed..82b6cdc 100644 --- a/src/main/webapp/views/project/projectAdd.html +++ b/src/main/webapp/views/project/projectAdd.html @@ -68,13 +68,14 @@ <div class="col-lg-6"> <div class="form-group"> <label><span translate="common.period">湲곌컙</span></label> - <input type="text" + <input tabindex="-1" + type="text" class="form-control input-readonly" + placeholder="{{'issue.clickToSelectDate' | translate}}" ng-model="vm.form.startEndDateRange" modal-form-auto-scroll + date-format="YYYY-MM-DD" parent-el="'#createdWidget'" - range-type="date" - onfocus="this.blur()" date-range-picker> <div class="row"> <div class="col-xs-12"> diff --git a/src/main/webapp/views/project/projectModify.html b/src/main/webapp/views/project/projectModify.html index e7842a5..f5d03ce 100644 --- a/src/main/webapp/views/project/projectModify.html +++ b/src/main/webapp/views/project/projectModify.html @@ -34,14 +34,14 @@ <div class="col-lg-6"> <div class="form-group"> <label for="projectModifyForm2"><span translate="common.period">湲곌컙</span></label> - <input id="projectModifyForm2" + <input tabindex="-1" type="text" class="form-control input-readonly" + placeholder="{{'issue.clickToSelectDate' | translate}}" ng-model="vm.form.startEndDateRange" modal-form-auto-scroll + date-format="YYYY-MM-DD" parent-el="'#createdWidget'" - range-type="date" - onfocus="this.blur()" date-range-picker> <div class="row"> <div class="col-xs-12"> -- Gitblit v1.8.0