David Headrick 88bcac382c Refactor project structure and update dependencies
- Updated project setup to use Vite for React application.
- Removed unnecessary files and simplified configurations.
- Enhanced authentication and routing in the application.
- Improved code quality with ESLint and updated styles.
- Added new components for better user experience, including a password recovery modal.
- Updated documentation for clearer setup instructions.
2025-02-20 09:55:56 -06:00

611 lines
16 KiB
TypeScript

//global variables
var table;
var allUsers = [];
var user = null;
//login stuff
function logout() {
$.webMethod({
'methodPage': 'UserMethods',
'methodName': 'LogOut',
'parameters': {},
success: function (json) {
document.location.href = '/login.aspx';
}
});
}
function checkLoggedInStatus() {
$.webMethod({
'methodPage': 'UserMethods',
'methodName': 'CheckAuthToken',
'parameters': {},
success: function (json) {
if ($.getBoolean(json.success)) {
$.localStorage("session_currentUser", json.data);
//set user info
user = $.localStorage("session_currentUser");
//set franchise if it isn't set yet.
//franchiseDeferred = $.Deferred();
//call back to page that called this method.
// $.when(franchiseDeferred).done(function () {
/*
if ($.sessionStorage("Auth-Impersonate-Guid") != null) {
//session is being impersonated, override name and signout
$("#spanProfileName").html("Signed in as " + user.FirstName + ' ' + user.LastName);
$("#spanProfileNameTitle").html("Signed in as " + user.FirstName + ' ' + user.LastName);
}
else {
$("#spanProfileName").html(user.FirstName + ' ' + user.LastName);
$("#spanProfileNameTitle").html(user.FirstName + ' ' + user.LastName);
} */
// $("#spanMenuName").html(user.FirstName + ' ' + user.LastName);
// var userid = $.localStorage("session_currentUser").UserID;
// var imgid = userid + "&t=" + new Date().getTime();
/*
if (user.HasProfileImage) {
$("#imgRightProfile").attr("src", "/webservices/getprofileimage.ashx?id=" + imgid);
$("#imgRightProfile").on('error', function () {
$("#imgRightProfile").attr("src", "/img/generic_avatar.jpg");
});
$("#imgLeftProfile").attr("src", "/webservices/getprofileimage.ashx?id=" + imgid);
$("#imgLeftProfile").on('error', function () {
$("#imgLeftProfile").attr("src", "/img/generic_avatar.jpg");
});
$("#imgMainProfile").attr("src", "/webservices/getprofileimage.ashx?id=" + imgid);
$("#imgMainProfile").on('error', function () {
$("#imgMainProfile").attr("src", "/img/generic_avatar.jpg");
});
}
else {
$("#imgRightProfile").attr("src", "/img/generic_avatar.jpg");
$("#imgLeftProfile").attr("src", "/img/generic_avatar.jpg");
$("#imgMainProfile").attr("src", "/img/generic_avatar.jpg");
} */
loadPage();
}
else {
$.sessionStorage("redirect_url", document.location.href);
document.location.href = '/login';
}
}
});
}
function setCurrentFranchise(d) {
$.usaHaulersDB.getFranchises().then((data) => {
$.sessionStorage("currentFranchise", data);
if (d != null) {
d.resolve();
}
});
/*
search = {};
search.FranchiseCode = $.sessionStorage("franchiseCode");
$.webMethod({
'methodPage': 'UserMethods/',
'methodName': 'GetReport_Franchise',
'parameters': { "search": search },
success: function (json) {
if ($.getBoolean(json.success)) {
$.sessionStorage("currentFranchise", json.data[0]);
if (d != null) {
d.resolve();
}
}
}
}); */
}
function createSetting(obj, settingTypeCode, value) {
//see if setting exists
var bFound = false;
for (var x = 0; x < obj.Settings.length; x++) {
if (obj.Settings[x].SettingTypeCode == settingTypeCode) {
bFound = true;
break;
}
}
if (bFound) {
//existing setting
obj.Settings[x].Value = value;
}
else {
setting = {}
setting.SettingTypeCode = settingTypeCode;
setting.Value = value;
if (obj.Settings == null) {
obj.Settings = [];
}
obj.Settings.push(setting);
}
}
function createCaseSetting(obj, settingTypeCode, value) {
//see if setting exists
var bFound = false;
for (var x = 0; x < obj.settings.length; x++) {
if (obj.settings[x].case_setting_type_code == settingTypeCode) {
bFound = true;
break;
}
}
if (bFound) {
//existing setting
obj.settings[x].value = value;
}
else {
setting = {}
setting.case_setting_type_code = settingTypeCode;
setting.value = value;
if (obj.settings == null) {
obj.settings = [];
}
obj.settings.push(setting);
}
}
function getReportSetting(settings, setting_field, setting_code) {
var value = "";
if (settings != null) {
for (var x = 0; x < settings.length; x++) {
setting = settings[x];
if (setting[setting_field] == setting_code) {
value = setting["value"];
break;
}
}
}
return value;
}
function getSetting(settings, settingTypeCode) {
var value = "";
for (var x = 0; x < settings.length; x++) {
setting = settings[x];
if (setting.SettingTypeCode == settingTypeCode) {
value = setting.Value;
break;
}
}
return value;
}
//web calls
function callMethod(methodname, callback, sessionName, deferred, search) {
var params = {};
if (search == null) {
search = {};
}
$.webMethod({
'methodPage': 'UserMethods/',
'methodName': methodname,
'parameters': { "search": search },
success: function (json) {
$.sessionStorage(sessionName, json.data);
if ($.getBoolean(json.success)) {
if (deferred != null) {
deferred.resolve(true);
}
if (callback != null) {
callback();
}
}
else {
notify("Error", "There was an error performing this action. Please try again.")
}
}
});
}
function callSearchTransactions(methodname, callback, sessionName, deferred, search) {
//REPEAT OF CALL METHOD,, JSON.DATA DOESN'T WORK HERE..
//TODO MAKE DYNAMIC LATER.
var params = {};
if (search == null) {
search = {};
}
$.webMethod({
'methodPage': 'UserMethods/',
'methodName': methodname,
'parameters': { "search": search },
success: function (json) {
$.sessionStorage(sessionName, json);
if ($.getBoolean(json.success)) {
if (deferred != null) {
deferred.resolve(true);
}
if (callback != null) {
callback();
}
}
else {
notify("Error", "There was an error performing this action. Please try again.")
}
}
});
}
//overlay
function showwait(item) {
$("#waitOverlay").show();
if (item) {
item.show();
}
else {
$("#loading").show();
}
}
function hidewait(item) {
$("#waitOverlay").hide();
if (item) {
item.hide();
}
else {
$("#loading").hide();
}
}
//helper function
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
function getCurrency(val) {
return '$' + parseFloat(val, 10).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,").toString()
}
function getDate(val) {
var newDate = new Date(Date.parse(val)).toLocaleDateString()
return newDate;
}
function changeDateFormat(inputDate) { // expects Y-m-d
var splitDate = inputDate.split('-');
if (splitDate.count == 0) {
return null;
}
var year = splitDate[0];
var month = splitDate[1];
var day = splitDate[2];
return month + '/' + day + '/' + year;
}
function getTime(val) {
var newDate = new Date(Date.parse(val)).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
return newDate;
}
function getDateAndTime(val) {
var newDate = new Date(Date.parse(val)).toLocaleDateString() + ' ' + new Date(Date.parse(val)).toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit', hour12: true })
return newDate;
}
function getDateAndTimeAndSeconds(val) {
var newDate = new Date(Date.parse(val)).toLocaleDateString() + ' ' + new Date(Date.parse(val)).toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit', hour12: true, second: '2-digit' })
return newDate;
}
function notify(title, message) {
$.gritter.add({
title: title,
text: message,
sticky: false,
time: '2000',
});
}
function getObjectByKey(key, value, objectArray) {
for (var x = 0; x < objectArray.length; x++) {
if (objectArray[x][key] == value) {
return objectArray[x];
break;
}
}
}
function formatSelect2Data(id, name, data) {
var newdata = [];
//var blank = { };
// blank.id = "";
//blank.text = "";
//data.push(blank);
for (var x = 0; x < data.length; x++) {
var obj = {};
obj.id = data[x][id];
obj.text = data[x][name]
newdata.push(obj);
}
return newdata;
}
function formatSelect2DataForReturnedBatched(id, name, data) {
var newdata = [];
//var blank = { };
// blank.id = "";
//blank.text = "";
//data.push(blank);
for (var x = 0; x < data.length; x++) {
if (data[x].Type != "ShiftCharges") {
var obj = {};
obj.id = data[x][id];
obj.text = data[x][name]
newdata.push(obj);
}
}
return newdata;
}
function formatSelect2DataForUser(id, data) {
var newdata = [];
//var blank = { };
// blank.id = "";
//blank.text = "";
//data.push(blank);
for (var x = 0; x < data.length; x++) {
var obj = {};
obj.id = data[x][id];
obj.text = data[x]["FirstName"] + ' ' + data[x]["LastName"] + ' - ' + data[x]["UserID"];
newdata.push(obj);
}
return newdata;
}
//batches
function fillDropDown(dropdown, method, session, deferred, fieldname, fieldvalue, placeholder) {
if ($.sessionStorage(session) == null) {
callMethod(method, fillDropDown, session, deferred, null);
}
else {
var data = formatSelect2Data(fieldname, fieldvalue, $.sessionStorage(session));
$(control).select2({
placeholder: placeholder,
allowClear: true,
selectOnClose: false,
//closeOnSelect: false,
data: data,
width: "200px"
});
batchDeferred.resolve(true);
}
}
var currentDropdown;
//location
function fillLocationsDropDown(deferred) {
var search = {};
if (!$.userHasRole("Administrators")) {
search.UserID = $.localStorage("session_currentUser").UserID;
}
else {
search = null;
}
$.webMethod({
'methodPage': 'UserMethods/',
'methodName': 'SearchLocations',
'parameters': { "search": search },
success: function (json) {
$.sessionStorage("session_locations", json.data);
if ($.getBoolean(json.success)) {
var data = formatSelect2Data("ID", "Name", $.sessionStorage("session_locations"));
if ($.userHasRole("Administrators")) {
$("#selLocation").select2({
placeholder: "Select a location...",
allowClear: true,
selectOnClose: false,
//closeOnSelect: false,
data: data
});
$("#selLocation").enable(true);
}
else {
$("#selLocation").select2({
data: data
});
$("#selLocation").select2('val', data[0].id);
$("#selLocation").enable(false);
}
if (deferred != null) {
deferred.resolve(true);
}
}
else {
notify("Error", "There was an error performing this action. Please try again.")
}
}
});
}
var currentSpinner = null
function spin2(spin) {
//spinner = $("#spanSpinner");
currentSpinner.show();
if (spin) {
rotation = function () {
currentSpinner.rotate({
angle: 0,
animateTo: 360,
callback: rotation
});
}
rotation();
}
else {
currentSpinner.stopRotate();
currentSpinner.hide();
}
}
function spin(spin, spinner) {
//spinner = $("#spanSpinner");
spinner.show();
if (spin) {
rotation = function () {
spinner.rotate({
angle: 0,
animateTo: 360,
callback: rotation
});
}
rotation();
}
else {
spinner.stopRotate();
spinner.hide();
}
}
//employee
function fillEmployeesDropDown(deferred, dropdown) {
if (dropdown == null) {
dropdown = $("#selEmployee");
}
$.webMethod({
'methodPage': 'UserMethods/',
'methodName': 'GetUsers',
'parameters': { "activeOnly": false },
success: function (json) {
$.sessionStorage("session_users", json.data);
if ($.getBoolean(json.success)) {
var data = formatSelect2DataForUser("UserID", $.sessionStorage("session_users"));
dropdown.select2({
placeholder: "Select an employee...",
allowClear: true,
selectOnClose: false,
//closeOnSelect: false,
data: data
});
if (deferred != null) {
deferred.resolve(true);
}
}
else {
notify("Error", "There was an error performing this action. Please try again.")
}
}
});
}
//new imove global functions
function stripCharacters(str) {
return str.replace(/[-' ]/g, '').toUpperCase();
}
function searchUsers(d) {
search = {};
$.webMethod({
'methodPage': 'UserMethods/',
'methodName': 'SearchUsers',
'parameters': { "search": search },
success: function (json) {
if ($.getBoolean(json.success)) {
allUsers = json.data;
d.resolve();
}
}
});
}
function growlWarn(msg) {
$.bootstrapGrowl("<strong>" + msg + "</strong>", {
type: 'warning',
align: 'center',
width: 'auto',
allow_dismiss: true,
offset: { from: 'top', amount: 60 }
});
}
function growlSuccess(msg) {
$.bootstrapGrowl("<strong>" + msg + "</strong>", {
type: 'success',
align: 'center',
width: 'auto',
allow_dismiss: true,
offset: { from: 'top', amount: 60 }
});
}
function getUser(users, id) {
for (var x = 0; x < users.length; x++) {
if (users[x].UserID == id) {
return users[x];
break;
}
}
}