Flatten nested repos

This commit is contained in:
sas.fajri
2026-04-27 10:13:31 +07:00
parent 01c2963a43
commit 8347aef8f4
17935 changed files with 5015229 additions and 3 deletions

View File

@@ -0,0 +1,69 @@
var dialogFormComponent = {
template: `
<template>
<v-layout row justify-center>
<v-dialog v-model="dialog" persistent max-width="500px">
<v-btn slot="activator" color="primary" dark>Open Dialog</v-btn>
<v-card>
<v-card-title>
<span class="headline">User Profile</span>
</v-card-title>
<v-card-text>
<v-container grid-list-md>
<v-layout wrap>
<v-flex xs12 sm6 md4>
<v-text-field label="Legal first name" required></v-text-field>
</v-flex>
<v-flex xs12 sm6 md4>
<v-text-field label="Legal middle name" hint="example of helper text only on focus"></v-text-field>
</v-flex>
<v-flex xs12 sm6 md4>
<v-text-field
label="Legal last name"
hint="example of persistent helper text"
persistent-hint
required
></v-text-field>
</v-flex>
<v-flex xs12>
<v-text-field label="Email" required></v-text-field>
</v-flex>
<v-flex xs12>
<v-text-field label="Password" type="password" required></v-text-field>
</v-flex>
<v-flex xs12 sm6>
<v-select
:items="['0-17', '18-29', '30-54', '54+']"
label="Age"
required
></v-select>
</v-flex>
<v-flex xs12 sm6>
<v-autocomplete
:items="['Skiing', 'Ice hockey', 'Soccer', 'Basketball', 'Hockey', 'Reading', 'Writing', 'Coding', 'Basejump']"
label="Interests"
multiple
chips
></v-autocomplete>
</v-flex>
</v-layout>
</v-container>
<small>*indicates required field</small>
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="blue darken-1" flat @click.native="dialog = false">Close</v-btn>
<v-btn color="blue darken-1" flat @click.native="dialog = false">Save</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</v-layout>
</template>
`,
data: () => ({
dialog: false
})
};
export { dialogFormComponent };

View File

@@ -0,0 +1,71 @@
var ioAlatComponent = {
template: `
<v-flex md3 xs6 class='p-io-alat'>
<v-card
class="mx-auto io-alat light-green lighten-4"
light
max-width="400"
>
<v-card-title >
<span class="title font-weight-light"> Title </span>
</v-card-title>
<v-card-text>
<div>
<span class="label">Port</span>
<span class="label-sep">:</span>
<span class="label-val">123</span>
</div>
<div>
<span class="label">Glu</span>
<span class="label-sep">:</span>
<span class="label-val">1023</span>
</div>
<div>
<span class="label">DB</span>
<span class="label-sep">:</span>
<span class="label-val">pdb</span>
</div>
<div>
<span class="label">LIS</span>
<span class="label-sep">:</span>
<span class="label-val">Enabled</span>
</div>
</v-card-text>
<v-card-actions class="action light-green lighten-1">
<v-spacer></v-spacer>
<v-icon color="#EFFCED" v-bind:class="true" >get_app</v-icon>
</v-card-actions>
</v-card>
</v-flex>
`,
data: function() {
return {}
},
methods: {},
components: {
SheetFooter: {
functional: true,
render(h, {
children
}) {
return h('v-sheet', {
staticClass: 'mt-auto align-center justify-center d-flex',
props: {
color: 'rgba(0, 0, 0, .36)',
dark: true,
height: 50
}
}, children)
}
}
}
}
export {
ioAlatComponent
};

View File

