From 4e51e45e956652cb8b04bd403c2ec9f939116706 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Fri, 18 Dec 2020 18:56:09 +0000 Subject: [PATCH] --- .vscode/launch.json | 2 +- server/AyaNova/DataList/AttachmentDataList.cs | 17 +++ .../DataList/AyaDataListFieldDefinition.cs | 9 +- server/AyaNova/DataList/ReviewDataList.cs | 2 +- server/AyaNova/util/AySchema.cs | 128 ++++++++++++++++++ 5 files changed, 152 insertions(+), 6 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 8fd97968..0e2049e9 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -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\\" diff --git a/server/AyaNova/DataList/AttachmentDataList.cs b/server/AyaNova/DataList/AttachmentDataList.cs index 66cbac80..ec8cf79d 100644 --- a/server/AyaNova/DataList/AttachmentDataList.cs +++ b/server/AyaNova/DataList/AttachmentDataList.cs @@ -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", diff --git a/server/AyaNova/DataList/AyaDataListFieldDefinition.cs b/server/AyaNova/DataList/AyaDataListFieldDefinition.cs index 5cf8371d..566ad21d 100644 --- a/server/AyaNova/DataList/AyaDataListFieldDefinition.cs +++ b/server/AyaNova/DataList/AyaDataListFieldDefinition.cs @@ -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; } diff --git a/server/AyaNova/DataList/ReviewDataList.cs b/server/AyaNova/DataList/ReviewDataList.cs index 5ddc813f..73ae7f60 100644 --- a/server/AyaNova/DataList/ReviewDataList.cs +++ b/server/AyaNova/DataList/ReviewDataList.cs @@ -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 diff --git a/server/AyaNova/util/AySchema.cs b/server/AyaNova/util/AySchema.cs index 7d89fed0..e875bc82 100644 --- a/server/AyaNova/util/AySchema.cs +++ b/server/AyaNova/util/AySchema.cs @@ -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)");