-
Notifications
You must be signed in to change notification settings - Fork 0
/
New-UDCalendar.ps1
72 lines (66 loc) · 2.27 KB
/
New-UDCalendar.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<#
.SYNOPSIS
Calendar component.
.DESCRIPTION
Allows to show a calendar, with both "onClickDay" and "onChange" events. Also supports Get-UDElement, and the easy mode Get-UDCalElement which retuns a preformatted DateTime object.
.PARAMETER Id
An id for the component default value will be generated by new-guid.
.EXAMPLE
PS C:\> <example usage>
Explanation of what the example does
.INPUTS
Inputs (if any)
.OUTPUTS
Output (if any)
.NOTES
General notes
#>
function New-UDCalendar {
param(
[Parameter()]
[string]$Id = ([Guid]::NewGuid()),
[Parameter()]
[object]$OnClickDay,
[Parameter()]
[object]$OnChange,
[Parameter()]
[DateTime]$StartView = (Get-Date)
)
End {
$activeOnChange = "false"
$activeOnClickDay = "false"
if ($null -ne $OnChange) {
if ($OnChange -is [scriptblock]) {
$OnChange = New-UDEndpoint -Endpoint $OnChange -Id ($Id + "onChange")
}
elseif ($onChange -isnot [UniversalDashboard.Models.Endpoint]) {
throw "OnChange must be a script block or UDEndpoint."
}
$activeOnChange = "true"
}
if ($null -ne $OnClickDay) {
if ($OnClickDay -is [scriptblock]) {
$OnClickDay = New-UDEndpoint -Endpoint $OnClickDay -Id ($Id + "onClickDay")
}
elseif ($OnClickDay -isnot [UniversalDashboard.Models.Endpoint]) {
throw "OnClickDay must be a script block or UDEndpoint."
}
$activeOnClickDay = "true"
}
@{
# The AssetID of the main JS File
assetId = $AssetId
# Tell UD this is a plugin
isPlugin = $true
# This ID must be the same as the one used in the JavaScript to register the control with UD
type = "ud-calendar"
# An ID is mandatory
id = $Id
activeOnChange = $activeOnChange
$activeOnClickDay = $activeOnClickDay
# This is where you can put any other properties. They are passed to the React control's props
# The keys are case-sensitive in JS.
StartView = $StartView.GetDateTimeFormats("o")
}
}
}