@@ -0,0 +1,139 @@
var listBankComponent = {
template: `
<v-card class="xs12 md12" >
<v-card-title>
<v-layout>
<v-flex xs12 sm8>
<v-toolbar-title>Bank Listing <v-btn depressed small color="primary">New Data</v-btn></v-toolbar-title>
</v-flex>
<v-flex xs12 sm4>
<v-spacer></v-spacer>
<v-text-field
v-model="query"
append-icon="search"
@click:clear="clearSearch"
@keydown.enter="doSearch"
@click:append="doSearch"
label="Search"
single-line
hide-details
clearable
class="xs12 md3"
></v-text-field>
</v-flex>
</v-layout>
</v-card-title>
<v-data-table :headers="headers" :items="banks"
:loading="isLoading"
hide-actions class="elevation-1">
<template slot="items" slot-scope="props">
<td class="text-xs-center">{{ props.item.M_BankCode }}</td>
<td>{{ props.item.M_BankName }}</td>
<td>{{ props.item.M_BankAddress }}</td>
<td>{{ props.item.M_BankBranch }}</td>
<td><v-btn depressed small color="info">Edit</v-btn> <v-btn depressed small color="error">Delete</v-btn></td>
</template>
<template slot="no-data">
<v-alert :value="isError" color="error" icon="warning">
{{errorMessage}}
</v-alert>
<v-spacer></v-spacer>
</template>
<template slot="footer">
<td colspan="2" class="text-xs-left">
Total Records : {{totalRecord}}, page {{page}} of {{totalPage}}.
</td>
<td colspan="3" class="text-xs-right">
<v-pagination :length="totalPage" :value="page" :total-visible="10"
@next="nextPage" @prev="prevPage"
@input="gotoPage" >
</v-pagination>
</td>
</template>
</v-data-table>
</v-card>
`,
mounted() {
this.doSearch();
},
data() {
return {
query: "",
headers: [{
text: "Code",
align: "left",
sortable: false,
value: "M_BankCode"
},
{
text: "Name",
align: "left",
sortable: false,
value: "M_BankName"
},
{
text: "Address",
value: "M_BankAddress",
sortable: false,
align: "left",
width: "30%"
},
{
text: "Branch",
value: "M_BankBranch",
sortable: false,
align: "left"
},
{
text: "Action",
value: "action",
sortable: false,
align: "center",
width: "20%"
}
]
};
},
methods: {
clearSearch() {
this.query = "";
this.doSearch();
},
doSearch(page = 1, rowPerPage = 8) {
if (this.query == null) this.query = "";
this.$store.dispatch("searchBank", {
query: this.query,
page,
rowPerPage
});
},
prevPage() {
let c_page = this.page - 1;
this.doSearch(c_page);
},
nextPage() {
let c_page = this.page + 1;
this.doSearch(c_page);
},
gotoPage(e) {
let c_page = e;
this.doSearch(c_page);
}
},
computed: {
...Vuex.mapState({
isLoading: state => state.isLoading,
isError: state => state.isError,
errorMessage: state => state.errorMessage,
banks: state => state.rows,
totalRecord: state => state.totalRecord,
page: state => state.page,
totalPage: state => state.totalPage
})
},
updated() {
console.log("Component Updated");
}
};
export { listBankComponent };

View File

@@ -0,0 +1,138 @@
var listPatientComponent = {
template: `
<v-card class="xs12 md12" >
<v-card-title>
<v-layout>
<v-flex xs12 sm8>
<v-toolbar-title>Patient Listing</v-toolbar-title>
</v-flex>
<v-flex xs12 sm4>
<v-spacer></v-spacer>
<v-text-field
v-model="query"
append-icon="search"
@click:clear="clearSearch"
@keydown.enter="doSearch"
@click:append="doSearch"
label="Search"
single-line
hide-details
clearable
class="xs12 md3"
></v-text-field>
</v-flex>
</v-layout>
</v-card-title>
<v-data-table :headers="headers" :items="patients"
:loading="isLoading"
hide-actions class="elevation-1">
<template slot="items" slot-scope="props">
<td>{{ props.item.M_PatientNoReg }}</td>
<td>{{ props.item.M_PatientName }}</td>
<td class="text-xs-center">{{ props.item.M_PatientDOB }}</td>
<td>{{ props.item.M_PatientHP }}</td>
<td>{{ props.item.M_PatientAddress }}</td>
</template>
<template slot="no-data">
<v-alert :value="isError" color="error" icon="warning">
{{errorMessage}}
</v-alert>
<v-spacer></v-spacer>
</template>
<template slot="footer">
<td colspan="2" class="text-xs-left">
Total Records : {{totalRecord}}, page {{page}} of {{totalPage}}.
</td>
<td colspan="3" class="text-xs-right">
<v-pagination :length="totalPage" :value="page" :total-visible="10"
@next="nextPage" @prev="prevPage"
@input="gotoPage" >
</v-pagination>
</td>
</template>
</v-data-table>
</v-card>
`,
mounted() {
this.doSearch();
},
data() {
return {
query: "",
headers: [
{
text: "No. Reg",
align: "left",
sortable: false,
value: "M_PatientNoReg"
},
{
text: "Name",
align: "left",
sortable: false,
value: "M_PatientName"
},
{
text: "DOB",
align: "center",
sortable: false,
value: "M_PatientDOB"
},
{
text: "HP",
value: "M_PatientHP",
sortable: false,
align: "left"
},
{
text: "Address",
value: "M_PatientAddress",
sortable: false,
align: "left"
}
]
};
},
methods: {
clearSearch() {
this.query = "";
this.doSearch();
},
doSearch(page = 1, rowPerPage = 8) {
if (this.query == null) this.query = "";
this.$store.dispatch("searchPatient", {
query: this.query,
page,
rowPerPage
});
},
prevPage() {
let c_page = this.page - 1;
this.doSearch(c_page);
},
nextPage() {
let c_page = this.page + 1;
this.doSearch(c_page);
},
gotoPage(e) {
let c_page = e;
this.doSearch(c_page);
}
},
computed: {
...Vuex.mapState({
isLoading: state => state.isLoading,
isError: state => state.isError,
errorMessage: state => state.errorMessage,
patients: state => state.rows,
totalRecord: state => state.totalRecord,
page: state => state.page,
totalPage: state => state.totalPage
})
},
updated() {
console.log("Component Updated");
}
};
export { listPatientComponent };

