Skip to content

Commit

Permalink
Merge branch 'master' of github.com:hyoo-ru/mam_mol into fix-run
Browse files Browse the repository at this point in the history
  • Loading branch information
zerkalica committed Nov 25, 2024
2 parents a8a8612 + e23f38d commit 84c1e4a
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 26 deletions.
14 changes: 7 additions & 7 deletions .github/workflows/deploy.yml → .github/workflows/mol.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Deploy
name: $mol

on:
workflow_dispatch:
Expand Down Expand Up @@ -42,12 +42,12 @@ jobs:
if: github.ref == 'refs/heads/master'
runs-on: ubuntu-latest
steps:
- env:
GITHUB_TOKEN: ${{ secrets.GH_PAT }}
INPUTS_CLIENT_PAYLOAD: '{"repository":${{ toJson(github.event.repository.name) }}}'
INPUTS_EVENT_TYPE: dependency_changed
INPUTS_REPOSITORY: ${{ matrix.repo }}
uses: rekgrpth/github-repository-dispatch-shell-action@v1
- uses: peter-evans/repository-dispatch@v3
with:
token: ${{ secrets.GH_PAT }}
repository: ${{ matrix.repo }}
event-type: dependency_changed
client-payload: '{"repository":${{ toJson(github.event.repository.name) }}}'
strategy:
matrix:
repo:
Expand Down
9 changes: 6 additions & 3 deletions format/format.view.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,11 @@ namespace $.$$ {
const mask = this.mask( filtered )

if( ( prev?.[0] ?? 0 ) >= from ) return [ from, to ]

const lastAllow = ( value.length - [ ... value ].reverse().findIndex( letter => allow.includes( letter ) ) )%(value.length+1)

const lastAllow = (
value.length - [ ... value ].reverse().findIndex( letter => allow.includes( letter ) )
) % ( value.length + 1 )

if( lastAllow < from ) {
from = to = lastAllow
}
Expand All @@ -29,7 +32,7 @@ namespace $.$$ {
++ from
++ to
}

return [ from, to ]
}

Expand Down
66 changes: 51 additions & 15 deletions number/number.view.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace $.$$ {
export class $mol_number extends $.$mol_number {

value_limited( val? : number ) : number {
if (Number.isNaN( val )) return this.value(val)
if (Number.isNaN( val )) return this.value( val )
if ( val === undefined ) return this.value()

const min = this.value_min()
Expand All @@ -27,34 +27,70 @@ namespace $.$$ {
this.value_limited( ( this.value_limited() || 0 ) + this.precision_change() )
}

value_normalized(next?: string) {
const next_num = this.value_limited( next === undefined ? next : Number(next) )

if (Number.isNaN(next_num)) return ''
round(val: number) {
if (Number.isNaN(val)) return ''
if( val === 0 ) return '0'
if( !val ) return ''

const precision_view = this.precision_view()

if( next_num === 0 ) return '0'
if( !next_num ) return ''
if (! precision_view) return val.toFixed()

if( precision_view >= 1 ) {
return ( next_num / precision_view ).toFixed()
return ( val / precision_view ).toFixed()
} else {
const fixed_number = Math.log10( 1 / precision_view )
return next_num.toFixed( Math.ceil( fixed_number ) )
return val.toFixed( Math.ceil( fixed_number ) )
}
}

@ $mol_mem
override value_string( next? : string ) {
const current = this.value_normalized()
override value_string( next? : string ): string {
// Вытягиваем value
// Если кто-то поменяет из вне value, value_string надо обновить
const current = this.round( this.value_limited() )
if (next === undefined) return current

const precision = this.precision_view()

if ( next !== undefined) this.value_normalized( next )
// Точку в конце поставить нельзя, если precision_view целое число > 0
if ( precision - Math.floor(precision) === 0 ) next = next.replace(/[.,]/g, '')

return next ?? current
// Запятые меняем на точки, удаляем не-цифры и не-точки и лишние ноли в начале целой части.
// Минус получится ввести только в начале.
next = (this.value_min() < 0 && next.startsWith('-') ? '-' : '')
+ next.replace(/,/g, '.').replace(/[^\d\.]/g, '').replace(/^0{2,}/, '0')

let dot_pos = next.indexOf('.')

if (dot_pos !== -1) {
const prev = $mol_wire_probe(() => this.value_string()) ?? ''
const dot_pos_prev = prev.indexOf('.')
// Определяем где относительно предыдущей точки юзер поставил новую
if (dot_pos_prev === dot_pos) dot_pos = next.lastIndexOf('.')

// Из частей до и после новой точки старую точку удаляем
const frac = next.slice(dot_pos + 1).replace(/\./g, '')

// Если точка идет первой, перед ней пишем 0, что бы форматирование выглядело нормально в mask
next = (next.slice(0, dot_pos) || '0').replace(/\./g, '') + '.' + frac
}

// Оставляем старое значение в value есть сочетание, приводящие к NaN, например -.
if ( Number.isNaN(Number(next)) ) return next

if ( next.endsWith('.') ) return next
if ( next.endsWith('-') ) return next

// Если пустая строка - сетим NaN
// Применяем округления.
this.value_limited(Number(next || Number.NaN))

// Возвращаем все-равно не нормализованное значение
// Иначе нельзя ввести будет 10, если min/max 5..10
return next
}

@ $mol_mem
override dec_enabled() : boolean {
return this.enabled() && (
Expand Down
2 changes: 1 addition & 1 deletion page/page.view.tree
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
$mol_page $mol_view
dom_name \article
field *
attr *
^
tabIndex <= tabindex -1
sub /
Expand Down

0 comments on commit 84c1e4a

Please sign in to comment.