From 027b379cf9d53a12782781e586f79051461ab661 Mon Sep 17 00:00:00 2001 From: Georgios Andreadis Date: Thu, 26 Jan 2017 23:11:29 +0100 Subject: Refactor controllers to use 'const' when possible --- src/scripts/controllers/modes/building.ts | 9 +++---- src/scripts/controllers/modes/node.ts | 42 +++++++++++++++---------------- src/scripts/controllers/modes/object.ts | 29 +++++++++++---------- src/scripts/controllers/modes/room.ts | 42 +++++++++++++++---------------- 4 files changed, 60 insertions(+), 62 deletions(-) (limited to 'src/scripts/controllers/modes') diff --git a/src/scripts/controllers/modes/building.ts b/src/scripts/controllers/modes/building.ts index 4d82f090..217f5935 100644 --- a/src/scripts/controllers/modes/building.ts +++ b/src/scripts/controllers/modes/building.ts @@ -22,7 +22,7 @@ export class BuildingModeController { * Connects all DOM event listeners to their respective element targets. */ public setupEventListeners() { - let resetConstructionButtons = () => { + const resetConstructionButtons = () => { this.mapController.interactionMode = InteractionMode.DEFAULT; this.mapView.hoverLayer.setHoverTileVisibility(false); $("#room-construction").text("Construct new room"); @@ -79,7 +79,7 @@ export class BuildingModeController { * @param position The new tile position to be added */ public addSelectedTile(position: IGridPosition): void { - let tile = { + const tile = { id: -1, roomId: this.newRoomId, position: {x: position.x, y: position.y} @@ -96,11 +96,10 @@ export class BuildingModeController { * @param position The position of the tile to be removed */ public removeSelectedTile(position: IGridPosition): void { - let tile; let objectIndex = -1; for (let i = 0; i < this.mapView.roomLayer.selectedTileObjects.length; i++) { - tile = this.mapView.roomLayer.selectedTileObjects[i]; + const tile = this.mapView.roomLayer.selectedTileObjects[i]; if (tile.position.x === position.x && tile.position.y === position.y) { objectIndex = i; } @@ -111,4 +110,4 @@ export class BuildingModeController { this.mapView.roomLayer.removeSelectedTile(position, objectIndex); }); } -} \ No newline at end of file +} diff --git a/src/scripts/controllers/modes/node.ts b/src/scripts/controllers/modes/node.ts index 3b3f8a32..cef61bba 100644 --- a/src/scripts/controllers/modes/node.ts +++ b/src/scripts/controllers/modes/node.ts @@ -53,17 +53,17 @@ export class NodeModeController { * Connects all DOM event listeners to their respective element targets. */ public setupEventListeners(): void { - let nodeMenu = $("#node-menu"); + const nodeMenu = $("#node-menu"); nodeMenu.find(".panel-group").on("click", ".remove-unit", (event: JQueryEventObject) => { MapController.showConfirmDeleteDialog("unit", () => { - let index = $(event.target).closest(".panel").index(); + const index = $(event.target).closest(".panel").index(); if (index === -1) { return; } - let closestTabPane = $(event.target).closest(".panel-group"); + const closestTabPane = $(event.target).closest(".panel-group"); let objectList, idList; if (closestTabPane.is("#cpu-accordion")) { @@ -94,9 +94,9 @@ export class NodeModeController { }); nodeMenu.find(".add-unit").on("click", (event: JQueryEventObject) => { - let dropdown = $(event.target).closest(".input-group-btn").siblings("select").first(); + const dropdown = $(event.target).closest(".input-group-btn").siblings("select").first(); - let closestTabPane = $(event.target).closest(".input-group").siblings(".panel-group").first(); + const closestTabPane = $(event.target).closest(".input-group").siblings(".panel-group").first(); let objectList, idList, typePlural; if (closestTabPane.is("#cpu-accordion")) { objectList = this.currentMachine.cpus; @@ -121,7 +121,7 @@ export class NodeModeController { return; } - let id = parseInt(dropdown.val(), 10); + const id = parseInt(dropdown.val()); idList.push(id); this.mapController.api.getSpecificationOfType(typePlural, id).then((spec: INodeUnit) => { objectList.push(spec); @@ -141,10 +141,10 @@ export class NodeModeController { * Populates the "add" dropdowns with all available unit options. */ private loadAddDropdowns(): void { - let unitTypes = [ + const unitTypes = [ "cpus", "gpus", "memories", "storages" ]; - let dropdowns = [ + const dropdowns = [ $("#add-cpu-form").find("select"), $("#add-gpu-form").find("select"), $("#add-memory-form").find("select"), @@ -166,7 +166,7 @@ export class NodeModeController { */ private populateUnitLists(): void { // Contains the skeleton of a unit element and inserts the given data into it - let generatePanel = (type: string, index: number, list: any, specSection: string): string => { + const generatePanel = (type: string, index: number, list: any, specSection: string): string => { return '
' + '
' + '

' + @@ -188,7 +188,7 @@ export class NodeModeController { }; // Generates the structure of the specification list of a processing unit - let generateProcessingUnitHtml = (element: IProcessingUnit) => { + const generateProcessingUnitHtml = (element: IProcessingUnit) => { return ' ' + ' ' + ' Number of Cores' + @@ -212,7 +212,7 @@ export class NodeModeController { }; // Generates the structure of the spec list of a storage unit - let generateStorageUnitHtml = (element: IStorageUnit) => { + const generateStorageUnitHtml = (element: IStorageUnit) => { return ' ' + ' ' + ' Size (Mb)' + @@ -236,7 +236,7 @@ export class NodeModeController { }; // Inserts a "No units" message into the container of the given unit type - let addNoUnitsMessage = (type: string) => { + const addNoUnitsMessage = (type: string) => { $("#" + type + "-accordion").append("

There are currently no units present here. " + "Add some with the dropdown below!

"); }; @@ -249,8 +249,8 @@ export class NodeModeController { addNoUnitsMessage("cpu"); } else { this.currentMachine.cpus.forEach((element: ICPU, i: number) => { - let specSection = generateProcessingUnitHtml(element); - let content = generatePanel("cpu", i, this.currentMachine.cpus, specSection); + const specSection = generateProcessingUnitHtml(element); + const content = generatePanel("cpu", i, this.currentMachine.cpus, specSection); container.append(content); }); } @@ -262,8 +262,8 @@ export class NodeModeController { addNoUnitsMessage("gpu"); } else { this.currentMachine.gpus.forEach((element: IGPU, i: number) => { - let specSection = generateProcessingUnitHtml(element); - let content = generatePanel("gpu", i, this.currentMachine.gpus, specSection); + const specSection = generateProcessingUnitHtml(element); + const content = generatePanel("gpu", i, this.currentMachine.gpus, specSection); container.append(content); }); } @@ -275,8 +275,8 @@ export class NodeModeController { addNoUnitsMessage("memory"); } else { this.currentMachine.memories.forEach((element: IMemory, i: number) => { - let specSection = generateStorageUnitHtml(element); - let content = generatePanel("memory", i, this.currentMachine.memories, specSection); + const specSection = generateStorageUnitHtml(element); + const content = generatePanel("memory", i, this.currentMachine.memories, specSection); container.append(content); }); } @@ -288,10 +288,10 @@ export class NodeModeController { addNoUnitsMessage("storage"); } else { this.currentMachine.storages.forEach((element: IMemory, i: number) => { - let specSection = generateStorageUnitHtml(element); - let content = generatePanel("storage", i, this.currentMachine.storages, specSection); + const specSection = generateStorageUnitHtml(element); + const content = generatePanel("storage", i, this.currentMachine.storages, specSection); container.append(content); }); } } -} \ No newline at end of file +} diff --git a/src/scripts/controllers/modes/object.ts b/src/scripts/controllers/modes/object.ts index e922433e..d974df7a 100644 --- a/src/scripts/controllers/modes/object.ts +++ b/src/scripts/controllers/modes/object.ts @@ -97,12 +97,12 @@ export class ObjectModeController { }); }); - let nodeListContainer = $(".node-list-container"); + const nodeListContainer = $(".node-list-container"); // Handler for the 'add' button of each machine slot of the rack nodeListContainer.on("click", ".add-node", (event: JQueryEventObject) => { // Convert the DOM element index to a JS array index - let index = this.currentRack.machines.length - $(event.target).closest(".node-element").index() - 1; + const index = this.currentRack.machines.length - $(event.target).closest(".node-element").index() - 1; // Insert an empty machine at the selected position this.mapController.api.addMachineToRack(this.mapView.simulation.id, @@ -127,10 +127,10 @@ export class ObjectModeController { // Handler for the 'remove' button of each machine slot of the rack nodeListContainer.on("click", ".remove-node", (event: JQueryEventObject) => { - let target = $(event.target); + const target = $(event.target); MapController.showConfirmDeleteDialog("machine", () => { // Convert the DOM element index to a JS array index - let index = this.currentRack.machines.length - target.closest(".node-element").index() - 1; + const index = this.currentRack.machines.length - target.closest(".node-element").index() - 1; this.mapController.api.deleteMachine(this.mapView.simulation.id, this.mapView.currentDatacenter.id, this.mapController.roomModeController.currentRoom.id, @@ -146,9 +146,9 @@ export class ObjectModeController { // Handler for every node element, triggering node mode nodeListContainer.on("click", ".node-element", (event: JQueryEventObject) => { - let domIndex = $(event.target).closest(".node-element").index(); - let index = this.currentRack.machines.length - domIndex - 1; - let machine = this.currentRack.machines[index]; + const domIndex = $(event.target).closest(".node-element").index(); + const index = this.currentRack.machines.length - domIndex - 1; + const machine = this.currentRack.machines[index]; if (machine != null) { this.mapController.interactionLevel = InteractionLevel.NODE; @@ -222,8 +222,8 @@ export class ObjectModeController { continue; } - let container = this.mapController.appMode === AppMode.CONSTRUCTION ? ".construction" : ".simulation"; - let element = $(container + " .node-element").eq(this.currentRack.machines.length - i - 1); + const container = this.mapController.appMode === AppMode.CONSTRUCTION ? ".construction" : ".simulation"; + const element = $(container + " .node-element").eq(this.currentRack.machines.length - i - 1); if (this.currentRack.machines[i].cpus.length !== 0) { element.find(".overlay-cpu").addClass("hidden"); } else { @@ -251,8 +251,7 @@ export class ObjectModeController { * Dynamically generates and inserts HTML code for every node in the current rack. */ private populateNodeList(): void { - let type, content; - let container = $(".node-list-container"); + const container = $(".node-list-container"); // Remove any previously present node elements container.children().remove(".node-element"); @@ -260,8 +259,8 @@ export class ObjectModeController { for (let i = 0; i < this.currentRack.machines.length; i++) { // Depending on whether the current machine slot is filled, allow removing or adding a new machine by adding // the appropriate button next to the machine slot - type = (this.currentRack.machines[i] == null ? "glyphicon-plus add-node" : "glyphicon-remove remove-node"); - content = + const type = (this.currentRack.machines[i] == null ? "glyphicon-plus add-node" : "glyphicon-remove remove-node"); + let content = '
' + ' ' + @@ -291,7 +290,7 @@ export class ObjectModeController { } private scrollToBottom(): void { - let scrollContainer = $('.node-list-container'); + const scrollContainer = $('.node-list-container'); scrollContainer.scrollTop(scrollContainer[0].scrollHeight); } -} \ No newline at end of file +} diff --git a/src/scripts/controllers/modes/room.ts b/src/scripts/controllers/modes/room.ts index a858af5a..8a982ef1 100644 --- a/src/scripts/controllers/modes/room.ts +++ b/src/scripts/controllers/modes/room.ts @@ -63,9 +63,9 @@ export class RoomModeController { MapController.hideAndShowMenus("#room-menu"); // Pre-select the type of the current room in the dropdown - let roomTypeDropdown = $("#roomtype-select"); + const roomTypeDropdown = $("#roomtype-select"); roomTypeDropdown.find('option').prop("selected", "false"); - let roomTypeIndex = this.roomTypes.indexOf(this.currentRoom.roomType); + const roomTypeIndex = this.roomTypes.indexOf(this.currentRoom.roomType); if (roomTypeIndex !== -1) { roomTypeDropdown.find('option[value="' + roomTypeIndex + '"]').prop("selected", "true"); } else { @@ -106,11 +106,11 @@ export class RoomModeController { public setupEventListeners(): void { // Component buttons - let addRackBtn = $("#add-rack-btn"); - let addPSUBtn = $("#add-psu-btn"); - let addCoolingItemBtn = $("#add-cooling-item-btn"); + const addRackBtn = $("#add-rack-btn"); + const addPSUBtn = $("#add-psu-btn"); + const addCoolingItemBtn = $("#add-cooling-item-btn"); - let roomTypeDropdown = $("#roomtype-select"); + const roomTypeDropdown = $("#roomtype-select"); addRackBtn.on("click", () => { this.handleItemClick("RACK"); @@ -137,7 +137,7 @@ export class RoomModeController { MapController.showConfirmDeleteDialog("room", () => { this.mapController.api.deleteRoom(this.mapView.simulation.id, this.mapView.currentDatacenter.id, this.currentRoom.id).then(() => { - let roomIndex = this.mapView.currentDatacenter.rooms.indexOf(this.currentRoom); + const roomIndex = this.mapView.currentDatacenter.rooms.indexOf(this.currentRoom); this.mapView.currentDatacenter.rooms.splice(roomIndex, 1); this.mapView.redrawMap(); @@ -148,7 +148,7 @@ export class RoomModeController { // Handler for the room type dropdown component roomTypeDropdown.on("change", () => { - let newRoomType = this.roomTypes[roomTypeDropdown.val()]; + const newRoomType = this.roomTypes[roomTypeDropdown.val()]; if (!this.checkRoomTypeLegality(newRoomType)) { roomTypeDropdown.val(this.roomTypes.indexOf(this.currentRoom.roomType)); this.mapController.showInfoBalloon("Room type couldn't be changed, illegal objects", "warning"); @@ -167,10 +167,10 @@ export class RoomModeController { public handleCanvasMouseClick(gridPos: IGridPosition): void { if (this.roomInteractionMode === RoomInteractionMode.DEFAULT) { - let tileIndex = Util.tileListPositionIndexOf(this.currentRoom.tiles, gridPos); + const tileIndex = Util.tileListPositionIndexOf(this.currentRoom.tiles, gridPos); if (tileIndex !== -1) { - let tile = this.currentRoom.tiles[tileIndex]; + const tile = this.currentRoom.tiles[tileIndex]; if (tile.object !== undefined) { this.mapController.interactionLevel = InteractionLevel.OBJECT; @@ -192,11 +192,11 @@ export class RoomModeController { } private handleItemClick(type: string): void { - let addRackBtn = $("#add-rack-btn"); - let addPSUBtn = $("#add-psu-btn"); - let addCoolingItemBtn = $("#add-cooling-item-btn"); - let allObjectContainers = $(".dc-component-container"); - let objectTypes = [ + const addRackBtn = $("#add-rack-btn"); + const addPSUBtn = $("#add-psu-btn"); + const addCoolingItemBtn = $("#add-cooling-item-btn"); + const allObjectContainers = $(".dc-component-container"); + const objectTypes = [ { type: "RACK", mode: RoomInteractionMode.ADD_RACK, @@ -264,7 +264,7 @@ export class RoomModeController { return; } - let tileList = this.mapView.mapController.roomModeController.currentRoom.tiles; + const tileList = this.mapView.mapController.roomModeController.currentRoom.tiles; for (let i = 0; i < tileList.length; i++) { if (tileList[i].position.x === position.x && tileList[i].position.y === position.y) { @@ -320,7 +320,7 @@ export class RoomModeController { * Populates the room-type dropdown element with all available room types */ private populateRoomTypeDropdown(): void { - let dropdown = $("#roomtype-select"); + const dropdown = $("#roomtype-select"); this.roomTypes.forEach((type: string, index: number) => { dropdown.append($('