View File

@@ -0,0 +1,266 @@
var oneFormPatientComponent= {
template: `
<v-form ref="form" v-model="valid" lazy-validation >
<v-container>
<v-layout>
<v-flex xs12 >
<v-text-field
v-model="Nama"
:rules="namaRules"
label="Nama"
required
></v-text-field>
<v-text-field
v-model="Alamat"
:rules="alamatRules"
label="Alamat"
required
></v-text-field>
<v-text-field
v-model="Umur"
:rules="umurRules"
label="Umur"
required
></v-text-field>
<v-text-field
v-model="Riwayat"
:rules="riwayatRules"
label="Riwayat Pemeriksaan"
></v-text-field>
<v-select
v-model="select"
:items="items"
:rules="[v => !!v || 'Item is required']"
label="Item"
required
></v-select>
<v-checkbox
v-model="checkbox"
:rules="[v => !!v || 'You must agree to continue!']"
label="Do you agree?"
required
></v-checkbox>
<v-btn
:disabled="!valid"
color="success"
@click="validate"
>
Tambah Pasien
</v-btn>
<v-btn
color="error"
@click="reset"
>
Save
</v-btn>
<v-btn
color="warning"
@click="resetValidation"
>
Test
</v-btn>
<v-btn
:disabled="!valid"
color="success"
@click="validate"
>
Test
</v-btn>
<v-btn
color="error"
@click="reset"
>
Test
</v-btn>
<v-btn
color="warning"
@click="resetValidation"
>
Test
</v-btn>
<v-btn
color="warning"
@click="resetValidation"
>
Test
</v-btn>
<v-btn
:disabled="!valid"
color="success"
@click="validate"
>
Test
</v-btn>
<v-btn
color="error"
@click="reset"
>
Test
</v-btn>
<v-btn
color="warning"
@click="resetValidation"
>
Test
</v-btn>
<v-btn
color="warning"
@click="resetValidation"
>
Test
</v-btn>
<v-btn
:disabled="!valid"
color="success"
@click="validate"
>
Test
</v-btn>
<v-btn
color="error"
@click="reset"
>
Test
</v-btn>
<v-btn
color="warning"
@click="resetValidation"
>
Test
</v-btn>
<v-btn
color="warning"
@click="resetValidation"
>
Test
</v-btn>
<v-btn
:disabled="!valid"
color="success"
@click="validate"
>
Test
</v-btn>
<v-btn
color="error"
@click="reset"
>
Test
</v-btn>
<v-btn
color="warning"
@click="resetValidation"
>
Test
</v-btn>
<v-btn
color="warning"
@click="resetValidation"
>
Test
</v-btn>
<v-btn
:disabled="!valid"
color="success"
@click="validate"
>
Test
</v-btn>
<v-btn
color="error"
@click="reset"
>
Test
</v-btn>
<v-btn
color="warning"
@click="resetValidation"
>
Test
</v-btn>
</v-layout>
</v-container>
</v-form>
`,
data: function() {
return {
valid: true,
name: '',
nameRules: [
v => !!v || 'Name is required',
v => (v && v.length <= 10) || 'Name must be less than 10 characters'
],
email: '',
emailRules: [
v => !!v || 'E-mail is required',
v => /.+@.+/.test(v) || 'E-mail must be valid'
],
select: null,
items: [
'Item 1',
'Item 2',
'Item 3',
'Item 4'
],
checkbox: false
};
},
methods: {
validate () {
if (this.$refs.form.validate()) {
this.snackbar = true
}
},
reset () {
this.$refs.form.reset()
},
resetValidation () {
this.$refs.form.resetValidation()
}
}
};
export { oneFormPatientComponent };

