mirror of
https://github.com/lospec/pixel-editor.git
synced 2023-08-10 21:12:51 +03:00
added input number validation for rc and rs
This commit is contained in:
60
js/File.js
60
js/File.js
@@ -17,6 +17,10 @@ class File {
|
|||||||
// Canvas resize attributes
|
// Canvas resize attributes
|
||||||
// Resize canvas pop up window
|
// Resize canvas pop up window
|
||||||
resizeCanvasContainer = document.getElementById("resize-canvas");
|
resizeCanvasContainer = document.getElementById("resize-canvas");
|
||||||
|
rcBadWidth = 0
|
||||||
|
rcBadHeight = 0
|
||||||
|
rsBadWidth = 0
|
||||||
|
rsBadHeight = 0
|
||||||
// Start pivot
|
// Start pivot
|
||||||
rcPivot = "middle";
|
rcPivot = "middle";
|
||||||
// Selected pivot button
|
// Selected pivot button
|
||||||
@@ -86,8 +90,24 @@ class File {
|
|||||||
/** Fired when width or height are changed: updates the border offsets
|
/** Fired when width or height are changed: updates the border offsets
|
||||||
*/
|
*/
|
||||||
rcChangedSize() {
|
rcChangedSize() {
|
||||||
let widthOffset = Math.abs(document.getElementById("rc-width").value) - currFile.canvasSize[0];
|
let width = document.getElementById("rc-width").value
|
||||||
let heightOffset = Math.abs(document.getElementById("rc-height").value) - currFile.canvasSize[1];
|
let height = document.getElementById("rc-height").value
|
||||||
|
|
||||||
|
if (!(Util.numberValidator(width))) {
|
||||||
|
this.rcBadWidth++;
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
this.rcBadWidth = 0;
|
||||||
|
}
|
||||||
|
if (!(Util.numberValidator(height))) {
|
||||||
|
this.rcBadHeight++;
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
this.rcBadHeight = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
let widthOffset = Math.abs(width) - currFile.canvasSize[0];
|
||||||
|
let heightOffset = Math.abs(height) - currFile.canvasSize[1];
|
||||||
|
|
||||||
let left = Math.round(widthOffset / 2);
|
let left = Math.round(widthOffset / 2);
|
||||||
let right = widthOffset - left;
|
let right = widthOffset - left;
|
||||||
@@ -118,6 +138,9 @@ class File {
|
|||||||
let topOffset = 0;
|
let topOffset = 0;
|
||||||
let copiedDataIndex = 0;
|
let copiedDataIndex = 0;
|
||||||
|
|
||||||
|
if (this.rcBadHeight != 0) return;
|
||||||
|
if (this.rcBadWidth != 0) return;
|
||||||
|
|
||||||
// If I'm undoing and I'm not trimming, I manually put the values in the window
|
// If I'm undoing and I'm not trimming, I manually put the values in the window
|
||||||
if (size != null && customData == null) {
|
if (size != null && customData == null) {
|
||||||
document.getElementById("rc-width").value = size.x;
|
document.getElementById("rc-width").value = size.x;
|
||||||
@@ -350,6 +373,10 @@ class File {
|
|||||||
this.startData.heightPercentage = 100;
|
this.startData.heightPercentage = 100;
|
||||||
this.startData.widthPercentage = 100;
|
this.startData.widthPercentage = 100;
|
||||||
|
|
||||||
|
// reset bad inputs count
|
||||||
|
this.rsBadWidth = 0;
|
||||||
|
this.rsBadHeight = 0;
|
||||||
|
|
||||||
// Opening the pop up now that it's ready
|
// Opening the pop up now that it's ready
|
||||||
Dialogue.showDialogue('resize-sprite');
|
Dialogue.showDialogue('resize-sprite');
|
||||||
}
|
}
|
||||||
@@ -383,6 +410,9 @@ class File {
|
|||||||
* @param {*} ratio Keeps infos about the x ratio and y ratio
|
* @param {*} ratio Keeps infos about the x ratio and y ratio
|
||||||
*/
|
*/
|
||||||
resizeSprite(event, ratio) {
|
resizeSprite(event, ratio) {
|
||||||
|
|
||||||
|
if (this.rsBadHeight != 0) return;
|
||||||
|
if (this.rsBadWidth != 0) return;
|
||||||
// Old data
|
// Old data
|
||||||
let oldWidth, oldHeight;
|
let oldWidth, oldHeight;
|
||||||
// New data
|
// New data
|
||||||
@@ -477,14 +507,23 @@ class File {
|
|||||||
* @param {*} event
|
* @param {*} event
|
||||||
*/
|
*/
|
||||||
changedWidth(event) {
|
changedWidth(event) {
|
||||||
|
let width = event.target.value
|
||||||
|
|
||||||
|
if (!(Util.numberValidator(width))) {
|
||||||
|
this.rsBadWidth++;
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
this.rsBadWidth = 0;
|
||||||
|
}
|
||||||
|
|
||||||
let newHeight, newHeightPerc, newWidthPerc;
|
let newHeight, newHeightPerc, newWidthPerc;
|
||||||
this.data.width = event.target.value;
|
this.data.width = width;
|
||||||
|
|
||||||
newHeight = this.data.width / this.currentRatio;
|
newHeight = this.data.width / this.currentRatio;
|
||||||
newHeightPerc = (newHeight * 100) / this.startData.height;
|
newHeightPerc = (newHeight * 100) / this.startData.height;
|
||||||
newWidthPerc = (this.data.width * 100) / this.startData.width;
|
newWidthPerc = (this.data.width * 100) / this.startData.width;
|
||||||
|
|
||||||
if (this.keepRatio) {
|
if (this.keepRatio && this.sh == 0) {
|
||||||
document.getElementById("rs-height").value = newHeight;
|
document.getElementById("rs-height").value = newHeight;
|
||||||
this.data.height = newHeight;
|
this.data.height = newHeight;
|
||||||
|
|
||||||
@@ -500,14 +539,23 @@ class File {
|
|||||||
* @param {*} event
|
* @param {*} event
|
||||||
*/
|
*/
|
||||||
changedHeight(event) {
|
changedHeight(event) {
|
||||||
|
let height = event.target.value
|
||||||
|
|
||||||
|
if (!(Util.numberValidator(height))) {
|
||||||
|
this.rsBadHeight++;
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
this.rsBadHeight = 0;
|
||||||
|
}
|
||||||
|
|
||||||
let newWidth, newWidthPerc, newHeightPerc;
|
let newWidth, newWidthPerc, newHeightPerc;
|
||||||
this.data.height = event.target.value;
|
this.data.height = height;
|
||||||
|
|
||||||
newWidth = this.data.height * this.currentRatio;
|
newWidth = this.data.height * this.currentRatio;
|
||||||
newWidthPerc = (newWidth * 100) / this.startData.width;
|
newWidthPerc = (newWidth * 100) / this.startData.width;
|
||||||
newHeightPerc = (this.data.height * 100) / this.startData.height;
|
newHeightPerc = (this.data.height * 100) / this.startData.height;
|
||||||
|
|
||||||
if (this.keepRatio) {
|
if (this.keepRatio && this.sw == 0) {
|
||||||
document.getElementById("rs-width").value = newWidth;
|
document.getElementById("rs-width").value = newWidth;
|
||||||
this.data.width = newWidth;
|
this.data.width = newWidth;
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ const Startup = (() => {
|
|||||||
var height = Util.getValue('size-height' + splashPostfix);
|
var height = Util.getValue('size-height' + splashPostfix);
|
||||||
var selectedPalette = Util.getText('palette-button' + splashPostfix);
|
var selectedPalette = Util.getText('palette-button' + splashPostfix);
|
||||||
|
|
||||||
if (!(validator(width) && validator(height))) {
|
if (!(Util.numberValidator(width) && Util.numberValidator(height))) {
|
||||||
Util.setValue('size-width' + splashPostfix, 64);
|
Util.setValue('size-width' + splashPostfix, 64);
|
||||||
Util.setValue('size-height' + splashPostfix, 64);
|
Util.setValue('size-height' + splashPostfix, 64);
|
||||||
return;
|
return;
|
||||||
@@ -33,14 +33,6 @@ const Startup = (() => {
|
|||||||
ga('send', 'event', 'Pixel Editor New', selectedPalette, width+'/'+height); /*global ga*/
|
ga('send', 'event', 'Pixel Editor New', selectedPalette, width+'/'+height); /*global ga*/
|
||||||
}
|
}
|
||||||
|
|
||||||
function validator(param) {
|
|
||||||
if (Number.isNaN(param) || param.includes('.')) return false
|
|
||||||
const num = parseInt(param)
|
|
||||||
if (param != num) return false
|
|
||||||
if (num && num > 0 && num <= 5000) return true
|
|
||||||
else return false
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Creates a new, empty file
|
/** Creates a new, empty file
|
||||||
*
|
*
|
||||||
* @param {*} lpe If lpe != null, then the newPixel is being called from the open menu
|
* @param {*} lpe If lpe != null, then the newPixel is being called from the open menu
|
||||||
|
|||||||
16
js/Util.js
16
js/Util.js
@@ -203,4 +203,20 @@ class Util {
|
|||||||
|
|
||||||
return position;
|
return position;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {*} any An input number validator
|
||||||
|
*/
|
||||||
|
static numberValidator(param) {
|
||||||
|
if (typeof param == 'string') {
|
||||||
|
if (param.includes('.')) return false
|
||||||
|
} else if (typeof param == 'number') {
|
||||||
|
if (param.toString().includes('.')) return false
|
||||||
|
}
|
||||||
|
if (Number.isNaN(param)) return false
|
||||||
|
const num = parseInt(param)
|
||||||
|
if (param != num) return false
|
||||||
|
if (num && num > 0 && num <= 5000) return true
|
||||||
|
else return false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user