From f78230b5d126e7fd9468ed7ae57e30caddfa158d Mon Sep 17 00:00:00 2001 From: nearbeach Date: Mon, 20 May 2024 21:12:59 +1000 Subject: [PATCH 1/4] Bugfix - nearbeach-1383 Can't drag the dates into the initial day --- .../gantt_chart/GanttInformation.vue | 42 ++++++++++++++++--- .../components/gantt_chart/RenderGanttRow.vue | 14 ++++++- .../components/sprints/SprintInformation.vue | 10 ++++- src/sass/components/_gantt_chart.scss | 5 ++- 4 files changed, 59 insertions(+), 12 deletions(-) diff --git a/src/js/components/gantt_chart/GanttInformation.vue b/src/js/components/gantt_chart/GanttInformation.vue index b5b119eb9..4acf95463 100644 --- a/src/js/components/gantt_chart/GanttInformation.vue +++ b/src/js/components/gantt_chart/GanttInformation.vue @@ -240,8 +240,6 @@ export default { //Get the number of hours from this const delta = Math.floor((client_x_final - this.mdClientXInitial) / 2) * (60 * 60 * 1000); - - //Depending on the column, depends what functionality we are updating. switch (this.mdColumn) { case "end": @@ -275,7 +273,15 @@ export default { const end_date = new Date(this.mdEndDateInitial + delta); //Do nothing if the end date is past the sprint's end date - if (this.mdEndDateInitial + delta > new Date(this.ganttEndDate).getTime()) return; + const g_e_d = DateTime.fromISO( + this.ganttEndDate + ).set({ + hour: 23, + minute: 59, + second: 59, + millisecond: 999, + }); + if (this.mdEndDateInitial + delta > g_e_d.ts) return; //Do nothing if the end date is less than the start date if (this.mdEndDateInitial + delta <= this.mdStartDateInitial) return; @@ -326,10 +332,26 @@ export default { }, updateMiddle(delta) { //Do nothing if the start date is past the sprint's start date - if (this.mdStartDateInitial + delta < new Date(this.ganttStartDate).getTime()) return; + const g_s_d = DateTime.fromISO( + this.ganttStartDate + ).set({ + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }); + if (this.mdStartDateInitial + delta < g_s_d.ts) return; //Do nothing if the end date is past the sprint's end date - if (this.mdEndDateInitial + delta > new Date(this.ganttEndDate).getTime()) return; + const g_e_d = DateTime.fromISO( + this.ganttEndDate + ).set({ + hour: 23, + minute: 59, + second: 59, + millisecond: 999, + }); + if (this.mdEndDateInitial + delta > g_e_d.ts) return; //Apply the delta to the dates const end_date = new Date(this.mdEndDateInitial + delta); @@ -354,7 +376,15 @@ export default { const start_date = new Date(this.mdStartDateInitial + delta); //If the start date is less than the gantt start date - do nothing - if (this.mdStartDateInitial + delta < new Date(this.ganttStartDate).getTime()) return; + const g_s_d = DateTime.fromISO( + this.ganttStartDate + ).set({ + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }); + if (this.mdStartDateInitial + delta < g_s_d.ts) return; //If the start date is greater or equal to the end date. Do nothing if (this.mdStartDateInitial + delta >= this.mdEndDateInitial) return; diff --git a/src/js/components/gantt_chart/RenderGanttRow.vue b/src/js/components/gantt_chart/RenderGanttRow.vue index 931ad66f2..b19ec507b 100644 --- a/src/js/components/gantt_chart/RenderGanttRow.vue +++ b/src/js/components/gantt_chart/RenderGanttRow.vue @@ -72,6 +72,9 @@ import { mapGetters } from "vuex"; //Components import { NDatePicker, NSelect } from "naive-ui"; +//Datetime +import { DateTime } from "luxon"; + export default { name: "RenderGanttRow", props: { @@ -150,9 +153,16 @@ export default { start_date = this.startDateGantt; } - if (end_date > this.endDateGantt) { + //Adjust the end date to the END of that particular day + const g_e_d = DateTime.fromMillis(this.endDateGantt).set({ + hour: 23, + minute: 59, + second: 59, + millisecond: 999, + }); + if (end_date > g_e_d.ts) { //The end date of the bar, falls outside the timeframe. Adjust to the end of the gantt chart - end_date = this.endDateGantt; + end_date = g_e_d.ts; } //Calculate the delta (aka number of days) diff --git a/src/js/components/sprints/SprintInformation.vue b/src/js/components/sprints/SprintInformation.vue index cf476397b..6911cf855 100644 --- a/src/js/components/sprints/SprintInformation.vue +++ b/src/js/components/sprints/SprintInformation.vue @@ -10,12 +10,16 @@
- Finish Date: {{sprintResults[0].sprint_end_date}} + Finish Date: + {{getNiceDatetime(sprintResults[0].sprint_end_date)}}
- Start Date: {{sprintResults[0].sprint_start_date}} + Start Date: + {{getNiceDatetime(sprintResults[0].sprint_start_date)}}
+ End Date: + {{getNiceDatetime(sprintResults[0].sprint_end_date)}}
Sprint Status: {{ sprintResults[0].sprint_status }} @@ -72,6 +76,7 @@ \ No newline at end of file From 01274c17c4741da21c509fe272d770e362834d0c Mon Sep 17 00:00:00 2001 From: nearbeach Date: Wed, 22 May 2024 18:53:30 +1000 Subject: [PATCH 3/4] Bugfix - nearbeach-1385 Can not remove users from Kanban Cards --- src/js/components/card_information/CardUsers.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/components/card_information/CardUsers.vue b/src/js/components/card_information/CardUsers.vue index 859d3742f..56e718c68 100644 --- a/src/js/components/card_information/CardUsers.vue +++ b/src/js/components/card_information/CardUsers.vue @@ -74,7 +74,7 @@ export default { //Axios this.axios .post( - `${this.rootUrl}object_data/kanban_card/${this.locationId}/remove_user/`, + `${this.rootUrl}object_data/kanban_card/${this.cardId}/remove_user/`, data_to_send ) .then((response) => { From a84aad6bdd5f3e0589b3ee2eb61127dcad0af01a Mon Sep 17 00:00:00 2001 From: nearbeach Date: Wed, 22 May 2024 18:54:11 +1000 Subject: [PATCH 4/4] Release 0.31.25 --- NearBeach/static/NearBeach/742.min.js | 1 + NearBeach/static/NearBeach/742.min.js.gz | Bin 0 -> 3817 bytes NearBeach/static/NearBeach/NearBeach.min.js | 2 +- .../static/NearBeach/NearBeach.min.js.gz | Bin 150423 -> 150241 bytes .../static/NearBeach/gantt-information.min.js | 2 +- .../NearBeach/gantt-information.min.js.gz | Bin 3593 -> 3615 bytes .../NearBeach/kanban-group-permissions.min.js | 2 +- .../kanban-group-permissions.min.js.gz | Bin 790 -> 789 bytes .../NearBeach/kanban-information.min.js | 2 +- .../NearBeach/kanban-information.min.js.gz | Bin 13140 -> 13331 bytes .../static/NearBeach/parent-modules.min.js | 2 +- .../static/NearBeach/parent-modules.min.js.gz | Bin 13187 -> 13179 bytes NearBeach/static/NearBeach/rfc-modules.min.js | 2 +- .../static/NearBeach/rfc-modules.min.js.gz | Bin 6541 -> 6542 bytes ...ub_modules_GroupsAndUsersModule_vue.min.js | 308 +++++++++++++----- ...modules_GroupsAndUsersModule_vue.min.js.gz | Bin 22174 -> 23363 bytes 16 files changed, 238 insertions(+), 83 deletions(-) create mode 100644 NearBeach/static/NearBeach/742.min.js create mode 100644 NearBeach/static/NearBeach/742.min.js.gz diff --git a/NearBeach/static/NearBeach/742.min.js b/NearBeach/static/NearBeach/742.min.js new file mode 100644 index 000000000..d95e16f84 --- /dev/null +++ b/NearBeach/static/NearBeach/742.min.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknearbeach=self.webpackChunknearbeach||[]).push([[742],{742:(e,t,s)=>{s.d(t,{A:()=>Te});var o=s(641),a=s(33);const r={class:"text-instructions"},i={key:0,class:"alert alert-info"},d={key:1,class:"alert alert-dark"},l={key:2,class:"group-card-list"},n={class:"group-card--details"},u={key:0,class:"group-card--remove"},c={key:0,class:"group-card"},p=[(0,o.Lk)("div",{class:"group-card--details"},"++ Adding New Group ++",-1)],m=(0,o.Lk)("div",{class:"spacer"},null,-1),g={class:"row submit-row"},h={class:"col-md-12"},b=(0,o.Lk)("hr",null,null,-1),L={class:"text-instructions"},k=(0,o.Lk)("div",{class:"spacer"},null,-1),v={key:3,class:"row submit-row"},U={class:"col-md-12"};var y=s(2243),f=s(2321),G=s(9336);const _={class:"modal fade",id:"addGroupModal",tabindex:"-1","aria-labelledby":"exampleModalLabel","aria-hidden":"true"},C={class:"modal-dialog modal-lg"},A={class:"modal-content"},D={class:"modal-header"},j=(0,o.Lk)("button",{type:"button",class:"btn-close","data-bs-dismiss":"modal","aria-label":"Close",id:"addGroupCloseButton"},[(0,o.Lk)("span",{"aria-hidden":"true"})],-1),w={class:"modal-body"},S={key:0,class:"row"},I={class:"col-md-4"},$=(0,o.Lk)("strong",null,"Add Groups",-1),E={class:"text-instructions"},x={class:"text-instructions"},F={class:"col-md-8"},M={key:1,class:"row"},T=(0,o.Lk)("div",{class:"col-md-6"},[(0,o.Lk)("strong",null,"Sorry - no results"),(0,o.Lk)("p",{class:"text-instructions"}," This could be because "),(0,o.Lk)("ul",{class:"text-instructions"},[(0,o.Lk)("li",null,"There are no more groups left to add")])],-1),X={class:"col-md-6 no-search"},B=["src"],R={class:"modal-footer"},N=(0,o.Lk)("button",{type:"button",class:"btn btn-secondary","data-bs-dismiss":"modal"}," Close ",-1),O=["disabled"];var Q=s(1080),P=s(2124);const W={name:"AddGroupWizard",components:{Icon:f.In,NSelect:Q.A},computed:{...(0,P.L8)({destination:"getDestination",locationId:"getLocationId",potentialGroupList:"getPotentialGroupList",rootUrl:"getRootUrl",staticUrl:"getStaticUrl"})},watch:{potentialGroupList(e){void 0!==e&&(this.groupFixList=e.map((e=>({value:e.group_id,label:e.group_name}))))}},mixins:[y.A],data:()=>({groupFixList:[],groupModel:[]}),methods:{addGroup(){this.$store.commit("updateAddingGroupStatus",{addingGroupStatus:!0});const e=new FormData;this.groupModel.forEach((t=>{e.append("group_list",t)})),this.axios.post(`${this.rootUrl}object_data/${this.destination}/${this.locationId}/add_group/`,e).then((e=>{this.$store.commit("updateGroupsAndUsers",{objectGroupList:e.data.object_group_list,objectUserList:e.data.object_user_list,potentialGroupList:e.data.potential_group_list,potentialUserList:e.data.potential_user_list}),this.$store.commit("updateAddingGroupStatus",{addingGroupStatus:!1}),this.groupModel=[],document.getElementById("addGroupCloseButton").click()})).catch((e=>{this.$store.dispatch("newToast",{header:`Error adding group to ${this.destination}`,message:`Sorry, we could not add the group to the ${this.destination}. Error -> ${e}`,extra_classes:"bd-danger",delay:0})}))}}};var z=s(6262);const K=(0,z.A)(W,[["render",function(e,t,s,r,i,d){const l=(0,o.g2)("Icon"),n=(0,o.g2)("n-select");return(0,o.uX)(),(0,o.CE)("div",_,[(0,o.Lk)("div",C,[(0,o.Lk)("div",A,[(0,o.Lk)("div",D,[(0,o.Lk)("h2",null,[(0,o.bF)(l,{icon:e.icons.groupPresentation},null,8,["icon"]),(0,o.eW)(" Add Group Wizard ")]),j]),(0,o.Lk)("div",w,[i.groupFixList.length>0?((0,o.uX)(),(0,o.CE)("div",S,[(0,o.Lk)("div",I,[$,(0,o.Lk)("p",E," Use the following multiple select to select which groups you want to add to this "+(0,a.toDisplayString)(e.destination)+". ",1),(0,o.Lk)("p",x," Please note: A user's group has to be added to the "+(0,a.toDisplayString)(e.destination)+" before the user can be added. ",1)]),(0,o.Lk)("div",F,[(0,o.bF)(n,{options:i.groupFixList,value:i.groupModel,"onUpdate:value":t[0]||(t[0]=e=>i.groupModel=e),multiple:""},null,8,["options","value"])])])):((0,o.uX)(),(0,o.CE)("div",M,[T,(0,o.Lk)("div",X,[(0,o.Lk)("img",{src:`${e.staticUrl}NearBeach/images/placeholder/questions.svg`,alt:"Sorry - there are no results"},null,8,B)])]))]),(0,o.Lk)("div",R,[N,(0,o.Lk)("button",{type:"button",class:"btn btn-primary",disabled:0==i.groupModel.length,onClick:t[1]||(t[1]=(...e)=>d.addGroup&&d.addGroup(...e))}," Add Group(s) ",8,O)])])])])}]]),q={class:"modal fade",id:"addUserModal",tabindex:"-1","aria-labelledby":"exampleModalLabel","aria-hidden":"true"},Y={class:"modal-dialog modal-lg"},H={class:"modal-content"},J={class:"modal-header"},V=(0,o.Lk)("button",{type:"button",class:"btn-close","data-bs-dismiss":"modal","aria-label":"Close",id:"addUserCloseButton"},[(0,o.Lk)("span",{"aria-hidden":"true"})],-1),Z={class:"modal-body"},ee={key:0,class:"row"},te={class:"col-md-4"},se=(0,o.Lk)("strong",null,"Add Users",-1),oe={class:"text-instructions"},ae={class:"text-instructions"},re={class:"col-md-8"},ie={key:1,class:"row"},de={class:"col-md-6"},le=(0,o.Lk)("strong",null,"Sorry - no results",-1),ne=(0,o.Lk)("p",{class:"text-instructions"}," This could be because ",-1),ue={class:"text-instructions"},ce=(0,o.Lk)("li",null,"There are no more users left to add",-1),pe={class:"col-md-6 no-search"},me=["src"],ge={class:"modal-footer"},he=(0,o.Lk)("button",{type:"button",class:"btn btn-secondary","data-bs-dismiss":"modal"}," Close ",-1),be=["disabled"],Le={name:"AddUserWizard",components:{Icon:f.In,NSelect:Q.A},mixins:[y.A],computed:{...(0,P.L8)({destination:"getDestination",locationId:"getLocationId",potentialUserList:"getPotentialUserList",rootUrl:"getRootUrl",staticURL:"getStaticUrl",userLevel:"getUserLevel"})},data:()=>({userFixList:[],userModel:[]}),watch:{potentialUserList(e){void 0!==e&&(this.userFixList=e.map((e=>({value:e.id,label:`${e.username}: ${e.first_name} ${e.last_name}`}))))}},methods:{addUser(){this.$store.commit("updateAddingUserStatus",{addingUserStatus:!0});const e=new FormData;this.userModel.forEach((t=>{e.append("user_list",t)})),this.axios.post(`${this.rootUrl}object_data/${this.destination}/${this.locationId}/add_user/`,e).then((e=>{document.getElementById("addUserCloseButton").click(),this.userModel=[],this.$store.commit("updateGroupsAndUsers",{objectGroupList:e.data.object_group_list,objectUserList:e.data.object_user_list,potentialGroupList:e.data.potential_group_list,potentialUserList:e.data.potential_user_list}),this.$store.commit("updateAddingUserStatus",{addingUserStatus:!1})})).catch((e=>{this.$store.dispatch("newToast",{header:"Failed to add user",message:`Failed to add user. Error -> ${e}`,extra_classes:"bg-danger",delay:0})}))}}},ke=(0,z.A)(Le,[["render",function(e,t,s,r,i,d){const l=(0,o.g2)("Icon"),n=(0,o.g2)("n-select");return(0,o.uX)(),(0,o.CE)("div",q,[(0,o.Lk)("div",Y,[(0,o.Lk)("div",H,[(0,o.Lk)("div",J,[(0,o.Lk)("h2",null,[(0,o.bF)(l,{icon:e.icons.userIcon},null,8,["icon"]),(0,o.eW)(" Add User Wizard ")]),V]),(0,o.Lk)("div",Z,[i.userFixList.length>0?((0,o.uX)(),(0,o.CE)("div",ee,[(0,o.Lk)("div",te,[se,(0,o.Lk)("p",oe," Use the following multiple select to select which users you want to add to this "+(0,a.toDisplayString)(e.destination)+". ",1),(0,o.Lk)("p",ae," Please note: A user's group has to be added to the "+(0,a.toDisplayString)(e.destination)+" before the user can be added. ",1)]),(0,o.Lk)("div",re,[(0,o.bF)(n,{options:i.userFixList,value:i.userModel,"onUpdate:value":t[0]||(t[0]=e=>i.userModel=e),multiple:""},null,8,["options","value"])])])):((0,o.uX)(),(0,o.CE)("div",ie,[(0,o.Lk)("div",de,[le,ne,(0,o.Lk)("ul",ue,[ce,(0,o.Lk)("li",null," The user you are after is in a group not current added to this "+(0,a.toDisplayString)(e.destination),1)])]),(0,o.Lk)("div",pe,[(0,o.Lk)("img",{src:`${e.staticURL}NearBeach/images/placeholder/questions.svg`,alt:"Sorry - there are no results"},null,8,me)])]))]),(0,o.Lk)("div",ge,[he,(0,o.Lk)("button",{type:"button",class:"btn btn-primary",disabled:0===i.userModel.length,onClick:t[1]||(t[1]=(...e)=>d.addUser&&d.addUser(...e))}," Add User(s) ",8,be)])])])])}]]),ve={class:"modal fade",id:"confirmGroupDeleteModal",tabindex:"-1","data-bs-backdrop":"static","data-bs-keyboard":"false","aria-labelledby":"confirmGroupDelete","aria-hidden":"true"},Ue={class:"modal-dialog"},ye={class:"modal-content"},fe=(0,o.Lk)("div",{class:"modal-header"},[(0,o.Lk)("h5",{class:"modal-title",id:"confirmGroupDelete"}," Please confirm Group Deletion "),(0,o.Q3)(" TASK INFORMATION "),(0,o.Lk)("button",{type:"button",class:"btn-close","data-bs-dismiss":"modal","aria-label":"Close",id:"confirmGroupDeleteButton"})],-1),Ge=(0,o.Lk)("div",{class:"modal-body"}," Are you sure you want to delete the Group from the object? ",-1),_e={class:"modal-footer"},Ce={name:"ConfirmGroupDelete",props:{groupId:{type:Number,default:0}},computed:{...(0,P.L8)({destination:"getDestination",locationId:"getLocationId",objectGroupList:"getObjectGroupList",rootUrl:"getRootUrl"})},methods:{deleteGroup(){this.$store.commit("updateGroupsAndUsers",{objectGroupList:this.objectGroupList.filter((e=>e.group_id!==this.groupId))});const e=new FormData;e.set("group_id",`${this.groupId}`),this.axios.post(`${this.rootUrl}object_data/${this.destination}/${this.locationId}/remove_group/`,e).then((e=>{this.$store.commit("updateGroupsAndUsers",{objectGroupList:e.data.object_group_list,objectUserList:e.data.object_user_list,potentialGroupList:e.data.potential_group_list,potentialUserList:e.data.potential_user_list})})).catch((e=>{this.$store.dispatch("newToast",{header:"Error removing group from object",message:`We encounted an error moving the group from the object. Error -> ${e}`,extra_classes:"bg-danger",delay:0})})),this.closeModal()},closeModal(){document.getElementById("confirmGroupDeleteButton").click()}}},Ae=(0,z.A)(Ce,[["render",function(e,t,s,a,r,i){return(0,o.uX)(),(0,o.CE)("div",ve,[(0,o.Lk)("div",Ue,[(0,o.Lk)("div",ye,[fe,Ge,(0,o.Lk)("div",_e,[(0,o.Lk)("button",{type:"button",class:"btn btn-secondary",onClick:t[0]||(t[0]=(...e)=>i.closeModal&&i.closeModal(...e))}," No "),(0,o.Lk)("button",{type:"button",class:"btn btn-primary",onClick:t[1]||(t[1]=(...e)=>i.deleteGroup&&i.deleteGroup(...e))}," Yes ")])])])])}]]),De={class:"modal fade",id:"confirmUserDeleteModal",tabindex:"-1","data-bs-backdrop":"static","data-bs-keyboard":"false","aria-labelledby":"confirmUserDelete","aria-hidden":"true"},je={class:"modal-dialog"},we={class:"modal-content"},Se=(0,o.Lk)("div",{class:"modal-header"},[(0,o.Lk)("h5",{class:"modal-title",id:"confirmUserDelete"}," Please confirm User Deletion "),(0,o.Q3)(" TASK INFORMATION "),(0,o.Lk)("button",{type:"button",class:"btn-close","data-bs-dismiss":"modal","aria-label":"Close",id:"confirmUserDeleteButton"})],-1),Ie=(0,o.Lk)("div",{class:"modal-body"}," Are you sure you want to delete the User from the object? ",-1),$e={class:"modal-footer"},Ee={name:"ConfirmUserDelete",props:{username:{type:String,default:""}},computed:{...(0,P.L8)({destination:"getDestination",locationId:"getLocationId",objectUserList:"getObjectUserList",rootUrl:"getRootUrl"})},methods:{deleteUser(){this.$store.commit("updateGroupsAndUsers",{objectUserList:this.objectUserList.filter((e=>e.username!==this.username))});const e=new FormData;e.set("username",this.username),this.axios.post(`${this.rootUrl}object_data/${this.destination}/${this.locationId}/remove_user/`,e).then((e=>{this.$store.commit("updateGroupsAndUsers",{objectGroupList:e.data.object_group_list,objectUserList:e.data.object_user_list,potentialGroupList:e.data.potential_group_list,potentialUserList:e.data.potential_user_list})})).catch((e=>{this.$store.dispatch("newToast",{header:"Error removing user from object",message:`We encounted an error moving the user from the object. Error -> ${e}`,extra_classes:"bg-danger",delay:0})})),this.closeModal()},closeModal(){document.getElementById("confirmUserDeleteButton").click()}}},xe=(0,z.A)(Ee,[["render",function(e,t,s,a,r,i){return(0,o.uX)(),(0,o.CE)("div",De,[(0,o.Lk)("div",je,[(0,o.Lk)("div",we,[Se,Ie,(0,o.Lk)("div",$e,[(0,o.Lk)("button",{type:"button",class:"btn btn-secondary",onClick:t[0]||(t[0]=(...e)=>i.closeModal&&i.closeModal(...e))}," No "),(0,o.Lk)("button",{type:"button",class:"btn btn-primary",onClick:t[1]||(t[1]=(...e)=>i.deleteUser&&i.deleteUser(...e))}," Yes ")])])])])}]]);var Fe=s(8072);const Me={name:"GroupsAndUsersModule",components:{AddGroupWizard:K,AddUserWizard:ke,ConfirmGroupDelete:Ae,ConfirmUserDelete:xe,Icon:f.In,RenderUserCardList:Fe.A},props:{isReadOnly:{type:Boolean,default:!1}},data:()=>({deleteGroupId:0,deleteUsername:"",destinationTitle:"",loadingData:!0}),computed:{...(0,P.L8)({addingGroupStatus:"getAddingGroupStatus",addingUserStatus:"getAddingUserStatus",destination:"getDestination",locationId:"getLocationId",objectGroupList:"getObjectGroupList",objectUserList:"getObjectUserList",rootUrl:"getRootUrl",staticUrl:"getStaticUrl",userLevel:"getUserLevel"})},mixins:[y.A],methods:{addNewGroup(){new G.aF(document.getElementById("addGroupModal")).show()},addNewUser(){new G.aF(document.getElementById("addUserModal")).show()},getGroupAndUserData(){this.axios.post(`${this.rootUrl}object_data/${this.destination}/${this.locationId}/group_and_user_data/`).then((e=>{this.$store.commit("updateGroupsAndUsers",{objectGroupList:e.data.object_group_list,objectUserList:e.data.object_user_list,potentialGroupList:e.data.potential_group_list,potentialUserList:e.data.potential_user_list}),this.loadingData=!1})).catch((e=>{this.$store.dispatch("newToast",{header:"Error fetching group and user data",message:`Sorry we could not get any group or user data. Error -> ${e}`,extra_classes:"bd-danger",delay:0})}))},removeGroup(e){this.deleteGroupId=e,new G.aF(document.getElementById("confirmGroupDeleteModal")).show()},removeUser(e){this.deleteUsername=e,new G.aF(document.getElementById("confirmUserDeleteModal")).show()}},mounted(){this.$nextTick((()=>{if(0===this.locationId)return void setTimeout((()=>{this.getGroupAndUserData()}),500);this.getGroupAndUserData();let e=this.destination;e=e.replaceAll("_"," "),this.destinationTitle=e.replace(/\w\S*/g,(e=>e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()))}))}},Te=(0,z.A)(Me,[["render",function(e,t,s,y,f,G){const _=(0,o.g2)("Icon"),C=(0,o.g2)("render-user-card-list"),A=(0,o.g2)("add-group-wizard"),D=(0,o.g2)("add-user-wizard"),j=(0,o.g2)("confirm-group-delete"),w=(0,o.g2)("confirm-user-delete");return(0,o.uX)(),(0,o.CE)("div",null,[(0,o.Q3)(" GROUPS "),(0,o.Lk)("h2",null,[(0,o.bF)(_,{icon:e.icons.groupPresentation},null,8,["icon"]),(0,o.eW)(" Groups ")]),(0,o.Lk)("p",r," The following list are all the Groups connected to this "+(0,a.toDisplayString)(f.destinationTitle)+". Users will have to be included in these groups to be added to this "+(0,a.toDisplayString)(f.destinationTitle),1),f.loadingData?((0,o.uX)(),(0,o.CE)("div",i," Currently loading group data. ")):0!==e.objectGroupList.length||e.addingGroupStatus?((0,o.uX)(),(0,o.CE)("div",l,[((0,o.uX)(!0),(0,o.CE)(o.FK,null,(0,o.pI)(e.objectGroupList,(t=>((0,o.uX)(),(0,o.CE)("div",{key:t.group_id,class:"group-card"},[(0,o.Lk)("div",n,(0,a.toDisplayString)(t.group_name),1),e.userLevel>=3&&e.objectGroupList.length>1?((0,o.uX)(),(0,o.CE)("div",u,[(0,o.bF)(_,{icon:e.icons.trashCan,onClick:e=>G.removeGroup(t.group_id)},null,8,["icon","onClick"])])):(0,o.Q3)("v-if",!0)])))),128)),e.addingGroupStatus?((0,o.uX)(),(0,o.CE)("div",c,p)):(0,o.Q3)("v-if",!0)])):((0,o.uX)(),(0,o.CE)("div",d," Sorry - there are no groups active. ")),m,(0,o.Q3)(" ADD GROUP "),(0,o.Q3)(" TO DO - limit it to certain users "),(0,o.Lk)("div",g,[(0,o.Lk)("div",h,[e.userLevel>1&&!s.isReadOnly?((0,o.uX)(),(0,o.CE)("a",{key:0,href:"javascript:void(0)",class:"btn btn-primary save-changes",onClick:t[0]||(t[0]=(...e)=>G.addNewGroup&&G.addNewGroup(...e))},"Add Group to "+(0,a.toDisplayString)(f.destinationTitle),1)):(0,o.Q3)("v-if",!0)])]),b,(0,o.Q3)(" USERS "),(0,o.Lk)("h2",null,[(0,o.bF)(_,{icon:e.icons.userIcon},null,8,["icon"]),(0,o.eW)(" Users ")]),(0,o.Lk)("p",L," The following are a list of users who are connected to this "+(0,a.toDisplayString)(f.destinationTitle)+". Please note - users have to be a part of the groups list above. ",1),(0,o.bF)(C,{"adding-user-status":e.addingUserStatus,"loading-data":f.loadingData,"object-user-list":e.objectUserList,onRemove_user:G.removeUser},null,8,["adding-user-status","loading-data","object-user-list","onRemove_user"]),k,(0,o.Q3)(" TO DO - limit it to certain users "),e.userLevel>1&&!s.isReadOnly?((0,o.uX)(),(0,o.CE)("div",v,[(0,o.Lk)("div",U,[(0,o.Lk)("a",{href:"javascript:void(0)",class:"btn btn-primary save-changes",onClick:t[1]||(t[1]=(...e)=>G.addNewUser&&G.addNewUser(...e))},"Add User to "+(0,a.toDisplayString)(f.destinationTitle),1)])])):(0,o.Q3)("v-if",!0),(0,o.Q3)(" MODALS "),(0,o.bF)(A),(0,o.bF)(D),(0,o.bF)(j,{"group-id":f.deleteGroupId},null,8,["group-id"]),(0,o.bF)(w,{username:f.deleteUsername},null,8,["username"])])}]])},8072:(e,t,s)=>{s.d(t,{A:()=>v});var o=s(641),a=s(33);const r={key:0,class:"alert alert-info"},i={key:1,class:"alert alert-dark"},d={key:2,class:"user-card-list"},l=["src"],n={class:"user-card--details"},u={class:"user-card--name"},c={class:"user-card--email"},p={key:0,class:"user-card--remove"},m={key:0,class:"user-card"},g=[(0,o.Lk)("div",{class:"user-card--details"},"++ Adding User(s) ++",-1)];var h=s(2124),b=s(2321),L=s(2243);const k={name:"RenderUserCardList",components:{Icon:b.In},props:{addingUserStatus:{type:Boolean,default:!1},loadingData:{type:Boolean,default:!1},objectUserList:{type:Array,default:()=>[]}},mixins:[L.A],computed:{...(0,h.L8)({rootUrl:"getRootUrl",staticUrl:"getStaticUrl",userLevel:"getUserLevel"})},methods:{profilePicture(e){return null!==e&&""!==e?`${this.rootUrl}private/${e}/`:`${this.staticUrl}NearBeach/images/placeholder/people_tax.svg`},removeUser(e){this.$emit("remove_user",e)}}},v=(0,s(6262).A)(k,[["render",function(e,t,s,h,b,L){const k=(0,o.g2)("Icon");return s.loadingData?((0,o.uX)(),(0,o.CE)("div",r," Currently loading User Data. ")):0!==s.objectUserList.length||s.addingUserStatus?((0,o.uX)(),(0,o.CE)("div",d,[((0,o.uX)(!0),(0,o.CE)(o.FK,null,(0,o.pI)(s.objectUserList,(t=>((0,o.uX)(),(0,o.CE)("div",{key:t.username,class:"user-card"},[(0,o.Lk)("img",{src:L.profilePicture(t.profile_picture),alt:"default profile",class:"user-card--profile"},null,8,l),(0,o.Lk)("div",n,[(0,o.Lk)("div",u,(0,a.toDisplayString)(t.first_name)+" "+(0,a.toDisplayString)(t.last_name),1),(0,o.Lk)("div",c,(0,a.toDisplayString)(t.email),1)]),e.userLevel>=3?((0,o.uX)(),(0,o.CE)("div",p,[(0,o.bF)(k,{icon:e.icons.trashCan,onClick:e=>L.removeUser(t.username)},null,8,["icon","onClick"])])):(0,o.Q3)("v-if",!0)])))),128)),s.addingUserStatus?((0,o.uX)(),(0,o.CE)("div",m,g)):(0,o.Q3)("v-if",!0)])):((0,o.uX)(),(0,o.CE)("div",i," Sorry, there are no users currently assigned to this object. "))}]])}}]); \ No newline at end of file diff --git a/NearBeach/static/NearBeach/742.min.js.gz b/NearBeach/static/NearBeach/742.min.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..0de68b65d4951697325613622b865722e5bf3c22 GIT binary patch literal 3817 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�z?F!W zl7my{d7zA-!-+zaE2<#N_U#F=lq+~m3VvH=a_Pp!v>Ozxg#v;o;XOuNe++F#cdcwy z&L_Z$f_!6w;$k<&cO--lnRj@rGMIGvqTV3GE<2aO#VCEdI1d9V2}F<70c;ZnJI<`V zUphG-hp`dT8V~=@9j`6aS8kEcWTa~rDkX@!@d?1$NK1QKp)9EWOYW*@8;Yt;$ZGk8 z&HeVF)>k-*+Dk$@b*R;2$7^O6hx$4TMkjE}{?41z@*>@8li}s->oa&Q2?+9*;?f#; zB$2!$%B%C~#%JjjJ>Q4I)FPjn^H5IJc8F!M% z94lILWsthGHD=Ym{#i8usog9cP%Z1hdgpnUpnOhS?FZ({6nj>(^2}ke`b7SY`bu@s zdbo5*wRNREoNQ8yHz_EwKw~*JkAs{SJMmP5Wg~4(crf6R7sq24lfX?%pTd&UYuVP@ zOt(^KWL^Y_KU960-L~qq&!-^L>GCL$JyKN{rz}}#OZ|q? literal 0 HcmV?d00001 diff --git a/NearBeach/static/NearBeach/NearBeach.min.js b/NearBeach/static/NearBeach/NearBeach.min.js index 74a5684b2..6a7928090 100644 --- a/NearBeach/static/NearBeach/NearBeach.min.js +++ b/NearBeach/static/NearBeach/NearBeach.min.js @@ -1,2 +1,2 @@ /*! For license information please see NearBeach.min.js.LICENSE.txt */ -(()=>{"use strict";var t,e,r={6795:(t,e,r)=>{r.d(e,{A:()=>o});const o=function(t){for(var e,r=0,o=0,n=t.length;n>=4;++o,n-=4)e=1540483477*(65535&(e=255&t.charCodeAt(o)|(255&t.charCodeAt(++o))<<8|(255&t.charCodeAt(++o))<<16|(255&t.charCodeAt(++o))<<24))+(59797*(e>>>16)<<16),r=1540483477*(65535&(e^=e>>>24))+(59797*(e>>>16)<<16)^1540483477*(65535&r)+(59797*(r>>>16)<<16);switch(n){case 3:r^=(255&t.charCodeAt(o+2))<<16;case 2:r^=(255&t.charCodeAt(o+1))<<8;case 1:r=1540483477*(65535&(r^=255&t.charCodeAt(o)))+(59797*(r>>>16)<<16)}return(((r=1540483477*(65535&(r^=r>>>13))+(59797*(r>>>16)<<16))^r>>>15)>>>0).toString(36)}},8764:(t,e,r)=>{r.r(e),r.d(e,{BASE_TRANSITION:()=>l,BindingTypes:()=>wo,CAMELIZE:()=>L,CAPITALIZE:()=>R,CREATE_BLOCK:()=>d,CREATE_COMMENT:()=>b,CREATE_ELEMENT_BLOCK:()=>p,CREATE_ELEMENT_VNODE:()=>m,CREATE_SLOTS:()=>E,CREATE_STATIC:()=>g,CREATE_TEXT:()=>f,CREATE_VNODE:()=>u,CompilerDeprecationTypes:()=>Et,ConstantTypes:()=>W,DOMDirectiveTransforms:()=>Xo,DOMErrorCodes:()=>Fo,DOMErrorMessages:()=>zo,DOMNodeTransforms:()=>qo,ElementTypes:()=>X,ErrorCodes:()=>Rt,FRAGMENT:()=>n,GUARD_REACTIVE_PROPS:()=>N,IS_MEMO_SAME:()=>U,IS_REF:()=>V,KEEP_ALIVE:()=>s,MERGE_PROPS:()=>T,NORMALIZE_CLASS:()=>O,NORMALIZE_PROPS:()=>C,NORMALIZE_STYLE:()=>A,Namespaces:()=>G,NodeTypes:()=>q,OPEN_BLOCK:()=>c,POP_SCOPE_ID:()=>j,PUSH_SCOPE_ID:()=>P,RENDER_LIST:()=>_,RENDER_SLOT:()=>k,RESOLVE_COMPONENT:()=>h,RESOLVE_DIRECTIVE:()=>y,RESOLVE_DYNAMIC_COMPONENT:()=>v,RESOLVE_FILTER:()=>x,SET_BLOCK_TRACKING:()=>D,SUSPENSE:()=>a,TELEPORT:()=>i,TO_DISPLAY_STRING:()=>S,TO_HANDLERS:()=>I,TO_HANDLER_KEY:()=>M,TRANSITION:()=>Io,TRANSITION_GROUP:()=>Lo,TS_NODE_TYPES:()=>Gt,UNREF:()=>z,V_MODEL_CHECKBOX:()=>Eo,V_MODEL_DYNAMIC:()=>Oo,V_MODEL_RADIO:()=>ko,V_MODEL_SELECT:()=>To,V_MODEL_TEXT:()=>So,V_ON_WITH_KEYS:()=>Co,V_ON_WITH_MODIFIERS:()=>Ao,V_SHOW:()=>No,WITH_CTX:()=>F,WITH_DIRECTIVES:()=>w,WITH_MEMO:()=>$,advancePositionWithClone:()=>oe,advancePositionWithMutation:()=>ne,assert:()=>ie,baseCompile:()=>xo,baseParse:()=>rr,buildDirectiveArgs:()=>Zr,buildProps:()=>Yr,buildSlots:()=>Ur,checkCompatEnabled:()=>At,compile:()=>Wo,convertToBlock:()=>gt,createArrayExpression:()=>Z,createAssignmentExpression:()=>pt,createBlockStatement:()=>lt,createCacheExpression:()=>st,createCallExpression:()=>nt,createCompilerError:()=>Lt,createCompoundExpression:()=>ot,createConditionalExpression:()=>at,createDOMCompilerError:()=>jo,createForLoopParams:()=>jr,createFunctionExpression:()=>it,createIfStatement:()=>dt,createInterpolation:()=>rt,createObjectExpression:()=>Q,createObjectProperty:()=>tt,createReturnStatement:()=>mt,createRoot:()=>K,createSequenceExpression:()=>ut,createSimpleExpression:()=>et,createStructuralDirectiveTransform:()=>fr,createTemplateLiteral:()=>ct,createTransformContext:()=>ur,createVNodeCall:()=>J,errorMessages:()=>Mt,extractIdentifiers:()=>$t,findDir:()=>ae,findProp:()=>se,forAliasRE:()=>we,generate:()=>vr,generateCodeFrame:()=>o.generateCodeFrame,getBaseTransformPreset:()=>yo,getConstantType:()=>ar,getMemoedVNodeCall:()=>xe,getVNodeBlockHelper:()=>ft,getVNodeHelper:()=>bt,hasDynamicKeyVBind:()=>ce,hasScopeRef:()=>ye,helperNameMap:()=>B,injectProp:()=>ge,isCoreComponent:()=>Wt,isFunctionType:()=>Ut,isInDestructureAssignment:()=>jt,isInNewExpression:()=>Ft,isMemberExpression:()=>re,isMemberExpressionBrowser:()=>te,isMemberExpressionNode:()=>ee,isReferencedIdentifier:()=>Pt,isSimpleIdentifier:()=>Kt,isSlotOutlet:()=>me,isStaticArgOf:()=>le,isStaticExp:()=>Xt,isStaticProperty:()=>Bt,isStaticPropertyKey:()=>Ht,isTemplateNode:()=>ue,isText:()=>de,isVSlot:()=>pe,locStub:()=>Y,noopDirectiveTransform:()=>_o,parse:()=>Yo,parserOptions:()=>Mo,processExpression:()=>Or,processFor:()=>Dr,processIf:()=>Nr,processSlotOutlet:()=>eo,registerRuntimeHelpers:()=>H,resolveComponentType:()=>Wr,stringifyExpression:()=>Ar,toValidAssetId:()=>ve,trackSlotScopes:()=>zr,trackVForSlotScopes:()=>Vr,transform:()=>mr,transformBind:()=>no,transformElement:()=>Xr,transformExpression:()=>Tr,transformModel:()=>co,transformOn:()=>oo,transformStyle:()=>Do,traverseNode:()=>br,unwrapTSNode:()=>qt,walkBlockDeclarations:()=>Vt,walkFunctionParams:()=>zt,walkIdentifiers:()=>Dt,warnDeprecation:()=>Ct});var o=r(33);const n=Symbol(""),i=Symbol(""),a=Symbol(""),s=Symbol(""),l=Symbol(""),c=Symbol(""),d=Symbol(""),p=Symbol(""),u=Symbol(""),m=Symbol(""),b=Symbol(""),f=Symbol(""),g=Symbol(""),h=Symbol(""),v=Symbol(""),y=Symbol(""),x=Symbol(""),w=Symbol(""),_=Symbol(""),k=Symbol(""),E=Symbol(""),S=Symbol(""),T=Symbol(""),O=Symbol(""),A=Symbol(""),C=Symbol(""),N=Symbol(""),I=Symbol(""),L=Symbol(""),R=Symbol(""),M=Symbol(""),D=Symbol(""),P=Symbol(""),j=Symbol(""),F=Symbol(""),z=Symbol(""),V=Symbol(""),$=Symbol(""),U=Symbol(""),B={[n]:"Fragment",[i]:"Teleport",[a]:"Suspense",[s]:"KeepAlive",[l]:"BaseTransition",[c]:"openBlock",[d]:"createBlock",[p]:"createElementBlock",[u]:"createVNode",[m]:"createElementVNode",[b]:"createCommentVNode",[f]:"createTextVNode",[g]:"createStaticVNode",[h]:"resolveComponent",[v]:"resolveDynamicComponent",[y]:"resolveDirective",[x]:"resolveFilter",[w]:"withDirectives",[_]:"renderList",[k]:"renderSlot",[E]:"createSlots",[S]:"toDisplayString",[T]:"mergeProps",[O]:"normalizeClass",[A]:"normalizeStyle",[C]:"normalizeProps",[N]:"guardReactiveProps",[I]:"toHandlers",[L]:"camelize",[R]:"capitalize",[M]:"toHandlerKey",[D]:"setBlockTracking",[P]:"pushScopeId",[j]:"popScopeId",[F]:"withCtx",[z]:"unref",[V]:"isRef",[$]:"withMemo",[U]:"isMemoSame"};function H(t){Object.getOwnPropertySymbols(t).forEach((e=>{B[e]=t[e]}))}const G={HTML:0,0:"HTML",SVG:1,1:"SVG",MATH_ML:2,2:"MATH_ML"},q={ROOT:0,0:"ROOT",ELEMENT:1,1:"ELEMENT",TEXT:2,2:"TEXT",COMMENT:3,3:"COMMENT",SIMPLE_EXPRESSION:4,4:"SIMPLE_EXPRESSION",INTERPOLATION:5,5:"INTERPOLATION",ATTRIBUTE:6,6:"ATTRIBUTE",DIRECTIVE:7,7:"DIRECTIVE",COMPOUND_EXPRESSION:8,8:"COMPOUND_EXPRESSION",IF:9,9:"IF",IF_BRANCH:10,10:"IF_BRANCH",FOR:11,11:"FOR",TEXT_CALL:12,12:"TEXT_CALL",VNODE_CALL:13,13:"VNODE_CALL",JS_CALL_EXPRESSION:14,14:"JS_CALL_EXPRESSION",JS_OBJECT_EXPRESSION:15,15:"JS_OBJECT_EXPRESSION",JS_PROPERTY:16,16:"JS_PROPERTY",JS_ARRAY_EXPRESSION:17,17:"JS_ARRAY_EXPRESSION",JS_FUNCTION_EXPRESSION:18,18:"JS_FUNCTION_EXPRESSION",JS_CONDITIONAL_EXPRESSION:19,19:"JS_CONDITIONAL_EXPRESSION",JS_CACHE_EXPRESSION:20,20:"JS_CACHE_EXPRESSION",JS_BLOCK_STATEMENT:21,21:"JS_BLOCK_STATEMENT",JS_TEMPLATE_LITERAL:22,22:"JS_TEMPLATE_LITERAL",JS_IF_STATEMENT:23,23:"JS_IF_STATEMENT",JS_ASSIGNMENT_EXPRESSION:24,24:"JS_ASSIGNMENT_EXPRESSION",JS_SEQUENCE_EXPRESSION:25,25:"JS_SEQUENCE_EXPRESSION",JS_RETURN_STATEMENT:26,26:"JS_RETURN_STATEMENT"},X={ELEMENT:0,0:"ELEMENT",COMPONENT:1,1:"COMPONENT",SLOT:2,2:"SLOT",TEMPLATE:3,3:"TEMPLATE"},W={NOT_CONSTANT:0,0:"NOT_CONSTANT",CAN_SKIP_PATCH:1,1:"CAN_SKIP_PATCH",CAN_HOIST:2,2:"CAN_HOIST",CAN_STRINGIFY:3,3:"CAN_STRINGIFY"},Y={start:{line:1,column:1,offset:0},end:{line:1,column:1,offset:0},source:""};function K(t,e=""){return{type:0,source:e,children:t,helpers:new Set,components:[],directives:[],hoists:[],imports:[],cached:0,temps:0,codegenNode:void 0,loc:Y}}function J(t,e,r,o,n,i,a,s=!1,l=!1,d=!1,p=Y){return t&&(s?(t.helper(c),t.helper(ft(t.inSSR,d))):t.helper(bt(t.inSSR,d)),a&&t.helper(w)),{type:13,tag:e,props:r,children:o,patchFlag:n,dynamicProps:i,directives:a,isBlock:s,disableTracking:l,isComponent:d,loc:p}}function Z(t,e=Y){return{type:17,loc:e,elements:t}}function Q(t,e=Y){return{type:15,loc:e,properties:t}}function tt(t,e){return{type:16,loc:Y,key:(0,o.isString)(t)?et(t,!0):t,value:e}}function et(t,e=!1,r=Y,o=0){return{type:4,loc:r,content:t,isStatic:e,constType:e?3:o}}function rt(t,e){return{type:5,loc:e,content:(0,o.isString)(t)?et(t,!1,e):t}}function ot(t,e=Y){return{type:8,loc:e,children:t}}function nt(t,e=[],r=Y){return{type:14,loc:r,callee:t,arguments:e}}function it(t,e=void 0,r=!1,o=!1,n=Y){return{type:18,params:t,returns:e,newline:r,isSlot:o,loc:n}}function at(t,e,r,o=!0){return{type:19,test:t,consequent:e,alternate:r,newline:o,loc:Y}}function st(t,e,r=!1){return{type:20,index:t,value:e,isVNode:r,loc:Y}}function lt(t){return{type:21,body:t,loc:Y}}function ct(t){return{type:22,elements:t,loc:Y}}function dt(t,e,r){return{type:23,test:t,consequent:e,alternate:r,loc:Y}}function pt(t,e){return{type:24,left:t,right:e,loc:Y}}function ut(t){return{type:25,expressions:t,loc:Y}}function mt(t){return{type:26,returns:t,loc:Y}}function bt(t,e){return t||e?u:m}function ft(t,e){return t||e?d:p}function gt(t,{helper:e,removeHelper:r,inSSR:o}){t.isBlock||(t.isBlock=!0,r(bt(o,t.isComponent)),e(c),e(ft(o,t.isComponent)))}const ht=new Uint8Array([123,123]),vt=new Uint8Array([125,125]);function yt(t){return t>=97&&t<=122||t>=65&&t<=90}function xt(t){return 32===t||10===t||9===t||12===t||13===t}function wt(t){return 47===t||62===t||xt(t)}function _t(t){const e=new Uint8Array(t.length);for(let r=0;r`.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${t}.sync\` should be changed to \`v-model:${t}\`.`,link:"https://v3-migration.vuejs.org/breaking-changes/v-model.html"},COMPILER_V_BIND_OBJECT_ORDER:{message:'v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.',link:"https://v3-migration.vuejs.org/breaking-changes/v-bind.html"},COMPILER_V_ON_NATIVE:{message:".native modifier for v-on has been removed as is no longer necessary.",link:"https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html"},COMPILER_V_IF_V_FOR_PRECEDENCE:{message:"v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with