本文目录一览:
1、[js 甘特图显示数量](#js 甘特图显示数量)
2、iOS或Android开发中有哪些库或工具可以帮助实现数据可视化
3、甘特图制作软件哪个好
4、[甘特图Ext Gantt和资源甘特图Ext Scheduler区别有哪些](#甘特图Ext Gantt和资源甘特图Ext Scheduler区别有哪些)
5、自定义甘特图火狐浏览器不兼容的问题怎么解决wo
6、如何使用echarts实现甘特图
js 甘特图显示数量
js 甘特图显示数量步骤操作如下:
- 明确项目牵涉到的各项活动、项目。内容包括项目名称(包括顺序)、开始时间、工期,任务类型(依赖/决定性)和依赖于哪一项任务。
- 创建甘特图草图。将所有的项目按照开始时间、工期标注到甘特图上。
- 确定项目活动依赖关系及时序进度。使用草图,按照项目的类型将项目联系起来,并安排项目进度。
- 计算单项活动任务的工时量。
- 确定活动任务的执行人员及适时按需调整工时。
- 计算整个项目时间。
甘特图被用于商业工作中的诸多场景,例如OA中项目进度管理、工厂APS中生产资料和计划的调度安排、软件开发中的项目管理等等。
iOS或Android开发中有哪些库或工具可以帮助实现数据可视化
下面,就为大家推荐几款热门的可视化工具:
- VARCHARTXGantt甘特图控件
VARCHARTXGantt让您能够以横道图、柱状图的形式来编辑、打印以及图形化的表示您的数据,它能在几分钟之内实现您想要的甘特图开发,而且只需要通过简单设计模式下的属性页配置,您可以不写一行代码就能快速的让VARCHARTXGantt控件适应您的客户的各种需求,其强大的功能可与Microsoft的project系列产品媲美。 - AnyChart
AnyChart是基于Flash/JavaScript(HTML5)的图表控件。使用AnyChart控件,可创建跨浏览器和跨平台的交互式图表和仪表。AnyChart图表目前已被很多知名大公司所使用,可用于仪表盘、报表、数据分析、统计学、金融等领域。AnyChart可以被用于Web、桌面和移动应用程序,AnyChart可运行于当前PC和Mac上所有主流的浏览器,如:Chrome, Safari, Firefox, Internet Explorer 和 Opera,并且可用于所有移动平台(Android(2.2+)和iOS(iPhone,iPad,iPod Touch)上的主流浏览器。 - Dundas Dashboard
Dundas Dashboard基于Web的功能齐全的商业仪表板平台,能快速开发可定制、交互式的仪表盘。无论您是利用现有的BI基础架构/应用程序或者启动一个从无到有的独立项目,Dundas为创建/开发复杂的数字仪表盘和使用户迅速而简单的获得强大的功能而提供业界最具成本效益的平台。它拥有很多亮点,如业界首创交互式的HTML5移动界面和广泛支持MapReduce、灵活的数据可视化、支持连接到任何数据源等。 - Visifire for Silverlight/WPF
Visifire是一款WPFSilverlight图表控件,使用visifire可创建移动、Web和桌面应用程序的动态图表。Visifire图表控件还能嵌入到任何web页面。Visifire独立的服务器端技术能够与ASP, ASP.Net, SharePoint, PHP, JSP, ColdFusion, Python, Ruby或者简单的HTML一起使用。 - Iocomp ActiveX/VCL
Iocomp ActiveX/VCL被全球1000多家企业所使用的ActiveX/VCL工控仪表控件。Iocomp ActiveX/VCL是一套用于工业控制的仪表盘控件,适用于ActiveX或VCL开发环境。Iocomp工业仪表盘控件包(VCL版)包括多种用来创建专业的仪表和测量、工业控制、工业监控等相关的应用程序的控件包,包括仪表盘控件、开关控件、实时曲线控件、LED灯控件等等。Iocomp ActiveX/VCL已被全球1000多家企业所使用,它具备实时、高速、专业的优势。Iocomp ActiveX/VCL一共有四个版本:标准版(standard)、专业版(Pro)、绘图版(Plot)、终极版(Ultimate)。
甘特图制作软件哪个好
甘特图的制作,可以使用C1GanttView控件。 使用C1GanttView控件创建甘特图的步骤:
- 拖拽C1GanttView到窗体
- 通过编辑器定制摘要任务、日历设置、前置条件、资源和样式
- 导入导出到XML文件
具体的操作步骤,请参考下面的博客。
甘特图Ext Gantt和资源甘特图Ext Scheduler区别有哪些
甘特图(Ext Gantt)和资源甘特图(Ext Scheduler)是独立的控件。
- 甘特图(Ext Gantt) 主要描述组成项目的任务,以及任务之间的关系(依赖性)。控件中的每一行代表且仅代表一个任务。
- 资源甘特图(Ext Scheduler) 主要描述资源的分配情况。例如项目组中有甲乙两个程序员(资源),甲周一、三做研发,乙周二到周五做研发。资源甘特图不描述资源之间的关系。
自定义甘特图火狐浏览器不兼容的问题怎么解决wo
参考下这个:
/**
* Title: 甘特图
* Description: javascript中使用表格实现甘特图
* Copyright: Copyright (c) 2002
* Company: weide
* @author weidegong
* @version 1.0
* evaluation: 用表格实现不可行,准备使用SVG~~
*/
function gante() {
//定义公用属性
this.Data;
this.Head = ['编号', '任务名称', '负责人', '开始时间', '结束时间'];
this.toShow;
this.StartDate = new Date();
this.EndDate = new Date();
this.DayWidth = 6;
//定义私有属性
var dateMain; //主要时间
var dateSub; //次要时间
this.setDate = initDate;
this.getShow = drawingGante;
//定义方法
function initDate() {
var start = new Date(), end = new Date(), t;
for (var rs in this.Data) {
for (var i = 3; i = 4; i++) {
t = getStrDay(this.Data[rs][i]);
if (t.getTime() > end.getTime()) end = t;
if (t.getTime() < start.getTime()) start = t;
}
}
this.StartDate = start;
this.EndDate = end;
}
//定义方法 ,画干特图
function drawingGante() {
var outxt = ""
outxt += "table border=1 width=100% cellspacing=1 cellpadding=0 bordercolor=#000000"
outxt += "trth align=centerfont color=#FFFFFF甘特图/font/th/trtrthtable border=0 width=100% cellspacing=1 cellpadding=0"
//输出表头
outxt += "tr";
for (var obj in this.Head)
outxt += "td nowrap" + this.Head[obj] + "/td";
//输出坐标系
outxt += "thtable border=0 width=100% cellspacing=1 cellpadding=0";
outxt += "trth" + showYearMonth(this.StartDate, this.EndDate, this.DayWidth) + "/th/tr";
outxt += "/table/th"
//输出数据内容
for (var rs in this.Data) {
outxt += "tr"
for (var fd in this.Data[rs]) {
outxt += "td nowrap" + this.Data[rs][fd] + "/td"
}
//生成甘特图
outxt += "td"
var tBegin = getStrDay(this.Data[rs][3]);
var tEnd = getStrDay(this.Data[rs][4]);
outxt += setMonthShow(this.StartDate, this.EndDate, this.DayWidth, tBegin, tEnd);
outxt += "/td"
outxt += "/tr"
}
outxt += "/table/th/tr/table"
return outxt;
}
}
/// 把时间到精确到毫秒
function getStrDay(value) {
var arrDate = value.split("-");
var dateOK = new Date(arrDate[0], arrDate[1] - 1, arrDate[2], 0, 0, 0, 0);
return dateOK;
}
///计算两个日期之间相差毫秒数
function getDays(day1, day2) {
var days = 0;
try {
days = (day1.getTime() - day2.getTime()) / (1000 * 24 * 3600)
if (days < 0) days = -days;
} catch (e) {}
return days;
}
//主要函数之一
function setMonthShow(start, end, width, tBegin, tEnd) {
var show = "table border=1 cellspacing=0 bordercolor=#F89807 cellpadding=0 style=/"height:100%;width:100%;word-break:break-all/"tr";
var dateCur = start;
var dateNext; //下一个时间
var widthTD;
var bFlag = 0;
var styleGante = " style=/"color:#000;background-color:#00007f/" ";
while (1) {
dateNext = getNextMonth(dateCur);
if (dateNext.getTime() > end.getTime()) dateNext = end;
widthTD = getDays(dateCur, dateNext) * width;
var setColor = "";
if (isIn(dateCur, tBegin, tEnd)) {
setColor += " style=/"color:#000;background-color:#00007f/" ";
//任务开始处
if (bFlag++ == 0) {
var monthStart = new Date(dateCur.getYear(), dateCur.getMonth(), 1);
var tmp = getDays(monthStart, dateCur) * 100 / 30;
show += "td width=" + widthTD + "px"
show += "table height=100% width=100% border=0trtd width=" + tmp + "%/tdtd" + styleGante + "width=" + (100 - tmp) + "%/td/tr/table"
show += "/td"
} else if (dateCur.getYear() == tEnd.getYear() && dateCur.getMonth() == tEnd.getMonth()) {
//任务结束处
dateCur = tEnd;
var monthStart = new Date(dateCur.getYear(), dateCur.getMonth(), 1);
var tmp = getDays(monthStart, dateCur) * 100 / 30;
show += "td width=" + widthTD + "px"
show += "table height=100% width=100% border=0trtd " + styleGante + "width=" + tmp + "%/tdtd width=" + (100 - tmp) + "%/td/tr/table"
show += "/td"
} else {
show += "td width=" + widthTD + "px " + styleGante + "/td"
}
} else {
show += "td width=" + widthTD + "px /td"
}
if (dateNext.getTime() == end.getTime()) break;
dateCur = dateNext;
}
show += "/tr/table"
return show;
}
///画年份表格和月份表格
///width=6
///调getMonthShow画月份表格
function showYearMonth(start, end, width) {
var show = "table border=0 cellspacing=1 width=100% cellpadding=0 height=100% width=100%tr";
var dateCur = start;
var dateNext; //下一个时间
var widthTD;
while (dateCur.getYear() <= end.getYear()) {
if (dateCur.getYear() == end.getYear()) dateNext = end;
else dateNext = new Date((dateCur.getYear() + 1), 0, 1);
widthTD = getDays(dateCur, dateNext) * width;
show += "td width=" + widthTD + "px";
show += "table border=/"1/" cellspacing=/"0/" width=100% height=100% bordercolor=#F89807trtd" + dateCur.getYear() + "/td/tr";
show += "trtd" + getMonthShow(dateCur, dateNext, width) + "/td/tr";
show += "/table";
show += "/td"
if (dateCur.getYear() == dateNext.getYear()) break;
dateCur = dateNext;
}
show += "/tr/table"
return show;
}
function getYearShow(start, end, width) {
var show = "table border=1 cellspacing=0 bordercolor=#F89807 cellpadding=0 style=/"height:100%;width:100%/"tr";
var dateCur = start;
var dateNext; //下一个时间
var widthTD;
while (dateCur.getYear() <= end.getYear()) {
if (dateCur.getYear() == end.getYear()) dateNext = end;
else dateNext = new Date((dateCur.getYear() + 1), 0, 1);
widthTD = getDays(dateCur, dateNext) * width;
show += "td width=" + widthTD + "px" + dateCur.getYear() + "/td"
if (dateCur.getYear() == dateNext.getYear()) break;
dateCur = dateNext;
}
show += "/tr/table"
return show;
}
///画月份表格
///width=6
function getMonthShow(start, end, width, type) {
var show = "table border=1 cellspacing=0 bordercolor=#F89807 height=100% width=100% cellpadding=0 style=/"word-break:break-all/"tr";
var dateCur = start;
var dateNext; //下一个时间
var widthTD;
while (1) {
dateNext = getNextMonth(dateCur);
if (dateNext.getTime() > end.getTime()) dateNext = end;
widthTD = getDays(dateCur, dateNext) * width;
var nMonth = dateCur.getMonth();
if (nMonth == 11) nMonth = 12;
else nMonth++;
show += "td width=" + widthTD + "px" + nMonth + "/td"
if (dateNext.getTime() == end.getTime()) break;
dateCur = dateNext;
}
show += "/tr/table"
return show;
}
///获取下个月开始日期
function getNextMonth(dateCur) {
var next;
var nMonth = dateCur.getMonth();
if (nMonth == 11) {
next = new Date((dateCur.getYear() + 1), 0, 1)
} else {
next = new Date(dateCur.getYear(), (dateCur.getMonth() + 1), 1)
}
return next;
}
///判断日期是否在任务开始时间与结束时间之内
function isIn(cur, begin, end) {
for (var i = 1, t = cur; t.getMonth() == cur.getMonth(); i++) {
t = new Date(cur.getYear(), cur.getMonth(), i);
if (t.getTime() > begin && t.getTime() < end) return true;
}
return false;
}
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>甘特图</title>
<style>
th { color: #FFF; background-color: #F89807; }
td { color: #000; background-color: #FDEDCC; height: 16 }
input, textarea, th, td { font-size: 9pt }
</style>
<script language="javascript" src="/comDB/gante.js"></script>
</head>
<body onload="show.innerHTML=gt.getShow()">
<script language="javascript">
var gt = new gante();
gt.Data = [[1, 2, 3, '2002-1-1', '2002-2-8'], [2, 3, 4, '2002-3-4', '2002-10-20']];
gt.setDate();
</script>
<div id="show"></div>
</body>
</html>
如何使用echarts实现甘特图
Echarts 是用javascript 展示的,要动态的获取数据,可以用 AJAX 获取后台数据。