├── .gitattributes
├── .gitignore
├── Client
├── AssemblyInfo.cs
├── Interop.cs
├── Modules
│ └── Syncfusion.Helpdesk
│ │ ├── Edit.razor
│ │ ├── EditTicket.razor
│ │ ├── Index.razor
│ │ ├── ModuleInfo.cs
│ │ └── Settings.razor
├── Services
│ ├── HelpDeskAdminService.cs
│ ├── HelpDeskService.cs
│ ├── IHelpDeskAdminService.cs
│ └── IHelpDeskService.cs
├── Startup
│ └── ClientStartup.cs
├── Syncfusion.HelpDesk.Client.csproj
└── _Imports.razor
├── Package
├── Syncfusion.HelpDesk.Package.csproj
├── Syncfusion.HelpDesk.nuspec
├── debug.cmd
└── release.cmd
├── README.md
├── Server
├── Controllers
│ ├── HelpDeskAdminController.cs
│ └── HelpDeskController.cs
├── Manager
│ └── HelpDeskManager.cs
├── Repository
│ ├── HelpDeskContext.cs
│ ├── HelpDeskRepository.cs
│ └── IHelpDeskRepository.cs
├── Scripts
│ ├── Syncfusion.HelpDesk.1.0.0.sql
│ ├── Syncfusion.HelpDesk.Uninstall.sql
│ └── Syncfusion.Helpdesk.1.0.1.sql
├── Startup
│ └── ServerStartup.cs
├── Syncfusion.HelpDesk.Server.csproj
└── wwwroot
│ ├── Modules
│ └── Syncfusion.HelpDesk
│ │ ├── Module.css
│ │ └── Module.js
│ └── _content
│ ├── Placeholder.txt
│ └── syncfusion.blazor
│ ├── scripts
│ ├── 0.js
│ ├── 1.js
│ ├── accordion-ddeaa8.min.js
│ ├── accumulationchart-ddeaa8.min.js
│ ├── button-ddeaa8.min.js
│ ├── buttonsbase-ddeaa8.min.js
│ ├── chart-ddeaa8.min.js
│ ├── chartsbase-ddeaa8.min.js
│ ├── compression-ddeaa8.min.js
│ ├── contextmenu-ddeaa8.min.js
│ ├── data-ddeaa8.min.js
│ ├── diagrams-ddeaa8.min.js
│ ├── dialog-ddeaa8.min.js
│ ├── drawings-ddeaa8.min.js
│ ├── excelexport-ddeaa8.min.js
│ ├── fileutils-ddeaa8.min.js
│ ├── inplaceeditor-ddeaa8.min.js
│ ├── inputsbase-ddeaa8.min.js
│ ├── listsbase-ddeaa8.min.js
│ ├── listview-ddeaa8.min.js
│ ├── navigationsbase-ddeaa8.min.js
│ ├── officechart-ddeaa8.min.js
│ ├── pdfexport-ddeaa8.min.js
│ ├── pdfviewer-ddeaa8.min.js
│ ├── popup-ddeaa8.min.js
│ ├── popupsbase-ddeaa8.min.js
│ ├── sf-accordion-ddeaa8.min.js
│ ├── sf-accumulation-chart-ddeaa8.min.js
│ ├── sf-barcode-ddeaa8.min.js
│ ├── sf-bullet-chart-ddeaa8.min.js
│ ├── sf-calendarbase-ddeaa8.min.js
│ ├── sf-chart-ddeaa8.min.js
│ ├── sf-circulargauge-ddeaa8.min.js
│ ├── sf-colorpicker-ddeaa8.min.js
│ ├── sf-contextmenu-ddeaa8.min.js
│ ├── sf-dashboard-layout-ddeaa8.min.js
│ ├── sf-datepicker-ddeaa8.min.js
│ ├── sf-daterangepicker-ddeaa8.min.js
│ ├── sf-dialog-ddeaa8.min.js
│ ├── sf-documenteditor-ddeaa8.min.js
│ ├── sf-documenteditorcontainer-ddeaa8.min.js
│ ├── sf-drop-down-button-ddeaa8.min.js
│ ├── sf-dropdownlist-ddeaa8.min.js
│ ├── sf-filemanager-ddeaa8.min.js
│ ├── sf-gantt-ddeaa8.min.js
│ ├── sf-grid-ddeaa8.min.js
│ ├── sf-heatmap-ddeaa8.min.js
│ ├── sf-import-ddeaa8.min.js
│ ├── sf-import-ie-ddeaa8.min.js
│ ├── sf-import-script-ddeaa8.min.js
│ ├── sf-inplaceeditor-ddeaa8.min.js
│ ├── sf-kanban-ddeaa8.min.js
│ ├── sf-lineargauge-ddeaa8.min.js
│ ├── sf-listbox-ddeaa8.min.js
│ ├── sf-listview-ddeaa8.min.js
│ ├── sf-maps-ddeaa8.min.js
│ ├── sf-maskedtextbox-ddeaa8.min.js
│ ├── sf-menu-ddeaa8.min.js
│ ├── sf-multiselect-ddeaa8.min.js
│ ├── sf-numerictextbox-ddeaa8.min.js
│ ├── sf-pivotview-ddeaa8.min.js
│ ├── sf-progressbar-ddeaa8.min.js
│ ├── sf-range-navigator-ddeaa8.min.js
│ ├── sf-richtexteditor-ddeaa8.min.js
│ ├── sf-schedule-ddeaa8.min.js
│ ├── sf-sidebar-ddeaa8.min.js
│ ├── sf-slider-ddeaa8.min.js
│ ├── sf-smith-chart-ddeaa8.min.js
│ ├── sf-sparkline-ddeaa8.min.js
│ ├── sf-spinner-ddeaa8.min.js
│ ├── sf-splitter-ddeaa8.min.js
│ ├── sf-spreadsheet-ddeaa8.min.js
│ ├── sf-stock-chart-ddeaa8.min.js
│ ├── sf-svg-export-ddeaa8.min.js
│ ├── sf-tab-ddeaa8.min.js
│ ├── sf-textbox-ddeaa8.min.js
│ ├── sf-timepicker-ddeaa8.min.js
│ ├── sf-toast-ddeaa8.min.js
│ ├── sf-toolbar-ddeaa8.min.js
│ ├── sf-tooltip-ddeaa8.min.js
│ ├── sf-treegrid-ddeaa8.min.js
│ ├── sf-treemap-ddeaa8.min.js
│ ├── sf-treeview-ddeaa8.min.js
│ ├── sf-uploader-ddeaa8.min.js
│ ├── sortable-ddeaa8.min.js
│ ├── spinner-ddeaa8.min.js
│ ├── splitbuttonsbase-ddeaa8.min.js
│ ├── svgbase-ddeaa8.min.js
│ ├── syncfusion-blazor-extended-ddeaa8.min.js
│ ├── syncfusion-blazor.min.js
│ ├── textbox-ddeaa8.min.js
│ ├── toast-ddeaa8.min.js
│ └── tooltip-ddeaa8.min.js
│ └── styles
│ ├── bootstrap-dark.css
│ ├── bootstrap.css
│ ├── bootstrap4.css
│ ├── fabric-dark.css
│ ├── fabric.css
│ ├── highcontrast.css
│ ├── material-dark.css
│ └── material.css
├── Shared
├── Models
│ ├── Helpdesk.cs
│ ├── SyncfusionHelpDeskStatus.cs
│ ├── SyncfusionHelpDeskTicketDetails.cs
│ └── SyncfusionHelpDeskTickets.cs
└── Syncfusion.HelpDesk.Shared.csproj
└── Syncfusion.HelpDesk.sln
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Build results
17 | [Dd]ebug/
18 | [Dd]ebugPublic/
19 | [Rr]elease/
20 | [Rr]eleases/
21 | x64/
22 | x86/
23 | [Aa][Rr][Mm]/
24 | [Aa][Rr][Mm]64/
25 | bld/
26 | [Bb]in/
27 | [Oo]bj/
28 | [Ll]og/
29 |
30 | # Visual Studio 2015/2017 cache/options directory
31 | .vs/
32 | # Uncomment if you have tasks that create the project's static files in wwwroot
33 | #wwwroot/
34 |
35 | # Visual Studio 2017 auto generated files
36 | Generated\ Files/
37 |
38 | # MSTest test Results
39 | [Tt]est[Rr]esult*/
40 | [Bb]uild[Ll]og.*
41 |
42 | # NUNIT
43 | *.VisualState.xml
44 | TestResult.xml
45 |
46 | # Build Results of an ATL Project
47 | [Dd]ebugPS/
48 | [Rr]eleasePS/
49 | dlldata.c
50 |
51 | # Benchmark Results
52 | BenchmarkDotNet.Artifacts/
53 |
54 | # .NET Core
55 | project.lock.json
56 | project.fragment.lock.json
57 | artifacts/
58 |
59 | # StyleCop
60 | StyleCopReport.xml
61 |
62 | # Files built by Visual Studio
63 | *_i.c
64 | *_p.c
65 | *_h.h
66 | *.ilk
67 | *.meta
68 | *.obj
69 | *.iobj
70 | *.pch
71 | *.pdb
72 | *.ipdb
73 | *.pgc
74 | *.pgd
75 | *.rsp
76 | *.sbr
77 | *.tlb
78 | *.tli
79 | *.tlh
80 | *.tmp
81 | *.tmp_proj
82 | *_wpftmp.csproj
83 | *.log
84 | *.vspscc
85 | *.vssscc
86 | .builds
87 | *.pidb
88 | *.svclog
89 | *.scc
90 |
91 | # Chutzpah Test files
92 | _Chutzpah*
93 |
94 | # Visual C++ cache files
95 | ipch/
96 | *.aps
97 | *.ncb
98 | *.opendb
99 | *.opensdf
100 | *.sdf
101 | *.cachefile
102 | *.VC.db
103 | *.VC.VC.opendb
104 |
105 | # Visual Studio profiler
106 | *.psess
107 | *.vsp
108 | *.vspx
109 | *.sap
110 |
111 | # Visual Studio Trace Files
112 | *.e2e
113 |
114 | # TFS 2012 Local Workspace
115 | $tf/
116 |
117 | # Guidance Automation Toolkit
118 | *.gpState
119 |
120 | # ReSharper is a .NET coding add-in
121 | _ReSharper*/
122 | *.[Rr]e[Ss]harper
123 | *.DotSettings.user
124 |
125 | # JustCode is a .NET coding add-in
126 | .JustCode
127 |
128 | # TeamCity is a build add-in
129 | _TeamCity*
130 |
131 | # DotCover is a Code Coverage Tool
132 | *.dotCover
133 |
134 | # AxoCover is a Code Coverage Tool
135 | .axoCover/*
136 | !.axoCover/settings.json
137 |
138 | # Visual Studio code coverage results
139 | *.coverage
140 | *.coveragexml
141 |
142 | # NCrunch
143 | _NCrunch_*
144 | .*crunch*.local.xml
145 | nCrunchTemp_*
146 |
147 | # MightyMoose
148 | *.mm.*
149 | AutoTest.Net/
150 |
151 | # Web workbench (sass)
152 | .sass-cache/
153 |
154 | # Installshield output folder
155 | [Ee]xpress/
156 |
157 | # DocProject is a documentation generator add-in
158 | DocProject/buildhelp/
159 | DocProject/Help/*.HxT
160 | DocProject/Help/*.HxC
161 | DocProject/Help/*.hhc
162 | DocProject/Help/*.hhk
163 | DocProject/Help/*.hhp
164 | DocProject/Help/Html2
165 | DocProject/Help/html
166 |
167 | # Click-Once directory
168 | publish/
169 |
170 | # Publish Web Output
171 | *.[Pp]ublish.xml
172 | *.azurePubxml
173 | # Note: Comment the next line if you want to checkin your web deploy settings,
174 | # but database connection strings (with potential passwords) will be unencrypted
175 | *.pubxml
176 | *.publishproj
177 |
178 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
179 | # checkin your Azure Web App publish settings, but sensitive information contained
180 | # in these scripts will be unencrypted
181 | PublishScripts/
182 |
183 | # NuGet Packages
184 | *.nupkg
185 | # The packages folder can be ignored because of Package Restore
186 | **/[Pp]ackages/*
187 | # except build/, which is used as an MSBuild target.
188 | !**/[Pp]ackages/build/
189 | # Uncomment if necessary however generally it will be regenerated when needed
190 | #!**/[Pp]ackages/repositories.config
191 | # NuGet v3's project.json files produces more ignorable files
192 | *.nuget.props
193 | *.nuget.targets
194 |
195 | # Microsoft Azure Build Output
196 | csx/
197 | *.build.csdef
198 |
199 | # Microsoft Azure Emulator
200 | ecf/
201 | rcf/
202 |
203 | # Windows Store app package directories and files
204 | AppPackages/
205 | BundleArtifacts/
206 | Package.StoreAssociation.xml
207 | _pkginfo.txt
208 | *.appx
209 |
210 | # Visual Studio cache files
211 | # files ending in .cache can be ignored
212 | *.[Cc]ache
213 | # but keep track of directories ending in .cache
214 | !?*.[Cc]ache/
215 |
216 | # Others
217 | ClientBin/
218 | ~$*
219 | *~
220 | *.dbmdl
221 | *.dbproj.schemaview
222 | *.jfm
223 | *.pfx
224 | *.publishsettings
225 | orleans.codegen.cs
226 |
227 | # Including strong name files can present a security risk
228 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
229 | #*.snk
230 |
231 | # Since there are multiple workflows, uncomment next line to ignore bower_components
232 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
233 | #bower_components/
234 |
235 | # RIA/Silverlight projects
236 | Generated_Code/
237 |
238 | # Backup & report files from converting an old project file
239 | # to a newer Visual Studio version. Backup files are not needed,
240 | # because we have git ;-)
241 | _UpgradeReport_Files/
242 | Backup*/
243 | UpgradeLog*.XML
244 | UpgradeLog*.htm
245 | ServiceFabricBackup/
246 | *.rptproj.bak
247 |
248 | # SQL Server files
249 | *.mdf
250 | *.ldf
251 | *.ndf
252 |
253 | # Business Intelligence projects
254 | *.rdl.data
255 | *.bim.layout
256 | *.bim_*.settings
257 | *.rptproj.rsuser
258 | *- Backup*.rdl
259 |
260 | # Microsoft Fakes
261 | FakesAssemblies/
262 |
263 | # GhostDoc plugin setting file
264 | *.GhostDoc.xml
265 |
266 | # Node.js Tools for Visual Studio
267 | .ntvs_analysis.dat
268 | node_modules/
269 |
270 | # Visual Studio 6 build log
271 | *.plg
272 |
273 | # Visual Studio 6 workspace options file
274 | *.opt
275 |
276 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
277 | *.vbw
278 |
279 | # Visual Studio LightSwitch build output
280 | **/*.HTMLClient/GeneratedArtifacts
281 | **/*.DesktopClient/GeneratedArtifacts
282 | **/*.DesktopClient/ModelManifest.xml
283 | **/*.Server/GeneratedArtifacts
284 | **/*.Server/ModelManifest.xml
285 | _Pvt_Extensions
286 |
287 | # Paket dependency manager
288 | .paket/paket.exe
289 | paket-files/
290 |
291 | # FAKE - F# Make
292 | .fake/
293 |
294 | # JetBrains Rider
295 | .idea/
296 | *.sln.iml
297 |
298 | # CodeRush personal settings
299 | .cr/personal
300 |
301 | # Python Tools for Visual Studio (PTVS)
302 | __pycache__/
303 | *.pyc
304 |
305 | # Cake - Uncomment if you are using it
306 | # tools/**
307 | # !tools/packages.config
308 |
309 | # Tabs Studio
310 | *.tss
311 |
312 | # Telerik's JustMock configuration file
313 | *.jmconfig
314 |
315 | # BizTalk build output
316 | *.btp.cs
317 | *.btm.cs
318 | *.odx.cs
319 | *.xsd.cs
320 |
321 | # OpenCover UI analysis results
322 | OpenCover/
323 |
324 | # Azure Stream Analytics local run output
325 | ASALocalRun/
326 |
327 | # MSBuild Binary and Structured Log
328 | *.binlog
329 |
330 | # NVidia Nsight GPU debugger configuration file
331 | *.nvuser
332 |
333 | # MFractors (Xamarin productivity tool) working folder
334 | .mfractor/
335 |
336 | # Local History for Visual Studio
337 | .localhistory/
338 |
339 | # BeatPulse healthcheck temp database
340 | healthchecksdb
--------------------------------------------------------------------------------
/Client/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Resources;
2 | using Microsoft.Extensions.Localization;
3 |
4 | [assembly: RootNamespace("Syncfusion.Helpdesk.Client")]
--------------------------------------------------------------------------------
/Client/Interop.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.JSInterop;
2 | using System.Threading.Tasks;
3 |
4 | namespace Syncfusion.Helpdesk
5 | {
6 | public class Interop
7 | {
8 | private readonly IJSRuntime _jsRuntime;
9 |
10 | public Interop(IJSRuntime jsRuntime)
11 | {
12 | _jsRuntime = jsRuntime;
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Client/Modules/Syncfusion.Helpdesk/Edit.razor:
--------------------------------------------------------------------------------
1 | @using Oqtane.Modules.Controls
2 | @using Syncfusion.Helpdesk.Services
3 | @using Syncfusion.Helpdesk.Models
4 | @using Syncfusion.Helpdesk.Client.Modules.Syncfusion_Helpdesk
5 |
6 | @namespace Syncfusion.Helpdesk
7 | @inherits ModuleBase
8 | @inject IHelpdeskAdminService HelpdeskAdminService
9 | @inject NavigationManager NavigationManager
10 |
11 |
12 |
19 |
21 |
22 |
23 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
36 |
37 |
38 |
39 |
43 |
44 |
47 |
48 |
52 |
53 |
56 |
57 |
58 |
59 |
60 |
61 |
67 |
68 | EDIT TICKET # @SelectedTicket.HelpDeskTicketId
69 |
70 |
71 |
72 |
73 |
74 |
79 |
80 |
81 |
82 |
83 |
84 |
90 |
91 |
92 |
93 |
94 |
99 |
104 |
105 |
106 |
107 |
108 |
109 | @code {
110 | // This ensures only users with this security level Edit
111 | // can open this control
112 | public override SecurityAccessLevel
113 | SecurityAccessLevel => SecurityAccessLevel.Edit;
114 |
115 | public override string Actions => "Add,Edit";
116 |
117 | public override string Title => "Manage HelpDesk";
118 |
119 | public override List Resources => new List()
120 | {
121 | new Resource {
122 | ResourceType = ResourceType.Stylesheet,
123 | Url = ModulePath() + "Module.css" },
124 |
125 | // Only register .css files
126 | // The JavaScript files will automatically be pulled
127 | // from the _content/syncfusion.blazor directory
128 | // so they do not need to be registered here
129 | new Resource { ResourceType = ResourceType.Stylesheet,
130 | Url = "_content/Syncfusion.Blazor/" +
131 | "styles/bootstrap4.css" },
132 |
133 | new Resource { ResourceType = ResourceType.Stylesheet,
134 | Url = "_content/Syncfusion.Blazor/" +
135 | "styles/material-dark.css" },
136 |
137 | new Resource { ResourceType = ResourceType.Script,
138 | Url = "https://kit.fontawesome.com/a076d05399.js" }
139 | };
140 |
141 | // Global property for the selected Help Desk Ticket
142 | private SyncfusionHelpDeskTickets SelectedTicket =
143 | new SyncfusionHelpDeskTickets();
144 |
145 | SfGrid gridObj;
146 |
147 | public List
148 | colHelpDeskTickets
149 | { get; set; }
150 |
151 | string SfDataManagerURL = "";
152 |
153 | protected override async Task OnInitializedAsync()
154 | {
155 | try
156 | {
157 | SfDataManagerURL =
158 | $"{ModuleState.SiteId}/api/HelpdeskAdmin?" +
159 | $"entityid={ModuleState.ModuleId}";
160 | }
161 | catch (Exception ex)
162 | {
163 | await logger.LogError(ex, "Error Loading HelpDesk {Error}",
164 | ex.Message);
165 |
166 | AddModuleMessage("Error Loading HelpDesk", MessageType.Error);
167 | }
168 | }
169 |
170 | public async void OnCommandClicked(
171 | CommandClickEventArgs args)
172 | {
173 | if (args.CommandColumn.ButtonOption.Content == "Edit")
174 | {
175 | // Get the selected Help Desk Ticket
176 | var HelpDeskTicket = (SyncfusionHelpDeskTickets)args.RowData;
177 |
178 | SelectedTicket =
179 | await HelpdeskAdminService.GetSyncfusionHelpDeskTicketAdminAsync
180 | (HelpDeskTicket.HelpDeskTicketId, ModuleState.ModuleId);
181 |
182 | // Open the Edit dialog
183 | this.EditDialogVisibility = true;
184 | StateHasChanged();
185 | }
186 |
187 | if (args.CommandColumn.ButtonOption.Content == "Delete")
188 | {
189 | SelectedTicket = new SyncfusionHelpDeskTickets();
190 | SelectedTicket.HelpDeskTicketId = args.RowData.HelpDeskTicketId;
191 |
192 | // Open Delete confirmation dialog
193 | this.DeleteRecordConfirmVisibility = true;
194 | StateHasChanged();
195 | }
196 |
197 | }
198 |
199 | public async Task SaveTicket()
200 | {
201 | // Update the selected Help Desk Ticket
202 | await HelpdeskAdminService.
203 | UpdateSyncfusionHelpDeskTicketsAdminAsync(SelectedTicket);
204 |
205 | // Close the Edit dialog
206 | this.EditDialogVisibility = false;
207 |
208 | // Refresh the SfGrid
209 | // so the changes to the selected
210 | // Help Desk Ticket are reflected
211 | gridObj.Refresh();
212 | }
213 |
214 | public bool EditDialogVisibility { get; set; } = false;
215 |
216 | // Property to control the delete dialog
217 | public bool DeleteRecordConfirmVisibility { get; set; } = false;
218 |
219 | public void ConfirmDeleteNo()
220 | {
221 | this.DeleteRecordConfirmVisibility = false;
222 | }
223 |
224 | public async void ConfirmDeleteYes()
225 | {
226 | // The user selected Yes to delete the
227 | // selected Help Desk Ticket
228 | // Delete the record
229 | await HelpdeskAdminService.
230 | DeleteSyncfusionHelpDeskTicketsAsync(
231 | SelectedTicket.HelpDeskTicketId,
232 | ModuleState.ModuleId);
233 |
234 | // Close the dialog
235 | this.DeleteRecordConfirmVisibility = false;
236 | StateHasChanged();
237 |
238 | // Refresh the SfGrid
239 | // so the deleted record will not show
240 | gridObj.Refresh();
241 | }
242 | }
--------------------------------------------------------------------------------
/Client/Modules/Syncfusion.Helpdesk/EditTicket.razor:
--------------------------------------------------------------------------------
1 | @using System.Security.Claims;
2 | @using Syncfusion.Blazor.DropDowns
3 | @using Syncfusion.Helpdesk.Models
4 |
5 |
6 |
13 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
28 |
29 |
30 |
31 |
35 |
36 |
37 |
38 | @if (SelectedTicket.SyncfusionHelpDeskTicketDetails != null)
39 | {
40 | @if (SelectedTicket.SyncfusionHelpDeskTicketDetails.Count() > 0)
41 | {
42 |
43 |
44 |
45 | Date |
46 | Description |
47 |
48 |
49 |
50 | @foreach (var TicketDetail in
51 | SelectedTicket.SyncfusionHelpDeskTicketDetails)
52 | {
53 |
54 |
55 | @TicketDetail.TicketDetailDate.ToShortDateString()
56 | |
57 |
58 | @TicketDetail.TicketDescription
59 | |
60 |
61 | }
62 |
63 |
64 | }
65 |
67 |
68 |
70 | Add
71 |
72 | }
73 |
74 | @code {
75 | [Parameter]
76 | public SyncfusionHelpDeskTickets SelectedTicket { get; set; }
77 |
78 | [Parameter]
79 | public bool isAdmin { get; set; }
80 |
81 | string NewHelpDeskTicketDetailText = "";
82 |
83 | private void AddHelpDeskTicketDetail()
84 | {
85 | // Create New HelpDeskTicketDetails record
86 | SyncfusionHelpDeskTicketDetails NewHelpDeskTicketDetail =
87 | new SyncfusionHelpDeskTicketDetails();
88 |
89 | NewHelpDeskTicketDetail.HelpDeskTicketId =
90 | SelectedTicket.HelpDeskTicketId;
91 |
92 | NewHelpDeskTicketDetail.TicketDetailDate =
93 | DateTime.Now;
94 |
95 | NewHelpDeskTicketDetail.TicketDescription =
96 | NewHelpDeskTicketDetailText;
97 |
98 | // Add to collection
99 | SelectedTicket.SyncfusionHelpDeskTicketDetails
100 | .Add(NewHelpDeskTicketDetail);
101 |
102 | // Clear the Text Box
103 | NewHelpDeskTicketDetailText = "";
104 | }
105 |
106 | }
107 |
--------------------------------------------------------------------------------
/Client/Modules/Syncfusion.Helpdesk/ModuleInfo.cs:
--------------------------------------------------------------------------------
1 | using Oqtane.Models;
2 | using Oqtane.Modules;
3 |
4 | namespace Syncfusion.Helpdesk
5 | {
6 | public class ModuleInfo : IModule
7 | {
8 | public ModuleDefinition ModuleDefinition => new ModuleDefinition
9 | {
10 | Name = "Helpdesk",
11 | Description = "Helpdesk",
12 | Version = "1.0.1",
13 | ServerManagerType = "Syncfusion.Helpdesk.Manager.HelpdeskManager, Syncfusion.Helpdesk.Server.Oqtane",
14 | ReleaseVersions = "1.0.0,1.0.1",
15 | Dependencies = "Syncfusion.Helpdesk.Shared.Oqtane,Syncfusion.Blazor,Syncfusion.ExcelExport.Net,Syncfusion.Licensing,Syncfusion.PdfExport.Net,Newtonsoft.Json"
16 | };
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Client/Modules/Syncfusion.Helpdesk/Settings.razor:
--------------------------------------------------------------------------------
1 | @namespace Syncfusion.Helpdesk
2 | @inherits ModuleBase
3 | @inject ISettingService SettingService
4 |
5 |
15 |
16 | @code {
17 | public override string Title => "Helpdesk Settings";
18 |
19 | string _value;
20 |
21 | protected override async Task OnInitializedAsync()
22 | {
23 | try
24 | {
25 | Dictionary settings = await SettingService.GetModuleSettingsAsync(ModuleState.ModuleId);
26 | _value = SettingService.GetSetting(settings, "SettingName", "");
27 | }
28 | catch (Exception ex)
29 | {
30 | ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error);
31 | }
32 | }
33 |
34 | public async Task UpdateSettings()
35 | {
36 | try
37 | {
38 | Dictionary settings = await SettingService.GetModuleSettingsAsync(ModuleState.ModuleId);
39 | SettingService.SetSetting(settings, "SettingName", _value);
40 | await SettingService.UpdateModuleSettingsAsync(settings, ModuleState.ModuleId);
41 | }
42 | catch (Exception ex)
43 | {
44 | ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error);
45 | }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/Client/Services/HelpDeskAdminService.cs:
--------------------------------------------------------------------------------
1 | using Oqtane.Modules;
2 | using Oqtane.Services;
3 | using Oqtane.Shared;
4 | using System.Net.Http;
5 | using System.Threading.Tasks;
6 | using Syncfusion.Helpdesk.Models;
7 |
8 | namespace Syncfusion.Helpdesk.Services
9 | {
10 | public class HelpdeskAdminService :
11 | ServiceBase, IHelpdeskAdminService, IService
12 | {
13 | private readonly SiteState _siteState;
14 |
15 | public HelpdeskAdminService(
16 | HttpClient http,
17 | SiteState siteState) : base(http)
18 | {
19 | _siteState = siteState;
20 | }
21 |
22 | private string Apiurl => CreateApiUrl(
23 | _siteState.Alias, "HelpdeskAdmin");
24 |
25 | public async Task
26 | GetSyncfusionHelpDeskTicketAdminAsync(
27 | int HelpDeskTicketId, int ModuleId)
28 | {
29 | return await GetJsonAsync(
30 | CreateAuthorizationPolicyUrl(
31 | $"{Apiurl}/{HelpDeskTicketId}",
32 | ModuleId));
33 | }
34 |
35 | public async Task
36 | UpdateSyncfusionHelpDeskTicketsAdminAsync(
37 | Models.SyncfusionHelpDeskTickets objSyncfusionHelpDeskTicket)
38 | {
39 | return await PutJsonAsync(
40 | CreateAuthorizationPolicyUrl(
41 | $"{Apiurl}/{objSyncfusionHelpDeskTicket.HelpDeskTicketId}",
42 | objSyncfusionHelpDeskTicket.ModuleId),
43 | objSyncfusionHelpDeskTicket);
44 | }
45 |
46 | public async Task DeleteSyncfusionHelpDeskTicketsAsync(
47 | int HelpDeskId, int ModuleId)
48 | {
49 | await DeleteAsync(CreateAuthorizationPolicyUrl(
50 | $"{Apiurl}/{HelpDeskId}", ModuleId));
51 | }
52 | }
53 | }
--------------------------------------------------------------------------------
/Client/Services/HelpDeskService.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 | using System.Net.Http;
4 | using System.Threading.Tasks;
5 | using Oqtane.Modules;
6 | using Oqtane.Services;
7 | using Oqtane.Shared;
8 | using Syncfusion.Helpdesk.Models;
9 |
10 | namespace Syncfusion.Helpdesk.Services
11 | {
12 | public class HelpdeskService :
13 | ServiceBase, IHelpdeskService, IService
14 | {
15 | private readonly SiteState _siteState;
16 |
17 | public HelpdeskService(
18 | HttpClient http, SiteState siteState) : base(http)
19 | {
20 | _siteState = siteState;
21 | }
22 |
23 | private string Apiurl => CreateApiUrl(_siteState.Alias, "Helpdesk");
24 |
25 | public async Task>
26 | GetSyncfusionHelpDeskTicketsByUserAsync(
27 | int ModuleId, string username)
28 | {
29 | return await GetJsonAsync>(
30 | CreateAuthorizationPolicyUrl(
31 | $"{Apiurl}?username={username}", ModuleId));
32 | }
33 |
34 | public async Task
35 | GetSyncfusionHelpDeskTicketByUserAsync(
36 | int HelpDeskTicketId, int ModuleId, string username)
37 | {
38 | return await GetJsonAsync(
39 | CreateAuthorizationPolicyUrl(
40 | $"{Apiurl}/{HelpDeskTicketId}?&username={username}", ModuleId));
41 | }
42 |
43 | public async Task
44 | AddSyncfusionHelpDeskTicketsAsync(
45 | SyncfusionHelpDeskTickets SyncfusionHelpDeskTickets)
46 | {
47 | return await PostJsonAsync(
48 | CreateAuthorizationPolicyUrl($"{Apiurl}",
49 | SyncfusionHelpDeskTickets.ModuleId),
50 | SyncfusionHelpDeskTickets);
51 | }
52 |
53 | public async Task
54 | UpdateSyncfusionHelpDeskTicketsAsync(
55 | SyncfusionHelpDeskTickets objSyncfusionHelpDeskTicket)
56 | {
57 | return await PostJsonAsync(
58 | CreateAuthorizationPolicyUrl(
59 | $"{Apiurl}/{objSyncfusionHelpDeskTicket.HelpDeskTicketId}",
60 | objSyncfusionHelpDeskTicket.ModuleId),
61 | objSyncfusionHelpDeskTicket);
62 | }
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/Client/Services/IHelpDeskAdminService.cs:
--------------------------------------------------------------------------------
1 | using Syncfusion.Helpdesk.Models;
2 | using System.Threading.Tasks;
3 |
4 | namespace Syncfusion.Helpdesk.Services
5 | {
6 | public interface IHelpdeskAdminService
7 | {
8 | // Admin Methods
9 |
10 | Task
11 | GetSyncfusionHelpDeskTicketAdminAsync(
12 | int HelpDeskTicketId, int ModuleId);
13 |
14 | Task
15 | UpdateSyncfusionHelpDeskTicketsAdminAsync(
16 | SyncfusionHelpDeskTickets objSyncfusionHelpDeskTicket);
17 |
18 | Task DeleteSyncfusionHelpDeskTicketsAsync(
19 | int Id, int ModuleId);
20 | }
21 | }
--------------------------------------------------------------------------------
/Client/Services/IHelpDeskService.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Threading.Tasks;
3 | using Syncfusion.Helpdesk.Models;
4 |
5 | namespace Syncfusion.Helpdesk.Services
6 | {
7 | public interface IHelpdeskService
8 | {
9 | Task>
10 | GetSyncfusionHelpDeskTicketsByUserAsync(
11 | int ModuleId, string username);
12 |
13 | Task
14 | GetSyncfusionHelpDeskTicketByUserAsync(
15 | int HelpDeskTicketId, int ModuleId, string username);
16 |
17 | Task
18 | AddSyncfusionHelpDeskTicketsAsync(
19 | SyncfusionHelpDeskTickets SyncfusionHelpDeskTickets);
20 |
21 | Task
22 | UpdateSyncfusionHelpDeskTicketsAsync(
23 | SyncfusionHelpDeskTickets SyncfusionHelpDeskTickets);
24 | }
25 | }
--------------------------------------------------------------------------------
/Client/Startup/ClientStartup.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Extensions.DependencyInjection;
2 | using Oqtane.Services;
3 | using Syncfusion.Blazor;
4 | namespace Syncfusion.Helpdesk.Client.Startup
5 | {
6 | public class ClientStartup : IClientStartup
7 | {
8 | public void ConfigureServices(IServiceCollection services)
9 | {
10 | services.AddSyncfusionBlazor();
11 | //Syncfusion.Licensing.SyncfusionLicenseProvider
12 | //.RegisterLicense("Enter Your Syncfusion License Here");
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/Client/Syncfusion.HelpDesk.Client.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0
5 | 3.0
6 | 1.0.0
7 | Syncfusion
8 | Syncfusion
9 | Helpdesk
10 | Syncfusion.Helpdesk
11 | Syncfusion
12 | Syncfusion.Helpdesk.Client.Oqtane
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | false
37 | false
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/Client/_Imports.razor:
--------------------------------------------------------------------------------
1 | @using System
2 | @using System.Linq
3 | @using System.Collections.Generic
4 | @using System.Net.Http
5 | @using System.Net.Http.Json
6 |
7 | @using Microsoft.AspNetCore.Components.Routing
8 | @using Microsoft.AspNetCore.Components.Web
9 | @using Microsoft.JSInterop
10 |
11 | @using Oqtane.Models
12 | @using Oqtane.Modules
13 | @using Oqtane.Modules.Controls
14 | @using Oqtane.Providers
15 | @using Oqtane.Security
16 | @using Oqtane.Services
17 | @using Oqtane.Shared
18 | @using Oqtane.Themes
19 | @using Oqtane.Themes.Controls
20 | @using Oqtane.UI
21 | @using Oqtane.Enums
22 |
23 | @using Microsoft.AspNetCore.Components.Forms
24 | @using Syncfusion.Blazor
25 | @using Syncfusion.Blazor.Inputs
26 | @using Syncfusion.Blazor.Popups
27 | @using Syncfusion.Blazor.Data
28 | @using Syncfusion.Blazor.DropDowns
29 | @using Syncfusion.Blazor.Layouts
30 | @using Syncfusion.Blazor.Calendars
31 | @using Syncfusion.Blazor.Navigations
32 | @using Syncfusion.Blazor.Lists
33 | @using Syncfusion.Blazor.Grids
34 | @using Syncfusion.Blazor.Buttons
35 | @using Syncfusion.Blazor.Notifications
36 |
--------------------------------------------------------------------------------
/Package/Syncfusion.HelpDesk.Package.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0
5 | false
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Package/Syncfusion.HelpDesk.nuspec:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Syncfusion.Helpdesk
5 | 1.0.0
6 | Syncfusion
7 | Syncfusion
8 | Helpdesk
9 | Helpdesk
10 | Syncfusion
11 | false
12 | MIT
13 | https://github.com/oqtane/oqtane.framework
14 | https://www.oqtane.org/Portals/0/icon.jpg
15 | oqtane module
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/Package/debug.cmd:
--------------------------------------------------------------------------------
1 | XCOPY "..\Client\bin\Debug\net8.0\Syncfusion.Helpdesk.Client.Oqtane.dll" "..\..\oqtane.framework\Oqtane.Server\bin\Debug\net8.0\" /Y
2 | XCOPY "..\Client\bin\Debug\net8.0\Syncfusion.Helpdesk.Client.Oqtane.pdb" "..\..\oqtane.framework\Oqtane.Server\bin\Debug\net8.0\" /Y
3 | XCOPY "..\Server\bin\Debug\net8.0\Syncfusion.Helpdesk.Server.Oqtane.dll" "..\..\oqtane.framework\Oqtane.Server\bin\Debug\net8.0\" /Y
4 | XCOPY "..\Server\bin\Debug\net8.0\Syncfusion.Helpdesk.Server.Oqtane.pdb" "..\..\oqtane.framework\Oqtane.Server\bin\Debug\net8.0\" /Y
5 | XCOPY "..\Shared\bin\Debug\net8.0\Syncfusion.Helpdesk.Shared.Oqtane.dll" "..\..\oqtane.framework\Oqtane.Server\bin\Debug\net8.0\" /Y
6 | XCOPY "..\Shared\bin\Debug\net8.0\Syncfusion.Helpdesk.Shared.Oqtane.pdb" "..\..\oqtane.framework\Oqtane.Server\bin\Debug\net8.0\" /Y
7 | XCOPY "..\Server\wwwroot\*" "..\..\oqtane.framework\Oqtane.Server\wwwroot\" /Y /S /I
8 | XCOPY "..\Server\bin\Debug\net8.0\Syncfusion.Blazor.dll" "..\..\oqtane.framework\Oqtane.Server\bin\Debug\net8.0\" /Y
9 | XCOPY "..\Server\bin\Debug\net8.0\Syncfusion.ExcelExport.Net.dll" "..\..\oqtane.framework\Oqtane.Server\bin\Debug\net8.0\" /Y
10 | XCOPY "..\Server\bin\Debug\net8.0\Syncfusion.Licensing.dll" "..\..\oqtane.framework\Oqtane.Server\bin\Debug\net8.0\" /Y
11 | XCOPY "..\Server\bin\Debug\net8.0\Syncfusion.PdfExport.Net.dll" "..\..\oqtane.framework\Oqtane.Server\bin\Debug\net8.0\" /Y
12 | XCOPY "..\Server\bin\Debug\net8.0\Newtonsoft.Json.dll" "..\..\oqtane.framework\Oqtane.Server\bin\Debug\net8.0\" /Y
--------------------------------------------------------------------------------
/Package/release.cmd:
--------------------------------------------------------------------------------
1 | "..\..\oqtane.framework\oqtane.package\nuget.exe" pack Syncfusion.Helpdesk.nuspec
2 | XCOPY "*.nupkg" "..\..\oqtane.framework\Oqtane.Server\wwwroot\Modules\" /Y
3 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Oqtane.SyncfusionHelpDesk
2 | Blazor Oqtane Syncfusion Help Desk
3 | 
4 |
5 | 
6 |
7 | ### Also See
8 | * [SyncfusionHelpDesk - Sever Side Blazor version](https://github.com/ADefWebserver/SyncfusionHelpDesk)
9 | * [SyncfusionHelpDesk - Blazor WebAssembly version](https://github.com/ADefWebserver/SyncfusionHelpDeskClient)
10 |
11 | ### Free E-Book
12 | 
13 |
14 | [Custom Blazor Oqtane Modules Succinctly](https://www.syncfusion.com/succinctly-free-ebooks/custom-blazor-oqtane-modules-succinctly/create-the-help-desk-module)
15 |
16 | ### Updates
17 | [I tried to setup my oqtane project with syncfusion, but it don't work #3066](https://github.com/oqtane/oqtane.framework/discussions/3066)
18 |
--------------------------------------------------------------------------------
/Server/Controllers/HelpDeskAdminController.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Mvc;
2 | using Microsoft.AspNetCore.Authorization;
3 | using Microsoft.Extensions.Primitives;
4 | using System.Collections.Generic;
5 | using Microsoft.AspNetCore.Http;
6 | using Oqtane.Shared;
7 | using Oqtane.Enums;
8 | using Oqtane.Infrastructure;
9 | using Syncfusion.Helpdesk.Models;
10 | using Syncfusion.Helpdesk.Repository;
11 | using System.Linq;
12 | using System.Threading.Tasks;
13 | using Oqtane.Repository;
14 | using System.Linq.Expressions;
15 | using System;
16 |
17 | namespace Syncfusion.Helpdesk.Controllers
18 | {
19 | [Route(ControllerRoutes.Default)]
20 | public class HelpdeskAdminController : Controller
21 | {
22 | private readonly IHelpdeskRepository _HelpDeskRepository;
23 | private readonly IUserRepository _users;
24 | private readonly ILogManager _logger;
25 | protected int _entityId = -1;
26 |
27 | public HelpdeskAdminController(
28 | IHelpdeskRepository HelpDeskRepository,
29 | IUserRepository users,
30 | ILogManager logger,
31 | IHttpContextAccessor accessor)
32 | {
33 | try
34 | {
35 | _HelpDeskRepository = HelpDeskRepository;
36 | _users = users;
37 | _logger = logger;
38 |
39 | if (accessor.HttpContext
40 | .Request.Query.ContainsKey("entityid"))
41 | {
42 | _entityId = int.Parse(
43 | accessor.HttpContext
44 | .Request.Query["entityid"]);
45 | }
46 | }
47 | catch (System.Exception ex)
48 | {
49 | string error = ex.Message;
50 | }
51 | }
52 |
53 | // Only an Administrator can query all Tickets
54 | // GET: api/?entityid=x
55 | [HttpGet]
56 | [Authorize(Policy = PolicyNames.EditModule)]
57 | public object Get(string entityid)
58 | {
59 | StringValues Skip;
60 | StringValues Take;
61 | StringValues OrderBy;
62 |
63 | // Filter the data
64 | var TotalRecordCount =
65 | _HelpDeskRepository.GetSyncfusionHelpDeskTickets(
66 | int.Parse(entityid)).Count();
67 |
68 | int skip = (Request.Query.TryGetValue("$skip", out Skip))
69 | ? Convert.ToInt32(Skip[0]) : 0;
70 |
71 | int top = (Request.Query.TryGetValue("$top", out Take))
72 | ? Convert.ToInt32(Take[0]) : TotalRecordCount;
73 |
74 | string orderby =
75 | (Request.Query.TryGetValue("$orderby", out OrderBy))
76 | ? OrderBy.ToString() : "TicketDate";
77 |
78 | // Handle OrderBy direction
79 | if (orderby.EndsWith(" desc"))
80 | {
81 | orderby = orderby.Replace(" desc", "");
82 |
83 | return new
84 | {
85 | Items =
86 | _HelpDeskRepository.GetSyncfusionHelpDeskTickets(
87 | int.Parse(entityid))
88 | .OrderByDescending(orderby)
89 | .Skip(skip)
90 | .Take(top),
91 | Count = TotalRecordCount
92 | };
93 | }
94 | else
95 | {
96 | System.Reflection.PropertyInfo prop =
97 | typeof(SyncfusionHelpDeskTickets).GetProperty(orderby);
98 |
99 | return new
100 | {
101 | Items = _HelpDeskRepository.GetSyncfusionHelpDeskTickets(
102 | int.Parse(entityid))
103 | .OrderBy(orderby)
104 | .Skip(skip)
105 | .Take(top),
106 | Count = TotalRecordCount
107 | };
108 | }
109 | }
110 |
111 | // Only an Administrator can call this method
112 | // GET: api//1?entityid=z
113 | [HttpGet("{HelpDeskTicketId}")]
114 | [Authorize(Policy = PolicyNames.EditModule)]
115 | public SyncfusionHelpDeskTickets Get(
116 | string HelpDeskTicketId,
117 | string entityid)
118 | {
119 | return _HelpDeskRepository.GetSyncfusionHelpDeskTicket
120 | (int.Parse(HelpDeskTicketId));
121 | }
122 |
123 | // Only an Administrator can update using this method
124 | // PUT api//5
125 | [HttpPut("{id}")]
126 | [Authorize(Policy = PolicyNames.EditModule)]
127 | public Models.SyncfusionHelpDeskTickets Put(
128 | int id,
129 | [FromBody] Models.SyncfusionHelpDeskTickets
130 | updatedSyncfusionHelpDeskTickets)
131 | {
132 | if (ModelState.IsValid &&
133 | updatedSyncfusionHelpDeskTickets.ModuleId == _entityId)
134 | {
135 | updatedSyncfusionHelpDeskTickets =
136 | _HelpDeskRepository.UpdateSyncfusionHelpDeskTickets(
137 | "Admin",
138 | updatedSyncfusionHelpDeskTickets);
139 |
140 | _logger.Log(LogLevel.Information, this, LogFunction.Update,
141 | "HelpDesk Updated {updatedSyncfusionHelpDeskTickets}",
142 | updatedSyncfusionHelpDeskTickets);
143 | }
144 |
145 | return updatedSyncfusionHelpDeskTickets;
146 | }
147 |
148 | // DELETE api//5
149 | [HttpDelete("{id}")]
150 | [Authorize(Policy = PolicyNames.EditModule)]
151 | public void Delete(int id)
152 | {
153 | Models.SyncfusionHelpDeskTickets deletedSyncfusionHelpDeskTickets =
154 | _HelpDeskRepository.GetSyncfusionHelpDeskTicket(id);
155 | if (deletedSyncfusionHelpDeskTickets != null &&
156 | deletedSyncfusionHelpDeskTickets.ModuleId == _entityId)
157 | {
158 | _HelpDeskRepository.DeleteSyncfusionHelpDeskTickets(id);
159 | _logger.Log(LogLevel.Information, this, LogFunction.Delete,
160 | "HelpDesk Deleted {HelpDeskId}", id);
161 | }
162 | }
163 | }
164 |
165 | // From: https://bit.ly/30ypMCp
166 | public static class IQueryableExtensions
167 | {
168 | public static IOrderedQueryable OrderBy(
169 | this IQueryable source, string propertyName)
170 | {
171 | return source.OrderBy(ToLambda(propertyName));
172 | }
173 |
174 | public static IOrderedQueryable OrderByDescending(
175 | this IQueryable source, string propertyName)
176 | {
177 | return source.OrderByDescending(ToLambda(propertyName));
178 | }
179 |
180 | private static Expression> ToLambda(
181 | string propertyName)
182 | {
183 | var parameter = Expression.Parameter(typeof(T));
184 | var property = Expression.Property(parameter, propertyName);
185 | var propAsObject = Expression.Convert(property, typeof(object));
186 |
187 | return Expression.Lambda>(propAsObject, parameter);
188 | }
189 | }
190 | }
--------------------------------------------------------------------------------
/Server/Controllers/HelpDeskController.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Mvc;
2 | using Microsoft.AspNetCore.Authorization;
3 | using System.Collections.Generic;
4 | using Microsoft.AspNetCore.Http;
5 | using Oqtane.Shared;
6 | using Oqtane.Enums;
7 | using Oqtane.Infrastructure;
8 | using Syncfusion.Helpdesk.Models;
9 | using Syncfusion.Helpdesk.Repository;
10 | using System.Linq;
11 | using System.Threading.Tasks;
12 | using Oqtane.Repository;
13 |
14 | namespace Syncfusion.Helpdesk.Controllers
15 | {
16 | [Route(ControllerRoutes.Default)]
17 | public class HelpdeskController : Controller
18 | {
19 | private readonly IHelpdeskRepository _HelpDeskRepository;
20 | private readonly IUserRepository _users;
21 | private readonly ILogManager _logger;
22 | protected int _entityId = -1;
23 |
24 | public HelpdeskController(
25 | IHelpdeskRepository HelpDeskRepository,
26 | IUserRepository users,
27 | ILogManager logger,
28 | IHttpContextAccessor accessor)
29 | {
30 | _HelpDeskRepository = HelpDeskRepository;
31 | _users = users;
32 | _logger = logger;
33 |
34 | if (accessor.HttpContext.Request.Query.ContainsKey("entityid"))
35 | {
36 | _entityId = int.Parse(
37 | accessor.HttpContext.Request.Query["entityid"]);
38 | }
39 | }
40 |
41 | // A non-Administrator can only query their Tickets
42 | // GET: api/?username=x&entityid=y
43 | [HttpGet]
44 | [Authorize(Policy = PolicyNames.ViewModule)]
45 | public IEnumerable Get(
46 | string username, string entityid)
47 | {
48 | // Get User
49 | var User = _users.GetUser(this.User.Identity.Name);
50 |
51 | if (User.Username.ToLower() != username.ToLower())
52 | {
53 | return null;
54 | }
55 |
56 | var HelpDeskTickets =
57 | _HelpDeskRepository.GetSyncfusionHelpDeskTickets(
58 | int.Parse(entityid))
59 | .Where(x => x.CreatedBy == username)
60 | .OrderBy(x => x.HelpDeskTicketId)
61 | .ToList();
62 |
63 | return HelpDeskTickets;
64 | }
65 |
66 | // A non-Administrator can only get a Ticket they created
67 | // GET: api//1?username=y&entityid=z
68 | [HttpGet("{HelpDeskTicketId}")]
69 | [Authorize(Policy = PolicyNames.ViewModule)]
70 | public SyncfusionHelpDeskTickets Get(
71 | string HelpDeskTicketId, string username, string entityid)
72 | {
73 | // Get User
74 | var User = _users.GetUser(this.User.Identity.Name);
75 |
76 | if (User.Username.ToLower() != username.ToLower())
77 | {
78 | return null;
79 | }
80 |
81 | var HelpDeskTicket =
82 | _HelpDeskRepository.GetSyncfusionHelpDeskTicket(
83 | int.Parse(HelpDeskTicketId));
84 |
85 | if (HelpDeskTicket.CreatedBy != User.Username)
86 | {
87 | return null;
88 | }
89 |
90 | return HelpDeskTicket;
91 | }
92 |
93 | // All users can Post
94 | // POST api/
95 | [HttpPost]
96 | [Authorize(Policy = PolicyNames.ViewModule)]
97 | public Task Post(
98 | [FromBody] Models.SyncfusionHelpDeskTickets SyncfusionHelpDeskTickets)
99 | {
100 | if (ModelState.IsValid
101 | && SyncfusionHelpDeskTickets.ModuleId == _entityId)
102 | {
103 | // Add a new Help Desk Ticket
104 | SyncfusionHelpDeskTickets =
105 | _HelpDeskRepository.AddSyncfusionHelpDeskTickets(
106 | SyncfusionHelpDeskTickets);
107 |
108 | _logger.Log(LogLevel.Information, this, LogFunction.Create,
109 | "HelpDesk Added {newSyncfusionHelpDeskTickets}",
110 | SyncfusionHelpDeskTickets);
111 | }
112 |
113 | return Task.FromResult(SyncfusionHelpDeskTickets);
114 | }
115 |
116 | // Only users who created Ticket
117 | // can call this method to update Ticket
118 | // POST api//1
119 | [HttpPost("{Id}")]
120 | [Authorize(Policy = PolicyNames.ViewModule)]
121 | public void Post(
122 | int Id,
123 | [FromBody] Models.SyncfusionHelpDeskTickets UpdateSyncfusionHelpDeskTicket)
124 | {
125 | // Get User
126 | var User = _users.GetUser(this.User.Identity.Name);
127 |
128 | if (User != null)
129 | {
130 | // Ensure logged in user is the creator
131 | if (UpdateSyncfusionHelpDeskTicket.CreatedBy.ToLower() == User.Username.ToLower())
132 | {
133 | // Update Ticket
134 | _HelpDeskRepository.UpdateSyncfusionHelpDeskTickets(
135 | "User",
136 | UpdateSyncfusionHelpDeskTicket);
137 | }
138 | }
139 | }
140 | }
141 | }
--------------------------------------------------------------------------------
/Server/Manager/HelpDeskManager.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 | using System.Text.Json;
4 | using Oqtane.Modules;
5 | using Oqtane.Models;
6 | using Oqtane.Infrastructure;
7 | using Oqtane.Repository;
8 | using Syncfusion.Helpdesk.Models;
9 | using Syncfusion.Helpdesk.Repository;
10 |
11 | namespace Syncfusion.Helpdesk.Manager
12 | {
13 | public class HelpdeskManager : IInstallable, IPortable
14 | {
15 | private IHelpdeskRepository _HelpDeskRepository;
16 | private ISqlRepository _sql;
17 |
18 | public HelpdeskManager(
19 | IHelpdeskRepository HelpDeskRepository,
20 | ISqlRepository sql)
21 | {
22 | _HelpDeskRepository = HelpDeskRepository;
23 | _sql = sql;
24 | }
25 |
26 | public bool Install(Tenant tenant, string version)
27 | {
28 | return _sql.ExecuteScript(
29 | tenant,
30 | GetType().Assembly,
31 | "Syncfusion.Helpdesk." + version + ".sql");
32 | }
33 |
34 | public bool Uninstall(Tenant tenant)
35 | {
36 | return _sql.ExecuteScript(
37 | tenant,
38 | GetType().Assembly,
39 | "Syncfusion.Helpdesk.Uninstall.sql");
40 | }
41 |
42 | public string ExportModule(Module module)
43 | {
44 | string content = "";
45 |
46 | List HelpDesks =
47 | new List();
48 |
49 | var AllTickets = _HelpDeskRepository
50 | .GetSyncfusionHelpDeskTickets(module.ModuleId).ToList();
51 |
52 | foreach (var Ticket in AllTickets)
53 | {
54 | var HelpDeskTicket = _HelpDeskRepository
55 | .GetSyncfusionHelpDeskTicket(Ticket.HelpDeskTicketId);
56 |
57 | HelpDesks.Add(HelpDeskTicket);
58 | }
59 |
60 | if (HelpDesks != null)
61 | {
62 | content = JsonSerializer.Serialize(HelpDesks);
63 | }
64 | return content;
65 | }
66 |
67 | public void ImportModule(Module module, string content, string version)
68 | {
69 | List HelpDesks = null;
70 | if (!string.IsNullOrEmpty(content))
71 | {
72 | HelpDesks =
73 | JsonSerializer
74 | .Deserialize>(content);
75 | }
76 | if (HelpDesks != null)
77 | {
78 | foreach (var HelpDesk in HelpDesks)
79 | {
80 | Models.SyncfusionHelpDeskTickets NewHelpDesk =
81 | new SyncfusionHelpDeskTickets();
82 |
83 | NewHelpDesk.ModuleId = module.ModuleId;
84 | NewHelpDesk.TicketDate = HelpDesk.TicketDate;
85 | NewHelpDesk.TicketStatus = HelpDesk.TicketStatus;
86 | NewHelpDesk.TicketDescription = HelpDesk.TicketDescription;
87 |
88 | NewHelpDesk.SyncfusionHelpDeskTicketDetails =
89 | new List();
90 |
91 | foreach (var TicketDetail in
92 | HelpDesk.SyncfusionHelpDeskTicketDetails)
93 | {
94 | SyncfusionHelpDeskTicketDetails NewDetail =
95 | new SyncfusionHelpDeskTicketDetails();
96 |
97 | NewDetail.TicketDetailDate = TicketDetail.TicketDetailDate;
98 | NewDetail.ModifiedBy = TicketDetail.ModifiedBy;
99 | NewDetail.ModifiedOn = TicketDetail.ModifiedOn;
100 | NewDetail.TicketDescription = TicketDetail.TicketDescription;
101 |
102 | NewHelpDesk.SyncfusionHelpDeskTicketDetails.Add(NewDetail);
103 | }
104 |
105 | _HelpDeskRepository.AddSyncfusionHelpDeskTickets(NewHelpDesk);
106 | }
107 | }
108 | }
109 |
110 | }
111 | }
112 |
--------------------------------------------------------------------------------
/Server/Repository/HelpDeskContext.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.EntityFrameworkCore;
2 | using Microsoft.AspNetCore.Http;
3 | using Oqtane.Modules;
4 | using Oqtane.Repository;
5 | using Syncfusion.Helpdesk.Models;
6 | using Oqtane.Repository.Databases.Interfaces;
7 |
8 | namespace Syncfusion.Helpdesk.Repository
9 | {
10 | public class HelpdeskContext :DBContextBase, ITransientService, IMultiDatabase
11 | {
12 | public virtual
13 | DbSet
14 | SyncfusionHelpDeskTickets
15 | { get; set; }
16 |
17 | public virtual
18 | DbSet
19 | SyncfusionHelpDeskTicketDetails
20 | { get; set; }
21 |
22 | public HelpdeskContext(IDBContextDependencies DBContextDependencies) : base(DBContextDependencies)
23 | {
24 | // ContextBase handles multi-tenant database connections
25 | }
26 | }
27 | }
--------------------------------------------------------------------------------
/Server/Repository/HelpDeskRepository.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.EntityFrameworkCore;
2 | using System.Linq;
3 | using System.Collections.Generic;
4 | using Oqtane.Modules;
5 | using Syncfusion.Helpdesk.Models;
6 | using System;
7 |
8 | namespace Syncfusion.Helpdesk.Repository
9 | {
10 | public class HelpdeskRepository : IHelpdeskRepository, IService
11 | {
12 | private readonly HelpdeskContext _db;
13 |
14 | public HelpdeskRepository(HelpdeskContext context)
15 | {
16 | _db = context;
17 | }
18 |
19 | public IQueryable
20 | GetSyncfusionHelpDeskTickets(int ModuleId)
21 | {
22 | return _db.SyncfusionHelpDeskTickets.Where(
23 | item => item.ModuleId == ModuleId);
24 | }
25 |
26 | public Models.SyncfusionHelpDeskTickets GetSyncfusionHelpDeskTicket(int Id)
27 | {
28 | var HelpDeskTicket = _db.SyncfusionHelpDeskTickets
29 | .Where(item => item.HelpDeskTicketId == Id)
30 | .Include(x => x.SyncfusionHelpDeskTicketDetails).FirstOrDefault();
31 |
32 | // Strip out HelpDeskTicket from SyncfusionHelpDeskTicketDetails
33 | // to avoid trying to return self referencing object
34 |
35 | var objDeskTicket = new SyncfusionHelpDeskTickets();
36 |
37 | objDeskTicket.HelpDeskTicketId = HelpDeskTicket.HelpDeskTicketId;
38 | objDeskTicket.ModuleId = HelpDeskTicket.ModuleId;
39 | objDeskTicket.TicketDate = HelpDeskTicket.TicketDate;
40 | objDeskTicket.TicketDescription = HelpDeskTicket.TicketDescription;
41 | objDeskTicket.TicketStatus = HelpDeskTicket.TicketStatus;
42 | objDeskTicket.CreatedBy = HelpDeskTicket.CreatedBy;
43 | objDeskTicket.CreatedOn = HelpDeskTicket.CreatedOn;
44 | objDeskTicket.ModifiedBy = HelpDeskTicket.ModifiedBy;
45 | objDeskTicket.ModifiedOn = HelpDeskTicket.ModifiedOn;
46 |
47 | objDeskTicket.SyncfusionHelpDeskTicketDetails =
48 | new List();
49 |
50 | foreach (var item in HelpDeskTicket.SyncfusionHelpDeskTicketDetails)
51 | {
52 | item.HelpDeskTicket = null;
53 | objDeskTicket.SyncfusionHelpDeskTicketDetails.Add(item);
54 | }
55 |
56 | return objDeskTicket;
57 | }
58 |
59 | public Models.SyncfusionHelpDeskTickets AddSyncfusionHelpDeskTickets
60 | (Models.SyncfusionHelpDeskTickets SyncfusionHelpDeskTicket)
61 | {
62 | _db.SyncfusionHelpDeskTickets.Add(SyncfusionHelpDeskTicket);
63 | _db.SaveChanges();
64 | return SyncfusionHelpDeskTicket;
65 | }
66 |
67 | public Models.SyncfusionHelpDeskTickets UpdateSyncfusionHelpDeskTickets(
68 | string UpdateMode,
69 | Models.SyncfusionHelpDeskTickets UpdatedSyncfusionHelpDeskTickets)
70 | {
71 | // Get the existing record
72 | var ExistingTicket =
73 | _db.SyncfusionHelpDeskTickets
74 | .Where(x => x.HelpDeskTicketId ==
75 | UpdatedSyncfusionHelpDeskTickets.HelpDeskTicketId)
76 | .FirstOrDefault();
77 |
78 | if (ExistingTicket != null)
79 | {
80 | if (UpdateMode == "Admin")
81 | {
82 | // Only Admin can update these fields
83 |
84 | ExistingTicket.TicketDate =
85 | UpdatedSyncfusionHelpDeskTickets.TicketDate;
86 |
87 | ExistingTicket.TicketDescription =
88 | UpdatedSyncfusionHelpDeskTickets.TicketDescription;
89 | }
90 |
91 | ExistingTicket.TicketStatus =
92 | UpdatedSyncfusionHelpDeskTickets.TicketStatus;
93 |
94 | // Insert any new TicketDetails
95 |
96 | if (UpdatedSyncfusionHelpDeskTickets
97 | .SyncfusionHelpDeskTicketDetails
98 | != null)
99 | {
100 | foreach (var item in
101 | UpdatedSyncfusionHelpDeskTickets
102 | .SyncfusionHelpDeskTicketDetails)
103 | {
104 | if (item.HelpDeskTicketDetailId == 0)
105 | {
106 | // Create New HelpDeskTicketDetails record
107 | SyncfusionHelpDeskTicketDetails newHelpDeskTicketDetails =
108 | new SyncfusionHelpDeskTicketDetails();
109 |
110 | newHelpDeskTicketDetails.HelpDeskTicketId =
111 | UpdatedSyncfusionHelpDeskTickets.HelpDeskTicketId;
112 |
113 | newHelpDeskTicketDetails.TicketDetailDate =
114 | DateTime.Now;
115 |
116 | newHelpDeskTicketDetails.TicketDescription =
117 | item.TicketDescription;
118 |
119 | _db.SyncfusionHelpDeskTicketDetails
120 | .Add(newHelpDeskTicketDetails);
121 |
122 | _db.SaveChanges();
123 | }
124 | }
125 | }
126 |
127 | _db.Entry(ExistingTicket).State = EntityState.Modified;
128 | _db.SaveChanges();
129 | }
130 |
131 | return ExistingTicket;
132 | }
133 |
134 | public void DeleteSyncfusionHelpDeskTickets(int Id)
135 | {
136 | Models.SyncfusionHelpDeskTickets SyncfusionHelpDeskTicket =
137 | _db.SyncfusionHelpDeskTickets.Find(Id);
138 |
139 | _db.SyncfusionHelpDeskTickets.Remove(SyncfusionHelpDeskTicket);
140 | _db.SaveChanges();
141 | }
142 |
143 | }
144 | }
145 |
--------------------------------------------------------------------------------
/Server/Repository/IHelpDeskRepository.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 | using Syncfusion.Helpdesk.Models;
4 |
5 | namespace Syncfusion.Helpdesk.Repository
6 | {
7 | public interface IHelpdeskRepository
8 | {
9 | IQueryable
10 | GetSyncfusionHelpDeskTickets(int ModuleId);
11 |
12 | Models.SyncfusionHelpDeskTickets
13 | GetSyncfusionHelpDeskTicket(int Id);
14 |
15 | Models.SyncfusionHelpDeskTickets
16 | AddSyncfusionHelpDeskTickets(
17 | Models.SyncfusionHelpDeskTickets SyncfusionHelpDeskTicket);
18 |
19 | Models.SyncfusionHelpDeskTickets
20 | UpdateSyncfusionHelpDeskTickets(
21 | string UpdateMode,
22 | Models.SyncfusionHelpDeskTickets SyncfusionHelpDeskTicket);
23 |
24 | void DeleteSyncfusionHelpDeskTickets(int Id);
25 | }
26 | }
--------------------------------------------------------------------------------
/Server/Scripts/Syncfusion.HelpDesk.1.0.0.sql:
--------------------------------------------------------------------------------
1 | /*
2 | Create SyncfusionHelpdesk table
3 | */
4 |
5 | CREATE TABLE [dbo].[SyncfusionHelpdesk](
6 | [HelpdeskId] [int] IDENTITY(1,1) NOT NULL,
7 | [ModuleId] [int] NOT NULL,
8 | [Name] [nvarchar](256) NOT NULL,
9 | [CreatedBy] [nvarchar](256) NOT NULL,
10 | [CreatedOn] [datetime] NOT NULL,
11 | [ModifiedBy] [nvarchar](256) NOT NULL,
12 | [ModifiedOn] [datetime] NOT NULL,
13 | CONSTRAINT [PK_SyncfusionHelpdesk] PRIMARY KEY CLUSTERED
14 | (
15 | [HelpdeskId] ASC
16 | )
17 | )
18 | GO
19 |
20 | /*
21 | Create foreign key relationships
22 | */
23 | ALTER TABLE [dbo].[SyncfusionHelpdesk] WITH CHECK ADD CONSTRAINT [FK_SyncfusionHelpdesk_Module] FOREIGN KEY([ModuleId])
24 | REFERENCES [dbo].Module ([ModuleId])
25 | ON DELETE CASCADE
26 | GO
--------------------------------------------------------------------------------
/Server/Scripts/Syncfusion.HelpDesk.Uninstall.sql:
--------------------------------------------------------------------------------
1 | /*
2 | Remove SyncfusionHelpdesk table
3 | */
4 |
5 | DROP TABLE [dbo].[SyncfusionHelpdesk]
6 | GO
7 | DROP TABLE [dbo].[SyncfusionHelpDeskTicketDetails]
8 | GO
9 | DROP TABLE [dbo].[SyncfusionHelpDeskTickets]
10 | GO
--------------------------------------------------------------------------------
/Server/Scripts/Syncfusion.Helpdesk.1.0.1.sql:
--------------------------------------------------------------------------------
1 | /*
2 | Create SyncfusionHelpDesk tables
3 | */
4 |
5 | SET ANSI_NULLS ON
6 | GO
7 | SET QUOTED_IDENTIFIER ON
8 | GO
9 | CREATE TABLE [dbo].[SyncfusionHelpDeskTicketDetails](
10 | [HelpDeskTicketDetailId] [int] IDENTITY(1,1) NOT NULL,
11 | [HelpDeskTicketId] [int] NOT NULL,
12 | [TicketDetailDate] [datetime] NOT NULL,
13 | [TicketDescription] [nvarchar](max) NOT NULL,
14 | [CreatedBy] [nvarchar](256) NOT NULL,
15 | [CreatedOn] [datetime] NOT NULL,
16 | [ModifiedBy] [nvarchar](256) NOT NULL,
17 | [ModifiedOn] [datetime] NOT NULL,
18 | CONSTRAINT [PK_SyncfusionHelpDeskTicketDetails] PRIMARY KEY CLUSTERED
19 | (
20 | [HelpDeskTicketDetailId] ASC
21 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
22 | ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
23 | GO
24 |
25 | SET ANSI_NULLS ON
26 | GO
27 | SET QUOTED_IDENTIFIER ON
28 | GO
29 | CREATE TABLE [dbo].[SyncfusionHelpDeskTickets](
30 | [HelpDeskTicketId] [int] IDENTITY(1,1) NOT NULL,
31 | [ModuleId] [int] NOT NULL,
32 | [TicketStatus] [nvarchar](50) NOT NULL,
33 | [TicketDate] [datetime] NOT NULL,
34 | [TicketDescription] [nvarchar](max) NOT NULL,
35 | [CreatedBy] [nvarchar](256) NOT NULL,
36 | [CreatedOn] [datetime] NOT NULL,
37 | [ModifiedBy] [nvarchar](256) NOT NULL,
38 | [ModifiedOn] [datetime] NOT NULL,
39 | CONSTRAINT [PK_HelpDeskTickets] PRIMARY KEY CLUSTERED
40 | (
41 | [HelpDeskTicketId] ASC
42 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
43 | ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
44 | GO
45 | ALTER TABLE [dbo].[SyncfusionHelpDeskTicketDetails] WITH CHECK ADD CONSTRAINT [FK_SyncfusionHelpDeskTicketDetails_SyncfusionHelpDeskTickets] FOREIGN KEY([HelpDeskTicketId])
46 | REFERENCES [dbo].[SyncfusionHelpDeskTickets] ([HelpDeskTicketId])
47 | ON DELETE CASCADE
48 | GO
49 | ALTER TABLE [dbo].[SyncfusionHelpDeskTicketDetails] CHECK CONSTRAINT [FK_SyncfusionHelpDeskTicketDetails_SyncfusionHelpDeskTickets]
50 | GO
51 |
52 | /*
53 | Create foreign key relationships
54 | */
55 |
56 | ALTER TABLE [dbo].[SyncfusionHelpDeskTickets] WITH CHECK ADD CONSTRAINT [FK_SyncfusionHelpDeskTickets_Module] FOREIGN KEY([ModuleId])
57 | REFERENCES [dbo].[Module] ([ModuleId])
58 | ON DELETE CASCADE
59 | GO
60 |
61 | ALTER TABLE [dbo].[SyncfusionHelpDeskTickets] CHECK CONSTRAINT [FK_SyncfusionHelpDeskTickets_Module]
62 | GO
--------------------------------------------------------------------------------
/Server/Startup/ServerStartup.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Builder;
2 | using Microsoft.AspNetCore.Hosting;
3 | using Microsoft.Extensions.DependencyInjection;
4 | using Oqtane.Infrastructure;
5 | using Syncfusion.Blazor;
6 | using Microsoft.Extensions.Configuration;
7 | namespace Syncfusion.Helpdesk.Server.Startup
8 | {
9 | public class ServerStartup : IServerStartup
10 | {
11 | public void ConfigureServices(IServiceCollection services)
12 | {
13 | services.AddSyncfusionBlazor();
14 | }
15 | public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
16 | {
17 | // Register Syncfusion license
18 | // Get a free license here:
19 | // https://www.syncfusion.com/products/communitylicense
20 | var builder = new ConfigurationBuilder()
21 | .SetBasePath(env.ContentRootPath)
22 | .AddJsonFile("appsettings.json", optional: false,
23 | reloadOnChange: true);
24 | var Configuration = builder.Build();
25 | var SyncfusionLicense = Configuration.GetSection("SyncfusionLicense");
26 | if (SyncfusionLicense != null)
27 | {
28 | Syncfusion.Licensing.SyncfusionLicenseProvider
29 | .RegisterLicense(SyncfusionLicense.Value);
30 | }
31 | }
32 |
33 | public void ConfigureMvc(IMvcBuilder mvcBuilder)
34 | {
35 | }
36 | }
37 | }
--------------------------------------------------------------------------------
/Server/Syncfusion.HelpDesk.Server.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0
5 | true
6 | 1.0.0
7 | Syncfusion.Helpdesk
8 | Syncfusion
9 | Syncfusion
10 | Helpdesk
11 | Syncfusion
12 | Syncfusion.Helpdesk.Server.Oqtane
13 | true
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 |
--------------------------------------------------------------------------------
/Server/wwwroot/Modules/Syncfusion.HelpDesk/Module.css:
--------------------------------------------------------------------------------
1 | /* Module Custom Styles */
--------------------------------------------------------------------------------
/Server/wwwroot/Modules/Syncfusion.HelpDesk/Module.js:
--------------------------------------------------------------------------------
1 | /* Module Script */
2 | var Syncfusion = Syncfusion || {};
3 |
4 | Syncfusion.Helpdesk = {
5 | };
--------------------------------------------------------------------------------
/Server/wwwroot/_content/Placeholder.txt:
--------------------------------------------------------------------------------
1 | The _content folder should only contain static resources from shared razor component libraries (RCLs). Static resources can be extracted from shared RCL Nuget packages by executing a Publish task on the module's Server project to a local folder and copying the files from the _content folder which is created. Each shared RCL would have its own appropriately named subfolder within the module's _content folder.
2 |
3 | ie.
4 |
5 | /_content
6 | /Radzen.Blazor
7 | /css
8 | /fonts
9 | /syncfusion.blazor
10 | /scripts
11 | /styles
12 |
--------------------------------------------------------------------------------
/Server/wwwroot/_content/syncfusion.blazor/scripts/0.js:
--------------------------------------------------------------------------------
1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[0],{"./modules/sf-import.js":function(o,s){window.sfBlazor=window.sfBlazor||{},window.sfBlazor.import=function(o){return"string"==typeof o&&o.startsWith("./")&&(o=document.baseURI+o.substr(2)),import(o)}}}]);
--------------------------------------------------------------------------------
/Server/wwwroot/_content/syncfusion.blazor/scripts/1.js:
--------------------------------------------------------------------------------
1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[1],{"./modules/sf-import-ie.js":function(o,n){window.sfBlazor=window.sfBlazor||{},window.sfBlazor.import=function(o){"string"==typeof o&&o.startsWith("./")&&(o=document.baseURI+o.substr(2)),new Promise((function(n,s){var t=document.createElement("script");t.src=o,t.async=!0,t.onload=function(){n(t)},t.onerror=function(){s(t)},document.body.appendChild(t)}))}}}]);
--------------------------------------------------------------------------------
/Server/wwwroot/_content/syncfusion.blazor/scripts/button-ddeaa8.min.js:
--------------------------------------------------------------------------------
1 | !function(e){var t={};function s(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,s),i.l=!0,i.exports}s.m=e,s.c=t,s.d=function(e,t,n){s.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.t=function(e,t){if(1&t&&(e=s(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(s.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)s.d(n,i,function(t){return e[t]}.bind(null,i));return n},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,"a",t),t},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.p="_content/Syncfusion.Blazor/scripts/",s(s.s="./bundles/button.js")}({"./bundles/button.js":function(e,t,s){"use strict";s.r(t);s("./modules/button.js")},"./modules/button.js":function(e,t){function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}window.sf=window.sf||{};sf.buttons=sf.base.extend({},sf.buttons,function(e){"use strict";var t,n=(t=function(e,s){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var s in t)t.hasOwnProperty(s)&&(e[s]=t[s])})(e,s)},function(e,s){function n(){this.constructor=e}t(e,s),e.prototype=null===s?Object.create(s):(n.prototype=s.prototype,new n)}),i=function(e,t,n,i){var o,r=arguments.length,a=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===("undefined"==typeof Reflect?"undefined":s(Reflect))&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var l=e.length-1;l>=0;l--)(o=e[l])&&(a=(r<3?o(a):r>3?o(t,n,a):o(t,n))||a);return r>3&&a&&Object.defineProperty(t,n,a),a},o=new sf.base.Observer,r="e-rtl",a="e-btn",l="e-primary",c="e-icon-btn",f=function(e){function t(t,s){return e.call(this,t,s)||this}return n(t,e),t.prototype.preRender=function(){},t.prototype.render=function(){this.initialize(),this.removeRippleEffect=sf.base.rippleEffect(this.element,{selector:"."+a}),this.renderComplete()},t.prototype.initialize=function(){if(this.cssClass&&sf.base.addClass([this.element],this.cssClass.split(" ")),this.isPrimary&&this.element.classList.add(l),!sf.base.isBlazor()||sf.base.isBlazor()&&"progress-btn"!==this.getModuleName()){if(this.content){var e=this.enableHtmlSanitizer?sf.base.SanitizeHtmlHelper.sanitize(this.content):this.content;this.element.innerHTML=e}this.setIconCss()}this.enableRtl&&this.element.classList.add(r),this.disabled?this.controlStatus(this.disabled):this.wireEvents()},t.prototype.controlStatus=function(e){this.element.disabled=e},t.prototype.setIconCss=function(){if(this.iconCss){var e=this.createElement("span",{className:"e-btn-icon "+this.iconCss});this.element.textContent.trim()?(e.classList.add("e-icon-"+this.iconPosition.toLowerCase()),"Top"!==this.iconPosition&&"Bottom"!==this.iconPosition||this.element.classList.add("e-"+this.iconPosition.toLowerCase()+"-icon-btn")):this.element.classList.add(c);var t=this.element.childNodes[0];!t||"Left"!==this.iconPosition&&"Top"!==this.iconPosition?this.element.appendChild(e):this.element.insertBefore(e,t)}},t.prototype.wireEvents=function(){this.isToggle&&sf.base.EventHandler.add(this.element,"click",this.btnClickHandler,this)},t.prototype.unWireEvents=function(){this.isToggle&&sf.base.EventHandler.remove(this.element,"click",this.btnClickHandler)},t.prototype.btnClickHandler=function(){this.element.classList.contains("e-active")?this.element.classList.remove("e-active"):this.element.classList.add("e-active")},t.prototype.destroy=function(){var t=[l,r,c,"e-success","e-info","e-danger","e-warning","e-flat","e-outline","e-small","e-bigger","e-active","e-round","e-top-icon-btn","e-bottom-icon-btn"];this.cssClass&&(t=t.concat(this.cssClass.split(" "))),e.prototype.destroy.call(this),sf.base.removeClass([this.element],t),this.element.getAttribute("class")||this.element.removeAttribute("class"),this.disabled&&this.element.removeAttribute("disabled"),this.content&&(this.element.innerHTML=this.element.innerHTML.replace(this.content,""));var s=this.element.querySelector("span.e-btn-icon");s&&sf.base.detach(s),this.unWireEvents(),sf.base.isRippleEnabled&&this.removeRippleEffect()},t.prototype.getModuleName=function(){return"btn"},t.prototype.getPersistData=function(){return this.addOnPersist([])},t.Inject=function(){},t.prototype.onPropertyChanged=function(e,t){for(var s=this.element.querySelector("span.e-btn-icon"),n=0,i=Object.keys(e);n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]2&&(l.stringSize-=.2,this.checkOverlapTextPosition(e,l.stringSize,n,r,i,o,a,l)),l.stringSize},triggerDownload:function(e,t,n){var r=document.createElement("a");r.download=t+"."+e.toLocaleLowerCase(),r.href=n,r.click()},exportAsImage:function(n,r,i,o){return e(this,void 0,void 0,(function(){var e;return t(this,(function(t){switch(t.label){case 0:return[4,this.imageExport(n,r,i,o)];case 1:return(e=t.sent())instanceof Promise?(e.then((function(e){return e})),[2,e]):[2,e]}}))}))},imageExport:function(n,r,i,o){return e(this,void 0,void 0,(function(){var e;return t(this,(function(t){return e=this,[2,new Promise((function(t,a){var l="",s=window.URL.createObjectURL(new Blob("SVG"===n?[l]:[(new window.XMLSerializer).serializeToString(i)],{type:"image/svg+xml"}));if("SVG"===n)e.triggerDownload(n,r,s),t(null);else{var u=document.createElement("canvas");u.height=i.clientHeight,u.width=i.clientWidth;var c=u.getContext("2d"),d=new Image;d.onload=function(){if(c.drawImage(d,0,0),window.URL.revokeObjectURL(s),o){var i="JPEG"===n?u.toDataURL("image/jpeg"):"PNG"===n?u.toDataURL("image/png"):"";t(i)}else e.triggerDownload(n,r,u.toDataURL("image/png").replace("image/png","image/octet-stream")),t(null)},d.src=s}}))]}))}))}}}()}});
--------------------------------------------------------------------------------
/Server/wwwroot/_content/syncfusion.blazor/scripts/sf-bullet-chart-ddeaa8.min.js:
--------------------------------------------------------------------------------
1 | !function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="_content/Syncfusion.Blazor/scripts/",n(n.s="./bundles/sf-bullet-chart.js")}({"./bundles/sf-bullet-chart.js":function(t,e,n){"use strict";n.r(e);n("./modules/sf-bullet-chart.js")},"./modules/sf-bullet-chart.js":function(t,e){window.sfBlazor=window.sfBlazor||{},window.sfBlazor.BulletChart=function(){"use strict";var t=function(){function t(t,e){this.resizeTo=0,this.element=t,this.dotNetRef=e,this.element.blazor__instance=this}return t.prototype.wireEvents=function(){sf.base.EventHandler.add(this.element,"click",this.click.bind(this),this),sf.base.EventHandler.add(this.element,"mousemove",this.mousemove.bind(this),this),window.addEventListener(sf.base.Browser.isTouch&&"orientation"in window&&"onorientationchange"in window?"orientationchange":"resize",this.resize.bind(this))},t.prototype.unWireEvents=function(){sf.base.EventHandler.remove(this.element,"mousemove",this.mousemove),sf.base.EventHandler.remove(this.element,"click",this.click),window.removeEventListener(sf.base.Browser.isTouch&&"orientation"in window&&"onorientationchange"in window?"orientationchange":"resize",this.resize.bind(this)),this.element=null,this.dotNetRef=null},t.prototype.resize=function(){var t=this;this.dotNetRef&&(this.resizeTo&&clearTimeout(this.resizeTo),this.resizeTo=window.setTimeout((function(){t.dotNetRef.invokeMethodAsync("TriggerResize")}),500))},t.prototype.click=function(t){this.dotNetRef&&this.dotNetRef.invokeMethodAsync("TriggerClick",t.target.id)},t.prototype.mousemove=function(t){var e,n;this.element&&(e=this.element.getBoundingClientRect());var i=document.getElementById(this.element.id+"_svg");i&&(n=i.getBoundingClientRect());var o=t.clientX-e.left-Math.max(n.left-e.left,0),r=t.clientY-e.top-Math.max(n.top-e.top,0);this.dotNetRef&&this.dotNetRef.invokeMethodAsync("TriggerMouseMove",t.target.id,o,r)},t.prototype.valueBarAnimation=function(t,e,n){new sf.base.Animation({}).animate(e,{duration:t.duration,delay:t.delay,progress:function(i){if(i.timeStamp>=i.delay){e.style.visibility="visible";var o=-1*Math.cos((i.timeStamp-i.delay)/i.duration*(Math.PI/2))+1;e.setAttribute("transform","translate("+n.toString()+" "+t.valueY.toString()+") scale("+(o/1).toString()+", 1) translate("+-n.toString()+" "+-t.valueY.toString()+")")}},end:function(){e.setAttribute("transform","translate(0,0)"),e.style.visibility="visible"}})},t.prototype.targetBarAnimation=function(t,e,n,i){new sf.base.Animation({}).animate(e,{duration:t.duration,delay:t.delay,progress:function(t){if(t.timeStamp>=t.delay){e.style.visibility="visible";var o=-1*Math.cos((t.timeStamp-t.delay)/t.duration*(Math.PI/2))+1;e.setAttribute("transform","translate("+n.toString()+" "+i.toString()+") scale(1, "+(o/1).toString()+") translate("+-n.toString()+" "+-i.toString()+")")}},end:function(){e.setAttribute("transform","translate(0,0)"),e.style.visibility="visible"}})},t}();return{initialize:function(e,n,i,o){if(e)return new t(e,o).wireEvents(),this.getElementSize(e,n,i)},getElementSize:function(t,e,n){var i,o;return t&&(t.style.height=e,t.style.width=n,i=t.clientWidth||t.offsetWidth,o=t.clientHeight),{width:i,height:o}},updateElementOpacity:function(t,e,n){var i=document.getElementById(t);if(i){if(!sf.base.isNullOrUndefined(n)&&""!==n)document.getElementById(n).setAttribute("opacity","1");!0===e?i.setAttribute("opacity","1"):i.setAttribute("opacity","0.6")}},doValueBarAnimation:function(t,e,n,i){for(var o=0;odocument.documentElement.clientHeight&&n-o.height-s.height>document.documentElement.clientTop&&(n=n-o.height-s.height),o.left+s.width>document.documentElement.clientWidth&&o.right-s.width>document.documentElement.clientLeft&&(t=t+o.width-s.width)),this.popup.style.left=Math.ceil(t)+"px",this.popup.style.top=Math.ceil(n)+"px"},t.prototype.mouseDownHandler=function(e){if(this.popup.parentElement){var t=e.target,n=!0;if(!sf.base.Browser.isDevice&&t.classList.contains("e-hsv-model")){var o=t.parentElement.getBoundingClientRect(),s=this.element.getBoundingClientRect();n=e.clientX>=o.left&&e.clientX<=o.right&&e.clientY>=o.top&&e.clientY<=o.bottom||e.clientX>=s.left&&e.clientX<=s.right&&e.clientY>=s.top&&e.clientY<=s.bottom}n&&(sf.base.closest(t,"#"+this.getDropDownButton().id)||sf.base.closest(e.target,"#"+this.popup.id)||sf.base.closest(e.target,".e-colorpicker.e-modal"))||(this.dotNetRef.invokeMethodAsync("BtnClick",null),this.removeEventListener())}else this.removeEventListener()},t.prototype.keydownHandler=function(e){var t=this.getElement();if(e.altKey)38===e.keyCode&&(e.stopPropagation(),e.preventDefault(),this.dotNetRef.invokeMethodAsync("BtnClick",null),t.focus(),this.removeEventListener());else{var n=this.popup.firstElementChild;if(27!==e.keyCode&&9!==e.keyCode||(e.stopPropagation(),this.dotNetRef.invokeMethodAsync("BtnClick",null),27===e.keyCode&&e.preventDefault(),t.focus(),this.removeEventListener()),!n||!n.classList.contains("e-dropdown-menu"))return;if(13===e.keyCode)return e.preventDefault(),void(e.target.classList.contains("e-item")&&e.target.classList.contains("e-focused")?(t.focus(),this.removeEventListener()):e.stopPropagation());38!==e.keyCode&&40!==e.keyCode||(e.target.classList.contains("e-dropdown-menu")&&e.stopPropagation(),e.preventDefault(),sf.splitbuttons.upDownKeyHandler(n,e.keyCode))}},t.prototype.getElement=function(){return this.element.classList.contains("e-split-btn-wrapper")?this.element.firstElementChild:this.element},t.prototype.getDropDownButton=function(){return this.element.classList.contains("e-split-btn-wrapper")?this.element.getElementsByClassName("e-dropdown-btn")[0]:this.element},t.prototype.clickHandler=function(e){sf.base.closest(e.target,".e-item")&&(this.removeEventListener(),this.getElement().focus())},t.prototype.scrollHandler=function(e){if(this.popup&&document.getElementById(this.popup.id)){var t=this.element.parentElement.classList.contains("e-colorpicker-container");this.setPosition(t),t&&this.element.parentElement.blazor__instance.setOffset(this.popup)}else{var n=this.getDropDownButton();n&&document.getElementById(n.id)||sf.base.EventHandler.remove(e.target,"scroll",this.scrollHandler)}},t.prototype.addEventListener=function(t){if(sf.base.EventHandler.add(document,e,this.mouseDownHandler,this),sf.base.EventHandler.add(this.popup,"click",this.clickHandler,this),sf.base.EventHandler.add(this.popup,"keydown",this.keydownHandler,this),t&&this.popup.firstElementChild){var n=this.popup.querySelector(".e-focused");n?n.focus():this.popup.firstElementChild.focus()}},t.prototype.removeEventListener=function(t){if(sf.base.EventHandler.remove(document,e,this.mouseDownHandler),this.popup.parentElement&&(sf.base.EventHandler.remove(this.popup,"click",this.clickHandler),sf.base.EventHandler.remove(this.popup,"keydown",this.keydownHandler),t)){var n=this.getDropDownButton();n&&document.getElementById(n.id)&&(this.addScrollEvents(!1),this.element.appendChild(this.popup))}},t.prototype.addScrollEvents=function(e){for(var t=0,n=sf.popups.getScrollableParent(this.element);t0),u="string"==typeof n?JSON.parse(n):n;i&&!s&&this.updateCellHighlight(n.id);var c=e.blazorInstance;u.content=u.xLabel+u.yLabel+u.value,h&&!sf.base.isNullOrUndefined(c)?(u.content=u.displayText,u.location={x:u.x+u.width/2,y:u.y+u.height/2},u.areaBounds={height:o.height+o.y,width:o.width,x:o.x},c.tooltip=new sf.svgbase.Tooltip(u),c.tooltip.appendTo("#"+t)):sf.base.isNullOrUndefined(c.tooltip)||(sf.base.isNullOrUndefined(l)||(c.tooltip.border.color=a.color||c.tooltip.border.color,c.tooltip.textStyle.color=l.color||c.tooltip.textStyle.color,c.tooltip.textStyle.fontFamily=l.fontFamily||c.tooltip.textStyle.fontFamily,c.tooltip.textStyle.fontStyle=l.fontStyle||c.tooltip.textStyle.fontStyle,c.tooltip.textStyle.fontWeight=l.fontWeight||c.tooltip.textStyle.fontWeight,c.tooltip.textStyle.size=l.size||c.tooltip.textStyle.size),u.toolTipX=u.x+u.width/2,u.toolTipY=u.y+u.height/2,u.content=u.displayText,c.tooltip.location=new sf.svgbase.TooltipLocation(u.toolTipX,u.toolTipY),c.tooltip.content=[u.content],c.tooltip.dataBind())},e.prototype.updateCellHighlight=function(e){this.previousCellID!==e&&(""!=this.previousCellID&&this.setOpacity(document.getElementById(this.previousCellID),"1"),this.setOpacity(document.getElementById(e),"0.65"),this.previousCellID=e)},e.prototype.setOpacity=function(e,t){e.setAttribute("opacity",t)},e.prototype.getElementBounds=function(e){var t=this.stringToNumber(this.width,e.offsetWidth)||e.offsetWidth||600,n=this.stringToNumber(this.height,e.offsetHeight)||450,o=e.getBoundingClientRect();return{width:t,height:n,parentHeight:e.parentElement?e.parentElement.offsetHeight:n,left:Math.ceil(o.left),top:Math.ceil(o.top),right:Math.ceil(o.right),bottom:Math.ceil(o.bottom)}},e.prototype.stringToNumber=function(e,t){return sf.base.isNullOrUndefined(e)?null:-1!==e.indexOf("%")?t/100*parseInt(e,10):parseInt(e,10)},e.prototype.getMaxLabelSize=function(e,t){for(var n={height:0,width:0,top:0,left:0,right:0,bottom:0,parentHeight:0},o=0;o-1)for(var s=0,l=o.length;so){i=!0;break}}var l=this.returnLabels(t[0],t[1],t[2]),a=this.returnLabels(n[0],n[1],n[2]);this.dotnetRef.invokeMethodAsync("LabelInterSect",i,l,a)},e.prototype.returnLabels=function(e,t,n){for(var o=0;on)for(var l=i.length-1;l>=0&&(i=i.substring(0,l)+"...",!((s=this.measureText(i,t).width)<=n));--l);e[o]=i}return e},e.prototype.measureText=function(e,t){var n=document.getElementById("heatmapmeasuretext");return null===n&&(n=sf.base.createElement("text",{id:"heatmapmeasuretext"}),document.body.appendChild(n)),n.setAttribute("style","position:absolute;visibility:hidden;font-size:"+t.size+";font-weight:"+t.fontWeight+";font-style:"+t.fontStyle+";font-family:"+t.fontFamily+";top:-100;left:0;white-space:nowrap;line-height:normal"),n.innerText=e,{height:n.clientHeight,width:n.clientWidth,top:null,left:null,right:null,bottom:null,parentHeight:null}},e.prototype.destroy=function(){var e=sf.base.Browser.isPointer?"pointerleave":"mouseleave";sf.base.EventHandler.remove(this.element,"click",this.heatMapMouseClick),sf.base.EventHandler.remove(this.element,sf.base.Browser.touchStartEvent,this.heatMapMouseMove),sf.base.EventHandler.remove(this.element,e,this.heatMapMouseLeave),sf.base.EventHandler.remove(this.element,sf.base.Browser.touchMoveEvent,this.heatMapMouseMove);var t=sf.base.Browser.isTouch&&"orientation"in window&&"onorientationchange"in window?"orientationchange":"resize";sf.base.EventHandler.remove(window,t,this.resizeBound.bind(this)),this.element=null},e}();return{initialize:function(t,n,o){new e(t,n),t&&t.blazorInstance&&t.blazorInstance.initialize(o)},labelInterSect:function(e,t,n,o,i){e&&e.blazorInstance&&e.blazorInstance.labelInterSect(t,n,o,i)},renderTooltip:function(e,t,n,o,i,s,l,a,r){e&&e.blazorInstance&&e.blazorInstance.renderTooltip(e,t,o,i,s,l,a,r)},fadeOut:function(e){if(e&&e.blazorInstance){if(sf.base.isNullOrUndefined(e.blazorInstance)||!sf.base.isNullOrUndefined(e.blazorInstance)&&sf.base.isNullOrUndefined(e.blazorInstance.tooltip))return;""!=e.blazorInstance.previousCellID&&(e.blazorInstance.setOpacity(document.getElementById(e.blazorInstance.previousCellID),"1"),e.blazorInstance.previousCellID=""),e.blazorInstance.tooltip.fadeOut()}},destroy:function(e){e&&e.blazorInstance&&e.blazorInstance.destroy()}}}()}});
--------------------------------------------------------------------------------
/Server/wwwroot/_content/syncfusion.blazor/scripts/sf-import-ddeaa8.min.js:
--------------------------------------------------------------------------------
1 | !function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="_content/Syncfusion.Blazor/scripts/",r(r.s="./bundles/sf-import.js")}({"./bundles/sf-import.js":function(t,e,r){"use strict";r.r(e);r("./modules/sf-import.js")},"./modules/sf-import.js":function(t,e){window.sfBlazor=window.sfBlazor||{},window.sfBlazor.import=function(t){return"string"==typeof t&&t.startsWith("./")&&(t=document.baseURI+t.substr(2)),import(t)}}});
--------------------------------------------------------------------------------
/Server/wwwroot/_content/syncfusion.blazor/scripts/sf-import-ie-ddeaa8.min.js:
--------------------------------------------------------------------------------
1 | !function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="_content/Syncfusion.Blazor/scripts/",n(n.s="./bundles/sf-import-ie.js")}({"./bundles/sf-import-ie.js":function(e,t,n){"use strict";n.r(t);n("./modules/sf-import-ie.js")},"./modules/sf-import-ie.js":function(e,t){window.sfBlazor=window.sfBlazor||{},window.sfBlazor.import=function(e){"string"==typeof e&&e.startsWith("./")&&(e=document.baseURI+e.substr(2)),new Promise((function(t,n){var r=document.createElement("script");r.src=e,r.async=!0,r.onload=function(){t(r)},r.onerror=function(){n(r)},document.body.appendChild(r)}))}}});
--------------------------------------------------------------------------------
/Server/wwwroot/_content/syncfusion.blazor/scripts/sf-import-script-ddeaa8.min.js:
--------------------------------------------------------------------------------
1 | !function(t){function e(e){for(var r,o,i=e[0],a=e[1],u=0,s=[];u=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var u=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(u&&c){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),j(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:_(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}(t.exports);try{regeneratorRuntime=n}catch(t){Function("r","regeneratorRuntime = r")(n)}},"./bundles/sf-import-script.js":function(t,e,r){"use strict";r.r(e);r("./modules/sf-import-script.js")},"./modules/sf-import-script.js":function(t,e,r){"use strict";var n,o=r("../node_modules/@babel/runtime/regenerator/index.js"),i=r.n(o);function a(t,e,r,n,o,i,a){try{var u=t[i](a),c=u.value}catch(t){return void r(t)}u.done?e(c):Promise.resolve(c).then(n,o)}(n=i.a.mark((function t(){return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!window.MSInputMethodContext||!document.documentMode){t.next=5;break}return t.next=3,r.e(1).then(r.t.bind(null,"./modules/sf-import-ie.js",7));case 3:t.next=7;break;case 5:return t.next=7,r.e(0).then(r.t.bind(null,"./modules/sf-import.js",7));case 7:DotNet.invokeMethodAsync("Syncfusion.Blazor","SetIsDevice",sfBlazor.isDevice());case 8:case"end":return t.stop()}}),t)})),function(){var t=this,e=arguments;return new Promise((function(r,o){var i=n.apply(t,e);function u(t){a(i,r,o,u,c,"next",t)}function c(t){a(i,r,o,u,c,"throw",t)}u(void 0)}))})()}});
--------------------------------------------------------------------------------
/Server/wwwroot/_content/syncfusion.blazor/scripts/sf-inplaceeditor-ddeaa8.min.js:
--------------------------------------------------------------------------------
1 | !function(e){var t={};function n(o){if(t[o])return t[o].exports;var i=t[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(o,i,function(t){return e[t]}.bind(null,i));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="_content/Syncfusion.Blazor/scripts/",n(n.s="./bundles/sf-inplaceeditor.js")}({"./bundles/sf-inplaceeditor.js":function(e,t,n){"use strict";n.r(t);n("./modules/sf-inplaceeditor.js")},"./modules/sf-inplaceeditor.js":function(e,t){window.sfBlazor=window.sfBlazor||{},window.sfBlazor.InPlaceEditor=function(){"use strict";var e="e-inplaceeditor",t=function(){function t(e,t,n){this.submitOnEnter=!0,this.clearComponents=["AutoComplete","Mask","Text"],this.element=e,this.dotNetRef=n,this.updateContext(t),this.element.blazor__instance=this}return t.prototype.updateContext=function(e){sf.base.extend(this,this,e)},t.prototype.initialize=function(){this.onResizeScrollHandler=this.scrollResizeHandler.bind(this),this.wireEvents(),this.id=this.element.id,this.dotNetRef.invokeMethodAsync("Created",null)},t.prototype.wireEvents=function(){sf.base.EventHandler.add(this.element,"keydown",this.valueKeyDownHandler,this),sf.base.EventHandler.add(document,"scroll",this.scrollResizeHandler,this),window.addEventListener("resize",this.onResizeScrollHandler),Array.prototype.indexOf.call(this.clearComponents,this.type)>-1&&sf.base.EventHandler.add(this.element,"mousedown",this.mouseDownHandler,this)},t.prototype.scrollResizeHandler=function(){"Popup"!==this.mode||sf.base.Browser.isDevice||this.dotNetRef.invokeMethodAsync("CancelAction",null)},t.prototype.valueKeyDownHandler=function(t){"Tab"===t.code&&!0===t.shiftKey&&"BUTTON"!==t.target.tagName&&("Submit"===this.actionOnBlur?this.dotNetRef.invokeMethodAsync("SaveAction",null):"Cancel"===this.actionOnBlur&&this.dotNetRef.invokeMethodAsync("CancelAction",null)),"Enter"!==t.code||!t.target.classList.contains(e)||this.element.querySelector("e-editable-value-element").classList.contains("e-editable-open")||this.element.classList.contains("e-disable")||(t.preventDefault(),this.dotNetRef.invokeMethodAsync("RenderEditor",null))},t.prototype.mouseDownHandler=function(e){e.target.classList.contains("e-clear-icon")&&(this.isClearTarget=!0)},t.prototype.openEditor=function(e){if(this.updateContext(e),"Popup"===this.mode&&(this.popupContent=document.querySelector("#"+this.popupElement+"_content")),"Ignore"!==this.actionOnBlur&&sf.base.EventHandler.add(document,"mousedown",this.docClickHandler,this),this.submitOnEnter){var t="Popup"===this.mode?this.popupContent:this.element;sf.base.EventHandler.add(t,"keydown",this.enterKeyDownHandler,this)}},t.prototype.enterKeyDownHandler=function(e){sf.base.closest(e.target,".e-editable-component .e-richtexteditor")||(13===e.keyCode&&13===e.which&&sf.base.closest(e.target,".e-editable-component")?this.dotNetRef.invokeMethodAsync("SaveAction",null):27===e.keyCode&&27===e.which&&this.dotNetRef.invokeMethodAsync("CancelAction",null))},t.prototype.removeEditor=function(e){this.updateContext(e),this.enablePersistence&&window.localStorage.setItem(this.id,this.value),this.unWireEvents(),sf.base.EventHandler.remove(document,"mousedown",this.docClickHandler)},t.prototype.Destroy=function(e){var t=this;for(this.updateContext(e),this.unWireEvents(),sf.base.EventHandler.remove(document,"mousedown",this.docClickHandler),this.enablePersistence&&window.localStorage.setItem(this.id,this.value),"Popup"===this.mode&&this.destroyPopup(),["e-disable","e-rtl"].forEach((function(e){sf.base.removeClass([t.element],[e])}));this.element.firstElementChild;)this.element.removeChild(this.element.firstElementChild)},t.prototype.destroyPopup=function(){var e=document.querySelector("#"+this.popupElement);if(e){for(;e.attributes.length>0;)e.removeAttribute(e.attributes[0].name);for(var t=e.children,n=t.length-1;n>=0;n--)sf.base.detach(t[n])}},t.prototype.unWireEvents=function(){sf.base.EventHandler.remove(document,"scroll",this.scrollResizeHandler),window.removeEventListener("resize",this.onResizeScrollHandler),sf.base.EventHandler.remove(this.element,"keydown",this.valueKeyDownHandler),Array.prototype.indexOf.call(this.clearComponents,this.type)>-1&&sf.base.EventHandler.remove(this.element,"mousedown",this.mouseDownHandler)},t.prototype.validate=function(){return!!this.element.querySelector(".validation-message")},t.prototype.docClickHandler=function(t){var n=sf.base.closest(t.target,"."+e),o=sf.base.closest(t.target,".e-inplaceeditor-tip"),i=sf.base.closest(t.target,".e-editable-elements"),s=sf.base.closest(t.target,".e-rte-elements");if(this.isClearTarget||!sf.base.isNullOrUndefined(n)&&n.isEqualNode(this.element)||!sf.base.isNullOrUndefined(o)&&this.popupContent&&o.id.indexOf("tooltip")>-1||!sf.base.isNullOrUndefined(i)||!sf.base.isNullOrUndefined(s)||t.target.classList.contains("e-chips-close"))this.isClearTarget=!1;else{var r="Inline"===this.mode?this.element.querySelector(".e-editable-component"):this.element,l="Inline"===this.mode?this.element.querySelector(".e-editable-action-buttons"):this.componentParent;r.contains(t.target)||l&&l.contains(t.target)||sf.base.closest(t.target,".e-dropdown-popup.e-control.e-rte-elements")||sf.base.closest(t.target,".e-dropdown-popup.e-control.e-colorpicker-popup")||this.popupContent&&this.popupContent.contains(t.target)||("Submit"!==this.actionOnBlur||this.element.querySelector(".validation-message")?"Cancel"===this.actionOnBlur&&this.dotNetRef.invokeMethodAsync("CancelAction",null):this.dotNetRef.invokeMethodAsync("SaveAction",null))}},t}();return{initialize:function(e,n,o){sf.base.isNullOrUndefined(e)||(new t(e,n,o),e.blazor__instance.initialize())},openEditor:function(e,t){sf.base.isNullOrUndefined(e)||e.blazor__instance.openEditor(t)},closeEditor:function(e,t){sf.base.isNullOrUndefined(e)||e.blazor__instance.removeEditor(t)},destroy:function(e,t){sf.base.isNullOrUndefined(e)||e.blazor__instance.Destroy(t)},propertyChanged:function(e,t){sf.base.isNullOrUndefined(e)||e.blazor__instance.updateContext(t)},validate:function(e){return e&&e.blazor__instance.validate()}}}()}});
--------------------------------------------------------------------------------
/Server/wwwroot/_content/syncfusion.blazor/scripts/sf-lineargauge-ddeaa8.min.js:
--------------------------------------------------------------------------------
1 | !function(e){var t={};function i(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,i),o.l=!0,o.exports}i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)i.d(n,o,function(t){return e[t]}.bind(null,o));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="_content/Syncfusion.Blazor/scripts/",i(i.s="./bundles/sf-lineargauge.js")}({"./bundles/sf-lineargauge.js":function(e,t,i){"use strict";i.r(t);i("./modules/sf-lineargauge.js")},"./modules/sf-lineargauge.js":function(e,t){window.sfBlazor=window.sfBlazor||{},window.sfBlazor.LinearGauge=function(){"use strict";var e=function(){function e(e,t,i,n,o){this.id=e,this.element=t,this.dotNetRef=n,this.options=i,this.element.blazor__instance=this,this.individualId=o}return e.prototype.render=function(){this.wireEvents()},e.prototype.wireEvents=function(){
2 | /*! Bind the Event handler */
3 | sf.base.EventHandler.add(this.element,sf.base.Browser.touchStartEvent,this.gaugeOnMouseDown,this),sf.base.EventHandler.add(this.element,sf.base.Browser.touchMoveEvent,this.gaugeOnMouseMove,this),sf.base.EventHandler.add(this.element,sf.base.Browser.touchEndEvent,this.gaugeOnMouseEnd,this),sf.base.EventHandler.add(this.element,sf.base.Browser.touchCancelEvent,this.gaugeOnMouseEnd,this),sf.base.EventHandler.add(this.element,"click",this.gaugeOnMouseClick,this),sf.base.EventHandler.add(this.element,"mouseleave",this.gaugeOnMouseLeave,this),window.addEventListener(sf.base.Browser.isTouch&&"orientation"in window&&"onorientationchange"in window?"orientationchange":"resize",this.gaugeOnResize.bind(this))},e.prototype.gaugeOnResize=function(){var e=document.getElementById(this.element.id);if(null!=e){var t=e.clientWidth||e.offsetWidth,i=e.clientHeight||e.offsetHeight;this.dotNetRef.invokeMethodAsync("TriggerResizeEvent",t,i)}},e.prototype.gaugeOnMouseClick=function(e){var t=e.target.id;(t.indexOf("Bar")>-1||t.indexOf("Marker")>-1)&&(this.pointerCheck=!1)},e.prototype.gaugeOnMouseLeave=function(e){this.dotNetRef.invokeMethodAsync("TriggerMouseLeaveEvent",e.x,e.y)},e.prototype.gaugeOnMouseDown=function(e){var t=e.target.id;if(t.indexOf("Bar")>-1||t.indexOf("Marker")>-1){this.pointerCheck=!0;var i=parseInt(t.split("_AxisIndex_")[1].split("_")[0],10),n=parseInt(t.split("_AxisIndex_")[1].split("_")[2],10);this.dotNetRef.invokeMethodAsync("TriggerDragStart",i,n)}else this.dotNetRef.invokeMethodAsync("TriggerMouseDownEvent",e.x,e.y)},e.prototype.gaugeOnMouseMove=function(e){var t=e.target.id;if(t.indexOf("Bar")>-1&&this.pointerCheck||t.indexOf("Marker")>-1&&this.pointerCheck){var i=this.svgClient(t),n=parseInt(t.split("_AxisIndex_")[1].split("_")[0],10),o=parseInt(t.split("_AxisIndex_")[1].split("_")[2],10);this.dotNetRef.invokeMethodAsync("TriggerDragMove",t,n,o,e.clientX-i.left,e.clientY-i.top)}if(t.indexOf("Bar")>-1||t.indexOf("Marker")>-1||t.indexOf("Range")>-1){i=this.svgClient(t),n=parseInt(t.split("_AxisIndex_")[1].split("_")[0],10),o=parseInt(t.split("_AxisIndex_")[1].split("_")[2],10);var s=t.split("_")[0],r=document.getElementById(s).getBoundingClientRect(),d={Bottom:r.bottom,Height:r.height,Left:r.left,Right:r.right,Top:r.top,Width:r.width,X:r.x,Y:r.y},l=document.getElementById(s+"_AxisLine_"+n).getBoundingClientRect(),a={Bottom:l.bottom,Height:l.height,Left:l.left,Right:l.right,Top:l.top,Width:l.width,X:l.x,Y:l.y},u=document.getElementById(s+"_MajorTicksLine_"+n).getBoundingClientRect(),g={Bottom:u.bottom,Height:u.height,Left:u.left,Right:u.right,Top:u.top,Width:u.width,X:u.x,Y:u.y},h=document.getElementById(t).getBoundingClientRect(),f={Bottom:h.bottom,Height:h.height,Left:h.left,Right:h.right,Top:h.top,Width:h.width,X:h.x,Y:h.y},c=t.split("_")[0];null!=(p=document.getElementById(c+"_Tooltip"))&&(p.style.visibility="visible"),this.dotNetRef.invokeMethodAsync("TriggerTooltip",t,n,o,e.clientX-i.left,e.clientY-i.top,d,a,g,f)}else{var p;c=t.split("_")[0];null!=(p=document.getElementById(c+"_Tooltip"))&&(p.style.visibility="hidden")}},e.prototype.gaugeOnMouseEnd=function(e){var t=e.target.id;if(this.pointerCheck=!1,t.indexOf("Bar")>-1||t.indexOf("Marker")>-1){this.pointerCheck=!1;var i=this.svgClient(t),n=t.split("_AxisIndex_")[0].split("_")[0],o=parseInt(t.split("_AxisIndex_")[1].split("_")[0],10),s=parseInt(t.split("_AxisIndex_")[1].split("_")[2],10);this.dotNetRef.invokeMethodAsync("TriggerDragEnd",o,s,n,t,e.clientX-i.left,e.clientY-i.top)}else this.dotNetRef.invokeMethodAsync("TriggerMouseUpEvent",e.x,e.y)},e.prototype.svgClient=function(e){return document.getElementById(e.split("_AxisIndex_")[0]+"_svg").getBoundingClientRect()},e}();return{initialize:function(t,i,n,o){return new e(t.id,t,i,n,o).render(),this.getElementSize(t)},getElementSize:function(e){var t,i;if(null!=e){var n=e.getBoundingClientRect();t=n.width,i=n.height}return{width:t,height:i,isIE:sf.base.Browser.isIE}},setPathAttribute:function(e,t,i,n,o){var s=document.getElementById(e);""===t?s.setAttribute("d",i):(s.setAttribute("x",n.toString()),s.setAttribute("y",o.toString()))},getElementBounds:function(e){var t=document.getElementById(e);if(t){var i=t.getBoundingClientRect();return{width:i.width,height:i.height,top:i.top,bottom:i.bottom,left:i.left,right:i.right}}return null}}}()}});
--------------------------------------------------------------------------------
/Server/wwwroot/_content/syncfusion.blazor/scripts/sf-listbox-ddeaa8.min.js:
--------------------------------------------------------------------------------
1 | !function(e){var t={};function n(s){if(t[s])return t[s].exports;var r=t[s]={i:s,l:!1,exports:{}};return e[s].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,s){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(n.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(s,r,function(t){return e[t]}.bind(null,r));return s},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="_content/Syncfusion.Blazor/scripts/",n(n.s="./bundles/sf-listbox.js")}({"./bundles/sf-listbox.js":function(e,t,n){"use strict";n.r(t);n("./modules/sf-listbox.js")},"./modules/sf-listbox.js":function(e,t){window.sfBlazor=window.sfBlazor||{},window.sfBlazor.ListBox=function(){"use strict";var e="e-list-item",t=function(){function t(e,t,n,s){this.element=e,this.scopeElement=t,this.dotnetRef=s,this.allowDragAndDrop=n,this.element.blazor__instance=this,sf.base.EventHandler.add(this.element,"keydown",this.keyDownHandler,this),sf.base.isNullOrUndefined(this.scopeElement.blazor__instance)||this.scopeElement.blazor__instance.scope||(this.scopeElement!==this.element&&(this.scope=sf.base.getUniqueID("scopedListBox"),this.scopeElement.blazor__instance.scope=this.scope,this.scopeElement.blazor__instance.initializeDraggable()),this.initializeDraggable())}return t.prototype.initializeDraggable=function(){var t=this;if(this.allowDragAndDrop){var n=sf.base.select(".e-ul",this.element);new sf.lists.Sortable(n,{scope:this.scope,itemClass:e,beforeDragStart:this.triggerBeforeDragStart.bind(this),dragStart:this.triggerDragStart.bind(this),beforeDrop:this.dragEnd.bind(this),placeHolder:function(){return sf.base.createElement("span",{className:"e-placeholder"})},helper:function(n){var s=t.element.cloneNode(),r=n.sender.cloneNode(!0);s.appendChild(r);var i=sf.base.select("."+e,t.element);s.style.width=i.offsetWidth+"px",s.style.height=i.offsetHeight+"px";var o=[].slice.call(sf.base.selectAll("."+e+".e-selected",t.element));return o.length&&o.length>1&&o.indexOf(n.sender)>-1&&r.appendChild(sf.base.createElement("span",{className:"e-list-badge",innerHTML:o.length.toString()})),s.style.zIndex=sf.popups.getZindexPartial(t.element).toString(),s}})}},t.prototype.triggerBeforeDragStart=function(e){e.cancel=e.target.classList.contains("e-drag-prevent")},t.prototype.triggerDragStart=function(e){e.bindEvents(e.dragElement)},t.prototype.dragEnd=function(e){var t,n=!1,s=!1;this.element!==this.scopeElement&&(t=sf.base.closest(e.target,"#"+this.scopeElement.id)),t?n=!0:(t=sf.base.closest(e.target,"#"+this.element.id))&&(s=!0),e.cancel=!0,this.dotnetRef.invokeMethodAsync("DragEnd",e.droppedElement.getAttribute("data-value"),s,n,e.previousIndex,e.currentIndex)},t.prototype.keyDownHandler=function(t){var n=t.target;if(38===t.keyCode||40===t.keyCode)if(t.preventDefault(),n.classList.contains("e-listbox-container")){var s=sf.base.select("."+e,this.element);s&&s.focus()}else{var r=[].slice.call(sf.base.selectAll("."+e,this.element)),i=r.indexOf(n);if(i<0)return;if((i=38===t.keyCode?i-1:i+1)<0||i>r.length-1)return;r[i].focus()}else(65===t.keyCode&&t.ctrlKey||32===t.keyCode)&&t.preventDefault()},t.prototype.destroyDraggable=function(){var e=sf.base.getComponent(sf.base.select(".e-ul",this.element),"sortable");sf.base.isNullOrUndefined(e)||e.destroy()},t.prototype.destroy=function(){this.destroyDraggable(),sf.base.EventHandler.remove(this.element,"keydown",this.keyDownHandler)},t}();return{initialize:function(e,n,s,r){sf.base.isNullOrUndefined(e)||new t(e,n,s,r)},destroy:function(e){sf.base.isNullOrUndefined(e)||sf.base.isNullOrUndefined(e.blazor__instance)||e.blazor__instance.destroy()}}}()}});
--------------------------------------------------------------------------------
/Server/wwwroot/_content/syncfusion.blazor/scripts/sf-maskedtextbox-ddeaa8.min.js:
--------------------------------------------------------------------------------
1 | !function(t){var e={};function s(i){if(e[i])return e[i].exports;var n=e[i]={i:i,l:!1,exports:{}};return t[i].call(n.exports,n,n.exports,s),n.l=!0,n.exports}s.m=t,s.c=e,s.d=function(t,e,i){s.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},s.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},s.t=function(t,e){if(1&e&&(t=s(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(s.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)s.d(i,n,function(e){return t[e]}.bind(null,n));return i},s.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return s.d(e,"a",e),e},s.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},s.p="_content/Syncfusion.Blazor/scripts/",s(s.s="./bundles/sf-maskedtextbox.js")}({"./bundles/sf-maskedtextbox.js":function(t,e,s){"use strict";s.r(e);s("./modules/sf-maskedtextbox.js")},"./modules/sf-maskedtextbox.js":function(t,e){window.sfBlazor=window.sfBlazor||{},window.sfBlazor.MaskedTextBox=function(){"use strict";var t=function(){function t(t,e,s,i){this.ismultipledelete=!1,this.isClicked=!1,this.previousVal="",this.inputData=null,this.wrapperElement=t,this.isClicked=!1,this.sIndex=0,this.eIndex=0,this.element=e,this.options=i,this.element.blazor__instance=this,this.dotNetRef=s,this.previousVal=this.options.maskedValue}return t.prototype.initialize=function(){sf.base.EventHandler.add(this.element,"focus",this.focusHandler,this),sf.base.EventHandler.add(this.element,"blur",this.focusOutHandler,this),sf.base.EventHandler.add(this.element,"paste",this.pasteHandler,this),sf.base.EventHandler.add(this.element,"cut",this.cutHandler,this),sf.base.EventHandler.add(this.element,"mousedown",this.mouseDownHandler,this),sf.base.EventHandler.add(this.element,"mouseup",this.mouseUpHandler,this),sf.base.EventHandler.add(this.element,"keydown",this.keyDownHandler,this),sf.base.EventHandler.add(this.element,"input",this.inputHandler,this),sf.base.EventHandler.add(this.element,"select",this.selectionHandler,this)},t.prototype.focusOutHandler=function(t){var e=this.wrapperElement.querySelector(".e-clear-icon");null!==e&&e.classList.add("e-clear-icon-hide")},t.prototype.mouseDownHandler=function(t){this.isClicked=!0},t.prototype.mouseUpHandler=function(t){this.isClicked=!1,sf.base.Browser.isDevice&&(this.ismultipledelete=!1,this.sIndex=this.eIndex=0)},t.prototype.selectionHandler=function(t){var e=this.element;e.selectionStart!==e.selectionEnd&&sf.base.Browser.isDevice&&(this.sIndex=e.selectionStart,this.eIndex=e.selectionEnd)},t.prototype.keyDownHandler=function(t){var e=this.element;this.previousVal=e.value,sf.base.Browser.isDevice||(e.selectionStart!==e.selectionEnd?(this.sIndex=e.selectionStart,this.eIndex=e.selectionEnd):(this.ismultipledelete=!1,this.sIndex=this.eIndex=0))},t.prototype.inputHandler=function(t){if(this.options.mask){var e=this.element;if(t.data||t.inputType){var s=t.data?t.data:"deleteContentBackward"===t.inputType?"Backspace":"deleteContentForward"===t.inputType?"Delete":null,i=e.selectionStart,n=e.selectionEnd;if(this.sIndex!==this.eIndex?(this.ismultipledelete=!0,i=this.sIndex,n=this.eIndex,this.sIndex=this.eIndex=0):n=i=t.data?i-1:"deleteContentBackward"===t.inputType?i+1:i,e.value=this.previousVal,e.selectionStart=e.selectionEnd=i,this.ismultipledelete){this.ismultipledelete=!1;var o=this.multipleDeletion(this.previousVal,i,n);e.value=o,this.previousVal=e.value,e.selectionStart=e.selectionEnd=i,null!==s&&"Backspace"!==s&&"Delete"!==s&&this.updateMask(s,i)}else this.updateMask(s,i);this.previousVal=e.value,this.updateServerValue()}else this.inputData=e.value,e.value=this.previousVal,e.selectionStart=e.selectionEnd=e.selectionStart,this.pasteHandler(t)}},t.prototype.multipleDeletion=function(t,e,s){for(var i=t,n=e;n=0&&e=0&&("<"===this.options.hiddenMask[e]?(i=!0,n=!1,this.options.hiddenMask=this.options.hiddenMask.replace(this.options.hiddenMask[e],"")):">"===this.options.hiddenMask[e]?(n=!0,i=!1,this.options.hiddenMask=this.options.hiddenMask.replace(this.options.hiddenMask[e],"")):"|"===this.options.hiddenMask[e]&&(i=!1,n=!1,this.options.hiddenMask=this.options.hiddenMask.replace(this.options.hiddenMask[e],""))),"Backspace"===t||"Delete"===t)"Backspace"===t?(this.options.promptMask[e-1]===this.options.promptCharacter?s.value=o.substring(0,e-1)+this.options.promptCharacter+o.substring(e):s.value=o.substring(0,e-1)+this.options.promptMask[e-1]+o.substring(e),s.selectionStart=s.selectionEnd=e-1):(this.options.promptMask[e]===this.options.promptCharacter?s.value=o.substring(0,e)+this.options.promptCharacter+o.substring(e+1):s.value=o.substring(0,e)+this.options.promptMask[e]+o.substring(e+1),s.selectionStart=s.selectionEnd=e);else if(e=0;i--){if(s.value[i]===e.options.promptCharacter){a=!0;break}if(s.value[i]!==e.options.mask[i]){a=!1;break}}})),this.isClicked||"Always"!==this.options.floatLabelType&&(null===n||""===n)&&null!==this.options.placeHolder&&""!==this.options.placeHolder)){for(i=0;i0?this.dotNetRef.invokeMethodAsync("ServerAction","increment",e):t<0&&this.dotNetRef.invokeMethodAsync("ServerAction","decrement",e)},t.prototype.focusHandler=function(e){this.isFocused=!0,this.options.enabled&&!this.options.readonly&&(sf.base.Browser.isDevice||sf.base.EventHandler.add(this.element,"mousewheel DOMMouseScroll",this.mouseWheel,this))},t.prototype.focusOutHandler=function(e){this.isFocused=!1,e.preventDefault(),sf.base.Browser.isDevice||sf.base.EventHandler.remove(this.element,"mousewheel DOMMouseScroll",this.mouseWheel)},t.prototype.mouseDownOnSpinner=function(e){var t=this;this.isFocused&&(this.isPrevFocused=!0,e.preventDefault());var n=e.currentTarget,s=n.classList.contains("e-spin-up")?"increment":"decrement";sf.base.EventHandler.add(n,"mouseleave",this.mouseUpClick,this),this.timeOut=setInterval((function(){t.isCalled=!0,t.dotNetRef.invokeMethodAsync("ServerAction",s,e)}),150),sf.base.EventHandler.add(document,"mouseup",this.mouseUpClick,this)},t.prototype.mouseUpOnSpinner=function(e){if(this.isPrevFocused&&(this.element.focus(),sf.base.Browser.isDevice||(this.isPrevFocused=!1)),sf.base.Browser.isDevice||e.preventDefault(),this.getElementData(e)){var t=e.currentTarget,n=t.classList.contains("e-spin-up")?"increment":"decrement";sf.base.EventHandler.remove(t,"mouseleave",this.mouseUpClick),this.isCalled||this.dotNetRef.invokeMethodAsync("ServerAction",n,e),this.isCalled=!1,sf.base.EventHandler.remove(document,"mouseup",this.mouseUpClick)}},t.prototype.touchMoveOnSpinner=function(e){document.elementFromPoint(e.clientX,e.clientY).classList.contains("e-input-group-icon")||clearInterval(this.timeOut)},t.prototype.getElementData=function(e){return!(e.which&&3===e.which||e.button&&2===e.button||!this.options.enabled||this.options.readonly)&&(clearInterval(this.timeOut),!0)},t.prototype.mouseUpClick=function(e){e.stopPropagation(),clearInterval(this.timeOut),this.isCalled=!1,sf.base.EventHandler.remove(this.spinUp,"mouseleave",this.mouseUpClick),sf.base.EventHandler.remove(this.spinDown,"mouseleave",this.mouseUpClick)},t.prototype.selectRange=function(e){var t=this;if(sf.base.Browser.isDevice||"11.0"!==sf.base.Browser.info.version){var n=sf.base.Browser.isDevice&&sf.base.Browser.isIos?600:30;setTimeout((function(){t.element.setSelectionRange(0,e.length)}),n)}else this.element.setSelectionRange(0,e.length)},t.prototype.isDevice=function(){return sf.base.Browser.isDevice},t.prototype.spinButtonEvents=function(){this.spinDown=this.wrapperElement?this.wrapperElement.querySelector(".e-spin-down"):null,this.spinUp=this.wrapperElement?this.wrapperElement.querySelector(".e-spin-up"):null,this.spinDown&&this.spinUp&&(this.unBindSpinButton(),this.bindSpinButton())},t.prototype.bindSpinButton=function(){sf.base.EventHandler.add(this.spinUp,sf.base.Browser.touchStartEvent,this.mouseDownOnSpinner,this),sf.base.EventHandler.add(this.spinDown,sf.base.Browser.touchStartEvent,this.mouseDownOnSpinner,this),sf.base.EventHandler.add(this.spinUp,sf.base.Browser.touchEndEvent,this.mouseUpOnSpinner,this),sf.base.EventHandler.add(this.spinDown,sf.base.Browser.touchEndEvent,this.mouseUpOnSpinner,this),sf.base.EventHandler.add(this.spinUp,sf.base.Browser.touchMoveEvent,this.touchMoveOnSpinner,this),sf.base.EventHandler.add(this.spinDown,sf.base.Browser.touchMoveEvent,this.touchMoveOnSpinner,this)},t.prototype.unBindSpinButton=function(){sf.base.EventHandler.remove(this.spinUp,sf.base.Browser.touchStartEvent,this.mouseDownOnSpinner),sf.base.EventHandler.remove(this.spinDown,sf.base.Browser.touchStartEvent,this.mouseDownOnSpinner),sf.base.EventHandler.remove(this.spinUp,sf.base.Browser.touchEndEvent,this.mouseUpOnSpinner),sf.base.EventHandler.remove(this.spinDown,sf.base.Browser.touchEndEvent,this.mouseUpOnSpinner),sf.base.EventHandler.remove(this.spinUp,sf.base.Browser.touchMoveEvent,this.touchMoveOnSpinner),sf.base.EventHandler.remove(this.spinDown,sf.base.Browser.touchMoveEvent,this.touchMoveOnSpinner)},t}();return{initialize:function(e,n,s,i){n&&new t(e,n,s,i),n&&n.blazor__instance&&n.blazor__instance.initialize()},selectRange:function(e,t){e&&e.blazor__instance&&e.blazor__instance.selectRange(t)},propertyChanges:function(e,t){e&&e.blazor__instance&&(e.blazor__instance.options=t)},focusIn:function(e){e&&e.focus()},focusOut:function(e){e&&e.blur()},spinButtonEvents:function(e){e&&e.blazor__instance&&e.blazor__instance.spinButtonEvents()}}}()}});
--------------------------------------------------------------------------------
/Server/wwwroot/_content/syncfusion.blazor/scripts/sf-sidebar-ddeaa8.min.js:
--------------------------------------------------------------------------------
1 | !function(e){var t={};function i(s){if(t[s])return t[s].exports;var n=t[s]={i:s,l:!1,exports:{}};return e[s].call(n.exports,n,n.exports,i),n.l=!0,n.exports}i.m=e,i.c=t,i.d=function(e,t,s){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(i.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)i.d(s,n,function(t){return e[t]}.bind(null,n));return s},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="_content/Syncfusion.Blazor/scripts/",i(i.s="./bundles/sf-sidebar.js")}({"./bundles/sf-sidebar.js":function(e,t,i){"use strict";i.r(t);i("./modules/sf-sidebar.js")},"./modules/sf-sidebar.js":function(e,t){window.sfBlazor=window.sfBlazor||{},window.sfBlazor.Sidebar=function(){"use strict";var e="Left",t=function(){function t(e,t,i){this.enableGestures=!0,this.isOpen=!1,this.closeOnDocumentClick=!1,this.isPositionChange=!1,this.dockSize="auto",this.width="auto",this.isSwipChange=!1,this.element=e,this.element.blazor__instance=this,this.dotnetRef=t,this.resetProperty(i)}return t.prototype.initialize=function(){this.setTarget(),this.addClass(),this.setType(),this.setCloseOnDocumentClick(),this.setMediaQuery(),sf.base.Browser.isDevice&&(this.windowWidth=window.innerWidth),this.wireEvents()},t.prototype.addClass=function(){var e=document.querySelector(".e-main-content");sf.base.isNullOrUndefined(e||this.targetElement)||sf.base.addClass([e||this.targetElement],["e-content-animation"])},t.prototype.setTarget=function(){this.targetElement=this.element.nextElementSibling,"string"==typeof this.target&&(this.target=document.querySelector(this.target)),this.target&&(this.target.insertBefore(this.element,this.target.children[0]),sf.base.addClass([this.element],"e-sidebar-absolute"),sf.base.addClass([this.target],"e-sidebar-context"),this.targetElement=this.getTargetElement())},t.prototype.getTargetElement=function(){for(var e=this.element.nextElementSibling;!sf.base.isNullOrUndefined(e)&&e.classList.contains("e-sidebar");)e=e.nextElementSibling;return e},t.prototype.hide=function(){var t=this,i=document.querySelector(".e-main-content")||this.targetElement;!this.enableDock&&i&&(i.style.transform="translateX(0px)",i.style[this.position===e?"marginLeft":"marginRight"]="0px"),this.destroyBackDrop(),this.isOpen=!1,this.enableDock&&setTimeout((function(){return t.sidebarTimeout()}),50),sf.base.EventHandler.add(this.element,"transitionend",this.transitionEnd,this)},t.prototype.show=function(e){var t=this;e&&setTimeout((function(){return t.setType()}),50),this.isOpen=!0,sf.base.EventHandler.add(this.element,"transitionend",this.transitionEnd,this)},t.prototype.transitionEnd=function(t){if(this.enableDock&&!this.isOpen){var i=this.position===e?"-100":"100",s=this.position===e?this.setDimension(this.dockSize):"-"+this.setDimension(this.dockSize),n="z-index: "+this.element.style.zIndex+"; width: "+this.element.style.width+";"+" transform: translateX("+i+"%) translateX("+s+")";this.element.setAttribute("style",n)}this.dotnetRef.invokeMethodAsync("SetDock"),sf.base.isNullOrUndefined(t)||t.target!==this.element||this.dotnetRef.invokeMethodAsync("TriggerChange",this.isOpen,t),sf.base.EventHandler.remove(this.element,"transitionend",this.transitionEnd)},t.prototype.createBackDrop=function(e){(this.resetProperty(e),this.showBackdrop&&this.isOpen)&&(this.modal=sf.base.createElement("div"),this.modal.className="e-sidebar-overlay",this.modal.style.display="block",this.target?(document.querySelector(".e-main-content")||this.targetElement).appendChild(this.modal):document.body.appendChild(this.modal))},t.prototype.destroyBackDrop=function(){this.showBackdrop&&this.modal&&(this.modal.style.display="none",this.modal.outerHTML="",this.modal=null)},t.prototype.enableGestureHandler=function(t){!this.isOpen&&(this.position===e&&"Right"===t.swipeDirection&&t.startX<=20&&t.distanceX>=50&&t.velocity>=.5||"Right"===this.position&&t.swipeDirection===e&&window.innerWidth-t.startX<=20&&t.distanceX>=50&&t.velocity>=.5)?(this.dotnetRef.invokeMethodAsync("Show",t),this.show(),this.isSwipChange=!0):(this.isOpen&&this.position===e&&t.swipeDirection===e||"Right"===this.position&&"Right"===t.swipeDirection)&&(this.dotnetRef.invokeMethodAsync("Hide",t),this.hide(),this.isSwipChange=!1)},t.prototype.resize=function(){this.setMediaQuery(),sf.base.Browser.isDevice&&(this.windowWidth=window.innerWidth)},t.prototype.setEnableGestures=function(e){this.resetProperty(e),this.enableGestures?(this.mainContentElement=new sf.base.Touch(document.body,{swipe:this.enableGestureHandler.bind(this)}),this.sidebarElement=new sf.base.Touch(this.element,{swipe:this.enableGestureHandler.bind(this)})):this.mainContentElement&&this.sidebarElement&&(this.mainContentElement.destroy(),this.sidebarElement.destroy())},t.prototype.wireEvents=function(){this.setEnableGestures(),window.addEventListener("resize",this.resize.bind(this))},t.prototype.unWireEvents=function(){window.removeEventListener("resize",this.resize.bind(this)),sf.base.EventHandler.remove(document,"mousedown touchstart",this.documentclickHandler),this.mainContentElement&&this.mainContentElement.destroy(),this.sidebarElement&&this.sidebarElement.destroy()},t.prototype.documentclickHandler=function(e){sf.base.closest(e.target,".e-control.e-sidebar")||(this.dotnetRef.invokeMethodAsync("TriggerHide",e),this.hide())},t.prototype.setCloseOnDocumentClick=function(e){this.resetProperty(e),this.closeOnDocumentClick?sf.base.EventHandler.add(document,"mousedown touchstart",this.documentclickHandler,this):sf.base.EventHandler.remove(document,"mousedown touchstart",this.documentclickHandler)},t.prototype.setMediaQuery=function(){this.mediaQuery&&this.windowWidth!==window.innerWidth&&(window.matchMedia(this.mediaQuery).matches?this.dotnetRef.invokeMethodAsync("TriggerShow",null):this.isOpen&&this.dotnetRef.invokeMethodAsync("TriggerHide",null))},t.prototype.setDimension=function(e){return e="number"==typeof e?sf.base.formatUnit(e):"string"==typeof e?e.match(/px|%|em/)?e:sf.base.formatUnit(e):"100%"},t.prototype.sidebarTimeout=function(){var e=document.querySelector(".e-main-content")||this.targetElement,t=this.isOpen?this.setDimension(this.width):this.setDimension(this.dockSize),i=this.setDimension(this.element.getBoundingClientRect().width);e&&(this.isOpen?this.positionStyles(this.width,e,i,t):this.element.classList.contains("e-close")&&this.positionStyles(this.dockSize,e,i,t))},t.prototype.positionStyles=function(t,i,s,n){this.position===e?i.style.marginLeft="auto"===t?s:n:i.style.marginRight="auto"===t?s:n},t.prototype.siblingStyle=function(t,i){t.style[this.position===e?"marginLeft":"marginRight"]=i},t.prototype.resetProperty=function(e){sf.base.isNullOrUndefined(e)||(this.type=e.Type,this.isOpen=e.IsOpen,this.isPositionChange=this.position!==e.Position,this.position=e.Position,this.enableDock=e.EnableDock,this.showBackdrop=e.ShowBackdrop,this.target=e.Target,this.enableGestures=e.EnableGestures,this.closeOnDocumentClick=e.CloseOnDocumentClick,this.mediaQuery=e.MediaQuery,this.dockSize=e.DockSize,this.width=e.Width)},t.prototype.setType=function(t){this.resetProperty(t);var i=this.element.getBoundingClientRect().width;i=this.enableDock&&!this.isOpen?this.dockSize:i;var s=document.querySelector(".e-main-content")||this.targetElement;if(s){this.isPositionChange&&(s.style[this.position===e?"marginRight":"marginLeft"]="0px"),s.style.transform="translateX(0px)",sf.base.Browser.isDevice||"Auto"===this.type||(s.style[this.position===e?"marginLeft":"marginRight"]="0px"),this.isPositionChange=!1;var n="string"==typeof i?i:i+"px",o=this.position===e?i:-i,r=s&&(this.enableDock||this.isOpen||this.isSwipChange);switch(this.type){case"Push":r&&this.siblingStyle(s,n);break;case"Slide":r&&(s.style.transform="translateX("+o+"px)");break;case"Over":this.enableDock&&this.element.classList.contains("e-close")&&this.siblingStyle(s,n);break;case"Auto":sf.base.Browser.isDevice?this.enableDock&&!this.isOpen&&this.siblingStyle(s,n):(this.enableDock||this.isOpen||this.isSwipChange)&&this.siblingStyle(s,n),this.isSwipChange=!1}}},t.prototype.destroy=function(){this.destroyBackDrop(),this.element.style.width=this.element.style.zIndex=this.element.style.transform="",this.windowWidth=null;var e=document.querySelector(".e-main-content")||this.targetElement;sf.base.isNullOrUndefined(e)||(e.style.margin=e.style.transform=""),this.unWireEvents()},t}();return{initialize:function(e,i,s){return new t(e,i,s),this.isValid(e)&&(e.blazor__instance.initialize(),sf.base.removeClass([e],"e-hidden")),!(sf.base.Browser.isDevice||!window.matchMedia(s.MediaQuery))||!(!sf.base.Browser.isDevice||!s.IsOpen)},setType:function(e,t){this.isValid(e)&&e.blazor__instance.setType(t)},hide:function(e,t){this.isValid(e)&&(e.blazor__instance.setType(t),e.blazor__instance.hide())},show:function(e,t,i){this.isValid(e)&&(e.blazor__instance.setType(t),e.blazor__instance.createBackDrop(t),e.blazor__instance.show(i))},onPropertyChange:function(e,t){this.isValid(e)&&(void 0!==t.CloseOnDocumentClick&&e.blazor__instance.setCloseOnDocumentClick(t),void 0!==t.ShowBackdrop&&e.blazor__instance.createBackDrop(t))},destroy:function(e){this.isValid(e)&&e&&e.blazor__instance.destroy()},isValid:function(e){return!(!e||!e.blazor__instance)}}}()}});
--------------------------------------------------------------------------------
/Server/wwwroot/_content/syncfusion.blazor/scripts/sf-smith-chart-ddeaa8.min.js:
--------------------------------------------------------------------------------
1 | !function(t){var e={};function i(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,i),o.l=!0,o.exports}i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)i.d(n,o,function(e){return t[e]}.bind(null,o));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="_content/Syncfusion.Blazor/scripts/",i(i.s="./bundles/sf-smith-chart.js")}({"./bundles/sf-smith-chart.js":function(t,e,i){"use strict";i.r(e);i("./modules/sf-smith-chart.js")},"./modules/sf-smith-chart.js":function(t,e){window.sfBlazor=window.sfBlazor||{},window.sfBlazor.SmithChart=function(){"use strict";var t=function(){function t(t,e,i){this.mouseY=0,this.mouseX=0,this.resizeTo=0,this.id=t,this.element=e,this.dotNetRef=i,this.element.blazor__instance=this}return t.prototype.unWireEvents=function(){var t=sf.base.Browser.isPointer?"pointerleave":"mouseleave";sf.base.EventHandler.remove(this.element,sf.base.Browser.touchMoveEvent,this.mouseMove),sf.base.EventHandler.remove(this.element,"click",this.chartOnMouseClick),sf.base.EventHandler.remove(this.element,t,this.mouseLeave),window.removeEventListener(sf.base.Browser.isTouch&&"orientation"in window&&"onorientationchange"in window?"orientationchange":"resize",this.rangeResize.bind(this)),this.element=null,this.dotNetRef=null},t.prototype.wireEvents=function(){var t=sf.base.Browser.isPointer?"pointerleave":"mouseleave";sf.base.EventHandler.add(this.element,sf.base.Browser.touchMoveEvent,this.mouseMove,this),sf.base.EventHandler.add(this.element,"click",this.chartOnMouseClick,this),sf.base.EventHandler.add(this.element,t,this.mouseLeave,this),window.addEventListener(sf.base.Browser.isTouch&&"orientation"in window&&"onorientationchange"in window?"orientationchange":"resize",this.rangeResize.bind(this))},t.prototype.mouseMove=function(t){document.getElementById(this.id+"_svg")&&this.setMouseXY(t),this.dotNetRef&&this.dotNetRef.invokeMethodAsync("OnSmithChartMouseMove",this.getEventArgs(t))},t.prototype.chartOnMouseClick=function(t){this.dotNetRef&&this.dotNetRef.invokeMethodAsync("OnSmithChartMouseClick",this.getEventArgs(t))},t.prototype.mouseLeave=function(t){this.setMouseXY(t),this.dotNetRef&&this.dotNetRef.invokeMethodAsync("OnSmithChartMouseLeave",this.getEventArgs(t))},t.prototype.rangeResize=function(t){var e=this;this.dotNetRef&&(this.resizeTo&&clearTimeout(this.resizeTo),this.resizeTo=window.setTimeout((function(){e.dotNetRef.invokeMethodAsync("OnSmithChartResize",t)}),500))},t.prototype.setMouseXY=function(t){var e,i,n;"touchmove"===t.type?(e=(n=t).changedTouches[0].clientX,i=n.changedTouches[0].clientY):(e=t.clientX,i=t.clientY);var o=document.getElementById(this.id+"_svg").getBoundingClientRect(),s=document.getElementById(this.id).getBoundingClientRect();this.mouseY=i-s.top-Math.max(o.top-s.top,0),this.mouseX=e-s.left-Math.max(o.left-s.left,0)},t.prototype.getEventArgs=function(t){return{type:t.type,clientX:t.clientX,clientY:t.clientY,mouseX:this.mouseX,mouseY:this.mouseY,pointerType:t.pointerType,target:t.target.id,changedTouches:{clientX:t.changedTouches?t.changedTouches[0].clientX:0,clientY:t.changedTouches?t.changedTouches[0].clientY:0}}},t}();return{id:"",mouseY:0,mouseX:0,initialize:function(e,i,n,o,s){return s?(new t(e,s,i).wireEvents(),s.style.height=n,s.style.width=o,{width:s.clientWidth||s.offsetWidth,height:s.clientHeight||s.offsetHeight}):{width:0,height:0}},getElementBoundsById:function(t){this.id=t;var e=document.getElementById(t);return e?{width:e.clientWidth||e.offsetWidth,height:e.clientHeight||e.offsetHeight}:{width:0,height:0}},charCollection:["0","1","2","3","4","5","6","7","8","9","!",'"',"#","$","%","&","(",")","*","+",",","-",".","/",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~"," "],measureText:function(t,e,i,n,o){var s=document.getElementById("chartmeasuretext");return null===s&&(s=sf.base.createElement("text",{id:"chartmeasuretext"}),document.body.appendChild(s))," "===t&&(t=" "),s.innerHTML=t,s.style.position="fixed",s.style.fontSize="100px",s.style.fontWeight=i,s.style.fontStyle=n,s.style.fontFamily=o,s.style.visibility="hidden",s.style.top="-100",s.style.left="0",s.style.whiteSpace="nowrap",s.style.lineHeight="normal",{Width:s.clientWidth,Height:s.clientHeight}},getCharSizeByFontKeys:function(t){for(var e={},i=this.charCollection,n=i.length,o=t.length,s=0;s=t.delay&&(o.setAttribute("visibility","visible"),i?o.setAttribute("width",n.linear(t.timeStamp-t.delay,0,l,t.duration).toString()):o.setAttribute("x",n.reverselinear(t.timeStamp-t.delay,l,0,t.duration).toString()))},end:function(){i?o.setAttribute("width",l.toString()):o.setAttribute("x",r.toString())}})}},getTemplateSize:function(t){var e=document.getElementById(t);return e?{width:e.offsetWidth,height:e.offsetHeight}:null},fadeOut:function(t){sf.base.isNullOrUndefined(t.blazor__instance)||!sf.base.isNullOrUndefined(t.blazor__instance)&&sf.base.isNullOrUndefined(t.blazor__instance.tooltip)||t.blazor__instance.tooltip.fadeOut()},tooltip:{},renderTooltip:function(t,e,i){var n=document.getElementById(e+"_svg"),o=!(n&&parseInt(n.getAttribute("opacity"),10)>0),s=JSON.parse(t),r=i.blazor__instance;o?(r.tooltip=new sf.svgbase.Tooltip(s),r.tooltip.appendTo("#"+e)):sf.base.isNullOrUndefined(r.tooltip)||(r.tooltip.location=new sf.svgbase.TooltipLocation(s.location.x,s.location.y),r.tooltip.content=s.content,r.tooltip.header=s.header,r.tooltip.palette=s.palette,r.tooltip.shapes=s.shapes,r.tooltip.data=s.data,r.tooltip.template=s.template,r.tooltip.textStyle.color=s.textStyle.color||r.tooltip.textStyle.color,r.tooltip.textStyle.fontFamily=s.textStyle.fontFamily||r.tooltip.textStyle.fontFamily,r.tooltip.textStyle.fontStyle=s.textStyle.fontStyle||r.tooltip.textStyle.fontStyle,r.tooltip.textStyle.fontWeight=s.textStyle.fontWeight||r.tooltip.textStyle.fontWeight,r.tooltip.textStyle.opacity=s.textStyle.opacity||r.tooltip.textStyle.opacity,r.tooltip.textStyle.size=s.textStyle.size||r.tooltip.textStyle.size,r.tooltip.dataBind())},destroy:function(t){t&&t.blazor__instance&&t.blazor__instance.unWireEvents()}}}()}});
--------------------------------------------------------------------------------
/Server/wwwroot/_content/syncfusion.blazor/scripts/sf-sparkline-ddeaa8.min.js:
--------------------------------------------------------------------------------
1 | !function(e){var t={};function n(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(i,o,function(t){return e[t]}.bind(null,o));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="_content/Syncfusion.Blazor/scripts/",n(n.s="./bundles/sf-sparkline.js")}({"./bundles/sf-sparkline.js":function(e,t,n){"use strict";n.r(t);n("./modules/sf-sparkline.js")},"./modules/sf-sparkline.js":function(e,t){window.sfBlazor=window.sfBlazor||{},window.sfBlazor.Sparkline=function(){"use strict";var e=function(){function e(e,t){this.resizeTo=0,this.element=e,this.dotNetRef=t,this.element.blazor__instance=this}return e.prototype.wireEvents=function(){sf.base.EventHandler.add(this.element,sf.base.Browser.touchMoveEvent,this.mousemove.bind(this),this),sf.base.EventHandler.add(this.element,sf.base.Browser.isPointer?"pointerleave":"mouseleave",this.mouseleave.bind(this),this),sf.base.EventHandler.add(this.element,"click",this.click,this),window.addEventListener(sf.base.Browser.isTouch&&"orientation"in window&&"onorientationchange"in window?"orientationchange":"resize",this.resize.bind(this))},e.prototype.unWireEvents=function(){sf.base.EventHandler.remove(this.element,sf.base.Browser.touchMoveEvent,this.mousemove),sf.base.EventHandler.remove(this.element,"click",this.click),sf.base.EventHandler.remove(this.element,sf.base.Browser.isPointer?"pointerleave":"mouseleave",this.mouseleave),window.removeEventListener(sf.base.Browser.isTouch&&"orientation"in window&&"onorientationchange"in window?"orientationchange":"resize",this.resize.bind(this)),this.element=null,this.dotNetRef=null},e.prototype.resize=function(){var e=this;this.dotNetRef&&(this.resizeTo&&clearTimeout(this.resizeTo),this.resizeTo=window.setTimeout((function(){e.dotNetRef.invokeMethodAsync("OnResize")}),500))},e.prototype.mouseleave=function(){this.dotNetRef&&this.dotNetRef.invokeMethodAsync("OnMouseLeave")},e.prototype.click=function(){this.dotNetRef&&this.dotNetRef.invokeMethodAsync("OnClick")},e.prototype.mousemove=function(e){var t,n,i=this.element.getBoundingClientRect(),o=document.getElementById(this.element.id+"_svg").getBoundingClientRect(),s=document.getElementById(this.element.id+"_Secondary_Element");if(s&&(s.style.left=Math.max((o?o.left:0)-(i?i.left:0),0)+"px",s.style.top=Math.max((o?o.top:0)-(i?i.top:0),0)+"px"),e.type.indexOf("touch")>-1){var r=e;r.changedTouches?(n=r.changedTouches[0].clientX,t=r.changedTouches[0].clientY):(t=e.clientY,n=e.clientX)}else t=e.clientY,n=e.clientX;this.dotNetRef&&this.dotNetRef.invokeMethodAsync("OnMouseMove",n,t,i?i.top:0,i?i.left:0,o?o.top:0,o?o.left:0,e.target?e.target.id:"",sf.base.Browser.isIE)},e}();return{initialize:function(t,n){if(t)return new e(t,n).wireEvents(),this.getElementSize(t)},getElementSize:function(e){var t=e.parentElement?e.parentElement.clientWidth||0:100,n=e.parentElement?e.parentElement.clientHeight||0:50;return{width:e.clientWidth||e.offsetWidth,height:e.clientHeight||e.offsetHeight,parentWidth:t,parentHeight:n,isDevice:sf.base.Browser.isDevice,windowWidth:window.innerWidth,windowHeight:window.innerHeight}},destroy:function(e){e&&e.blazor__instance&&e.blazor__instance.unWireEvents()}}}()}});
--------------------------------------------------------------------------------
/Server/wwwroot/_content/syncfusion.blazor/scripts/sf-spinner-ddeaa8.min.js:
--------------------------------------------------------------------------------
1 | !function(e){var n={};function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var i in e)t.d(r,i,function(n){return e[n]}.bind(null,i));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="_content/Syncfusion.Blazor/scripts/",t(t.s="./bundles/sf-spinner.js")}({"./bundles/sf-spinner.js":function(e,n,t){"use strict";t.r(n);t("./modules/sf-spinner.js")},"./modules/sf-spinner.js":function(e,n){window.sfBlazor=window.sfBlazor||{},window.sfBlazor.Spinner=function(){"use strict";var e=function(){function e(e,n,t){this.element=e,this.dotNetRef=t,this.updateContext(n),this.element.blazor__instance=this}return e.prototype.initialize=function(e,n){return this.appendTarget(n),window.getComputedStyle(e,":after").getPropertyValue("content").replace(/['"]+/g,"")},e.prototype.appendTarget=function(e){sf.base.isNullOrUndefined(e)||document.querySelector(e).appendChild(this.element)},e.prototype.updateContext=function(e){sf.base.extend(this,this,e)},e}();return{initialize:function(n,t,r){return sf.base.isNullOrUndefined(n)?null:(new e(n,t,r),sf.base.isNullOrUndefined(n)||sf.base.isNullOrUndefined(n.blazor__instance)?null:n.blazor__instance.initialize(n,t))},updateTarget:function(e,n){if(!sf.base.isNullOrUndefined(e)&&!sf.base.isNullOrUndefined(e.blazor__instance))return e.blazor__instance.appendTarget(n)}}}()}});
--------------------------------------------------------------------------------
/Server/wwwroot/_content/syncfusion.blazor/scripts/sf-spreadsheet-ddeaa8.min.js:
--------------------------------------------------------------------------------
1 | !function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="_content/Syncfusion.Blazor/scripts/",n(n.s="./bundles/sf-spreadsheet.js")}({"./bundles/sf-spreadsheet.js":function(e,t,n){"use strict";n.r(t);n("./modules/sf-spreadsheet.js")},"./modules/sf-spreadsheet.js":function(e,t){window.sfBlazor=window.sfBlazor||{},window.sfBlazor.Spreadsheet=function(){"use strict";return{initialize:function(e,t){},saveAsFile:function(e,t){if(navigator.msSaveBlob){for(var n=window.atob(t),r=new Uint8Array(n.length),o=0;o-1)for(var r=0,l=i.length;r0),r=JSON.parse(e),l=n.blazor__instance;s&&!sf.base.isNullOrUndefined(l)?(l.tooltip=new sf.svgbase.Tooltip(r),l.tooltip.appendTo("#"+t)):sf.base.isNullOrUndefined(l.tooltip)||(l.tooltip.location=new sf.svgbase.TooltipLocation(r.location.x,r.location.y),l.tooltip.content=r.content,l.tooltip.header=r.header,l.tooltip.offset=r.offset,l.tooltip.palette=r.palette,l.tooltip.shapes=r.shapes,l.tooltip.data=r.data,l.tooltip.template=r.template,l.tooltip.textStyle.color=r.textStyle.color||l.tooltip.textStyle.color,l.tooltip.textStyle.fontFamily=r.textStyle.fontFamily||l.tooltip.textStyle.fontFamily,l.tooltip.textStyle.fontStyle=r.textStyle.fontStyle||l.tooltip.textStyle.fontStyle,l.tooltip.textStyle.fontWeight=r.textStyle.fontWeight||l.tooltip.textStyle.fontWeight,l.tooltip.textStyle.opacity=r.textStyle.opacity||l.tooltip.textStyle.opacity,l.tooltip.textStyle.size=r.textStyle.size||l.tooltip.textStyle.size,l.tooltip.isNegative=r.isNegative,l.tooltip.clipBounds=new sf.svgbase.TooltipLocation(r.clipBounds.x,r.clipBounds.y),l.tooltip.arrowPadding=r.arrowPadding,l.tooltip.dataBind())},fadeOut:function(e){if(!(sf.base.isNullOrUndefined(e.blazor__instance)||!sf.base.isNullOrUndefined(e.blazor__instance)&&sf.base.isNullOrUndefined(e.blazor__instance.tooltip))){var t=document.getElementById(e.blazor__instance.tooltip.element.id+"_svg");t&&"0"===t.getAttribute("opacity")||e.blazor__instance.tooltip.fadeOut()}},getElementBoundsById:function(e,t){void 0===t&&(t=!0),t&&(this.id=e);var o=document.getElementById(e);if(o){var n=o.getBoundingClientRect();return{width:o.clientWidth||o.offsetWidth,height:o.clientHeight||o.offsetHeight,left:n.left,top:n.top,right:n.right,bottom:n.bottom}}return{width:0,height:0,left:0,top:0,right:0,bottom:0}},getBrowserDeviceInfo:function(){return{browserName:sf.base.Browser.info.name,isPointer:sf.base.Browser.isPointer,isDevice:sf.base.Browser.isDevice,isTouch:sf.base.Browser.isTouch,isIos:sf.base.Browser.isIos||sf.base.Browser.isIos7}},setAttribute:function(e,t,o){var n=document.getElementById(e);n&&n.setAttribute(t,o)},createTooltip:function(e,t,o,n,i){var s=document.getElementById(e),r="top:"+o.toString()+"px;left:"+n.toString()+"px;color:black !important; background:#FFFFFF !important; position:absolute;border:1px solid #707070;font-size:"+i+";border-radius:2px; z-index:1";s?(s.setAttribute("innerHTML"," "+t+" "),s.setAttribute("styles",r)):(s=sf.base.createElement("div",{id:e,innerHTML:" "+t+" ",styles:r}),document.body.appendChild(s))},removeElement:function(e){var t=this.getElement(e);t&&sf.base.remove(t)},resizeBound:{},resize:{},chartResize:function(e,t){var o=this;return this.resize&&clearTimeout(this.resize),this.resize=setTimeout((function(){for(var n=e.length,i=0;i0&&this.timeOut>0&&(sf.base.EventHandler.add(t.element,"mouseover",this.toastHoverAction.bind(this,s)),sf.base.EventHandler.add(t.element,"mouseleave",this.delayedToastProgress.bind(this,s))),t.showProgressBar&&(this.progressObj[s].progressEle=t.element.querySelector("."+e)),sf.base.EventHandler.add(t.element,"keydown",this.keyDownHandler,this)}},t.prototype.getDomObject=function(e,t){return null!=t?window.sfBlazor.getDomObject(e,t):null},t.prototype.swipeHandler=function(e){var t=sf.base.closest(e.originalEvent.target,".e-toast:not(.e-toast-container)"),n=this.hideAnimation.effect;sf.base.isNullOrUndefined(t)||("Right"===e.swipeDirection?(this.hideAnimation.effect="SlideRightOut",this.hide("swipe",t)):"Left"===e.swipeDirection&&(this.hideAnimation.effect="SlideLeftOut",this.hide("swipe",t)),this.hideAnimation.effect=n)},t.prototype.delayedToastProgress=function(t){var n=this.progressObj[t],i=n.element;n.timeOutId=window.setTimeout(this.destroyToast.bind(this,i),this.extendedTimeout),n.maxHideTime=parseFloat(this.extendedTimeout+""),n.hideEta=(new Date).getTime()+n.maxHideTime,sf.base.isNullOrUndefined(i.querySelector("."+e))||(n.intervalId=setInterval(this.updateProgressBar.bind(this,n),10))},t.prototype.toastHoverAction=function(t){this.dotNetRef.invokeMethodAsync("ClearTimeout",t),clearTimeout(this.progressObj[t].timeOutId),clearInterval(this.progressObj[t].intervalId),this.progressObj[t].hideEta=0;var n=this.progressObj[t].element;sf.base.isNullOrUndefined(n.querySelector("."+e))||(this.progressObj[t].progressEle.style.width="0%"),this.dotNetRef.invokeMethodAsync("MouseoverEvent",t)},t.prototype.updateProgressBar=function(e){var t=(e.hideEta-(new Date).getTime())/e.maxHideTime*100;t="LTR"===this.progressDirection?100-t:t,e.progressEle.style.width=t+"%"},t.prototype.appendToast=function(e){this.newestOnTop&&0!==this.toastContainer.childElementCount&&this.toastContainer.insertBefore(e,this.toastContainer.children[0]),sf.base.removeClass([e],"e-blazor-toast-hidden")},t.prototype.setAnimation=function(e){var t=this,n=this,i=this.showAnimation,s={duration:i.duration,name:i.effect,timingFunction:i.easing,begin:function(){e.element.style.display=""},end:function(){n.dotNetRef.invokeMethodAsync("OpenEvent",e.index,t.getDomObject("element",e.element))}};new sf.base.Animation(s).animate(e.element)},t.prototype.hide=function(e,t){if(!sf.base.isNullOrUndefined(this.toastContainer)&&0!==this.toastContainer.childElementCount)if("string"!==n(t)||"All"!==t){if("string"===n(t)&&"All"!==t){var i=this.toastContainer.querySelector("#toast_"+t);i&&(this.destroyToast(i,e),this.dotNetRef.invokeMethodAsync("DestroyTimer",parseInt(t,10)))}sf.base.isNullOrUndefined(t)&&(t=this.newestOnTop?this.toastContainer.lastElementChild:this.toastContainer.firstElementChild),this.destroyToast(t,e);var s=parseInt(t.id.split("toast_")[1],10);this.dotNetRef.invokeMethodAsync("DestroyTimer",s)}else for(var o=0;o0;)this.toastContainer.removeAttribute(this.toastContainer.attributes[0].name);for(var e=this.toastContainer.children,t=e.length-1;t>=0;t--)sf.base.detach(e[t]);sf.base.isNullOrUndefined(this.refElement)||sf.base.isNullOrUndefined(this.refElement.parentElement)||(this.refElement.parentElement.insertBefore(this.toastContainer,this.refElement),sf.base.detach(this.refElement),this.refElement=void 0)},t.prototype.keyDownHandler=function(e){if(e.target.classList.contains("e-toast-close-icon")&&(13===e.keyCode||32===e.keyCode)){var t=e.target,n=sf.base.closest(t,".e-toast");this.destroyToast(n,"key")}},t.prototype.updateContext=function(e){sf.base.extend(this,this,e)},t}();return{initialize:function(e,n,i){sf.base.isNullOrUndefined(e)||(new t(e,n,i),e.blazor__instance.initialize(e))},show:function(e){sf.base.isNullOrUndefined(e.rootElement)||(e.rootElement.blazor__instance.updateContext(e),e.rootElement.blazor__instance.show(e))},hideAnimationToast:function(e,t){sf.base.isNullOrUndefined(e)||e.blazor__instance.hideAnimationToast(e.querySelector("#toast_"+t),t)},hide:function(e,t,n,i){sf.base.isNullOrUndefined(e)||(e.blazor__instance.updateContext(n),e.blazor__instance.hide(i,t))},appendToast:function(e,t){sf.base.isNullOrUndefined(e)||e.blazor__instance.appendToast(t)},destroy:function(e){sf.base.isNullOrUndefined(e)||e.blazor__instance.destroy()}}}()}});
--------------------------------------------------------------------------------
/Server/wwwroot/_content/syncfusion.blazor/scripts/sf-treemap-ddeaa8.min.js:
--------------------------------------------------------------------------------
1 | !function(e){var t={};function n(i){if(t[i])return t[i].exports;var s=t[i]={i:i,l:!1,exports:{}};return e[i].call(s.exports,s,s.exports,n),s.l=!0,s.exports}n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)n.d(i,s,function(t){return e[t]}.bind(null,s));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="_content/Syncfusion.Blazor/scripts/",n(n.s="./bundles/sf-treemap.js")}({"./bundles/sf-treemap.js":function(e,t,n){"use strict";n.r(t);n("./modules/sf-treemap.js")},"./modules/sf-treemap.js":function(e,t){window.sfBlazor=window.sfBlazor||{},window.sfBlazor.Treemap=function(){"use strict";var e=function(){function e(e,t){this.resizeTo=0,this.element=e,this.dotNetRef=t,this.element.blazor__instance=this}return e.prototype.initializeEvents=function(){sf.base.EventHandler.add(this.element,"mouseup",this.mouseUp.bind(this),this),sf.base.EventHandler.add(this.element,"mousemove",this.mouseMove.bind(this),this),sf.base.EventHandler.add(this.element,"mousedown",this.mouseDown.bind(this),this),sf.base.EventHandler.add(this.element,"mouseleave",this.mouseLeave.bind(this),this),sf.base.EventHandler.add(this.element,"contextmenu",this.contextMenuEvent.bind(this),this),window.addEventListener("resize",this.resize.bind(this))},e.prototype.unWireEvents=function(){sf.base.EventHandler.remove(this.element,"mouseup",this.mouseUp),sf.base.EventHandler.remove(this.element,"mousemove",this.mouseMove),sf.base.EventHandler.remove(this.element,"mousedown",this.mouseDown),sf.base.EventHandler.remove(this.element,"mouseleave",this.mouseLeave),sf.base.EventHandler.remove(this.element,"contextmenu",this.contextMenuEvent),window.removeEventListener("resize",this.resize.bind(this)),this.element=null,this.dotNetRef=null},e.prototype.contextMenuEvent=function(){this.dotNetRef&&this.dotNetRef.invokeMethodAsync("TriggerRightClick")},e.prototype.resize=function(){var e,t,n=this;null!=this.element&&(e=this.element.getBoundingClientRect().width,t=this.element.getBoundingClientRect().height),this.dotNetRef&&(this.resizeTo&&clearTimeout(this.resizeTo),this.resizeTo=window.setTimeout((function(){n.dotNetRef.invokeMethodAsync("TriggerResize",e,t)}),500))},e.prototype.mouseDown=function(e){e.preventDefault();var t=this.getElementId(e.target.id);this.dotNetRef&&this.dotNetRef.invokeMethodAsync("TriggerMouseDown",e.target.id,t)},e.prototype.mouseUp=function(e){var t=this.getElementId(e.target.id);this.dotNetRef&&this.dotNetRef.invokeMethodAsync("TriggerMouseUp",e.target.id,t,3===e.which)},e.prototype.mouseMove=function(e){var t,n;if(null!=this.element){var i=this.element.children[1],s=i.getBoundingClientRect(),o=i.ownerDocument.defaultView.pageXOffset,r=i.ownerDocument.defaultView.pageYOffset,l=i.ownerDocument.documentElement.clientTop,u=i.ownerDocument.documentElement.clientLeft,a=s.left+o-u,d=s.top+r-l;t=e.pageX-a,n=e.pageY-d}this.dotNetRef&&this.dotNetRef.invokeMethodAsync("TriggerMouseMove",e.target.id,t,n)},e.prototype.mouseLeave=function(e){this.dotNetRef&&this.dotNetRef.invokeMethodAsync("TriggerMouseLeave")},e.prototype.getElementId=function(e){return sf.base.isNullOrUndefined(e)||""===e?"":document.getElementById(e).textContent},e}();return{initialize:function(t,n){return new e(t,n).initializeEvents(),this.getElementSize(t)},getElementSize:function(e){var t,n;if(null!=e){var i=e.getBoundingClientRect();t=i.width,n=i.height}return{width:t,height:n,isIE:sf.base.Browser.isIE}},setElementAttribute:function(e,t,n,i,s,o,r,l,u){for(var a=0;a=0;c--)(s=e[c])&&(l=(i<3?s(l):i>3?s(t,o,l):s(t,o))||l);return i>3&&l&&Object.defineProperty(t,o,l),l};var s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),r([sf.base.Property("")],t.prototype,"iconCss",void 0),r([sf.base.Property("")],t.prototype,"id",void 0),r([sf.base.Property(!1)],t.prototype,"separator",void 0),r([sf.base.Property("")],t.prototype,"text",void 0),r([sf.base.Property("")],t.prototype,"url",void 0),r([sf.base.Property(!1)],t.prototype,"disabled",void 0),t}(sf.base.ChildProperty);return e.getModel=function(e,t){for(var n=sf.base.extend({},e),o=0,r=Object.keys(n);o Statuses =
11 | new List() {
12 | new SyncfusionHelpDeskStatus(){ ID= "New", Text= "New" },
13 | new SyncfusionHelpDeskStatus(){ ID= "Open", Text= "Open" },
14 | new SyncfusionHelpDeskStatus(){ ID= "Urgent", Text= "Urgent" },
15 | new SyncfusionHelpDeskStatus(){ ID= "Closed", Text= "Closed" },
16 | };
17 | }
18 | }
--------------------------------------------------------------------------------
/Shared/Models/SyncfusionHelpDeskTicketDetails.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel.DataAnnotations;
3 | using Oqtane.Models;
4 |
5 | namespace Syncfusion.Helpdesk.Models
6 | {
7 | public class SyncfusionHelpDeskTicketDetails : IAuditable
8 | {
9 | [Key]
10 | public int HelpDeskTicketDetailId { get; set; }
11 | public int HelpDeskTicketId { get; set; }
12 | public DateTime TicketDetailDate { get; set; }
13 | public string TicketDescription { get; set; }
14 | public string CreatedBy { get; set; }
15 | public DateTime CreatedOn { get; set; }
16 | public string ModifiedBy { get; set; }
17 | public DateTime ModifiedOn { get; set; }
18 |
19 | public virtual SyncfusionHelpDeskTickets HelpDeskTicket { get; set; }
20 | }
21 | }
--------------------------------------------------------------------------------
/Shared/Models/SyncfusionHelpDeskTickets.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel.DataAnnotations;
4 | using System.ComponentModel.DataAnnotations.Schema;
5 | using Oqtane.Models;
6 |
7 | namespace Syncfusion.Helpdesk.Models
8 | {
9 | public class SyncfusionHelpDeskTickets : IAuditable
10 | {
11 | public SyncfusionHelpDeskTickets()
12 | {
13 | SyncfusionHelpDeskTicketDetails =
14 | new HashSet();
15 | }
16 |
17 | [Key]
18 | public int HelpDeskTicketId { get; set; }
19 | public int ModuleId { get; set; }
20 |
21 | [Required]
22 | public string TicketStatus { get; set; }
23 |
24 | [Required]
25 | public DateTime TicketDate { get; set; }
26 |
27 | [Required]
28 | [StringLength(50, MinimumLength = 2,
29 | ErrorMessage =
30 | "Description must be a minimum of 2 and " +
31 | "maximum of 50 characters.")]
32 | public string TicketDescription { get; set; }
33 |
34 | public string CreatedBy { get; set; }
35 | public DateTime CreatedOn { get; set; }
36 | public string ModifiedBy { get; set; }
37 | public DateTime ModifiedOn { get; set; }
38 |
39 | public virtual ICollection
40 | SyncfusionHelpDeskTicketDetails
41 | { get; set; }
42 | }
43 | }
--------------------------------------------------------------------------------
/Shared/Syncfusion.HelpDesk.Shared.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0
5 | 1.0.0
6 | Syncfusion.Helpdesk
7 | Syncfusion
8 | Syncfusion
9 | Helpdesk
10 | Syncfusion
11 | Syncfusion.Helpdesk.Shared.Oqtane
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Syncfusion.HelpDesk.sln:
--------------------------------------------------------------------------------
1 | Microsoft Visual Studio Solution File, Format Version 12.00
2 | # Visual Studio Version 16
3 | VisualStudioVersion = 16.0.28621.142
4 | MinimumVisualStudioVersion = 10.0.40219.1
5 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Syncfusion.Helpdesk.Client", "Client\Syncfusion.Helpdesk.Client.csproj", "{AA8E58A1-CD09-4208-BF66-A8BB341FD669}"
6 | EndProject
7 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Syncfusion.Helpdesk.Server", "Server\Syncfusion.Helpdesk.Server.csproj", "{04B05448-788F-433D-92C0-FED35122D45A}"
8 | EndProject
9 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Syncfusion.Helpdesk.Shared", "Shared\Syncfusion.Helpdesk.Shared.csproj", "{18D73F73-D7BE-4388-85BA-FBD9AC96FCA2}"
10 | EndProject
11 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Syncfusion.Helpdesk.Package", "Package\Syncfusion.Helpdesk.Package.csproj", "{C5CE512D-CBB7-4545-AF0F-9B6591A0C3A7}"
12 | EndProject
13 | Global
14 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
15 | Debug|Any CPU = Debug|Any CPU
16 | Release|Any CPU = Release|Any CPU
17 | Wasm|Any CPU = Wasm|Any CPU
18 | EndGlobalSection
19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
20 | {AA8E58A1-CD09-4208-BF66-A8BB341FD669}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
21 | {AA8E58A1-CD09-4208-BF66-A8BB341FD669}.Debug|Any CPU.Build.0 = Debug|Any CPU
22 | {AA8E58A1-CD09-4208-BF66-A8BB341FD669}.Release|Any CPU.ActiveCfg = Release|Any CPU
23 | {AA8E58A1-CD09-4208-BF66-A8BB341FD669}.Release|Any CPU.Build.0 = Release|Any CPU
24 | {AA8E58A1-CD09-4208-BF66-A8BB341FD669}.Wasm|Any CPU.ActiveCfg = Release|Any CPU
25 | {AA8E58A1-CD09-4208-BF66-A8BB341FD669}.Wasm|Any CPU.Build.0 = Release|Any CPU
26 | {04B05448-788F-433D-92C0-FED35122D45A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
27 | {04B05448-788F-433D-92C0-FED35122D45A}.Debug|Any CPU.Build.0 = Debug|Any CPU
28 | {04B05448-788F-433D-92C0-FED35122D45A}.Release|Any CPU.ActiveCfg = Release|Any CPU
29 | {04B05448-788F-433D-92C0-FED35122D45A}.Release|Any CPU.Build.0 = Release|Any CPU
30 | {04B05448-788F-433D-92C0-FED35122D45A}.Wasm|Any CPU.ActiveCfg = Release|Any CPU
31 | {04B05448-788F-433D-92C0-FED35122D45A}.Wasm|Any CPU.Build.0 = Release|Any CPU
32 | {18D73F73-D7BE-4388-85BA-FBD9AC96FCA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
33 | {18D73F73-D7BE-4388-85BA-FBD9AC96FCA2}.Debug|Any CPU.Build.0 = Debug|Any CPU
34 | {18D73F73-D7BE-4388-85BA-FBD9AC96FCA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
35 | {18D73F73-D7BE-4388-85BA-FBD9AC96FCA2}.Release|Any CPU.Build.0 = Release|Any CPU
36 | {18D73F73-D7BE-4388-85BA-FBD9AC96FCA2}.Wasm|Any CPU.ActiveCfg = Release|Any CPU
37 | {18D73F73-D7BE-4388-85BA-FBD9AC96FCA2}.Wasm|Any CPU.Build.0 = Release|Any CPU
38 | {C5CE512D-CBB7-4545-AF0F-9B6591A0C3A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
39 | {C5CE512D-CBB7-4545-AF0F-9B6591A0C3A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
40 | {C5CE512D-CBB7-4545-AF0F-9B6591A0C3A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
41 | {C5CE512D-CBB7-4545-AF0F-9B6591A0C3A7}.Release|Any CPU.Build.0 = Release|Any CPU
42 | {C5CE512D-CBB7-4545-AF0F-9B6591A0C3A7}.Wasm|Any CPU.ActiveCfg = Debug|Any CPU
43 | {C5CE512D-CBB7-4545-AF0F-9B6591A0C3A7}.Wasm|Any CPU.Build.0 = Debug|Any CPU
44 | EndGlobalSection
45 | GlobalSection(SolutionProperties) = preSolution
46 | HideSolutionNode = FALSE
47 | EndGlobalSection
48 | GlobalSection(ExtensibilityGlobals) = postSolution
49 | SolutionGuid = {1D016F15-46FE-4726-8DFD-2E4FD4DC7668}
50 | EndGlobalSection
51 | EndGlobal
52 |
--------------------------------------------------------------------------------