diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/app/common/views/components/frac.vue | 49 | ||||
| -rw-r--r-- | src/client/app/common/views/components/index.ts | 2 |
2 files changed, 51 insertions, 0 deletions
diff --git a/src/client/app/common/views/components/frac.vue b/src/client/app/common/views/components/frac.vue new file mode 100644 index 0000000000..1840bd28fe --- /dev/null +++ b/src/client/app/common/views/components/frac.vue @@ -0,0 +1,49 @@ +<template> +<span class="mk-frac"><span>{{ pad }}</span><span>{{ value }} / {{ total }}</span></span> +</template> + +<script lang="ts"> +import Vue from 'vue'; +import i18n from '../../../i18n'; + +export default Vue.extend({ + i18n: i18n(), + props: { + value: { + type: Number, + required: true, + }, + total: { + type: Number, + required: true, + }, + }, + computed: { + pad(this: { + value: number; + total: number; + length(value: number): number; + }) { + return '0'.repeat(this.length(this.total) - this.length(this.value)); + }, + }, + methods: { + length(value: number) { + const string = value.toString(); + + return string.includes('e') ? -~string.substr(string.indexOf('e')) : string.length; + }, + }, +}); +</script> + +<style lang="stylus" scoped> +.mk-frac + -webkit-font-feature-settings 'tnum' + -moz-font-feature-settings 'tnum' + font-feature-settings 'tnum' + font-variant-numeric tabular-nums + + > :first-child + visibility hidden +</style> diff --git a/src/client/app/common/views/components/index.ts b/src/client/app/common/views/components/index.ts index d5392fb8cd..4253118ba8 100644 --- a/src/client/app/common/views/components/index.ts +++ b/src/client/app/common/views/components/index.ts @@ -33,6 +33,7 @@ import fileTypeIcon from './file-type-icon.vue'; import emoji from './emoji.vue'; import welcomeTimeline from './welcome-timeline.vue'; import userList from './user-list.vue'; +import frac from './frac.vue'; import uiInput from './ui/input.vue'; import uiButton from './ui/button.vue'; import uiHorizonGroup from './ui/horizon-group.vue'; @@ -82,6 +83,7 @@ Vue.component('mk-file-type-icon', fileTypeIcon); Vue.component('mk-emoji', emoji); Vue.component('mk-welcome-timeline', welcomeTimeline); Vue.component('mk-user-list', userList); +Vue.component('mk-frac', frac); Vue.component('ui-input', uiInput); Vue.component('ui-button', uiButton); Vue.component('ui-horizon-group', uiHorizonGroup); |