Skip to content

Commit 08c18a0

Browse files
authored
Fix display of routines inside a server-side project (#1226)
1 parent d40effa commit 08c18a0

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

src/utils/FileProviderUtil.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export async function projectContentsFromUri(uri: vscode.Uri, overrideFlat?: boo
2626
"WHEN Type = 'CLS' THEN Name||'.cls' " +
2727
"ELSE Name END Name, Type FROM %Studio.Project_ProjectItemsList(?) " +
2828
"WHERE (Name %STARTSWITH ? OR Name %STARTSWITH ?) AND (" +
29-
"(Type = 'MAC' AND EXISTS (SELECT sod.Size FROM %Library.RoutineMgr_StudioOpenDialog('*.mac,*.int,*.inc',1,1,1,1,0,1) AS sod WHERE Name = sod.Name)) OR " +
29+
"(Type = 'MAC' AND EXISTS (SELECT sod.Size FROM %Library.RoutineMgr_StudioOpenDialog('*.mac,*.int,*.inc,*.bas,*.mvi',1,1,1,1,0,1) AS sod WHERE Name = sod.Name)) OR " +
3030
"(Type = 'CSP' AND EXISTS (SELECT sod.Size FROM %Library.RoutineMgr_StudioOpenDialog('*.cspall',1,1,1,1,0,1) AS sod WHERE '/'||Name = sod.Name)) OR " +
3131
"(Type NOT IN ('CLS','PKG','MAC','CSP','DIR','GBL') AND EXISTS (SELECT sod.Size FROM %Library.RoutineMgr_StudioOpenDialog('*.other',1,1,1,1,0,1) AS sod WHERE Name = sod.Name))) OR " +
3232
"(Type = 'CLS' AND (Package IS NOT NULL OR (Package IS NULL AND EXISTS (SELECT dcd.ID FROM %Dictionary.ClassDefinition AS dcd WHERE dcd.ID = Name)))) " +
@@ -40,10 +40,13 @@ export async function projectContentsFromUri(uri: vscode.Uri, overrideFlat?: boo
4040
const l = String(folder.length + 1); // Need the + 1 because SUBSTR is 1 indexed
4141
query =
4242
"SELECT sod.Name, pil.Type FROM %Library.RoutineMgr_StudioOpenDialog(?,1,1,1,0,0,1) AS sod JOIN %Studio.Project_ProjectItemsList(?) AS pil ON " +
43-
"(pil.Type = 'MAC' AND ?||sod.Name = pil.Name) OR " +
4443
"(pil.Type = 'CLS' AND ?||sod.Name = pil.Name||'.cls') OR (pil.Type = 'PKG' AND ?||sod.Name = pil.Name) OR " +
4544
"((pil.Type = 'CLS' OR pil.Type = 'PKG') AND pil.Name %STARTSWITH ?||sod.Name||'.') " +
46-
"WHERE pil.Type = 'MAC' OR pil.Type = 'CLS' OR pil.Type = 'PKG' UNION SELECT sod.Name, pil.Type FROM " +
45+
"WHERE pil.Type = 'CLS' OR pil.Type = 'PKG' " +
46+
"UNION SELECT CASE WHEN $LENGTH(SUBSTR(sod.Name,?),'.') > 2 THEN $PIECE(SUBSTR(sod.Name,?),'.') ELSE SUBSTR(sod.Name,?) END Name, pil.Type FROM " +
47+
"%Library.RoutineMgr_StudioOpenDialog(?,1,1,1,1,0,1) AS sod JOIN %Studio.Project_ProjectItemsList(?) AS pil ON " +
48+
"pil.Type = 'MAC' AND sod.Name = pil.Name " +
49+
"UNION SELECT sod.Name, pil.Type FROM " +
4750
"%Library.RoutineMgr_StudioOpenDialog(?,1,1,1,0,0,1) AS sod JOIN %Studio.Project_ProjectItemsList(?,1) AS pil ON " +
4851
"(pil.Type = 'DIR' AND ?||sod.Name %STARTSWITH pil.Name||'/') OR (pil.Type = 'CSP' AND ?||sod.Name = pil.Name) " +
4952
"UNION SELECT $PIECE(SUBSTR(Name,?),'/') AS Name, Type FROM %Studio.Project_ProjectItemsList(?,1) WHERE (" +
@@ -59,7 +62,11 @@ export async function projectContentsFromUri(uri: vscode.Uri, overrideFlat?: boo
5962
folderDots,
6063
folderDots,
6164
folderDots,
62-
folderDots,
65+
l,
66+
l,
67+
l,
68+
`${folderDots}*.${["mac", "int", "inc", "bas", "mvi"].join(`,${folderDots}*.`)}`,
69+
project,
6370
folder + "*",
6471
project,
6572
folder,
@@ -83,7 +90,7 @@ export async function projectContentsFromUri(uri: vscode.Uri, overrideFlat?: boo
8390
query =
8491
`SELECT DISTINCT BY (${nameCol}) ${nameCol} ` +
8592
"Name, Type FROM %Studio.Project_ProjectItemsList(?,1) AS pil WHERE " +
86-
"(Type = 'MAC' AND EXISTS (SELECT sod.Size FROM %Library.RoutineMgr_StudioOpenDialog('*.mac,*.int,*.inc',1,1,1,1,0,1) AS sod WHERE pil.Name = sod.Name)) OR " +
93+
"(Type = 'MAC' AND EXISTS (SELECT sod.Size FROM %Library.RoutineMgr_StudioOpenDialog('*.mac,*.int,*.inc,*.bas,*.mvi',1,1,1,1,0,1) AS sod WHERE pil.Name = sod.Name)) OR " +
8794
"(Type = 'CSP' AND EXISTS (SELECT sod.Size FROM %Library.RoutineMgr_StudioOpenDialog('*.cspall',1,1,1,1,0,1) AS sod WHERE pil.Name = sod.Name)) OR " +
8895
"(Type NOT IN ('CLS','PKG','MAC','CSP','DIR','GBL') AND EXISTS (SELECT sod.Size FROM %Library.RoutineMgr_StudioOpenDialog('*.other',1,1,1,1,0,1) AS sod WHERE " +
8996
"$PIECE(sod.Name,'.',1,$LENGTH(sod.Name,'.')-1) = $PIECE(pil.Name,'.',1,$LENGTH(pil.Name,'.')-1) AND UPPER($PIECE(sod.Name,'.',$LENGTH(sod.Name,'.'))) = $PIECE(pil.Name,'.',$LENGTH(pil.Name,'.')))) OR " +

0 commit comments

Comments
 (0)