xref: /aoo41x/main/wizards/source/depot/Internet.xba (revision cdf0e10c)
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
3<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Internet" script:language="StarBasic">REM  *****  BASIC  *****
4Option Explicit
5Public sNewSheetName as String
6
7Function CheckHistoryControls()
8Dim bLocGoOn as Boolean
9Dim Firstdate as Date
10Dim LastDate as Date
11	LastDate = CDateFromISO(StockRatesModel.txtEndDate.Date)
12	FirstDate = CDateFromISO(StockRatesModel.txtStartDate.Date)
13	bLocGoOn = FirstDate &lt;&gt; 0 And LastDate &lt;&gt; 0
14	If bLocGoOn Then
15		If FirstDate &gt;= LastDate Then
16			Msgbox(sMsgStartDatebeforeEndDate,16, sProductname)
17			bLocGoOn = False
18		End If
19	End If
20	CheckHistoryControls = bLocGoon
21End Function
22
23
24Sub InsertCompanyHistory()
25Dim StockName as String
26Dim CurRow as Integer
27Dim sMsgInternetError as String
28Dim CurRate as Double
29Dim oCell as Object
30Dim sStockID as String
31Dim ChartSource as String
32	If CheckHistoryControls() Then
33		StartDate = CDateFromISO(StockRatesModel.txtStartDate.Date)
34		EndDate = CDateFromISO(StockRatesModel.txtEndDate.Date)
35		DlgStockRates.EndExecute()
36		If StockRatesModel.optDaily.State = 1 Then
37			sInterval = &quot;d&quot;
38			iStep = 1
39		ElseIf StockRatesModel.optWeekly.State = 1 Then
40			sInterval = &quot;w&quot;
41			iStep = 7
42			StartDate = StartDate - WeekDay(StartDate) + 2
43			EndDate = EndDate - WeekDay(EndDate) + 2
44		End If
45		iEndDay = Day(EndDate)
46		iEndMonth = Month(EndDate)
47		iEndYear = Year(EndDate)
48		iStartDay = Day(StartDate)
49		iStartMonth = Month(StartDate)
50		iStartYear = Year(StartDate)
51&apos;		oDocument.AddActionLock()
52		UnprotectSheets(oSheets)
53		InitializeStatusline(&quot;&quot;, 10, 1)
54		oBackGroundSheet = oSheets.GetbyName(&quot;Background&quot;)
55		StockName = DlgStockRates.GetControl(&quot;lstStockNames&quot;).GetSelectedItem()
56		CurRow = GetStockRowIndex(Stockname)
57		sStockID = oFirstSheet.GetCellByPosition(SBCOLUMNID1, CurRow).String
58		ChartSource = ReplaceString(HistoryChartSource, sStockID, &quot;&lt;StockID&gt;&quot;)
59		ChartSource = ReplaceString(ChartSource, iStartDay, &quot;&lt;StartDay&gt;&quot;)
60		ChartSource = ReplaceString(ChartSource, cStr(iStartMonth-1), &quot;&lt;StartMonth&gt;&quot;)
61		ChartSource = ReplaceString(ChartSource, iStartYear, &quot;&lt;StartYear&gt;&quot;)
62		ChartSource = ReplaceString(ChartSource, iEndDay, &quot;&lt;EndDay&gt;&quot;)
63		ChartSource = ReplaceString(ChartSource, cStr(iEndMonth-1), &quot;&lt;EndMonth&gt;&quot;)
64		ChartSource = ReplaceString(ChartSource, iEndYear, &quot;&lt;EndYear&gt;&quot;)
65		ChartSource = ReplaceString(ChartSource, sInterval, &quot;&lt;interval&gt;&quot;)
66		oStatusLine.SetValue(2)
67		If GetCurrentRate(ChartSource, CurRate, 1) Then
68			oStatusLine.SetValue(8)
69			UpdateValue(StockName, Today, CurRate)
70			oStatusLine.SetValue(9)
71			UpdateChart(StockName)
72			oStatusLine.SetValue(10)
73		Else
74			sMsgInternetError = Stockname &amp; &quot;: &quot; &amp; sNoInternetDataAvailable &amp; chr(13) &amp; sCheckInternetSettings
75			Msgbox(sMsgInternetError, 16, sProductname)
76		End If
77		ProtectSheets(oSheets)
78		oStatusLine.End
79		If oSheets.HasbyName(sNewSheetName) Then
80			oController.ActiveSheet = oSheets.GetByName(sNewSheetName)
81		End If
82&apos;		oDocument.RemoveActionLock()
83	End If
84End Sub
85
86
87
88Sub InternetUpdate()
89Dim i as Integer
90Dim StocksCount as Integer
91Dim iStartRow as Integer
92Dim sUrl as String
93Dim StockName as String
94Dim CurRate as Double
95Dim oCell as Object
96Dim sMsgInternetError as String
97Dim sStockID as String
98Dim ChartSource as String
99&apos;	oDocument.AddActionLock()
100	Initialize(True)
101	UnprotectSheets(oSheets)
102	StocksCount = GetStocksCount(iStartRow)
103	InitializeStatusline(&quot;&quot;, StocksCount + 1, 1)
104	Today = CDate(Date)
105	For i = iStartRow + 1 To iStartRow + StocksCount
106		StockName = oFirstSheet.GetCellbyPosition(SBCOLUMNNAME1, i).String
107		sStockID = oFirstSheet.GetCellByPosition(SBCOLUMNID1, i).String
108		ChartSource = ReplaceString(sCurChartSource, sStockID, &quot;&lt;StockID&gt;&quot;)
109		If GetCurrentRate(ChartSource, CurRate, 0) Then
110			InsertCurrentValue(CurRate, i, Now)
111		Else
112			sMsgInternetError = Stockname &amp; &quot;: &quot; &amp; sNoInternetDataAvailable &amp; chr(13) &amp; sCheckInternetSettings
113			Msgbox(sMsgInternetError, 16, sProductname)
114		End If
115		oStatusline.SetValue(i - iStartRow + 1)
116	Next
117	ProtectSheets(oSheets)
118	oStatusLine.End
119&apos;	oDocument.RemoveActionLock
120End Sub
121
122
123
124Function GetCurrentRate(sUrl as String, fValue As Double, iValueRow as Integer) as Boolean
125Dim sFilter As String
126Dim sOptions As String
127Dim oLinkSheet As Object
128Dim sDate as String
129	If oSheets.hasByName(&quot;Link&quot;) Then
130		oLinkSheet = oSheets.getByName(&quot;Link&quot;)
131	Else
132		oLinkSheet = oDocument.createInstance(&quot;com.sun.star.sheet.Spreadsheet&quot;)
133		oSheets.insertByName(&quot;Link&quot;, oLinkSheet)
134		oLinkSheet.IsVisible = False
135	End If
136
137	sFilter = &quot;Text - txt - csv (StarCalc)&quot;
138	sOptions = sCurSeparator &amp; &quot;,34,SYSTEM,1,1/10/2/10/3/10/4/10/5/10/6/10/7/10/8/10/9/10&quot;
139
140	oLinkSheet.LinkMode = com.sun.star.sheet.SheetLinkMode.NONE
141	oLinkSheet.link(sUrl, &quot;&quot;, sFilter, sOptions, 1 )
142	fValue = oLinkSheet.getCellByPosition(iValueCol, iValueRow).Value
143	If fValue = 0 Then
144		Dim sValue as String
145		sValue = oLinkSheet.getCellByPosition(1, iValueRow).String
146		sValue = ReplaceString(sValue, &quot;.&quot;,&quot;,&quot;)
147		fValue = Val(sValue)
148	End If
149	GetCurrentRate = fValue &lt;&gt; 0
150End Function
151
152
153
154Sub UpdateValue(ByVal sName As String, fDate As Double, fValue As Double )
155Dim oSheet As Object
156Dim iColumn As Long
157Dim iRow As Long
158Dim i as Integer
159Dim oCell As Object
160Dim LastDate as Date
161Dim bLeaveLoop as Boolean
162Dim RemoveCount as Integer
163Dim iLastRow as Integer
164Dim iLastLinkRow as Integer
165Dim dDate as Date
166Dim CurDate as Date
167Dim oLinkSheet as Object
168Dim StartIndex as Integer
169Dim iCellValue as Long
170	&apos; Insert Sheet with Company - Chart
171	sName = CheckNewSheetname(oSheets, sName)
172	If NOT oSheets.hasByName(sName) Then
173		oSheets.CopybyName(&quot;Background&quot;, sName, oSheets.Count)
174		oSheet = oSheets.getByName(sName)
175		iCurRow = SBSTARTROW
176		iMaxRow = iCurRow
177		oCell = oSheet.getCellByPosition(SBDATECOLUMN, iCurRow)
178		oCell.Value = fDate
179	End If
180	sNewSheetName = sName
181	oLinkSheet = oSheets.GetByName(&quot;Link&quot;)
182	oSheet = oSheets.getByName(sName)
183	iLastRow = GetLastUsedRow(oSheet)- 2
184	iLastLinkRow = GetLastUsedRow(oLinkSheet)
185	iCurRow = iLastRow
186	bLeaveLoop = False
187	RemoveCount = 0
188	&apos; Delete all Cells in Date Area
189	Do
190		oCell = oSheet.GetCellbyPosition(SBDATECOLUMN,iCurRow)
191		If oCell.CellStyle = sColumnHeader Then
192			bLeaveLoop = True
193			StartIndex = iCurRow
194			iCurRow = iCurRow + 1
195		Else
196			RemoveCount = RemoveCount + 1
197			iCurRow = iCurRow - 1
198		End If
199	Loop Until bLeaveLoop
200	If RemoveCount &gt; 1 Then
201		oSheet.Rows.RemoveByIndex(iCurRow, RemoveCount-1)
202	End If
203	For i = 1 To iLastLinkRow
204		oCell = oSheet.GetCellbyPosition(SBDATECOLUMN,iCurRow)
205		iCellValue = oLinkSheet.GetCellByPosition(0,i).Value
206		If iCellValue &gt; 0 Then
207			oCell.SetValue(oLinkSheet.GetCellByPosition(0,i).Value)
208		Else
209			oCell.SetValue(StringToDate(oLinkSheet.GetCellByPosition(0,i).String)
210		End If
211		oCell = oSheet.GetCellbyPosition(SBVALUECOLUMN,iCurRow)
212		oCell.SetValue(oLinkSheet.GetCellByPosition(4,i).Value)
213		If i &lt; iLastLinkRow Then
214			iCurRow = iCurRow + 1
215			oSheet.Rows.InsertByIndex(iCurRow,1)
216		End If
217	Next i
218	iMaxRow = iCurRow
219End Sub
220
221
222Function StringToDate(DateString as String) as Date
223Dim ShortMonths(11)
224Dim DateList() as String
225Dim MaxIndex as Integer
226Dim i as Integer
227	ShortMonths(0) = &quot;Jan&quot;
228	ShortMonths(1) = &quot;Feb&quot;
229	ShortMonths(2) = &quot;Mar&quot;
230	ShortMonths(3) = &quot;Apr&quot;
231	ShortMonths(4) = &quot;May&quot;
232	ShortMonths(5) = &quot;Jun&quot;
233	ShortMonths(6) = &quot;Jul&quot;
234	ShortMonths(7) = &quot;Aug&quot;
235	ShortMonths(8) = &quot;Sep&quot;
236	ShortMonths(9) = &quot;Oct&quot;
237	ShortMonths(10) = &quot;Nov&quot;
238	ShortMonths(11) = &quot;Dec&quot;
239	For i = 0 To 11
240		DateString = ReplaceString(DateString,CStr(i+1),ShortMonths(i))
241	Next i
242	DateString = ReplaceString(DateString, &quot;.&quot;, &quot;-&quot;)
243	StringToDate = CDate(DateString)
244End Function
245
246
247Sub UpdateChart(sName As String)
248Dim oSheet As Object
249Dim oCell As Object, oCursor As Object
250Dim oChartRange As Object
251Dim oEmbeddedChart As Object, oCharts As Object
252Dim oChart As Object, oDiagram As Object
253Dim oYAxis As Object, oXAxis As Object
254Dim fMin As Double, fMax As Double
255Dim nDateFormat As Long
256Dim aPos As Variant
257Dim aSize As Variant
258Dim oContainerChart as Object
259Dim mRangeAddresses(0) as New com.sun.star.table.CellRangeAddress
260	mRangeAddresses(0).Sheet = GetSheetIndex(oSheets, sNewSheetName)
261	mRangeAddresses(0).StartColumn = SBDATECOLUMN
262	mRangeAddresses(0).StartRow = SBSTARTROW-1
263	mRangeAddresses(0).EndColumn = SBVALUECOLUMN
264	mRangeAddresses(0).EndRow = iMaxRow
265
266	oSheet = oDocument.Sheets.getByName(sNewSheetName)
267	oCharts = oSheet.Charts
268
269	If Not oCharts.hasElements Then
270		oSheet.GetCellbyPosition(2,2).SetString(sName)
271		oChartRange = oSheet.getCellRangeByPosition(SBDATECOLUMN,6,5,SBSTARTROW-3)
272		aPos = oChartRange.Position
273		aSize = oChartRange.Size
274
275		Dim oRectangleShape As New com.sun.star.awt.Rectangle
276		oRectangleShape.X = aPos.X
277		oRectangleShape.Y = aPos.Y
278		oRectangleShape.Width = aSize.Width
279		oRectangleShape.Height = aSize.Height
280		oCharts.addNewByName(sName, oRectangleShape, mRangeAddresses(), True, False)
281		oContainerChart = oCharts.getByName(sName)
282		oChart = oContainerChart.EmbeddedObject
283		oChart.Title.String	= &quot;&quot;
284		oChart.HasLegend = False
285		oChart.diagram = oChart.createInstance(&quot;com.sun.star.chart.XYDiagram&quot;)
286		oDiagram = oChart.Diagram
287		oDiagram.DataRowSource = com.sun.star.chart.ChartDataRowSource.COLUMNS
288		oChart.Area.LineStyle = com.sun.star.drawing.LineStyle.SOLID
289		oXAxis = oDiagram.XAxis
290		oXAxis.TextBreak = False
291		nDateFormat = oXAxis.NumberFormats.getStandardFormat(com.sun.star.util.NumberFormat.DATE, oDocLocale)
292
293		oYAxis = oDiagram.getYAxis()
294		oYAxis.AutoOrigin = True
295	Else
296		oChart = oCharts(0)
297		oChart.Ranges = mRangeAddresses()
298		oChart.HasRowHeaders = False
299		oEmbeddedChart = oChart.EmbeddedObject
300		oDiagram = oEmbeddedChart.Diagram
301		oXAxis = oDiagram.XAxis
302	End If
303	oXAxis.AutoStepMain = False
304	oXAxis.AutoStepHelp = False
305	oXAxis.StepMain = iStep
306	oXAxis.StepHelp = iStep
307	fMin = oSheet.getCellByPosition(SBDATECOLUMN,SBSTARTROW).Value
308	fMax = oSheet.getCellByPosition(SBDATECOLUMN,iMaxRow).Value
309	oXAxis.Min = fMin
310	oXAxis.Max = fMax
311	oXAxis.AutoMin = False
312	oXAxis.AutoMax = False
313End Sub
314
315
316Sub CalculateChartafterSplit(SheetName, NewNumber, OldNumber, NoteText, SplitDate)
317Dim oSheet as Object
318Dim i as Integer
319Dim oValueCell as Object
320Dim oDateCell as Object
321Dim bLeaveLoop as Boolean
322	If oSheets.HasbyName(SheetName) Then
323		oSheet = oSheets.GetbyName(SheetName)
324		i = 0
325		bLeaveLoop = False
326		Do
327			oValueCell = oSheet.GetCellbyPosition(SBVALUECOLUMN, SBSTARTROW + i)
328			If oValueCell.CellStyle = CurrCellStyle Then
329				SplitCellValue(oSheet, OldNumber, NewNumber, SBVALUECOLUMN, SBSTARTROW + i, &quot;&quot;)
330				i = i + 1
331			Else
332				bLeaveLoop = True
333			End If
334		Loop Until bLeaveLoop
335		oDateCell = oSheet.GetCellbyPosition(SBDATECOLUMN, SBSTARTROW + i-1)
336		oDateCell.Annotation.SetString(NoteText)
337	End If
338End Sub
339</script:module>