This commit is contained in:
2020-12-18 18:56:09 +00:00
parent 02cca7c1a5
commit 4e51e45e95
5 changed files with 152 additions and 6 deletions

2
.vscode/launch.json vendored
View File

@@ -53,7 +53,7 @@
"AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles",
"AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles",
"AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles",
"AYANOVA_SERVER_TEST_MODE": "true",
"AYANOVA_SERVER_TEST_MODE": "false",
"AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small",
"AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7",
"AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\"

View File

@@ -23,6 +23,10 @@ namespace AyaNova.DataList
cm = new JObject();
cm.fld = "ayatype";
dlistView.Add(cm);
cm = new JObject();
cm.fld = "ayatypeex";
dlistView.Add(cm);
cm = new JObject();
@@ -76,6 +80,19 @@ namespace AyaNova.DataList
SqlValueColumnName = "afileattachment.AttachToObjectType"
});
FieldDefinitions.Add(new AyaDataListFieldDefinition
{
TKey = "AyaType",
FieldKey = "ayatypeex",
UiFieldDataType = (int)UiFieldDataType.Text,
// EnumType = AyaNova.Util.StringUtil.TrimTypeName(typeof(AyaType).ToString()),
SqlIdColumnName = "afileattachment.AttachToObjectid",
SqlValueColumnName = "AYGETNAME(afileattachment.AttachToObjectid, afileattachment.attachtoobjecttype)",
SqlAyTypeColumnName = "afileattachment.attachtoobjecttype"
});
FieldDefinitions.Add(new AyaDataListFieldDefinition
{
TKey = "FileSize",

View File

@@ -24,7 +24,7 @@ namespace AyaNova.DataList
//CLIENT / SERVER - client display server validation purposes
public bool IsSortable { get; set; }
//CLIENT / SERVER - indicates internal only meta column, don't show to user for filter settings etc
//CLIENT / SERVER - indicates internal only meta column, don't show to user for filter settings etc
public bool IsMeta { get; set; }
//CLIENT Use only for display
@@ -46,8 +46,8 @@ namespace AyaNova.DataList
public string SqlIdColumnName { get; set; }
[JsonIgnore]
public string SqlValueColumnName { get; set; }
[JsonIgnore]
public string SqlAyTypeColumnName { get; set; }//column to fetch the AyaType for this field to set it dynamically instead of preset
@@ -59,9 +59,10 @@ namespace AyaNova.DataList
IsFilterable = true;
IsSortable = true;
IsRowId = false;
IsMeta=false;
IsMeta = false;
//Set openable object type to no type which is the default and means it's not a link to another object
AyaObjectType = (int)AyaType.NoType;
SqlAyTypeColumnName=string.Empty;
}

View File

@@ -52,7 +52,7 @@ namespace AyaNova.DataList
TODO: have to figure out how to include name and openable link to object in reminder
// TODO: have to figure out how to include name and openable link to object in reminder
//or do I?... outstanding for sure
//The only efficient way to do this would be a Function that is outer joined to fetch the names
//maybe that's an option, look into a query that joins tables to Function

View File

@@ -315,6 +315,134 @@ END;
$BODY$;
");
//Name fetcher function
await ExecQueryAsync(@"
CREATE OR REPLACE FUNCTION PUBLIC.AYGETNAME(IN AYOBJECTID bigint, IN AYOBJECTTYPE integer) RETURNS text AS $BODY$
DECLARE
aytable TEXT DEFAULT '';
aynamecolumn TEXT DEFAULT 'name';
returnstr TEXT DEFAULT '';
BEGIN
-- Object type to table name
case ayobjecttype
when 2 then aytable = 'awidget';
when 3 then aytable = 'auser';
when 8 then aytable = 'acustomer';
when 25 then aytable = 'aproject';
when 33 then aytable = 'avendor';
else
RETURN '-';-- unknown or not supported just return default string
end case;
EXECUTE format('SELECT %I FROM %I WHERE id = %L', aynamecolumn, aytable, ayobjectid) INTO returnstr;
RETURN returnstr;
END;
$BODY$ LANGUAGE PLPGSQL STABLE /*
NoType = 0,
Global = 1,
[CoreBizObject]
Widget = 2,
[CoreBizObject]
User = 3,
ServerState = 4,
License = 5,
LogFile = 6,
PickListTemplate = 7,
[CoreBizObject]
Customer = 8,
ServerJob = 9,
[CoreBizObject]
Contract = 10,
TrialSeeder = 11,
ServerMetrics = 12,
Translation = 13,
UserOptions = 14,
[CoreBizObject]
HeadOffice = 15,
[CoreBizObject]
LoanUnit = 16,
FileAttachment = 17,
DataListView = 18,
FormCustom = 19,
[CoreBizObject]
Part = 20,
[CoreBizObject]
PM = 21,
[CoreBizObject]
PMItem = 22,
[CoreBizObject]
PMTemplate = 23,
[CoreBizObject]
PMTemplateItem = 24,
[CoreBizObject]
Project = 25,
[CoreBizObject]
PurchaseOrder = 26,
[CoreBizObject]
Quote = 27,
[CoreBizObject]
QuoteItem = 28,
[CoreBizObject]
QuoteTemplate = 29,
[CoreBizObject]
QuoteTemplateItem = 30,
[CoreBizObject]
Unit = 31,
[CoreBizObject]
UnitModel = 32,
[CoreBizObject]
Vendor = 33,
//--- WorkOrder
[CoreBizObject]
WorkOrder = 34,
[CoreBizObject]
WorkOrderItem = 35,
[CoreBizObject]
WorkOrderItemExpense = 36,
[CoreBizObject]
WorkOrderItemLabor = 37,
[CoreBizObject]
WorkOrderItemLoan = 38,
[CoreBizObject]
WorkOrderItemPart = 39,
[CoreBizObject]
WorkOrderItemPartRequest = 40,
[CoreBizObject]
WorkOrderItemScheduledUser = 41,
[CoreBizObject]
WorkOrderItemTask = 42,
[CoreBizObject]
WorkOrderItemTravel = 43,
[CoreBizObject]
WorkOrderItemUnit = 44,
//---
[CoreBizObject]
WorkOrderTemplate = 45,
[CoreBizObject]
WorkOrderTemplateItem = 46,
GlobalOps = 47,//really only used for rights, not an object type of any kind
BizMetrics = 48,//deprecate? Not used for anything as of nov 2020
Backup = 49,
Notification = 50,
NotifySubscription = 51,
[CoreBizObject]
Reminder = 52,
UnitMeterReading = 53,
CustomerServiceRequest = 54,
ServiceBank = 55,
OpsNotificationSettings = 56,
Report = 57,
DashboardView = 58,
[CoreBizObject]
CustomerNote = 59,
[CoreBizObject]
Memo = 60,
[CoreBizObject]
Review = 61
*/");
//Usage: select created, textra, AYGETNAME(aevent.ayid, aevent.ayatype) as name from aevent order by created
//create translation text tables
await ExecQueryAsync("CREATE TABLE atranslation (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name text not null, stock bool, cjkindex bool default false)");