📄 chartheader.jsp
字号:
PieElements[PieElements.length - 1].setAttribute("style", "stroke:black;fill:" + Color)
PieElements[PieElements.length - 1].setAttribute("onmouseover", "DisplayInfo('" + Name + "', '" + Value + "')")
PieElements[PieElements.length - 1].setAttribute("onmouseout", "DisplayInfo(' ', ' ')")
ParentGroup1.appendChild(PieElements[PieElements.length - 1])
BarElements[BarElements.length] = SVGDocument.createElement("path")
BarTexts[BarTexts.length] = SVGDocument.createElement("text")
BarElements[BarElements.length - 1].setAttribute("style", "stroke:black;fill:" + Color)
BarElements[BarElements.length - 1].setAttribute("onmouseover", "BarTexts[" + (BarTexts.length - 1) + "].getStyle().setProperty('visibility', 'show')")
BarElements[BarElements.length - 1].setAttribute("onmouseout", "BarTexts[" + (BarTexts.length - 1) + "].getStyle().setProperty('visibility', 'hidden')")
ParentGroup2.appendChild(BarElements[BarElements.length - 1])
BarTexts[BarTexts.length - 1].setAttribute("style", "text-anchor:end;font-weight:bold;font-size:13;visibility:hidden")
BarTexts[BarTexts.length - 1].setAttribute("x", "188")
BarTexts[BarTexts.length - 1].appendChild(SVGDocument.createTextNode(Value + " -"))
SVGDocument.getElementById("barsidetext").appendChild(BarTexts[BarTexts.length - 1])
Names[Names.length - 1].appendChild(SVGDocument.createTextNode(Name + ""))
Names[Names.length - 1].setAttribute("transform", "rotate(45)")
SVGDocument.getElementById("labels").appendChild(Names[Names.length - 1])
Refresh()
if (Repress){
Removed = true;
}
else
{
Removed = false
Grandparent1.appendChild(ParentGroup1)
Grandparent2.appendChild(ParentGroup2)
}
}
function Refresh()
{
PieTotalSize = 0
BarTotalSize = 0
MaxSize = 0
for (var I = 0; I < Values.length; I++)
{
PieTotalSize += Values[I]
BarTotalSize++
if (Values[I] > MaxSize)
MaxSize = Values[I]
}
PieStart = 0
BarStart = 0
if (PieTotalSize > 0)
for (var I = 0; I < Values.length; I++)
{
PieStart = DrawPieSegment(PieStart, Values[I] / PieTotalSize, PieElements[I], I)
BarStart = DrawBarSegment(BarStart, Values[I] / MaxSize, BarElements[I], BarTexts[I], Names[I])
}
SVGDocument.getElementById("max").replaceChild(SVGDocument.createTextNode(MaxSize + ""), SVGDocument.getElementById("max").getFirstChild())
SVGDocument.getElementById("min").replaceChild(SVGDocument.createTextNode("0"), SVGDocument.getElementById("min").getFirstChild())
}
function DeleteSegment()
{
if (ActiveSegment == "Pie")
{
NewValues = new Array()
NewNames = new Array()
NewPieElements = new Array()
NewBarElements = new Array()
NewBarTexts = new Array()
NewDeleteList = new Array()
SomethingDeleted = false
CurrentCopySpot = 0
for (var I = 0; I < PieElements.length; I++)
{
if (!(DeleteList[I]))
{
NewValues[CurrentCopySpot] = Values[I]
NewNames[CurrentCopySpot] = Names[I]
NewPieElements[CurrentCopySpot] = PieElements[I]
NewBarElements[CurrentCopySpot] = BarElements[I]
NewBarTexts[CurrentCopySpot] = BarTexts[I]
NewDeleteList[CurrentCopySpot] = DeleteList[I]
NewBarElements[CurrentCopySpot].setAttribute("onmouseover", "BarTexts[" + CurrentCopySpot + "].getStyle().setProperty('visibility', 'show')")
NewBarElements[CurrentCopySpot].setAttribute("onmouseout", "BarTexts[" + CurrentCopySpot + "].getStyle().setProperty('visibility', 'hidden')")
CurrentCopySpot++
}
else
{
SomethingDeleted = true
PieElements[I].getParentNode().removeChild(PieElements[I])
BarElements[I].getParentNode().removeChild(BarElements[I])
BarTexts[I].getParentNode().removeChild(BarTexts[I])
Names[I].getParentNode().removeChild(Names[I])
}
}
if (SomethingDeleted)
{
Values = NewValues
Names = NewNames
PieElements = NewPieElements
BarElements = NewBarElements
BarTexts = NewBarTexts
DeleteList = NewDeleteList
Refresh()
}
else
alert("To delete segments, click on the segments to be deleted to pull them out, then click on the Delete button")
}
else
{
NewValues = new Array()
NewNames = new Array()
NewPieElements = new Array()
NewBarElements = new Array()
NewBarTexts = new Array()
NewDeleteList = new Array()
SomethingDeleted = false
CurrentCopySpot = 0
for (var I = 0; I < PieElements.length - 1; I++)
{
NewValues[I] = Values[I]
NewNames[I] = Names[I]
NewPieElements[I] = PieElements[I]
NewBarElements[I] = BarElements[I]
NewBarTexts[I] = BarTexts[I]
NewDeleteList[I] = DeleteList[I]
NewBarElements[I].setAttribute("onmouseover", "BarTexts[" + CurrentCopySpot + "].getStyle().setProperty('visibility', 'show')")
NewBarElements[I].setAttribute("onmouseout", "BarTexts[" + CurrentCopySpot + "].getStyle().setProperty('visibility', 'hidden')")
CurrentCopySpot++
}
if (PieElements.length > 0)
{
SomethingDeleted = true
PieElements[PieElements.length - 1].getParentNode().removeChild(PieElements[PieElements.length - 1])
BarElements[PieElements.length - 1].getParentNode().removeChild(BarElements[PieElements.length - 1])
BarTexts[PieElements.length - 1].getParentNode().removeChild(BarTexts[PieElements.length - 1])
Names[PieElements.length - 1].getParentNode().removeChild(Names[PieElements.length - 1])
}
if (SomethingDeleted)
{
Values = NewValues
Names = NewNames
PieElements = NewPieElements
BarElements = NewBarElements
BarTexts = NewBarTexts
DeleteList = NewDeleteList
Refresh()
}
}
}
parent.deleteOuties = DeleteSegment
function DrawBarSegment(Start, Height, Element, Text, Label)
{
XOffset3D = 10
YOffset3D = 5
PathData = "M" + (Start + (BarChartWidth / BarTotalSize)) + ",0"
PathData = PathData + "h" + (BarChartWidth / BarTotalSize * -1)
PathData = PathData + "v" + (Height * BarChartHeight * -1)
PathData = PathData + "l" + XOffset3D + ",-" + YOffset3D
PathData = PathData + "h" + (BarChartWidth / BarTotalSize)
PathData = PathData + "v" + (Height * BarChartHeight)
PathData = PathData + "l-" + XOffset3D + "," + YOffset3D
PathData = PathData + "v" + (Height * BarChartHeight * -1)
PathData = PathData + "h" + (BarChartWidth / BarTotalSize * -1)
PathData = PathData + "h" + (BarChartWidth / BarTotalSize)
PathData = PathData + "l" + XOffset3D + ",-" + YOffset3D
PathData = PathData + "l-" + XOffset3D + "," + YOffset3D
Element.setAttribute("d", PathData)
Label.setAttribute("x", Start / AngleFactor)
Label.setAttribute("y", Start * -1 / AngleFactor)
Text.setAttribute("y", (275 - BarChartHeight * Height))
return Start + BarChartWidth / BarTotalSize
}
function DrawPieSegment(Start, Size, Element, ID)
{
PathData = "M0,0L"
PathData = PathData + PieChartSize * Math.sin(Start * Math.PI * 2) + "," + PieChartSize * Math.cos(Start * Math.PI * 2)
if (Size >= .5)
PathData = PathData + "A" + PieChartSize + " " + PieChartSize + " 1 1 0 " + PieChartSize * Math.sin((Start + Size) * Math.PI * 2) + "," + PieChartSize * Math.cos((Start + Size) * Math.PI * 2)
else
PathData = PathData + "A" + PieChartSize + " " + PieChartSize + " 0 0 0 " + PieChartSize * Math.sin((Start + Size) * Math.PI * 2) + "," + PieChartSize * Math.cos((Start + Size) * Math.PI * 2)
PathData = PathData + "z"
Element.setAttribute("d", PathData)
if (Start > 0)
Element.setAttribute("onclick", "MoveSegment(evt, " + (Start + Size / 2) + ", true, " + ID + ")")
else
{
DeleteList[ID] = true;
Angle = Start + Size / 2
X = MoveDistance * Math.sin(Angle * 2 * Math.PI)
Y = MoveDistance * Math.cos(Angle * 2 * Math.PI)
Element.setAttribute("transform", "translate(" + X + "," + Y + ")")
Element.setAttribute("onclick", "MoveSegment(evt, " + ((Start + Size / 2) * -1) + ", false, " + ID + ")")
}
return Start + Size
}
function MoveSegment(MouseEvent, Angle, CanBeDeleted, ID)
{
Element = MouseEvent.getTarget()
if (Angle < 0)
{
X = 0
Y = 0
}
else
{
X = MoveDistance * Math.sin(Angle * 2 * Math.PI)
Y = MoveDistance * Math.cos(Angle * 2 * Math.PI)
}
DeleteList[ID] = CanBeDeleted
Element.setAttribute("transform", "translate(" + X + "," + Y + ")")
Element.setAttribute("onclick", "MoveSegment(evt, " + (Angle * -1) + ", " + (!CanBeDeleted) + ", " + ID + ")")
}
function DisplayInfo(Text, Value)
{
if (Text != " ")
Percent = " (" + Math.round(Value / PieTotalSize * 10000) / 100 + "%)"
else
Percent = ""
NewItem = SVGDocument.createTextNode(Value + Percent)
SVGDocument.getElementById("labelamount").replaceChild(NewItem, SVGDocument.getElementById("labelamount").getFirstChild())
NewItem = SVGDocument.createTextNode(Text + "")
SVGDocument.getElementById("labelitem").replaceChild(NewItem, SVGDocument.getElementById("labelitem").getFirstChild())
if (Text + Value == " ")
NewItem = SVGDocument.createTextNode(" ")
else
NewItem = SVGDocument.createTextNode(":")
SVGDocument.getElementById("labelcolon").replaceChild(NewItem, SVGDocument.getElementById("labelcolon").getFirstChild())
}
function SetTitle(Text)
{
NewItem = SVGDocument.createTextNode(Text + "")
SVGDocument.getElementById("title").replaceChild(NewItem, SVGDocument.getElementById("title").getFirstChild())
}
function SetAxis(Text)
{
NewItem = SVGDocument.createTextNode(Text + "")
SVGDocument.getElementById("axis").replaceChild(NewItem, SVGDocument.getElementById("axis").getFirstChild())
NewItem = SVGDocument.createTextNode(Text + "")
SVGDocument.getElementById("subtitle").replaceChild(NewItem, SVGDocument.getElementById("subtitle").getFirstChild())
}
function ShowPie()
{
ActiveSegment = "Pie"
SVGDocument.getElementById("showpierect").getStyle().setProperty("fill", "blue");
SVGDocument.getElementById("showbarrect").getStyle().setProperty("fill", "#FC8D4F");
SVGDocument.getElementById("barchart1").getStyle().setProperty("visibility", "hidden");
SVGDocument.getElementById("subtitle").getStyle().setProperty("visibility", "show");
SVGDocument.getElementById("piechart1").getStyle().setProperty("visibility", "show");
SVGDocument.getElementById("pieitemlabel").getStyle().setProperty("visibility", "show");
SVGDocument.getElementById("barsidetext").getStyle().setProperty("visibility", "hidden");
}
function ShowBar()
{
ActiveSegment = "Bar"
SVGDocument.getElementById("showpierect").getStyle().setProperty("fill", "#FC8D4F");
SVGDocument.getElementById("showbarrect").getStyle().setProperty("fill", "blue");
SVGDocument.getElementById("barchart1").getStyle().setProperty("visibility", "show");
SVGDocument.getElementById("subtitle").getStyle().setProperty("visibility", "hidden");
SVGDocument.getElementById("piechart1").getStyle().setProperty("visibility", "hidden");
SVGDocument.getElementById("pieitemlabel").getStyle().setProperty("visibility", "hidden");
SVGDocument.getElementById("barsidetext").getStyle().setProperty("visibility", "show");
}
parent.clearChart = ClearChart
parent.addChartValue = AddChartValue
parent.setTitle = SetTitle
parent.setAxis = SetAxis
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -