var resp = api.env.control.GetEnvs(); if (resp.result !== 0) return resp; var envs = []; for (var i = 0; i < resp.infos.length; i++) { var envInfo = resp.infos[i]; var env = envInfo.env; // Assuming an environment not part of any group has an empty or undefined envGroups array var isGroupless = !envInfo.envGroups || envInfo.envGroups.length === 0; if (env.status == 1 && isGroupless) { // Check if environment is active and not part of any envGroup for (var j = 0; j < envInfo.nodes.length; j++) { var node = envInfo.nodes[j]; // Filter nodes by 'storage' nodeGroup if (node.nodeGroup === "storage") { envs.push({ value: env.envName, caption: (env.displayName + " (" + env.envName + ")" || env.envName) }); break; // Found a storage node, no need to check further nodes in this environment } } } } if (envs.length > 0) { jps.settings.main.fields[1].values = envs; jps.settings.main.fields[1].default = envs[0].value; } import java.util.TimeZone; var zones = toNative(TimeZone.getAvailableIDs()); var values = {}; for (var i = 0, n = zones.length; i < n; i++) { var offset = TimeZone.getTimeZone(zones[i]).getRawOffset() / 3600000; var m = offset % 1; if (m != 0) m = Math.abs(m * 60); if (m < 10) m = "0" + m; var h = Math.floor(offset); if (Math.abs(h) < 10) h = h < 0 ? "-0" + Math.abs(h) : "+0" + h; else if (h >= 0) h = "+" + h; values[zones[i]] = zones[i] + (zones[i] == "GMT" ? "" : " (GMT" + h + ":" + m + ")"); } jps.settings.main.fields[0].showIf[2][2].values = values; jps.settings.main.fields[0].showIf[2][2].value = "GMT0"; return { result: 0, settings: jps.settings };