Filterable attributes, Int64 entity

This commit is contained in:
barsdeveloper
2023-01-03 22:53:17 +01:00
parent f4ebfa488a
commit a16481194c
21 changed files with 401 additions and 214 deletions

View File

@@ -1,29 +0,0 @@
import { html } from "lit"
import ByteEntity from "../../entity/ByteEntity"
import IInputPinTemplate from "./IInputPinTemplate"
import INumericInputPinTemplate from "./INumericInputPinTemplate"
/** @typedef {import("../../entity/IntegerEntity").default} IntEntity */
/** @extends INumericInputPinTemplate<ByteEntity> */
export default class IntInputPinTemplate extends INumericInputPinTemplate {
setDefaultValue(values = [], rawValues = values) {
const integer = this.element.getDefaultValue(true)
if (!(integer instanceof ByteEntity)) {
throw new TypeError("Expected DefaultValue to be a ByteEntity")
}
integer.value = values[0]
this.element.requestUpdate("DefaultValue", integer)
}
renderInput() {
return html`
<div class="ueb-pin-input">
<ueb-input .singleLine="${true}"
.innerText="${IInputPinTemplate.stringFromUEToInput(this.element.getDefaultValue()?.toString() ?? "0")}">
</ueb-input>
</div>
`
}
}

View File

@@ -13,17 +13,19 @@ export default class INumericPinTemplate extends IInputPinTemplate {
if (!values || values.length == 0) {
values = [this.getInput()]
}
let parsedValues = []
for (const value of values) {
let num = parseFloat(value)
if (isNaN(num)) {
num = 0
updateDefaultValue = false
}
parsedValues.push(num)
}
super.setInputs(values, false)
this.setDefaultValue(parsedValues, values)
if (updateDefaultValue) {
let parsedValues = []
for (const value of values) {
let num = parseFloat(value)
if (isNaN(num)) {
num = 0
updateDefaultValue = false
}
parsedValues.push(num)
}
this.setDefaultValue(parsedValues, values)
}
}
/**

View File

@@ -13,18 +13,17 @@ export default class InputTemplate extends ITemplate {
}
#focusoutHandler = () => {
this.blueprint.acknowledgeEditText(false)
document.getSelection()?.removeAllRanges() // Deselect eventually selected text inside the input
getSelection().removeAllRanges() // Deselect eventually selected text inside the input
}
#inputSingleLineHandler =
/** @param {InputEvent} e */
e => /** @type {HTMLElement} */(e.target).querySelectorAll("br").forEach(br => br.remove())
#onKeydownBlurOnEnterHandler =
/** @param {KeyboardEvent} e */
e => {
if (e.code == "Enter" && !e.shiftKey) {
/** @type {HTMLElement} */(e.target).blur()
}
/** @param {InputEvent} e */
#inputSingleLineHandler = e =>
/** @type {HTMLElement} */(e.target).querySelectorAll("br").forEach(br => br.remove())
/** @param {KeyboardEvent} e */
#onKeydownBlurOnEnterHandler = e => {
if (e.code == "Enter" && !e.shiftKey) {
/** @type {HTMLElement} */(e.target).blur()
}
}
/** @param {InputElement} element */
initialize(element) {

View File

@@ -0,0 +1,23 @@
import { html } from "lit"
import IntInputPinTemplate from "./IntPinTemplate"
import INumericInputPinTemplate from "./INumericInputPinTemplate"
/** @typedef {import("../../entity/IntegerEntity").default} IntegerEntity */
export default class Int64InputPinTemplate extends IntInputPinTemplate {
/** @param {String[]} values */
setInputs(values = [], updateDefaultValue = false) {
if (!values || values.length == 0) {
values = [this.getInput()]
}
super.setInputs(values, false)
if (updateDefaultValue) {
if (!values[0].match(/[\-\+]?[0-9]+/)) {
return
}
const parsedValues = [BigInt(values[0])]
this.setDefaultValue(parsedValues, values)
}
}
}

View File

@@ -1,17 +1,16 @@
import { html } from "lit"
import IntegerEntity from "../../entity/IntegerEntity"
import INumericInputPinTemplate from "./INumericInputPinTemplate"
/** @typedef {import("../../entity/IntegerEntity").default} IntEntity */
/** @typedef {import("../../entity/IntegerEntity").default} IntegerEntity */
/** @extends INumericInputPinTemplate<IntEntity> */
/** @extends INumericInputPinTemplate<IntegerEntity> */
export default class IntInputPinTemplate extends INumericInputPinTemplate {
setDefaultValue(values = [], rawValues = values) {
let value = parseInt(values[0])
const integer = this.element.getDefaultValue(true)
integer.value = values[0]
this.element.requestUpdate("DefaultValue", integer)
this.inputContentElements[0].innerText = this.element.getDefaultValue()?.toString() // needed
this.element.requestUpdate()
}
renderInput() {