View File

@@ -0,0 +1,165 @@
var oneListPatientComponent= {
template: `
<v-container>
<v-layout>
<v-data-table
v-model="selected"
:headers="headers"
:items="desserts"
:pagination.sync="pagination"
select-all
item-key="name"
class="elevation-1"
>
<template slot="headers" slot-scope="props">
<tr>
<th>
<v-checkbox
:input-value="props.all"
:indeterminate="props.indeterminate"
primary
hide-details
@click.stop="toggleAll"
></v-checkbox>
</th>
<th
v-for="header in props.headers"
:key="header.text"
:class="['column sortable', pagination.descending ? 'desc' : 'asc', header.value === pagination.sortBy ? 'active' : '']"
@click="changeSort(header.value)"
>
<v-icon small>arrow_upward</v-icon>
{{ header.text }}
</th>
</tr>
</template>
<template slot="items" slot-scope="props">
<tr :active="props.selected" @click="props.selected = !props.selected">
<td>
<v-checkbox
:input-value="props.selected"
primary
hide-details
></v-checkbox>
</td>
<td>{{ props.item.name }}</td>
<td class="text-xs-right">{{ props.item.calories }}</td>
<td class="text-xs-right">{{ props.item.fat }}</td>
<td class="text-xs-right">{{ props.item.carbs }}</td>
</tr>
</template>
</v-data-table>
</v-layout>
</v-container>
`,
data: function() {
return {
pagination: {
sortBy: 'name'
},
selected: [],
headers: [
{
text: 'Pemeriksaan',
align: 'left',
value: 'name'
},
{ text: 'Harga', value: 'calories' },
{ text: 'Diskon', value: 'fat' },
{ text: 'Total (g)', value: 'carbs' },
],
desserts: [
{
name: 'Frozen Yogurt',
calories: 159,
fat: 6.0,
carbs: 24,
},
{
name: 'Ice cream sandwich',
calories: 237,
fat: 9.0,
carbs: 37,
},
{
name: 'Eclair',
calories: 262,
fat: 16.0,
carbs: 23,
},
{
name: 'Cupcake',
calories: 305,
fat: 3.7,
carbs: 67,
},
{
name: 'Gingerbread',
calories: 356,
fat: 16.0,
carbs: 49,
},
{
name: 'Jelly bean',
calories: 375,
fat: 0.0,
carbs: 94,
},
{
name: 'Lollipop',
calories: 392,
fat: 0.2,
carbs: 98,
},
{
name: 'Honeycomb',
calories: 408,
fat: 3.2,
carbs: 87,
},
{
name: 'Donut',
calories: 452,
fat: 25.0,
carbs: 51,
},
{
name: 'KitKat',
calories: 518,
fat: 26.0,
carbs: 65,
}
]
};
},
methods: {
validate () {
if (this.$refs.form.validate()) {
this.snackbar = true
}
},
reset () {
this.$refs.form.reset()
},
resetValidation () {
this.$refs.form.resetValidation()
}
}
};
export { oneListPatientComponent };

View File

@@ -0,0 +1,12 @@
var searchComponent = {
template: `
<div>
<h1>Search Component</h1>
</div>
`,
data() {
return {};
},
methods: {}
};
export { searchComponent };

View File

@@ -0,0 +1,38 @@
var smartNavbarComponent = {
template: `
<span>
<v-navigation-drawer v-model="drawer" fixed app>
<v-list dense>
<v-list-tile>
<v-list-tile-action>
<v-icon>home</v-icon>
</v-list-tile-action>
<v-list-tile-content>
<v-list-tile-title>Home</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
<v-list-tile>
<v-list-tile-action>
<v-icon>contact_mail</v-icon>
</v-list-tile-action>
<v-list-tile-content>
<v-list-tile-title>Contact</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
</v-list>
</v-navigation-drawer>
<v-toolbar color="blue lighten-2" dark fixed app>
<v-toolbar-side-icon @click.stop="drawer = !drawer"></v-toolbar-side-icon>
<img src="/one-ui/libs/image/onetext.png" alt="image" height = 15px>
</v-toolbar>
</span>
`,
data: function() {
return {
drawer: false
};
},
methods: {}
};
export { smartNavbarComponent };