diff --git a/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/ProjectManagerImpl.java b/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/ProjectManagerImpl.java index ccb1faa..8cf6270 100755 --- a/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/ProjectManagerImpl.java +++ b/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/ProjectManagerImpl.java @@ -88,10 +88,9 @@ public List assignUserStoriesAndPrepareTechnicalTasks(Message e new Thread(() -> inProgressEpic.send(epicMessage)).start(); - if(getTotalEpicsCount() != -1) { + if(getEpicsForSaving() != null) { addEpicForSaving(epic); - setTotalEpicsCount(getTotalEpicsCount() - 1); - if(getTotalEpicsCount() == 0) saveEpics(); + if(getEpicsForSaving().size() == getTotalEpicsCount()) saveEpics(); } return epic.getUserStories(); @@ -170,10 +169,14 @@ private boolean markUserStoryAsDone(UserStory userStory){ } private int calculateTotalLoggedTimeInHours(Developer reporter, Developer assignee, Priority taskPriority){ - double reporterExpertise = reporter.getExperienceCoefficient() * reporter.getDeveloperType().getSeniorityCoefficient(); - double assigneeExpertise = assignee.getExperienceCoefficient() * assignee.getDeveloperType().getSeniorityCoefficient(); - double averageExpertise = (reporterExpertise + assigneeExpertise) / 2.0; - - return (int) Math.round(Math.clamp(1.0, 240.0 * (taskPriority.getResolutionTimeCoefficient() / averageExpertise) * (1.0 / (1 + taskPriority.getUrgency())), 240.0)); + try { + double reporterExpertise = reporter.getExperienceCoefficient() * reporter.getDeveloperType().getSeniorityCoefficient(); + double assigneeExpertise = assignee.getExperienceCoefficient() * assignee.getDeveloperType().getSeniorityCoefficient(); + double averageExpertise = (reporterExpertise + assigneeExpertise) / 2.0; + + return (int) Math.round(Math.clamp(1.0, 240.0 * (taskPriority.getResolutionTimeCoefficient() / averageExpertise) * (1.0 / (1 + taskPriority.getUrgency())), 240.0)); + } catch (Exception e){ + return 240; + } } } \ No newline at end of file diff --git a/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/config/MiscellaneousConfig.java b/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/config/MiscellaneousConfig.java index b8a66fa..93b6348 100755 --- a/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/config/MiscellaneousConfig.java +++ b/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/config/MiscellaneousConfig.java @@ -1,7 +1,11 @@ package dev.markodojkic.softwaredevelopmentsimulation.config; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.module.SimpleModule; +import com.google.common.reflect.TypeToken; import dev.markodojkic.softwaredevelopmentsimulation.model.Epic; import dev.markodojkic.softwaredevelopmentsimulation.util.EpicNotDoneException; import dev.markodojkic.softwaredevelopmentsimulation.util.PredefinedTasksDeserializer; @@ -26,14 +30,17 @@ import org.springframework.messaging.MessageChannel; import org.springframework.retry.support.RetryTemplateBuilder; +import java.io.IOException; import java.nio.charset.StandardCharsets; import java.time.Duration; import java.time.temporal.ChronoUnit; +import java.util.List; import java.util.UUID; @Configuration @EnableIntegration @IntegrationComponentScan(basePackages = "dev.markodojkic.softwaredevelopmentsimulation") +@SuppressWarnings("unchecked") public class MiscellaneousConfig { private static final String CLIENT_ID = "be-client-" + UUID.randomUUID(); @@ -103,7 +110,34 @@ public ObjectMapper objectMapper() { SimpleModule module = new SimpleModule(); //Add mappings for predefined tasks - module.addSerializer(Epic.class, new PredefinedTasksSerializer()); + module.addSerializer(new JsonSerializer>() { + @Override + public void serialize(List value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + if (value.isEmpty()) { + gen.writeStartArray(); + gen.writeEndArray(); + return; + } + + // Check if the list is of type List + if (value.getFirst() instanceof Epic) { //Unchecked cast is checked here + new PredefinedTasksSerializer().serialize((List) value, gen, serializers); + } else { + // Handle other list types with default serialization + gen.writeStartArray(); + for (Object item : value) { + gen.writeObject(item); + } + gen.writeEndArray(); + } + } + + @Override + public Class> handledType() { + TypeToken> typeToken = new TypeToken<>() {}; + return (Class>) typeToken.getRawType(); + } + }); module.addDeserializer(Epic.class, new PredefinedTasksDeserializer()); objectMapper.registerModule(module); diff --git a/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/util/DataProvider.java b/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/util/DataProvider.java index 1cd5535..e7f48eb 100755 --- a/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/util/DataProvider.java +++ b/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/util/DataProvider.java @@ -21,12 +21,12 @@ public class DataProvider { @Getter @Setter - static Developer technicalManager; + private static Developer technicalManager; @Getter - static List> currentDevelopmentTeamsSetup = Collections.emptyList(); + private static List> currentDevelopmentTeamsSetup = Collections.emptyList(); @Getter - static LinkedList availableDevelopmentTeamIds = new LinkedList<>(); + private static final LinkedList availableDevelopmentTeamIds = new LinkedList<>(); static final String PLACE_OF_BIRTH_MAPS_DEFAULT_VALUE = "Unknown"; static NavigableMap countryMap; diff --git a/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/util/PredefinedTasksDeserializer.java b/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/util/PredefinedTasksDeserializer.java index 0c6cc41..16719c5 100644 --- a/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/util/PredefinedTasksDeserializer.java +++ b/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/util/PredefinedTasksDeserializer.java @@ -48,7 +48,7 @@ public Epic deserialize(JsonParser jsonParser, DeserializationContext deserializ .id(epicId) .name(epicName) .priority(Priority.valueOf(epicPriority)) - .reporter(currentDevelopmentTeam.get(epicReporterIndex)) + .reporter(epicReporterIndex == -1 ? DataProvider.getTechnicalManager() : currentDevelopmentTeam.get(epicReporterIndex)) .assignee(currentDevelopmentTeam.get(epicAssigneeIndex)) .createdOn(ZonedDateTime.of(LocalDateTime.parse(epicCreatedOn, Utilities.DATE_TIME_FORMATTER), ZoneId.systemDefault())) .description(epicDescription) diff --git a/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/util/PredefinedTasksSerializer.java b/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/util/PredefinedTasksSerializer.java index 8288044..8ed1d35 100644 --- a/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/util/PredefinedTasksSerializer.java +++ b/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/util/PredefinedTasksSerializer.java @@ -3,55 +3,66 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; +import com.google.common.reflect.TypeToken; +import dev.markodojkic.softwaredevelopmentsimulation.enums.DeveloperType; import dev.markodojkic.softwaredevelopmentsimulation.model.*; import java.io.IOException; import java.util.List; //Below class was generated by ChatGPT :) -public class PredefinedTasksSerializer extends JsonSerializer { +public class PredefinedTasksSerializer extends JsonSerializer> { public static final String SELECTED_EPIC_DEVELOPMENT_TEAM = "selectedEpicDevelopmentTeam"; @Override - public void serialize(Epic epic, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + public void serialize(List epics, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { - jsonGenerator.writeStartObject(); + jsonGenerator.writeStartArray(); - List currentDevelopmentTeam = DataProvider.getCurrentDevelopmentTeamsSetup().stream().filter(team -> team.contains(epic.getAssignee())).findFirst().orElse(DataProvider.getCurrentDevelopmentTeamsSetup().getFirst()); + for (int i = 0; i < epics.size(); i++) { + jsonGenerator.writeStartObject(); + Epic epic = epics.get(i); - jsonGenerator.writeStringField("epicId", epic.getId()); - jsonGenerator.writeStringField("epicName", epic.getName()); - jsonGenerator.writeStringField("epicPriority", epic.getPriority().name()); - jsonGenerator.writeNumberField("epicReporter", getDeveloperIndex(currentDevelopmentTeam, epic.getReporter())); - jsonGenerator.writeNumberField("epicAssignee", getDeveloperIndex(currentDevelopmentTeam, epic.getAssignee())); - jsonGenerator.writeStringField("epicCreatedOn", epic.getCreatedOn().format(Utilities.DATE_TIME_FORMATTER)); - jsonGenerator.writeStringField("epicDescription", epic.getDescription()); - jsonGenerator.writeStringField(SELECTED_EPIC_DEVELOPMENT_TEAM, String.valueOf(DataProvider.getCurrentDevelopmentTeamsSetup().indexOf(currentDevelopmentTeam))); + List currentDevelopmentTeam = DataProvider.getCurrentDevelopmentTeamsSetup().stream().filter(team -> team.contains(epic.getAssignee())).findFirst().orElse(DataProvider.getCurrentDevelopmentTeamsSetup().getFirst()); - serializeUserStories(currentDevelopmentTeam, String.valueOf(DataProvider.getCurrentDevelopmentTeamsSetup().indexOf(currentDevelopmentTeam)), epic.getUserStories(), jsonGenerator); + jsonGenerator.writeStringField("epicId", epic.getId()); + jsonGenerator.writeStringField("epicName", epic.getName()); + jsonGenerator.writeStringField("epicPriority", epic.getPriority().name()); + jsonGenerator.writeNumberField("epicReporter", getDeveloperIndex(currentDevelopmentTeam, epic.getReporter())); + jsonGenerator.writeNumberField("epicAssignee", getDeveloperIndex(currentDevelopmentTeam, epic.getAssignee())); + jsonGenerator.writeStringField("epicCreatedOn", epic.getCreatedOn().format(Utilities.DATE_TIME_FORMATTER)); + jsonGenerator.writeStringField("epicDescription", epic.getDescription()); + jsonGenerator.writeStringField(SELECTED_EPIC_DEVELOPMENT_TEAM, String.valueOf(DataProvider.getCurrentDevelopmentTeamsSetup().indexOf(currentDevelopmentTeam))); - jsonGenerator.writeEndObject(); + serializeUserStories(i, currentDevelopmentTeam, String.valueOf(DataProvider.getCurrentDevelopmentTeamsSetup().indexOf(currentDevelopmentTeam)), epic.getUserStories(), jsonGenerator); + + jsonGenerator.writeEndObject(); + } + + jsonGenerator.writeEndArray(); } @Override - public Class handledType() { - return Epic.class; + public Class> handledType() { + TypeToken> typeToken = new TypeToken<>() { + }; + return (Class>) typeToken.getRawType(); } - private void serializeUserStories(List currentDevelopmentTeam, String selectedEpicDevelopmentTeam, List userStories, JsonGenerator jsonGenerator) + private void serializeUserStories(int epicIndex, List currentDevelopmentTeam, String selectedEpicDevelopmentTeam, List userStories, JsonGenerator jsonGenerator) throws IOException { jsonGenerator.writeFieldName("userStories"); jsonGenerator.writeStartArray(); - for (UserStory userStory : userStories) { - serializeUserStory(currentDevelopmentTeam, selectedEpicDevelopmentTeam, userStory, jsonGenerator); + for (int i = 0; i < userStories.size(); i++) { + serializeUserStory(epicIndex, i, currentDevelopmentTeam, selectedEpicDevelopmentTeam, userStories.get(i), jsonGenerator); } jsonGenerator.writeEndArray(); } - private void serializeUserStory(List currentDevelopmentTeam, String selectedEpicDevelopmentTeam, UserStory userStory, JsonGenerator jsonGenerator) + private void serializeUserStory(int epicIndex, int userStoryIndex, List currentDevelopmentTeam, String selectedEpicDevelopmentTeam, UserStory userStory, JsonGenerator jsonGenerator) throws IOException { jsonGenerator.writeStartObject(); @@ -63,25 +74,26 @@ private void serializeUserStory(List currentDevelopmentTeam, String s jsonGenerator.writeStringField("userStoryCreatedOn", userStory.getCreatedOn().format(Utilities.DATE_TIME_FORMATTER)); jsonGenerator.writeStringField("userStoryDescription", userStory.getDescription()); jsonGenerator.writeStringField(SELECTED_EPIC_DEVELOPMENT_TEAM, selectedEpicDevelopmentTeam); + jsonGenerator.writeStringField("selectedEpicIndex", String.valueOf(epicIndex)); - serializeTechnicalTasks(currentDevelopmentTeam, selectedEpicDevelopmentTeam, userStory.getTechnicalTasks(), jsonGenerator); + serializeTechnicalTasks(epicIndex, userStoryIndex, currentDevelopmentTeam, selectedEpicDevelopmentTeam, userStory.getTechnicalTasks(), jsonGenerator); jsonGenerator.writeEndObject(); } - private void serializeTechnicalTasks(List currentDevelopmentTeam, String selectedEpicDevelopmentTeam, List technicalTasks, JsonGenerator jsonGenerator) + private void serializeTechnicalTasks(int epicIndex, int userStoryIndex, List currentDevelopmentTeam, String selectedEpicDevelopmentTeam, List technicalTasks, JsonGenerator jsonGenerator) throws IOException { jsonGenerator.writeFieldName("technicalTasks"); jsonGenerator.writeStartArray(); for (TechnicalTask technicalTask : technicalTasks) { - serializeTechnicalTask(currentDevelopmentTeam, selectedEpicDevelopmentTeam, technicalTask, jsonGenerator); + serializeTechnicalTask(epicIndex, userStoryIndex, currentDevelopmentTeam, selectedEpicDevelopmentTeam, technicalTask, jsonGenerator); } jsonGenerator.writeEndArray(); } - private void serializeTechnicalTask(List currentDevelopmentTeam, String selectedEpicDevelopmentTeam, TechnicalTask technicalTask, JsonGenerator jsonGenerator) + private void serializeTechnicalTask(int epicIndex, int userStoryIndex, List currentDevelopmentTeam, String selectedEpicDevelopmentTeam, TechnicalTask technicalTask, JsonGenerator jsonGenerator) throws IOException { jsonGenerator.writeStartObject(); @@ -93,11 +105,13 @@ private void serializeTechnicalTask(List currentDevelopmentTeam, Stri jsonGenerator.writeStringField("technicalTaskCreatedOn", technicalTask.getCreatedOn().format(Utilities.DATE_TIME_FORMATTER)); jsonGenerator.writeStringField("technicalTaskDescription", technicalTask.getDescription()); jsonGenerator.writeStringField(SELECTED_EPIC_DEVELOPMENT_TEAM, selectedEpicDevelopmentTeam); + jsonGenerator.writeStringField("selectedEpicIndex", String.valueOf(epicIndex)); + jsonGenerator.writeStringField("selectedUserStoryIndex", String.valueOf(userStoryIndex)); jsonGenerator.writeEndObject(); } private int getDeveloperIndex(List currentDevelopmentTeam, Developer developer) { - return currentDevelopmentTeam.indexOf(developer); + return developer.getDeveloperType().equals(DeveloperType.TECHNICAL_MANAGER) ? -1 : currentDevelopmentTeam.indexOf(developer); } } \ No newline at end of file diff --git a/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/util/Utilities.java b/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/util/Utilities.java index ba083cd..42ebf1f 100644 --- a/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/util/Utilities.java +++ b/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/util/Utilities.java @@ -7,9 +7,7 @@ import com.thedeanda.lorem.LoremIpsum; import dev.markodojkic.softwaredevelopmentsimulation.enums.Priority; import dev.markodojkic.softwaredevelopmentsimulation.interfaces.IGateways; -import dev.markodojkic.softwaredevelopmentsimulation.model.Epic; -import dev.markodojkic.softwaredevelopmentsimulation.model.TechnicalTask; -import dev.markodojkic.softwaredevelopmentsimulation.model.UserStory; +import dev.markodojkic.softwaredevelopmentsimulation.model.*; import lombok.Getter; import lombok.Setter; import lombok.experimental.UtilityClass; @@ -38,7 +36,7 @@ @UtilityClass public class Utilities { private static final Logger logger = Logger.getLogger(Utilities.class.getName()); - public static final String STRING_FORMAT = "%s-%s"; + private static final String STRING_FORMAT = "%s-%s"; public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy. HH:mm:ss"); public static final String ASSIGNED_DEVELOPMENT_TEAM_POSITION_NUMBER = "assignedDevelopmentTeamPositionNumber"; public static final SecureRandom SECURE_RANDOM = new SecureRandom(); @@ -59,7 +57,8 @@ public class Utilities { @Setter private static int totalEpicsCount; @Getter - private static final List epicsForSaving = new ArrayList<>(); + @Setter + private static List epicsForSaving; @Getter @Setter private static ObjectMapper objectMapper; @@ -73,18 +72,18 @@ public class Utilities { public static void loadPredefinedTasks(List predefinedEpics){ AtomicReference jiraEpicCreatedOutput = new AtomicReference<>(Strings.EMPTY); - availableDevelopmentTeamIds.clear(); + getAvailableDevelopmentTeamIds().clear(); predefinedEpics.forEach(epic -> { - int epicDevelopmentTeamId = IntStream.range(0, currentDevelopmentTeamsSetup.size()) - .filter(i -> currentDevelopmentTeamsSetup.get(i).stream() - .anyMatch(d -> Objects.equals(d.getId(), epic.getReporter().getId()))) + int epicDevelopmentTeamId = IntStream.range(0, getCurrentDevelopmentTeamsSetup().size()) + .filter(i -> getCurrentDevelopmentTeamsSetup().get(i).stream() + .anyMatch(d -> Objects.equals(d.getId(), epic.getAssignee().getId()))) .findFirst().orElse(0); - if(!availableDevelopmentTeamIds.contains(epicDevelopmentTeamId)) availableDevelopmentTeamIds.push(epicDevelopmentTeamId); + if(!getAvailableDevelopmentTeamIds().contains(epicDevelopmentTeamId)) getAvailableDevelopmentTeamIds().push(epicDevelopmentTeamId); jiraEpicCreatedOutput.set(String.format("\033[1m%s\033[21m\033[24m created EPIC: \033[3m\033[1m%s\033[21m\033[24m - %s\033[23m ◴ %s$", epic.getReporter().getDisplayName(), epic.getId(), epic.getName(), epic.getCreatedOn().format(DATE_TIME_FORMATTER)).concat(jiraEpicCreatedOutput.get())); }); - totalDevelopmentTeamsPresent = availableDevelopmentTeamIds.size(); + totalDevelopmentTeamsPresent = getAvailableDevelopmentTeamIds().size(); iGateways.sendToInfo(""" All epics are created. Total developerTeams available: {0} @@ -102,8 +101,8 @@ public static void generateRandomEpics(boolean save, int epicCountDownLimit, int AtomicReference jiraEpicCreatedOutput = new AtomicReference<>(Strings.EMPTY); totalEpicsCount = SECURE_RANDOM.nextInt(epicCountDownLimit,epicCountUpperLimit); - availableDevelopmentTeamIds.addAll(IntStream.rangeClosed(0, currentDevelopmentTeamsSetup.size() - 1).boxed().collect(Collectors.toCollection(ArrayList::new))); - totalDevelopmentTeamsPresent = currentDevelopmentTeamsSetup.size(); + getAvailableDevelopmentTeamIds().addAll(IntStream.rangeClosed(0, getCurrentDevelopmentTeamsSetup().size() - 1).boxed().collect(Collectors.toCollection(ArrayList::new))); + totalDevelopmentTeamsPresent = getCurrentDevelopmentTeamsSetup().size(); for (var i = 0; i < totalEpicsCount; i++) { int finalI = i; @@ -137,9 +136,9 @@ public static void generateRandomEpics(boolean save, int epicCountDownLimit, int iGateways.sendToJiraActivityStream(jiraEpicCreatedOutput.get().replaceFirst(".$", "")); - totalEpicsCount = save ? totalEpicsCount : -1; + epicsForSaving = save ? new ArrayList<>() : null; - Collections.shuffle(availableDevelopmentTeamIds); + Collections.shuffle(getAvailableDevelopmentTeamIds()); epicList.forEach(epic -> iGateways.generateEpic(epic)); } @@ -155,7 +154,7 @@ private List generateUserStories(String epicId, String boardName, int .description(LOREM.getWords(2, 4)) .priority(Priority.values()[SECURE_RANDOM.nextInt(Priority.values().length)]) .epicId(epicId) - .createdOn(ZonedDateTime.now()) + .createdOn(ZonedDateTime.now().plusSeconds(1)) .technicalTasks(new ArrayList<>()) .build(); int totalTechnicalTasks = SECURE_RANDOM.nextInt(userStory.getPriority().getUrgency() + 3, userStory.getPriority().getUrgency() + 8); @@ -184,7 +183,7 @@ private List generateTechnicalTasks(String userStoryId, String bo .priority(Priority.values()[SECURE_RANDOM.nextInt(Priority.values().length)]) .userStoryId(userStoryId) .id(String.format(STRING_FORMAT, boardName, Long.parseLong(userStoryId.split(boardName.concat("-"))[1]+1)+i)) - .createdOn(ZonedDateTime.now()) + .createdOn(ZonedDateTime.now().plusSeconds(2)) .build()); logger.log(Level.INFO, () -> colorize(String.format("\t\t+ Generated TECHNICAL TASK #%d", finalI), Attribute.TEXT_COLOR(118), Attribute.BACK_COLOR(244))); } @@ -198,7 +197,6 @@ public static void addEpicForSaving(Epic epic) { public static void saveEpics(){ try { - setTotalEpicsCount(0); String folderName = ZonedDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH-mm-ss")); Path parentDirectory = Utilities.getCurrentApplicationDataPath().resolve(PREDEFINED_DATA); diff --git a/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/web/DevelopersPageController.java b/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/web/DevelopersPageController.java index 3c95cc7..dfc2f2d 100755 --- a/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/web/DevelopersPageController.java +++ b/src/main/java/dev/markodojkic/softwaredevelopmentsimulation/web/DevelopersPageController.java @@ -107,8 +107,9 @@ public ResponseEntity applicationFlowPredefined(@RequestBody String pred } @PostMapping(value = "/api/applicationFlowRandomized") - public void applicationFlowRandomized(@RequestParam(name = "save", defaultValue = "false", required = false) boolean save, @RequestParam("min") int min, @RequestParam("max") int max){ + public ModelAndView applicationFlowRandomized(@RequestParam(name = "save", defaultValue = "false", required = false) boolean save, @RequestParam("min") int min, @RequestParam("max") int max){ generateRandomEpics(save, min, max); + return null; } private String getBackgroundColor(String text) { diff --git a/src/main/resources/static/js/index.js b/src/main/resources/static/js/index.js index f6418a1..a5816a1 100755 --- a/src/main/resources/static/js/index.js +++ b/src/main/resources/static/js/index.js @@ -533,7 +533,7 @@ $(window).on("load", async () => { dateFormat: "d.m.Y. H:i:S", time_24hr: true, allowInput:true, - defaultDate: editingUserStory.epicCreatedOn, + defaultDate: editingUserStory.userStoryCreatedOn, minDate: new Date(flatpickr.parseDate(currentPredefinedData[eventValues[0]].epicCreatedOn, "d.m.Y. H:i:S").getTime() + 1000), maxDate: new Date(Math.min.apply(null, editingUserStory.technicalTasks.map(technicalTask => flatpickr.parseDate(technicalTask.technicalTaskCreatedOn, "d.m.Y. H:i:S").getTime())) - 1000), onClose: function(selectedDates, dateStr, instance) { @@ -850,7 +850,7 @@ $(window).on("load", async () => { slRadioOptions += `${counter++}. ${folderName}`; }); - $("#predefinedDataSelection > div").html(` + $("#predefinedDataSelection").html(`
${slRadioOptions} @@ -859,7 +859,7 @@ $(window).on("load", async () => {
Confirm selection - Clear form + Cancel
`); @@ -1026,7 +1026,7 @@ function updateCustomEpicsList() { Created on: ${value.epicCreatedOn} - Reporter: ${value.epicReporter === -1 ? $("#technicalManagerNameField").html().split(" (UMCN")[0] : $("#developmentTeamsListOfDevelopers #" + value.selectedEpicDevelopmentTeam + " sl-option[value=" + value.epicReporter + "]").html()} + Reporter: ${value.epicReporter == -1 ? $("#technicalManagerNameField").html().split(" (UMCN")[0] : $("#developmentTeamsListOfDevelopers #" + value.selectedEpicDevelopmentTeam + " sl-option[value=" + value.epicReporter + "]").html()} Assignee: ${$("#developmentTeamsListOfDevelopers #" + value.selectedEpicDevelopmentTeam + " sl-option[value=" + value.epicAssignee + "]").html()} @@ -1050,7 +1050,6 @@ function updateCustomEpicsList() { $("sl-tab-panel[name='customUserStoriesViewTab']").html(``); const userStoriesCarousel = $("sl-tab-panel[name='customUserStoriesViewTab'] sl-carousel"); - userStoriesCarousel.css("--aspect-ratio", "0"); setTimeout(() => $("#scroll-container", userStoriesCarousel[0].shadowRoot).css("overflow-y", "auto"), 1000); @@ -1066,7 +1065,6 @@ function updateCustomEpicsList() { $("sl-tab-panel[name='customTechnicalTasksViewTab']").html(``); const technicalTasksCarousel = $("sl-tab-panel[name='customTechnicalTasksViewTab'] sl-carousel"); - technicalTasksCarousel.css("--aspect-ratio", "0"); setTimeout(() => $("#scroll-container", technicalTasksCarousel[0].shadowRoot).css("overflow-y", "auto"), 1000); diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index eb0614b..edb635a 100755 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -77,7 +77,7 @@ -
+
@@ -216,8 +216,8 @@ - -
+ +