05 SRS based component
component template
- component can use srs data
- SRS => command can render compoenent
column template
Custom component can be used to display data in row.
Use case:
- edit data in row
- display context information for example document preview
XML |
---|
| <srs>
<def>
<itm name="unicode" model="column" type="v_srs_column"></itm>
<itm model="command" name="test">select 'Hello World'</itm>
<itm model="command" name="test2"><![CDATA[
/*XML reserved characters: > < require CDATA block*/
select 'Hello <-_->' Smiley ,getdate() date , 14 number
]]></itm>
<itm model="command" name="test3" link="self">select 'Hello' txt , 2.45 dec, 4.4512 dec4, 123 int, 'śćß' unicode, date() date</itm>
<itm model="command" name="test4" opts="server">select 'Hello' txt , 2.45 dec, 4.4512 dec4, 123 int, 'śćß' unicode, Getdate() date</itm>
<itm model="command" name="test5" link="self" type="v_srs_component">select * from test3</itm>
</def>
</srs>
|
Props:
table
current command rendered to table
api
current api
clipboard_items
- selected items (only in option component)
row
- current row data only in "column template"
column
- column, only in "column template"
value
- value, only in "column template"
Events:
@reload-event
- event on reload, example @reload-event="fetchData()"
Bash |
---|
| curl -L -o srs/examples/101.xml https://jetquery.io/examples/srs/101.xml --create-dirs
|
Examples
XML |
---|
| Vue.component('v_srs_component', {
template: `
<div :data-component="$options.name" class="xd-content">
<template v-if="system.ready">
<h2>Object</h2>
{{model}}
<h2>Array</h2>
<div v-for="(value,key,index) in table.rows">
{{value}}
<hr />
</div>
</template>
<template v-else>
Loading
</template>
</div>`,
props: ['table', 'api'],
data: function () {
return {
model: {},
system: {
ready: false,
},
}
},
methods: {
formSubmit() {
this.axpost("/api/srs/000/exec", this.model).then((response) => {
})
},
fetchData: function () {
let lines = this.convertSRSTableToObject(this.table) || []; //array of lines
this.$set(this, 'documentlines', lines);
let document = this.findSRSTableAndConvertToObject('view')[0] || {}; //read from props => api => find by name and assign first value to object
this.$set(this, 'document', document);
let cooperationlines = this.findSRSTableAndConvertToObject('cooperation') || []; //find by name and convert to array of objects
this.$set(this, 'cooperationlines', cooperationlines);
this.$emit('reload-event'); //reload event
//this.$parent.postSRS('view', 'view'); //optional reload event
//this.$parent.clipboard_items_clear(); //clipboard claar
}
},
watch: {
'$route.query.id': function () {
this.fetchData();
}
},
mounted: function () {
this.fetchData();
if (this.api && this.table) {
this.system.component_status = 1
}
}
})
routes.push({ path: '/xd', component: Vue.options.components['v_srs_component'] });
|
XML |
---|
| Vue.component('v_srs_column',
{
template: `
<div :data-component="$options.name">
<h1>column</h1>
{{column}}
<h1>value</h1>
{{value}}
<h1>row</h1>
{{row}}
<h1>model1</h1>
{{model1}}
<h1>model2</h1>
{{model2}}
<h1>model3</h1>
{{model3}}
<h1>model4</h1>
{{model4}}
</div>`,
// row selected row
props: [ 'table', 'api', 'row','column','value','clipboard_items'],
data () {
return {
model1:{},
model2:{},
model3:{},
model4:{}
};
},
methods: {
},
computed: {
},
mounted() {
this.model1 = this.convertSRSTableToObject(this.table)
//return [{"key":"value","key":"value" }]
this.model2 = this.convertSRSTablesToObject(this.api.tables)
//return { tablename: [{"key":"value","key":"value" },{"key":"value","key":"value" } ] }
this.model3 = this.convertSRSColumnsRowsToArray(this.table.columns,this.row);
//return [{"key":"value","key":"value" }]
this.model4 = this.convertSRSColumnsRowsToArray(this.table.columns,this.row)[0];
//return {"key":"value","key":"value" }
}
});
|
Bash |
---|
| curl -L -o components/srs/v_srs_component.js https://jetquery.io/examples/components-core/v_srs_component.js --create-dirs
curl -L -o components/srs/v_srs_component.js https://jetquery.io/examples/components-core/v_srs_column.js --create-dirs
|