isu-elements
Version:
Polymer components for building web apps.
776 lines (682 loc) • 28.1 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, minimum-scale=1, initial-scale=1, user-scalable=yes">
<title>isu-table demo</title>
<script type="module">
import '../../node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js';
import '../../node_modules/@polymer/iron-demo-helpers/demo-pages-shared-styles.js';
import '../../node_modules/@polymer/iron-demo-helpers/demo-snippet.js';
import '../../isu-table';
import '../../isu-table-column';
import '../../isu-button';
import '../../isu-button-group';
</script>
<script type="module">
const $_documentContainer = document.createElement('template');
$_documentContainer.innerHTML = `<custom-style>
<style is="custom-style" include="demo-pages-shared-styles">
.centered {
min-width: 800px;
}
demo-snippet {
--demo-snippet-code: {
max-height: 500px;
}
}
</style>
</custom-style>`;
document.body.appendChild($_documentContainer.content);
</script>
</head>
<body>
<div class="vertical-section-container centered">
<h3>Basic isu-table with subItem demo</h3>
<demo-snippet>
<template>
<style>
#table {
width: 100%;
}
</style>
<isu-table id="table" tooltip>
<isu-table-column prop="sex" label="性别" width="200" model-as="user">
<template>
[[user.sex]]
</template>
</isu-table-column>
<isu-table-column prop="name" label="名称" width="100" sortable></isu-table-column>
<isu-table-column prop="phone" label="电话号码" width="160" sortable default-value="--" cell-style="text-align: right;color:red;"></isu-table-column>
<isu-table-column prop="phone" label="操作" width="300" type="operate" model-as="user">
<template>
<template is="dom-if" if="[[ isEqual(user.name, 'Wahson') ]]">
<isu-button class="action-bar" on-click="view">[[global.lookup]]</isu-button>
</template>
<template is="dom-if" if="[[ user.modify ]]">
<isu-button class="action-bar" on-click="modify">[[global.modify]]</isu-button>
</template>
<template is="dom-if" if="[[ user.actions ]]">
<isu-button-group label="[[global.more]]">
<template is="dom-repeat" items="[[user.actions]]" as="action">
<div on-click="more">[[action]]</div>
</template>
</isu-button-group>
</template>
</template>
</isu-table-column>
<isu-table-column-sub model-as="user">
<template>
<style>
.ext-container {
display: flex;
width: 550px;
}
.ext-container > div {
width: 250px;
}
</style>
<div class="ext-container">
<div>姓名:[[user.name]]</div>
<div>sex: [[user.sex]]</div>
<div>phone: [[user.phone]]</div>
</div>
<div class="ext-container">
<div>姓名:[[user.name]]</div>
<div>sex: [[user.sex]]</div>
<div>phone: [[user.phone]]</div>
</div>
</template>
</isu-table-column-sub>
</isu-table>
<script>
table.view = ({model}) => {
console.log("view", model.user);
};
table.modify = ({model}) => {
console.log("modify", model.user);
};
table.more = (e) => {
console.log(e.model.action, e.model.parentModel.user);
};
table.global = {
lookup: "查看",
modify: "修改",
more: "更多"
};
table.data = [
{sex: '男', name: 'Wahson', phone: '12341111116', modify: true},
{sex: '女', name: 'Rose', actions:['more']},
{sex: '女', name: 'Lucy', phone: '12390'},
{sex: '男', name: 'James', phone: '12326'},
{sex: '男', name: 'Cat', phone: '12349'},
{sex: '男', name: 'Apple', phone: '1211111111345', modify: true, actions:['more', 'more1']}
]
// console.log(table.innerTable)
//
// innerTable.data = [
// {sex: '男', name: 'Wahson', phone: '12341111116'},
// {sex: '女', name: 'Rose'},
// {sex: '女', name: 'Lucy', phone: '12390'},
// {sex: '男', name: 'James', phone: '12326'},
// {sex: '男', name: 'Cat', phone: '12349'},
// {sex: '男', name: 'Apple', phone: '1211111111345'}
// ]
</script>
</template>
</demo-snippet>
</div>
<div class="vertical-section-container centered">
<h3>固定表头</h3>
<demo-snippet>
<template>
<style>
#table9991 {
width: 100%;
}
</style>
<isu-table id="table9991" tooltip height="300">
<isu-table-column-sub model-as="user">
<template>
<style>
.ext-container {
display: flex;
width: 550px;
}
.ext-container > div {
width: 250px;
}
</style>
<div class="ext-container">
<div>姓名:[[user.name]]</div>
<div>sex: [[user.sex]]</div>
<div>phone: [[user.phone]]</div>
</div>
</template>
</isu-table-column-sub>
<isu-table-column prop="sex" label="性别" width="100" type="expand" model-as="user"></isu-table-column>
<isu-table-column prop="name" label="名称" width="100"></isu-table-column>
<isu-table-column prop="phone" label="电话号码" width="160" default-value="--" cell-style="text-align: right;"></isu-table-column>
<isu-table-column prop="phone" label="电话号码1" width="160" default-value="--" cell-style="text-align: right;"></isu-table-column>
<isu-table-column prop="phone" label="电话号码2" width="160" default-value="--" cell-style="text-align: right;"></isu-table-column>
<isu-table-column prop="phone" label="电话号码3" width="160" default-value="--" cell-style="text-align: right;"></isu-table-column>
<isu-table-column prop="phone" label="电话号码4" width="160" default-value="--" cell-style="text-align: right;"></isu-table-column>
<isu-table-column id="ratio" prop="ratio" label="比例" width="160" cell-style="text-align: right;"></isu-table-column>
<isu-table-column label="操作" width="300" type="operate" model-as="user" frozen>
<template>
<template is="dom-if" if="[[ isEqual(user.name, 'Wahson') ]]">
<isu-button class="action-bar" on-click="view">[[global.lookup]]</isu-button>
</template>
<template is="dom-if" if="[[ user.modify ]]">
<isu-button class="action-bar" on-click="modify">[[global.modify]]</isu-button>
</template>
<template is="dom-if" if="[[ user.actions ]]">
<isu-button-group label="[[global.more]]">
<template is="dom-repeat" items="[[user.actions]]" as="action">
<div on-click="more">[[action]]</div>
</template>
</isu-button-group>
</template>
</template>
</isu-table-column>
</isu-table>
<script>
table9991.view = ({model}) => {
console.log("view", model.user);
};
table9991.modify = ({model}) => {
console.log("modify", model.user);
};
table9991.more = (e) => {
console.log(e.model.action, e.model.parentModel.user);
};
table9991.global = {
lookup: "查看",
modify: "修改",
more: "更多"
};
ratio.formatter=(value)=>{return value+'%'}
table9991.data = [
{sex: '男', name: 'Wahson', phone: '12341111116', ratio: 3, modify: true},
{sex: '女', name: 'Rose', ratio: 3, actions:['more']},
{sex: '女', name: 'Lucy', ratio: 3, phone: '12390'},
{sex: '男', name: 'James', ratio: 3, phone: '12326', modify: true},
{sex: '男', name: 'Cat', ratio: 3, phone: '12349'},
{sex: '男', name: 'Apple', ratio: 3, phone: '1211111111345', modify: true, actions:['more', 'more1']}
]
</script>
</template>
</demo-snippet>
</div>
<div class="vertical-section-container centered">
<h3>固定列(固定左边列或固定右列)</h3>
<demo-snippet>
<template>
<style>
#table999 {
width: 100%;
}
</style>
<isu-table id="table999" tooltip>
<isu-table-column-sub model-as="user">
<template>
<style>
.ext-container {
display: flex;
width: 550px;
}
.ext-container > div {
width: 250px;
}
</style>
<div class="ext-container">
<div>姓名:[[user.name]]</div>
<div>sex: [[user.sex]]</div>
<div>phone: [[user.phone]]</div>
</div>
</template>
</isu-table-column-sub>
<isu-table-column prop="sex" label="性别" width="100" fixed></isu-table-column>
<isu-table-column prop="name" label="名称" width="100"></isu-table-column>
<isu-table-column prop="phone" label="电话号码" width="160" default-value="--" cell-style="text-align: right;"></isu-table-column>
<isu-table-column prop="phone" label="电话号码1" width="160" default-value="--" cell-style="text-align: right;"></isu-table-column>
<isu-table-column prop="phone" label="电话号码2" width="160" default-value="--" cell-style="text-align: right;"></isu-table-column>
<isu-table-column prop="phone" label="电话号码3" width="160" default-value="--" cell-style="text-align: right;"></isu-table-column>
<isu-table-column prop="phone" label="电话号码4" width="160" default-value="--" cell-style="text-align: right;"></isu-table-column>
<isu-table-column label="操作" width="300" type="operate" model-as="user" frozen fixed="right">
<template>
<template is="dom-if" if="[[ isEqual(user.name, 'Wahson') ]]">
<isu-button class="action-bar" on-click="view">[[global.lookup]]</isu-button>
</template>
<template is="dom-if" if="[[ user.modify ]]">
<isu-button class="action-bar" on-click="modify">[[global.modify]]</isu-button>
</template>
<template is="dom-if" if="[[ user.actions ]]">
<isu-button-group label="[[global.more]]">
<template is="dom-repeat" items="[[user.actions]]" as="action">
<div on-click="more">[[action]]</div>
</template>
</isu-button-group>
</template>
</template>
</isu-table-column>
</isu-table>
<script>
table999.view = ({model}) => {
console.log("view", model.user);
};
table999.modify = ({model}) => {
console.log("modify", model.user);
};
table999.more = (e) => {
console.log(e.model.action, e.model.parentModel.user);
};
table999.global = {
lookup: "查看",
modify: "修改",
more: "更多"
};
table999.data = [
{sex: '男', name: 'Wahson', phone: '12341111116', modify: true},
{sex: '女', name: 'Rose', actions:['more']},
{sex: '女', name: 'Lucy', phone: '12390'},
{sex: '男', name: 'James', phone: '12326', modify: true},
{sex: '男', name: 'Cat', phone: '12349'},
{sex: '男', name: 'Apple', phone: '1211111111345', modify: true, actions:['more', 'more1']}
]
</script>
</template>
</demo-snippet>
</div>
<div class="vertical-section-container centered">
<h3>带表框的表格</h3>
<demo-snippet>
<template>
<style>
#table {
width: 100%;
}
.container {
width: 100%;
height: 100%;
z-index: 999;
}
</style>
<div class="container">
<isu-table id="table1" border>
<isu-table-column-sub model-as="user">
<template>
<style>
.ext-container {
display: flex;
width: 550px;
}
.ext-container > div {
width: 250px;
}
</style>
<div class="ext-container">
<div>姓名:[[user.name]]</div>
<div>sex: [[user.sex]]</div>
<div>phone: [[user.phone]]</div>
</div>
</template>
</isu-table-column-sub>
<isu-table-column prop="sex" label="性别" width="100" model-as="user"></isu-table-column>
<isu-table-column prop="name" label="名称" cell-style="text-align: center" width="100"></isu-table-column>
<isu-table-column prop="phone" label="电话号码"></isu-table-column>
</isu-table>
<isu-pagination id="page1" total="5000" page-sizes='[10,20,30,40]' limit="10"></isu-pagination>
</div>
<script>
table1.data = [
{sex: '男', name: 'Wahson', phone: '1231231232', modify: true},
{sex: '女', name: 'Lucy', phone: '1231231233'},
{sex: '女', name: 'Rose', phone: '1231231234'},
{sex: '男', name: 'James', phone: '1231231235'}
]
</script>
</template>
</demo-snippet>
</div>
<div class="vertical-section-container centered">
<h3>表尾合计</h3>
<demo-snippet>
<template>
<style>
#table {
width: 100%;
}
.summary {
display: flex;
flex-flow: row nowrap;
justify-content: space-evenly;
}
</style>
<isu-table id="table2" show-summary show-index>
<isu-table-column prop="sex" label="性别" width="100" model-as="user"></isu-table-column>
<isu-table-column prop="name" label="名称" width="100" fixed></isu-table-column>
<isu-table-column prop="phone2" label="电话号码2" width="100"></isu-table-column>
<isu-table-column prop="phone1" label="电话号码1" width="200"></isu-table-column>
<isu-table-column prop="phone" label="电话号码" width="200"></isu-table-column>
<isu-table-column prop="phone3" label="电话号码3" width="200"></isu-table-column>
<div slot="summarySlot" class="summary">
<div>总价: 4人</div>
<div>男: 2人</div>
<div>女: 2人</div>
</div>
</isu-table>
<script>
table2.data = [
{phone1:'12',phone2:'2323423423423423',phone3:'3453534534', sex: '男', name: 'Wahson', phone: '1231231232', modify: true},
{phone1:'12',phone2:'2323423423423423',phone3:'3453534534', sex: '女', name: 'Lucy', phone: '1231231233'},
{phone1:'12',phone2:'2323423423423423',phone3:'3453534534', sex: '女', name: 'Rose', phone: '1231231234'},
{phone1:'12',phone2:'2323423423423423',phone3:'3453534534', sex: '男', name: 'James', phone: '1231231235'}
]
</script>
</template>
</demo-snippet>
</div>
<div class="vertical-section-container centered">
<h3>同一列显示多个字段</h3>
<demo-snippet>
<template>
<style>
#table {
width: 100%;
}
.summary {
display: flex;
flex-flow: row nowrap;
justify-content: space-evenly;
}
</style>
<isu-table id="table3" show-index>
<isu-table-column label="名称 / 性别" width="100" props="name, sex" separator=" / "></isu-table-column>
<isu-table-column prop="phone" label="电话号码" width="200"></isu-table-column>
<div slot="summarySlot" class="summary">
<div>总价: 4人</div>
<div>男: 2人</div>
<div>女: 2人</div>
</div>
</isu-table>
<script>
table3.data = [
{sex: '男', name: 'Wahson', phone: '1231231232', modify: true},
{sex: '女', name: 'Lucy', phone: '1231231233'},
{sex: '女', name: 'Rose', phone: '1231231234'},
{sex: '男', name: 'James', phone: '1231231235'}
]
</script>
</template>
</demo-snippet>
</div>
<div class="vertical-section-container centered">
<h3>可多选全选表格</h3>
<demo-snippet>
<template>
<style>
#table {
width: 100%;
}
.summary {
display: flex;
flex-flow: row nowrap;
justify-content: space-evenly;
}
</style>
<isu-table id="table31" selectable>
<isu-table-column label="名称 / 性别" width="100" props="name, sex" separator=" / "></isu-table-column>
<isu-table-column prop="phone" label="电话号码" width="200"></isu-table-column>
<div slot="summarySlot" class="summary">
<div>总价: 4人</div>
<div>男: 2人</div>
<div>女: 2人</div>
</div>
</isu-table>
<script>
table31.data = [
{sex: '男', name: 'Wahson', phone: '1231231232', modify: true},
{sex: '女', name: 'Lucy', phone: '1231231233'},
{sex: '女', name: 'Rose', phone: '1231231234'},
{sex: '男', name: 'James', phone: '1231231235'}
];
table31.addEventListener('row-selection-changed', ({detail}) => {
console.log(detail, table31.getSelectedRows());
});
table31.addEventListener('rows-all-selection-changed', ({detail}) => {
console.log(detail);
})
</script>
</template>
</demo-snippet>
</div>
<div class="vertical-section-container centered">
<h3>只可单选表格</h3>
<demo-snippet>
<template>
<style>
#table {
width: 100%;
}
.summary {
display: flex;
flex-flow: row nowrap;
justify-content: space-evenly;
}
</style>
<isu-table id="table33" selectable radio>
<isu-table-column label="名称 / 性别" width="100" props="name, sex" separator=" / "></isu-table-column>
<isu-table-column prop="phone" label="电话号码" width="200"></isu-table-column>
<div slot="summarySlot" class="summary">
<div>总价: 4人</div>
<div>男: 2人</div>
<div>女: 2人</div>
</div>
</isu-table>
<script>
table33.data = [
{sex: '男', name: 'Wahson', phone: '1231231232', modify: true},
{sex: '女', name: 'Lucy', phone: '1231231233'},
{sex: '女', name: 'Rose', phone: '1231231234'},
{sex: '男', name: 'James', phone: '1231231235'}
];
table33.addEventListener('row-selection-changed', ({detail}) => {
console.log(detail, table33.getSelectedRows());
});
table33.addEventListener('rows-all-selection-changed', ({detail}) => {
console.log(detail);
})
</script>
</template>
</demo-snippet>
</div>
<div class="vertical-section-container centered">
<h3>表格无数据</h3>
<demo-snippet>
<template>
<style>
#table {
width: 100%;
}
.summary {
display: flex;
flex-flow: row nowrap;
justify-content: space-evenly;
}
</style>
<isu-table show-index>
<isu-table-column prop="name" label="名称 / 性别" width="100" props="name, sex"></isu-table-column>
<isu-table-column prop="phone" label="电话号码" width="200"></isu-table-column>
</isu-table>
</template>
</demo-snippet>
</div>
<div class="vertical-section-container centered">
<h3>斑马纹</h3>
<demo-snippet>
<template>
<style>
#table {
width: 100%;
}
</style>
<isu-table id="tableStriped" stripe>
<isu-table-column-sub model-as="user">
<template>
<style>
.ext-container {
display: flex;
width: 550px;
}
.ext-container > div {
width: 250px;
}
</style>
<div class="ext-container">
<div>姓名:[[user.name]]</div>
<div>sex: [[user.sex]]</div>
<div>phone: [[user.phone]]</div>
</div>
</template>
</isu-table-column-sub>
<isu-table-column prop="sex" label="性别" width="100" model-as="user"></isu-table-column>
<isu-table-column prop="name" label="名称" width="100" sortable></isu-table-column>
<isu-table-column prop="phone" label="电话号码" width="160" sortable default-value="--" cell-style="text-align: right;color:red;"></isu-table-column>
<isu-table-column prop="phone" label="操作" width="300" type="operate" model-as="user">
<template>
<template is="dom-if" if="[[ isEqual(user.name, 'Wahson') ]]">
<isu-button class="action-bar" on-click="view">[[global.lookup]]</isu-button>
</template>
<template is="dom-if" if="[[ user.modify ]]">
<isu-button class="action-bar" on-click="modify">[[global.modify]]</isu-button>
</template>
<template is="dom-if" if="[[ user.actions ]]">
<isu-button-group label="[[global.more]]">
<template is="dom-repeat" items="[[user.actions]]" as="action">
<div on-click="more">[[action]]</div>
</template>
</isu-button-group>
</template>
</template>
</isu-table-column>
</isu-table>
<script>
tableStriped.view = ({model}) => {
console.log("view", model.user);
};
tableStriped.modify = ({model}) => {
console.log("modify", model.user);
};
tableStriped.more = (e) => {
console.log(e.model.action, e.model.parentModel.user);
};
tableStriped.global = {
lookup: "查看",
modify: "修改",
more: "更多"
};
tableStriped.data = [
{sex: '男', name: 'Wahson', phone: '12341111116', modify: true},
{sex: '女', name: 'Rose', actions:['more']},
{sex: '女', name: 'Lucy', phone: '12390'},
{sex: '男', name: 'James', phone: '12326'},
{sex: '男', name: 'Cat', phone: '12349'},
{sex: '男', name: 'Apple', phone: '1211111111345', modify: true, actions:['more', 'more1']}
]
</script>
</template>
</demo-snippet>
</div>
<div class="vertical-section-container centered">
<h3>点击列可以直接打开二级列表</h3>
<demo-snippet>
<template>
<style>
#table {
width: 100%;
}
</style>
<isu-table id="tableRow" tooltip expand-on-click-row>
<isu-table-column prop="sex" label="性别" width="100" model-as="user">
<template>
<style>
.ext-container {
display: flex;
width: 550px;
}
.ext-container > div {
width: 250px;
}
</style>
<div class="ext-container">
<div>姓名:[[user.name]]</div>
<div>sex: [[user.sex]]</div>
<div>phone: [[user.phone]]</div>
</div>
<div class="ext-container">
<div>姓名:[[user.name]]</div>
<div>sex: [[user.sex]]</div>
<div>phone: [[user.phone]]</div>
</div>
</template>
</isu-table-column>
<isu-table-column prop="name" label="名称" width="100" sortable></isu-table-column>
<isu-table-column prop="phone" label="电话号码" width="160" sortable default-value="--" cell-style="text-align: right;color:red;"></isu-table-column>
<isu-table-column prop="phone" label="操作" width="300" type="operate" model-as="user">
<template>
<template is="dom-if" if="[[ isEqual(user.name, 'Wahson') ]]">
<isu-button class="action-bar" on-click="view">[[global.lookup]]</isu-button>
</template>
<template is="dom-if" if="[[ user.modify ]]">
<isu-button class="action-bar" on-click="modify">[[global.modify]]</isu-button>
</template>
<template is="dom-if" if="[[ user.actions ]]">
<isu-button-group label="[[global.more]]">
<template is="dom-repeat" items="[[user.actions]]" as="action">
<div on-click="more">[[action]]</div>
</template>
</isu-button-group>
</template>
</template>
</isu-table-column>
</isu-table>
<script>
tableRow.view = ({model}) => {
console.log("view", model.user);
};
tableRow.modify = ({model}) => {
console.log("modify", model.user);
};
tableRow.more = (e) => {
console.log(e.model.action, e.model.parentModel.user);
};
tableRow.global = {
lookup: "查看",
modify: "修改",
more: "更多"
};
tableRow.data = [
{sex: '男', name: 'Wahson', phone: '12341111116', modify: true},
{sex: '女', name: 'Rose', actions:['more']},
{sex: '女', name: 'Lucy', phone: '12390'},
{sex: '男', name: 'James', phone: '12326'},
{sex: '男', name: 'Cat', phone: '12349'},
{sex: '男', name: 'Apple', phone: '1211111111345', modify: true, actions:['more', 'more1']}
]
// console.log(table.innerTable)
//
// innerTable.data = [
// {sex: '男', name: 'Wahson', phone: '12341111116'},
// {sex: '女', name: 'Rose'},
// {sex: '女', name: 'Lucy', phone: '12390'},
// {sex: '男', name: 'James', phone: '12326'},
// {sex: '男', name: 'Cat', phone: '12349'},
// {sex: '男', name: 'Apple', phone: '1211111111345'}
// ]
</script>
</template>
</demo-snippet>
</div>
</body>
</html>