Initial commit: JDE Scoping Tool migration project

Set up repository with legacy .NET Framework 4.8 source (OLD/),
new .NET 10 Blazor solution (NEW/), OpenSpec specifications,
documentation, and project configuration.
This commit is contained in:
Joseph Doherty
2026-01-02 07:43:29 -05:00
commit 26ff8d9b4f
1761 changed files with 596509 additions and 0 deletions
+164
View File
@@ -0,0 +1,164 @@
(function ($) {
//Create aliases
var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget;
//MVVM event names
var DATABINDING = "dataBinding", DATABOUND = "dataBound", CHANGE = "change";
/*
* Global async template loader
*/
var templateLoader = (function ($, host) {
// Loads external templates from path and injects in to page DOM.
return {
/*
* Loads external templates from path and injects in to page DOM
*/
loadExtTemplate: function (path) {
var tmplLoader = $.get(path)
.success(function (result) {
$("body").append(result);
})
.error(function (result) {
alert("Error Loading Widget Template");
})
.complete(function () {
// Publish an event that indicates when a template is done loading.
$(host).trigger("TEMPLATE_LOADED", [path]);
}
);
}
};
})(jQuery, document);
/*
* Data table widget with template upload/download and clear entries button
*/
var TemplateTable = Widget.extend({
/*
* Widget initializer
*/
init: function (element, options) {
var that = this;
//Call base initializer
Widget.fn.init.call(that, element, options);
//Configure template
that.template = kendo.template(that.options.template);
//Configure data source
that._dataSource();
},
/*
* Widget configuration values
*/
options: {
name: "TemplateTable",
autoBind: false,
template: "",
widgetVisible: false,
uploadURL: "",
downloadURL: "",
title: "",
countText: ""
},
/*
* DOM element updater
*/
refresh: function () {
var that = this,
view = that.dataSource.view(),
html = kendo.render(that.template, view);
// Trigger the dataBinding event
that.trigger(DATABINDING);
// Update the DOM
that.element.html(html);
// Trigger the dataBound event
that.trigger(DATABOUND);
},
/*
* Sets up widget data source
*/
_dataSource: function () {
var that = this;
// Sets the datasource to parameter datasource or creates one if using array or configuration object
that.dataSource = kendo.data.DataSource.create(that.options.dataSource);
// Bind to the change event to refresh the widget
that.dataSource.bind(CHANGE, function () {
that.refresh();
});
// Fetch data if autobind is enabled
if (that.options.autoBind) {
that.dataSource.fetch();
}
},
/*
* Changes the datasource via MVVM
*/
setDataSource: function (dataSource) {
// Set the internal datasource equal to the one passed in by MVVM
this.options.dataSource = dataSource;
// Rebuild the datasource if necessary, or just reassign
this._dataSource();
},
/*
* MVVM event registration
*/
events: [
// dataBinding is called BEFORE updating DOM
// (MVVM will traverse DOM, unbind any bound elements or widgets)
DATABINDING,
// dataBound is called AFTER updating DOM
// (traverses DOM and binds ALL THE THINGS)
DATABOUND
],
/*
* MVVM expects an array of dom elements that represent each item of the datasource (should be the outermost element's children)
*/
items: function () {
return this.element.children();
},
/*
* Handles template download button click event
*/
onTemplateDownloadClick: function() {
console.log("onTemplateDownloadClick");
},
/*
* Handles template upload button click event
*/
onTemplateUploadClick: function() {
console.log("onTemplateUploadClick");
},
/*
* Handles clear button click event
*/
onClearClick: function() {
console.log("onClearClick");
},
});
//Register the widget
ui.plugin(TemplateTable);
})(jQuery);