Skip to content
This repository was archived by the owner on Jan 24, 2023. It is now read-only.

Commit 074b4ad

Browse files
committed
feat: Upgrated to be compatible with simpli-web-sdk 1.0.0
1 parent 8b76863 commit 074b4ad

18 files changed

Lines changed: 428 additions & 96 deletions

File tree

packages/@simpli/cli-scaffold/generator/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ module.exports = (api, options) => {
2121
resourceModels.forEach((resource) => {
2222
const data = { model: resource }
2323
api.renderFrom('./injected', 'src/model/Template.ts', `./resource/${resource.name}.ts`, data)
24+
api.renderFrom('./injected', 'src/schema/Template.schema.ts', `./${resource.name}.schema.ts`, data)
2425
api.renderFrom('./injected', 'src/views/list/ListTemplateView.vue', `List${resource.name}View.vue`, data)
2526
})
2627

@@ -55,7 +56,7 @@ module.exports = (api, options) => {
5556
'normalize-scss': '7.0.1',
5657
'register-service-worker': '1.5.2',
5758
'simple-line-icons': '2.4.1',
58-
'simpli-web-sdk': '^0.1.11',
59+
'simpli-web-sdk': '^1.0.0',
5960
'vue': '^2.5.17',
6061
'vue-chartjs': '3.4.0',
6162
'vue-chartkick': '0.5.0',

packages/@simpli/cli-scaffold/generator/injected/src/model/Template.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,8 @@ export default class <%-model.name%> extends <%-model.isResource ? 'Resource' :
2626
<%_ } _%>
2727
<%_ for (var i in model.apis) { var api = model.apis[i] _%>
2828
<%-api.build(signIn.name, accountAttrName, passwordAttrName)-%>
29-
<%_ if (i < model.apis.length - 1 || model.isResource) { _%>
29+
<%_ if (i < model.apis.length - 1) { _%>
3030

3131
<%_ } _%>
3232
<%_ } _%>
33-
<%_ if (model.isResource) { _%>
34-
<%-model.buildScheme()%>
35-
<%-model.buildScheme(true)-%>
36-
<%_ } _%>
3733
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<%_ if (model.isResource) { _%>
2+
/**
3+
* Schema of <%-model.name%>
4+
* @author Simpli© CLI generator
5+
*/
6+
<%_ for (var i in model.resolvedSchemaDependencies) { var dependence = model.resolvedSchemaDependencies[i] _%>
7+
<%-dependence.build()%>
8+
<%_ } _%>
9+
10+
/* TODO: review generated schema */
11+
export default (model: <%-model.name%>): Schema => ({
12+
<%-model.buildSchema()%>
13+
})
14+
<%_ } _%>
Lines changed: 89 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,102 @@
11
<template>
22
<%_ var kebabCase = rootOptions.scaffoldSetup.kebabCase _%>
33
<div class="verti">
4-
<adap-header
5-
:collection="collection"
6-
:title="$t('classes.<%-model.name%>.title')"
7-
persistUrl="/<%-kebabCase(model.name)%>/new"
8-
:hasSearch="true" :hasCsv="true"
9-
/>
4+
<section class="header">
5+
<div class="horiz items-center gutter-10">
6+
<h1 class="m-0">
7+
{{$t('classes.<%-model.name%>.title')}}
8+
</h1>
9+
10+
<adap-searchfield :collection="collection" :placeholder="$t('app.search')"/>
11+
12+
<await name="query"></await>
13+
14+
<div class="weight-1"></div>
15+
16+
<span v-if="collection.items.length">
17+
{{ $t('app.totalLines', {total: collection.total}) }}
18+
</span>
19+
20+
<await name="downloadCsv">
21+
<button @click="downloadCsv">
22+
{{ $t('app.downloadCsv') }}
23+
</button>
24+
</await>
25+
26+
<router-link to="/<%-kebabCase(model.name)%>/new" class="btn primary">
27+
{{ $t('app.add') }}
28+
</router-link>
29+
</div>
30+
</section>
1031

1132
<section>
12-
<adap-table :collection="collection">
13-
<div slot="options" slot-scope="props" class="horiz nowrap">
14-
<a @click="openPersist(props.item)" class="icon icon-pencil"></a>
33+
<transition name="fade-up" mode="out-in">
34+
<div v-if="!collection.items.length" :key="0">
35+
<await name="query" spinner="MoonLoader">
36+
<h3 class="p-20 text-center">
37+
{{ $t('app.noDataToShow') }}
38+
</h3>
39+
</await>
40+
</div>
41+
42+
<div v-else :key="1">
43+
<div class="elevated square intense x-scroll">
44+
<table>
45+
<thead>
46+
<tr>
47+
<th></th>
48+
49+
<th v-for="(value, key) in collection.header" :key="key">
50+
<adap-orderby :collection="collection" :name="key" :label="value"/>
51+
</th>
52+
</tr>
53+
</thead>
54+
55+
<tbody>
56+
<tr v-for="(data, i) in collection.data" :key="i">
57+
<td class="horiz nowrap">
58+
<a @click="pushByName('edit<%-model.name%>', collection.items[i].$id)" class="icon icon-pencil"></a>
1559
<%_ if (model.resource.deletable) { _%>
16-
<a @click="openRemoveModal(props.item)" class="icon icon-trash"></a>
60+
<a @click="openRemoveModal(collection.items[i])" class="icon icon-trash"></a>
1761
<%_ } _%>
62+
</td>
63+
64+
<td v-for="(value, key) in data" :key="key">
65+
<resource-render v-model="collection.items[i]" :field="key"/>
66+
</td>
67+
</tr>
68+
</tbody>
69+
</table>
70+
</div>
71+
72+
<adap-pagination :collection="collection"/>
1873
</div>
19-
</adap-table>
74+
</transition>
2075
</section>
2176
<%_ if (model.resource.deletable) { _%>
2277

23-
<modal-remove
24-
name="modalRemove"
25-
:text="toRemove.nome"
26-
@cancel="closeRemoveModal"
27-
@confirm="removeItem"
28-
/>
78+
<modal-remove name="modalRemove" :text="toRemove.$tag" @cancel="closeRemoveModal" @confirm="removeItem"/>
2979
<%_ } _%>
3080
</div>
3181
</template>
3282

3383
<script lang="ts">
34-
import {Component, Vue} from 'vue-property-decorator'
84+
import {Component, Prop, Watch, Mixins, Vue} from 'vue-property-decorator'
3585
<%-model.injectIntoDependence().build()%>
3686
import PagedResp from '@/model/collection/PagedResp'
37-
import {$, pushByName} from '@/simpli'
87+
import {$, MixinQueryRouter, pushByName} from '@/simpli'
3888
39-
@Component
40-
export default class List<%-model.name%>View extends Vue {
89+
@Component({
90+
mixins: [MixinQueryRouter],
91+
})
92+
export default class List<%-model.name%>View extends Mixins<MixinQueryRouter>() {
4193
collection = new PagedResp(<%-model.name%>)
4294
<%_ if (model.resource.deletable) { _%>
4395
toRemove = new <%-model.name%>()
4496
<%_ } _%>
97+
pushByName = pushByName
4598
46-
openPersist(item: <%-model.name%>) {
47-
pushByName('edit<%-model.name%>', item.$id)
48-
}
4999
<%_ if (model.resource.deletable) { _%>
50-
51100
async removeItem() {
52101
await this.toRemove.remove()
53102
this.closeRemoveModal()
@@ -63,5 +112,19 @@
63112
this.toRemove = new <%-model.name%>()
64113
$.modal.close('modalRemove')
65114
}
66-
<%_ } _%> }
115+
116+
<%_ } _%>
117+
async downloadCsv() {
118+
const csv = new PagedResp(<%-model.name%>, {}, null, null)
119+
120+
const fetch = async () => await csv.search()
121+
await $.await.run(fetch, 'downloadCsv')
122+
123+
csv.downloadCsv()
124+
}
125+
126+
async mounted() {
127+
await this.collection.search()
128+
}
129+
}
67130
</script>

packages/@simpli/cli-scaffold/generator/injected/src/views/persist/PersistTemplateView.vue

Lines changed: 35 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,38 @@
11
<template>
22
<%_ var kebabCase = rootOptions.scaffoldSetup.kebabCase _%>
3-
<div>
4-
<h1 class="adap-header px-30 py-10 m-0">
5-
{{ $t("classes.<%-origin.name%>.title") }}
6-
</h1>
7-
8-
<await name="get" class="weight-1 items-center p-20">
9-
<form @submit.prevent="$await.run(persist, 'persist')" class="elevated padded w-full max-w-650">
10-
<%_ for (var i in origin.attrs) { var attr = origin.attrs[i] _%>
11-
<%-attr.buildPersist(origin.name, model.resp.originAttr)-%>
3+
<div class="verti">
4+
<section class="header">
5+
<h1 class="m-0">
6+
{{ $t('classes.<%-origin.name%>.title') }}
7+
</h1>
8+
</section>
9+
10+
<section class="container fluid">
11+
<await init name="find<%-origin.name%>Resp" class="my-20">
12+
<form class="elevated padded" @submit.prevent="$await.run(persist, 'persist')">
13+
14+
<div v-for="(schemaRow, field) in model.<%-model.resp.originAttr%>.$schema" :key="field">
15+
<%_ if (model.arrayAtrrs.length) { _%>
16+
<resource-input v-model="model.<%-model.resp.originAttr%>" :field="field" :selectItems="resource[field]"/>
17+
<%_ } else { _%>
18+
<resource-input v-model="model.<%-model.resp.originAttr%>" :field="field"/>
1219
<%_ } _%>
13-
<hr class="mb-20"/>
20+
</div>
21+
22+
<hr>
23+
24+
<await name="persist" class="items-center">
25+
<button type="submit" class="primary">{{ $t('persist.submit') }}</button>
26+
</await>
1427

15-
<await name="persist" class="verti items-center">
16-
<button type="submit" class="primary">{{ $t("persist.submit") }}</button>
17-
</await>
18-
</form>
19-
</await>
28+
</form>
29+
</await>
30+
</section>
2031
</div>
2132
</template>
2233

2334
<script lang="ts">
24-
import {Component, Prop, Vue} from 'vue-property-decorator'
35+
import {Component, Prop, Watch, Vue} from 'vue-property-decorator'
2536
<%-model.injectIntoDependence().build()%>
2637
import {$, successAndPush} from '@/simpli'
2738
@@ -30,10 +41,16 @@
3041
@Prop({type: [String, Number]}) id?: string
3142
model = new <%-model.name%>()
3243
44+
<%_ if (model.arrayAtrrs.length) { _%>
45+
get resource() {
46+
return {
47+
<%-model.buildPersistRespResourceGetter(origin)%>
48+
}
49+
}
50+
51+
<%_ } _%>
3352
async mounted() {
34-
await $.await.init('get')
3553
await this.model.find(this.id || 0)
36-
await $.await.done('get')
3754
}
3855
3956
async persist() {

packages/@simpli/cli-scaffold/generator/template/src/locale/en-US/lang.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,20 @@ export default {
110110
cpf: '###.###.###-##',
111111
cnpj: '##.###.###/####-##',
112112
rg: '##.###.###-#',
113-
cep: '#####-###',
114-
phone: '(##) #####-####',
113+
cep: '#####',
114+
phone: '(###) ###-####',
115+
phoneAlt: '(###) ###-####',
116+
},
117+
118+
filter: {
119+
phone: {
120+
regex: '(\\d{3})(\\d{3})(\\d{4})$',
121+
format: '($1) $2-$3',
122+
},
123+
cep: {
124+
regex: '(\\d{5})$',
125+
format: '$1',
126+
},
115127
},
116128

117129
boolean: {

packages/@simpli/cli-scaffold/generator/template/src/locale/pt-BR/lang.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,19 @@ export default {
111111
cnpj: '##.###.###/####-##',
112112
rg: '##.###.###-#',
113113
cep: '#####-###',
114-
phone: '(##) #####-####',
114+
phone: '(##) ####-####',
115+
phoneAlt: '(##) #####-####',
116+
},
117+
118+
filter: {
119+
phone: {
120+
regex: '(\\d{2})(\\d{4,5})(\\d{4})$',
121+
format: '($1) $2-$3',
122+
},
123+
cep: {
124+
regex: '(\\d{5})(\\d{3})$',
125+
format: '$1-$2',
126+
},
115127
},
116128

117129
boolean: {

packages/@simpli/cli-scaffold/generator/template/src/scss/app.scss

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,14 @@
1414

1515
@import "components/sidebar";
1616

17+
.header {
18+
padding: 10px 30px;
19+
20+
background: white;
21+
box-shadow: 2px 4px 20px -4px rgba(0, 0, 0, .4);
22+
z-index: 1;
23+
}
24+
1725
.form-group {
1826
display: flex;
1927
flex-flow: column nowrap;
@@ -153,6 +161,14 @@
153161
border-radius: $radius-base;
154162
padding: 0;
155163

164+
&.intense {
165+
@extend .pal-black-30.box-shadow.deep-15;
166+
}
167+
168+
&.square {
169+
border-radius: 0;
170+
}
171+
156172
&.padded {
157173
padding: #{$padding-base * 2};
158174

packages/@simpli/cli-scaffold/generator/template/src/scss/base.scss

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,13 +143,13 @@ section, .custom-scroll {
143143
/* Track */
144144
::-webkit-scrollbar-track {
145145
@extend .pal-black-10.bg;
146-
border-radius: $radius-base;
146+
//border-radius: $radius-base;
147147
}
148148

149149
/* Handle */
150150
::-webkit-scrollbar-thumb {
151151
@extend .pal-primary.bg;
152-
border-radius: $radius-base;
152+
//border-radius: $radius-base;
153153
}
154154

155155
/* Handle on hover */

packages/@simpli/cli-scaffold/generator/template/src/scss/variables.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ $success-color: #6da544;
1818
$warning-color: #ffda44;
1919
$danger-color: #cd2626;
2020

21-
$light-background-color: #F2FCFA;
21+
$light-background-color: #F2F2F2;
2222
$dark-background-color: #221A2A;
2323

2424
$display-small: 576px;

0 commit comments

Comments
 (0)