PluginProbe
FluentBoards – Project Management, Task Management, Goal Tracking, Kanban Board, and, Team Collaboration / 2.0.1
FluentBoards – Project Management, Task Management, Goal Tracking, Kanban Board, and, Team Collaboration v2.0.1
2.1.0 2.0.15 2.0.12 2.0.10 2.0.4 2.0.1 2.0.0 1.95.3 1.95.2 1.95 1.91.6 trunk 1.11 1.12 1.13 1.20 1.21 1.22 1.23 1.30 1.31 1.32 1.35 1.40 1.41 All 42 releases
fluent-boards / assets / admin / Components / Report / Overview / Overview.js

Overview.js in FluentBoards – Project Management, Task Management, Goal Tracking, Kanban Board, and, Team Collaboration 2.0.1, at assets/admin/Components/Report/Overview/Overview.js

2 lines 6.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import{R as e,a as t,d as r,r as a,b as o,e as s,f as l,c as i,g as n}from"../../../../reportHelpers.js?ver=2.0.1";import{S as d}from"../../../../_StatCard.js?ver=2.0.1";import{H as p}from"../../../../_HorizontalBarPanel.js?ver=2.0.1";import{P as m}from"../../../../_PriorityDistribution.js?ver=2.0.1";import{D as u}from"../../../../_DistributionPanel.js?ver=2.0.1";import{au as c,as as b,L as h,a as v}from"../../../../vendor-element-plus.js?ver=2.0.1";import{aO as g,aP as f,S as _,T as w,$ as k,a5 as y,_ as T,a0 as $,a8 as C,a9 as x,a7 as P,a1 as E,Z as j,H as B,ax as D}from"../../../../vendor.js?ver=2.0.1";import{_ as M}from"../../../../descriptionToPlainText.js?ver=2.0.1";import"../../../../chartPalette.js?ver=2.0.1";import"../../../../vendor-echarts.js?ver=2.0.1";import"../../../../UpgradeUrl.js?ver=2.0.1";import"../../../../_ChartTypeToggle.js?ver=2.0.1";const O={name:"AssigneeWorkload",components:{ReportPanel:e},props:{members:{type:Array,default:()=>[]},loading:{type:Boolean,default:!1},showEstimatedTime:{type:Boolean,default:!1}},emits:["open-member","export"],methods:{initials:e=>(e||"").split(" ").filter(Boolean).slice(0,2).map(e=>e.charAt(0).toUpperCase()).join(""),clamped:e=>Math.min(100,Math.max(0,Number(e)||0))}},R=["onClick"],S={class:"fbs_report_workload--name"},A={class:"fbs_report_workload--meter"},H={class:"fbs_report_workload--track"},I={class:"fbs_report_workload--percent"};const W={class:"fbs_report_page"},V={class:"fbs_report_page--stats"},z={class:"fbs_report_page--row fbs_report_page--row-split"},U={class:"fbs_report_page--row fbs_report_page--row-even"};const q=M({name:"ReportOverview",components:{ReportFilterBar:t,StatCard:d,HorizontalBarPanel:p,PriorityDistribution:m,DistributionPanel:u,AssigneeWorkload:M(O,[["render",function(e,t,r,a,o,s){const l=v,i=h,n=b,d=c,p=g("ReportPanel"),m=f("loading");return _(),w(p,{title:e.$t("Assignee Workload")},{actions:k(()=>[T(l,{disabled:r.loading,title:r.loading?e.$t("Loading report…"):"",onClick:t[0]||(t[0]=t=>e.$emit("export"))},{default:k(()=>[C(x(e.$t("Export")),1)]),_:1},8,["disabled","title"])]),default:k(()=>[y((_(),w(d,{data:r.members,class:"fbs_report_workload","default-sort":{prop:"open",order:"descending"}},{default:k(()=>[T(n,{prop:"name",label:e.$t("Member"),sortable:"","min-width":"200"},{default:k(t=>[$("button",{type:"button",class:"fbs_report_workload--member",onClick:r=>e.$emit("open-member",t.row)},[T(i,{size:24,src:t.row.avatar},{default:k(()=>[C(x(s.initials(t.row.name)),1)]),_:2},1032,["src"]),$("span",S,x(t.row.name),1)],8,R)]),_:1},8,["label"]),T(n,{prop:"open",label:e.$t("Open"),sortable:"",width:"120"},null,8,["label"]),T(n,{prop:"completed",label:e.$t("Completed"),sortable:"",width:"140"},null,8,["label"]),T(n,{prop:"overdue",label:e.$t("Overdue"),sortable:"",width:"130"},null,8,["label"]),r.showEstimatedTime?(_(),w(n,{key:0,prop:"estimated",label:e.$t("Est."),sortable:"",width:"110"},null,8,["label"])):P("",!0),T(n,{prop:"workload",label:e.$t("Open workload"),sortable:"","min-width":"220"},{default:k(e=>[$("div",A,[$("span",H,[$("span",{class:"fbs_report_workload--fill",style:E({width:s.clamped(e.row.workload)+"%"})},null,4)]),$("span",I,x(s.clamped(e.row.workload))+"% ",1)])]),_:1},8,["label"])]),_:1},8,["data"])),[[m,r.loading]])]),_:1},8,["title"])}]])},data:()=>({loading:!1,boards:[],report:s(),filters:n()}),computed:{hasTimeTracking(){var e,t,r;return"yes"===(null==(r=null==(t=null==(e=this.appVars)?void 0:e.advanced_modules)?void 0:t.timeTracking)?void 0:r.enabled)},canShowEstimatedTime(){return this.appVars.has_pro&&this.hasTimeTracking},boardItems(){return this.report.tasksByBoard.map(e=>({label:e.title,value:e.total}))},statCards(){const e=this.report.stats,t=[{key:"total",label:"Total Task",value:e.total,icon:"report-total-task"},{key:"completed",label:"Completed",value:e.completed,icon:"report-completed"},{key:"overdue",label:"Overdue",value:e.overdue,icon:"report-overdue"},{key:"members",label:"Active Members",value:e.activeMembers,icon:"report-members"}];return this.canShowEstimatedTime&&t.push({key:"estimated",label:"Estimated Time",value:e.estimatedTime,icon:"report-estimated-time"}),t},completionItems(){const e={completed:"success",incomplete:"primary",completed_earlier:"neutral"};return this.report.completion.map(t=>({...t,colorKey:e[t.key]||"primary"}))},dueDateItems(){const e={overdue:"error",today:"medium",next7days:"primary",later:"success",no_due_date:"neutral"};return this.report.dueDate.map(t=>({...t,colorKey:e[t.key]||"primary"}))}},watch:{filters:{deep:!0,handler(){this.fetchReport()}}},created(){this.requests=i()},mounted(){this.getBoards(),this.fetchReport()},methods:{getBoards(){l(this.$get).then(e=>{this.boards=e}).catch(()=>{this.boards=[]})},fetchReport(){this.loading=!0;const e=this.requests.next();this.$get("reports/overview",o(this.filters)).then(t=>{e.isCurrent()&&(this.report=t.report||s())}).catch(t=>{e.isCurrent()&&(this.report=s(),this.$handleError(t))}).finally(()=>{e.isCurrent()&&(this.loading=!1)})},exportReport(){if(this.loading)return;const e=["Member","Open","Completed","Overdue"],t=this.report.assigneeWorkload.map(e=>{const t=[e.name,e.open,e.completed,e.overdue];return this.canShowEstimatedTime&&t.push(e.estimated),t.push(`${Math.min(100,Math.max(0,Number(e.workload)||0))}%`),t});this.canShowEstimatedTime&&e.push("Est."),e.push("Open workload");const o=[e,...t];r(a("fluent-boards-overview",this.filters),o)},openMember(e){e&&e.id&&this.$router.push({name:"member",params:{user_id:e.id}})}}},[["render",function(e,t,r,a,o,s){const l=g("ReportFilterBar"),i=g("StatCard"),n=g("HorizontalBarPanel"),d=g("PriorityDistribution"),p=g("DistributionPanel"),m=g("AssigneeWorkload");return _(),j("div",W,[T(l,{modelValue:o.filters,"onUpdate:modelValue":t[0]||(t[0]=e=>o.filters=e),boards:o.boards,loading:o.loading,"show-export":!1},null,8,["modelValue","boards","loading"]),$("div",V,[(_(!0),j(B,null,D(s.statCards,e=>(_(),w(i,{key:e.key,label:e.label,value:e.value,icon:e.icon},null,8,["label","value","icon"]))),128))]),$("div",z,[T(n,{title:e.$t("Tasks by Board"),items:s.boardItems,loading:o.loading},null,8,["title","items","loading"]),T(d,{items:o.report.priority.items,total:o.report.priority.total,loading:o.loading},null,8,["items","total","loading"])]),$("div",U,[T(p,{title:e.$t("Task Completion Chart"),items:s.completionItems,loading:o.loading},null,8,["title","items","loading"]),T(p,{title:e.$t("Due Date Distribution"),items:s.dueDateItems,loading:o.loading},null,8,["title","items","loading"])]),T(m,{members:o.report.assigneeWorkload,loading:o.loading,"show-estimated-time":s.canShowEstimatedTime,onOpenMember:s.openMember,onExport:s.exportReport},null,8,["members","loading","show-estimated-time","onOpenMember","onExport"])])}]]);export{q as default};
2