oGQ&5?OGQCUYX6Lf90bC-<(hI5FML8
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
O04)uD^-5I?{(k@|jlC2A
literal 0
HcmV?d00001
From eebcace18ab0ab2ec40ef5b1be2a280263eb7cc9 Mon Sep 17 00:00:00 2001
From: Nicolas Boisvert
Date: Tue, 28 Feb 2017 20:01:14 -0500
Subject: [PATCH 002/122] Added french translation
---
README.md | 13 +++++++------
src/utils/DatasourceLanguage.js | 21 +++++++++++++++++++--
2 files changed, 26 insertions(+), 8 deletions(-)
diff --git a/README.md b/README.md
index f924531..c80d8bd 100644
--- a/README.md
+++ b/README.md
@@ -20,7 +20,7 @@
### Demo
-[](http://forthebadge.com)
+[](http://forthebadge.com)
[](http://forthebadge.com)

@@ -91,11 +91,12 @@ new Vue({
|-------------|-------|
| Spanish | es |
| English | en |
+| French | fr |
### Columns
Each column object needs a `name` and `key` attributes.
```javascript
-{
+{
...,
columns: [
{
@@ -124,7 +125,7 @@ For Laravel users, you can access relationships through the `key` attribute. Let
To get the user's role we would need to define in our columns array:
```javascript
-{
+{
...,
columns: [
{
@@ -139,7 +140,7 @@ To get the user's role we would need to define in our columns array:
### Render column
This callback will modify the data for various operations. Such as applying a specific format or an arithmetic operation to the column value and return it.
```javascript
-{
+{
...,
columns: [
{
@@ -166,7 +167,7 @@ This callback will modify the data for various operations. Such as applying a sp
to: 15 // End of visible rows
}
}
-```
+```
### Action Event Sctructure
```javascript
@@ -189,7 +190,7 @@ This callback will modify the data for various operations. Such as applying a sp
- Using Laravel 5.3 and pagination: [laravel-datasource-example](https://github.com/coderdiaz/laravel-datasource-example).
-### Contributions
+### Contributions
All contributions are welcome send your PR and Issues.
### License
diff --git a/src/utils/DatasourceLanguage.js b/src/utils/DatasourceLanguage.js
index 01ffb2b..697181a 100644
--- a/src/utils/DatasourceLanguage.js
+++ b/src/utils/DatasourceLanguage.js
@@ -33,6 +33,23 @@ export default {
'btn_first': 'Primero',
'btn_last': 'Último'
}
- }
+ },
+ // French translation
+ 'fr': {
+ 'table': {
+ 'label_limits': 'Afficher',
+ 'label_search': 'Recherche',
+ 'placeholder_search': 'Recherche par mot-clé..',
+ 'records_not_found': 'Aucun enregistrements trouvés'
+ },
+ 'pagination': {
+ 'label_show': 'Affichage de',
+ 'label_to': 'à',
+ 'label_of': 'de',
+ 'label_entries': 'entrées',
+ 'btn_first': 'Première',
+ 'btn_last': 'Dernière'
+ }
+ },
}
-}
\ No newline at end of file
+}
From 6db6f99442575d1c39edd0ca60ea161ccb57980f Mon Sep 17 00:00:00 2001
From: Javier Diaz
Date: Tue, 28 Feb 2017 23:01:54 -0600
Subject: [PATCH 003/122] Build
---
dist/example.js | 8722 +++++++++++++++++---------------
dist/example.js.map | 2 +-
dist/vue-datasource.js | 224 +-
dist/vue-datasource.js.map | 2 +-
dist/vue-datasource.min.js | 2 +-
dist/vue-datasource.min.js.map | 2 +-
6 files changed, 4825 insertions(+), 4129 deletions(-)
diff --git a/dist/example.js b/dist/example.js
index 47d5c77..1497376 100644
--- a/dist/example.js
+++ b/dist/example.js
@@ -739,6 +739,23 @@
'btn_first': 'Primero',
'btn_last': 'Último'
}
+ },
+
+ 'fr': {
+ 'table': {
+ 'label_limits': 'Afficher',
+ 'label_search': 'Recherche',
+ 'placeholder_search': 'Recherche par mot-clé..',
+ 'records_not_found': 'Aucun enregistrements trouvés'
+ },
+ 'pagination': {
+ 'label_show': 'Affichage de',
+ 'label_to': 'à',
+ 'label_of': 'de',
+ 'label_entries': 'entrées',
+ 'btn_first': 'Première',
+ 'btn_last': 'Dernière'
+ }
}
}
};
@@ -826,7 +843,7 @@
// module
- exports.push([module.id, "\n.Vue__pagination nav .pagination[data-v-4417c436] {\n margin: 10px 0 !important;\n}\n", ""]);
+ exports.push([module.id, "\n.vue-datasource .Vue__panel-body[data-v-1d79c98a] {\n padding: 0;\n}\n.vue-datasource .Vue__panel-body .Vue__table[data-v-1d79c98a] {\n margin-bottom: 0;\n}\n.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-1d79c98a] {\n margin: 10px 0;\n}\n", ""]);
// exports
@@ -840,7 +857,7 @@
// module
- exports.push([module.id, "\n.vue-datasource .Vue__panel-body[data-v-8db43442] {\n padding: 0;\n}\n.vue-datasource .Vue__panel-body .Vue__table[data-v-8db43442] {\n margin-bottom: 0;\n}\n.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-8db43442] {\n margin: 10px 0;\n}\n", ""]);
+ exports.push([module.id, "\n.Vue__pagination nav .pagination[data-v-52eedd5a] {\n margin: 10px 0 !important;\n}\n", ""]);
// exports
@@ -853,13 +870,13 @@
var __vue_styles__ = {}
/* styles */
- __webpack_require__(18)
+ __webpack_require__(17)
/* script */
__vue_exports__ = __webpack_require__(3)
/* template */
- var __vue_template__ = __webpack_require__(16)
+ var __vue_template__ = __webpack_require__(15)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
typeof __vue_exports__.default === "object" ||
@@ -873,7 +890,7 @@
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
- __vue_options__._scopeId = "data-v-8db43442"
+ __vue_options__._scopeId = "data-v-1d79c98a"
module.exports = __vue_exports__
@@ -886,13 +903,13 @@
var __vue_styles__ = {}
/* styles */
- __webpack_require__(17)
+ __webpack_require__(18)
/* script */
__vue_exports__ = __webpack_require__(4)
/* template */
- var __vue_template__ = __webpack_require__(15)
+ var __vue_template__ = __webpack_require__(16)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
typeof __vue_exports__.default === "object" ||
@@ -906,101 +923,13 @@
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
- __vue_options__._scopeId = "data-v-4417c436"
+ __vue_options__._scopeId = "data-v-52eedd5a"
module.exports = __vue_exports__
/***/ },
/* 15 */
-/***/ function(module, exports) {
-
- module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
- return _c('div', {
- staticClass: "Vue__pagination"
- }, [_c('nav', {
- attrs: {
- "aria-label": "Page navigation"
- }
- }, [_c('ul', {
- staticClass: "pagination"
- }, [_c('li', {
- class: (_vm.pages.current_page == 1) ? 'disabled' : ''
- }, [_c('a', {
- attrs: {
- "href": "#"
- },
- on: {
- "click": function($event) {
- $event.preventDefault();
- _vm.firstPage($event)
- }
- }
- }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(" "), _c('li', {
- class: (_vm.pages.current_page == 1) ? 'disabled' : ''
- }, [_c('a', {
- attrs: {
- "href": "#",
- "aria-label": "Previous"
- },
- on: {
- "click": function($event) {
- $event.preventDefault();
- _vm.previous($event)
- }
- }
- }, [_c('span', {
- attrs: {
- "aria-hidden": "true"
- }
- }, [_vm._v("«")])])]), _vm._v(" "), _vm._l((_vm.items), function(n) {
- return _c('li', {
- class: (_vm.pages.current_page == n) ? 'active' : ''
- }, [_c('a', {
- attrs: {
- "href": "#"
- },
- on: {
- "click": function($event) {
- $event.preventDefault();
- _vm.change(n)
- }
- }
- }, [_vm._v(_vm._s(n))])])
- }), _vm._v(" "), _c('li', {
- class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''
- }, [_c('a', {
- attrs: {
- "href": "#",
- "aria-label": "Next"
- },
- on: {
- "click": function($event) {
- $event.preventDefault();
- _vm.next($event)
- }
- }
- }, [_c('span', {
- attrs: {
- "aria-hidden": "true"
- }
- }, [_vm._v("»")])])]), _vm._v(" "), _c('li', {
- class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''
- }, [_c('a', {
- attrs: {
- "href": "#"
- },
- on: {
- "click": function($event) {
- $event.preventDefault();
- _vm.lastPage(_vm.pages.last_page)
- }
- }
- }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])
- },staticRenderFns: []}
-
-/***/ },
-/* 16 */
/***/ function(module, exports) {
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
@@ -1029,12 +958,13 @@
},
on: {
"change": function($event) {
- _vm.perpage = Array.prototype.filter.call($event.target.options, function(o) {
+ var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) {
return o.selected
}).map(function(o) {
var val = "_value" in o ? o._value : o.value;
return val
- })[0]
+ });
+ _vm.perpage = $event.target.multiple ? $$selectedVal : $$selectedVal[0]
}
}
}, _vm._l((_vm.limits), function(limit) {
@@ -1058,7 +988,7 @@
"placeholder": _vm.translation.table.placeholder_search
},
domProps: {
- "value": _vm._s(_vm.search)
+ "value": (_vm.search)
},
on: {
"input": function($event) {
@@ -1145,6 +1075,94 @@
})])])])
},staticRenderFns: []}
+/***/ },
+/* 16 */
+/***/ function(module, exports) {
+
+ module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+ return _c('div', {
+ staticClass: "Vue__pagination"
+ }, [_c('nav', {
+ attrs: {
+ "aria-label": "Page navigation"
+ }
+ }, [_c('ul', {
+ staticClass: "pagination"
+ }, [_c('li', {
+ class: (_vm.pages.current_page == 1) ? 'disabled' : ''
+ }, [_c('a', {
+ attrs: {
+ "href": "#"
+ },
+ on: {
+ "click": function($event) {
+ $event.preventDefault();
+ _vm.firstPage($event)
+ }
+ }
+ }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(" "), _c('li', {
+ class: (_vm.pages.current_page == 1) ? 'disabled' : ''
+ }, [_c('a', {
+ attrs: {
+ "href": "#",
+ "aria-label": "Previous"
+ },
+ on: {
+ "click": function($event) {
+ $event.preventDefault();
+ _vm.previous($event)
+ }
+ }
+ }, [_c('span', {
+ attrs: {
+ "aria-hidden": "true"
+ }
+ }, [_vm._v("«")])])]), _vm._v(" "), _vm._l((_vm.items), function(n) {
+ return _c('li', {
+ class: (_vm.pages.current_page == n) ? 'active' : ''
+ }, [_c('a', {
+ attrs: {
+ "href": "#"
+ },
+ on: {
+ "click": function($event) {
+ $event.preventDefault();
+ _vm.change(n)
+ }
+ }
+ }, [_vm._v(_vm._s(n))])])
+ }), _vm._v(" "), _c('li', {
+ class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''
+ }, [_c('a', {
+ attrs: {
+ "href": "#",
+ "aria-label": "Next"
+ },
+ on: {
+ "click": function($event) {
+ $event.preventDefault();
+ _vm.next($event)
+ }
+ }
+ }, [_c('span', {
+ attrs: {
+ "aria-hidden": "true"
+ }
+ }, [_vm._v("»")])])]), _vm._v(" "), _c('li', {
+ class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''
+ }, [_c('a', {
+ attrs: {
+ "href": "#"
+ },
+ on: {
+ "click": function($event) {
+ $event.preventDefault();
+ _vm.lastPage(_vm.pages.last_page)
+ }
+ }
+ }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])
+ },staticRenderFns: []}
+
/***/ },
/* 17 */
/***/ function(module, exports, __webpack_require__) {
@@ -1161,8 +1179,8 @@
if(false) {
// When the styles change, update the \n\n\n// WEBPACK FOOTER //\n// Datasource.vue?015a03a1","\r\n \r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// Pagination.vue?f60c37d2","import Vue from 'vue/dist/vue.js';\r\nimport Datasource from './Datasource.vue';\r\n\r\nvar data = {\r\n \"pagination\": {\r\n \"total\": 4,\r\n \"per_page\": 15,\r\n \"current_page\": 1,\r\n \"last_page\": 1,\r\n \"next_page_url\": null,\r\n \"prev_page_url\": null,\r\n \"from\": 1,\r\n \"to\": 4\r\n },\r\n \"data\": [\r\n {\r\n \"id_grupo\": 1,\r\n \"tipo_grupo\": \"1\",\r\n \"nombre_grupo\": \"All\",\r\n \"estado_grupo\": \"1\",\r\n \"created_at\": \"2016-12-06 14:18:54\",\r\n \"updated_at\": \"2016-12-06 14:18:54\",\r\n \"deleted_at\": null,\r\n \"detalle_grupos_count\": \"4\"\r\n },\r\n {\r\n \"id_grupo\": 2,\r\n \"tipo_grupo\": \"1\",\r\n \"nombre_grupo\": \"Ladies\",\r\n \"estado_grupo\": \"1\",\r\n \"created_at\": \"2016-12-06 14:18:54\",\r\n \"updated_at\": \"2016-12-06 14:18:54\",\r\n \"deleted_at\": null,\r\n \"detalle_grupos_count\": \"1\"\r\n },\r\n {\r\n \"id_grupo\": 3,\r\n \"tipo_grupo\": \"2\",\r\n \"nombre_grupo\": \"Mens\",\r\n \"estado_grupo\": \"2\",\r\n \"created_at\": \"2016-12-06 14:18:54\",\r\n \"updated_at\": \"2016-12-06 14:18:54\",\r\n \"deleted_at\": null,\r\n \"detalle_grupos_count\": \"3\"\r\n },\r\n {\r\n \"id_grupo\": 4,\r\n \"tipo_grupo\": \"1\",\r\n \"nombre_grupo\": \"Chiefs\",\r\n \"estado_grupo\": \"1\",\r\n \"created_at\": \"2016-12-06 14:18:54\",\r\n \"updated_at\": \"2016-12-06 14:18:54\",\r\n \"deleted_at\": null,\r\n \"detalle_grupos_count\": \"1\"\r\n },\r\n {\r\n \"id_grupo\": 5,\r\n \"tipo_grupo\": \"2\",\r\n \"nombre_grupo\": \"Operators\",\r\n \"estado_grupo\": \"1\",\r\n \"created_at\": \"2016-12-06 14:18:54\",\r\n \"updated_at\": \"2016-12-06 14:18:54\",\r\n \"deleted_at\": null,\r\n \"detalle_grupos_count\": \"1\"\r\n }\r\n ]\r\n};\r\n\r\nnew Vue({\r\n el: '#app',\r\n components: {\r\n Datasource\r\n },\r\n data() {\r\n return {\r\n groups: {\r\n pagination: {},\r\n data: []\r\n },\r\n columns: [\r\n {\r\n name: 'Id',\r\n key: 'id_grupo',\r\n filter: false,\r\n render(value) {\r\n return `# ${value}`;\r\n }\r\n },\r\n {\r\n name: 'Name',\r\n key: 'nombre_grupo',\r\n filter: false\r\n },\r\n {\r\n name: 'Type',\r\n key: 'tipo_grupo',\r\n filter: false,\r\n render(value) {\r\n switch (value) {\r\n case '1':\r\n return 'Global';\r\n break;\r\n case '2':\r\n return 'General';\r\n break;\r\n case '3':\r\n return 'Personal';\r\n break;\r\n }\r\n }\r\n },\r\n {\r\n name: 'Total',\r\n key: 'detalle_grupos_count',\r\n filter: false,\r\n },\r\n {\r\n name: 'Date',\r\n key: 'created_at',\r\n filter: false\r\n },\r\n ],\r\n actions: [\r\n {\r\n text: 'Edit',\r\n icon: 'glyphicon glyphicon-pencil',\r\n class: 'btn-primary',\r\n event(e, row) {\r\n console.warn('Did clicked me?', e);\r\n if (row == null) {\r\n console.info('Ups.. data not found :(')\r\n } else {\r\n console.info('Yeeei, I found this :)', JSON.stringify(row));\r\n }\r\n }\r\n },\r\n {\r\n text: 'Delete',\r\n icon: 'glyphicon glyphicon-trash',\r\n class: 'btn-danger',\r\n event(e, row) {\r\n console.warn('Are you clicked me?', e);\r\n if (row == null) {\r\n console.info('Ups.. data not found :(')\r\n } else {\r\n console.info('Yeeei, I found this :)', JSON.stringify(row));\r\n }\r\n }\r\n },\r\n {\r\n text: 'Show',\r\n icon: 'glyphicon glyphicon-eye-open',\r\n class: 'btn-info',\r\n event(e, row) {\r\n console.warn('Are you clicked me?', e);\r\n if (row == null) {\r\n console.info('Ups.. data not found :(')\r\n } else {\r\n console.info('Yeeei, I found this :)', JSON.stringify(row));\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n mounted() {\r\n this.groups = data;\r\n },\r\n methods: {\r\n changePage(values) {\r\n alert(`Show limit changed, the new limit is ${values.perpage} and the current page is ${values.page}`);\r\n },\r\n onSearch(searchQuery) {\r\n alert(`Did you find this? ${searchQuery}`);\r\n }\r\n }\r\n});\n\n\n// WEBPACK FOOTER //\n// ./src/example.js","export default {\r\n translations: {\r\n // English translation\r\n 'en': {\r\n 'table': {\r\n 'label_limits': 'Show',\r\n 'label_search': 'Search',\r\n 'placeholder_search': 'Type to search..',\r\n 'records_not_found': 'No records found'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Showing',\r\n 'label_to': 'to',\r\n 'label_of': 'of',\r\n 'label_entries': 'entries',\r\n 'btn_first': 'First',\r\n 'btn_last': 'Latest'\r\n }\r\n },\r\n // Spanish translation\r\n 'es': {\r\n 'table': {\r\n 'label_limits': 'Mostrar',\r\n 'label_search': 'Buscar',\r\n 'placeholder_search': 'Buscar ..',\r\n 'records_not_found': 'No se encontraron registros.'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Mostrando',\r\n 'label_to': 'a',\r\n 'label_of': 'de',\r\n 'label_entries': 'registros',\r\n 'btn_first': 'Primero',\r\n 'btn_last': 'Último'\r\n }\r\n }\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceLanguage.js","export default {\r\n /**\r\n * Find the element value using Recursive Method and return the value rendered if it's defined\r\n * @param obj\r\n * @param column\r\n * @param render\r\n * @returns {*}\r\n */\r\n fetchFromObject(obj, column, render) {\r\n if (typeof obj === 'undefined') return false;\r\n let _index = column.indexOf('.');\r\n if (_index > -1) {\r\n return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));\r\n }\r\n if (typeof render != 'undefined') {\r\n return render(obj[column]);\r\n }\r\n return obj[column];\r\n },\r\n\r\n /**\r\n * Emit event to change page from pagination\r\n * @param page\r\n * @return {void}\r\n */\r\n changePage(page) {\r\n this.selected = null;\r\n this.indexSelected = -1;\r\n this.$emit('change', {perpage: this.perpage, page: page});\r\n },\r\n\r\n /**\r\n * Effect toggle to selected row\r\n * @param row\r\n * @param index\r\n * @return {void}\r\n */\r\n selectRow(row, index) {\r\n if (this.indexSelected == index) {\r\n this.indexSelected = -1;\r\n this.selected = null;\r\n } else {\r\n this.indexSelected = index;\r\n this.selected = {\r\n 'row': row,\r\n 'index': index\r\n };\r\n }\r\n },\r\n\r\n /**\r\n * Computed property: Building custom string information with translation\r\n * @returns {String}\r\n */\r\n tableInfo() {\r\n let label_show = this.translation.pagination.label_show;\r\n let from = (this.pagination.from == null) ? 0 : this.pagination.from;\r\n let label_to = this.translation.pagination.label_to;\r\n let to = (this.pagination.to == null) ? 0 : this.pagination.to;\r\n let label_of = this.translation.pagination.label_of;\r\n let total = this.pagination.total;\r\n let label_entries = this.translation.pagination.label_entries;\r\n\r\n return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceUtils.js","module.exports = { \"default\": require(\"core-js/library/fn/json/stringify\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/json/stringify.js\n// module id = 8\n// module chunks = 0","var core = require('../../modules/_core')\n , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify});\nmodule.exports = function stringify(it){ // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/fn/json/stringify.js\n// module id = 9\n// module chunks = 0","var core = module.exports = {version: '2.4.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_core.js\n// module id = 10\n// module chunks = 0","exports = module.exports = require(\"./../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.Vue__pagination nav .pagination[data-v-4417c436] {\\n margin: 10px 0 !important;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-4417c436&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Pagination.vue\n// module id = 11\n// module chunks = 0","exports = module.exports = require(\"./../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.vue-datasource .Vue__panel-body[data-v-8db43442] {\\n padding: 0;\\n}\\n.vue-datasource .Vue__panel-body .Vue__table[data-v-8db43442] {\\n margin-bottom: 0;\\n}\\n.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-8db43442] {\\n margin: 10px 0;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-8db43442&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/Datasource.vue\n// module id = 12\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-8db43442&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Datasource.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Datasource.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-8db43442!vue-loader/lib/selector?type=template&index=0!./Datasource.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-8db43442\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Datasource.vue\n// module id = 13\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-4417c436&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Pagination.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Pagination.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-4417c436!vue-loader/lib/selector?type=template&index=0!./Pagination.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-4417c436\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pagination.vue\n// module id = 14\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"Vue__pagination\"\n }, [_c('nav', {\n attrs: {\n \"aria-label\": \"Page navigation\"\n }\n }, [_c('ul', {\n staticClass: \"pagination\"\n }, [_c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.firstPage($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Previous\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.previous($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"«\")])])]), _vm._v(\" \"), _vm._l((_vm.items), function(n) {\n return _c('li', {\n class: (_vm.pages.current_page == n) ? 'active' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.change(n)\n }\n }\n }, [_vm._v(_vm._s(n))])])\n }), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Next\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.next($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"»\")])])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.lastPage(_vm.pages.last_page)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-4417c436!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pagination.vue\n// module id = 15\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-datasource\"\n }, [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticClass: \"form-inline\"\n }, [_c('div', {\n staticClass: \"form-group pull-left\"\n }, [_c('label', {\n staticClass: \"control-label pr2\"\n }, [_vm._v(_vm._s(_vm.translation.table.label_limits))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.perpage),\n expression: \"perpage\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"number\": \"\"\n },\n on: {\n \"change\": function($event) {\n _vm.perpage = Array.prototype.filter.call($event.target.options, function(o) {\n return o.selected\n }).map(function(o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val\n })[0]\n }\n }\n }, _vm._l((_vm.limits), function(limit) {\n return _c('option', {\n domProps: {\n \"value\": limit\n }\n }, [_vm._v(_vm._s(limit))])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group pull-right\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.search),\n expression: \"search\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.translation.table.placeholder_search\n },\n domProps: {\n \"value\": _vm._s(_vm.search)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.search = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.searching($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.table.label_search) + \"\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body Vue__panel-body\"\n }, [_c('table', {\n staticClass: \"table table-striped Vue__table\"\n }, [_c('thead', [_c('tr', _vm._l((_vm.columns), function(column) {\n return _c('th', [_vm._v(_vm._s(column.name))])\n }))]), _vm._v(\" \"), _c('tbody', [(_vm.pagination.total == 0) ? _c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(_vm._s(_vm.translation.table.records_not_found))])]) : _vm._l((_vm.tableData), function(row, index) {\n return _c('tr', {\n class: {\n 'success': (index == _vm.indexSelected)\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.selectRow(row, index)\n }\n }\n }, _vm._l((_vm.columns), function(k) {\n return _c('td', [_vm._v(\"\\n \" + _vm._s(_vm.fetchFromObject(row, k.key, k.render)) + \"\\n \")])\n }))\n }), _vm._v(\" \"), _c('tr', [_c('td', {\n staticClass: \"text-center\",\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.tableInfo) + \"\\n \")])])], 2)])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-footer Vue__panel-footer\"\n }, [_c('div', {\n staticClass: \"pull-left\"\n }, [_c('div', {\n staticClass: \"btn-group Vue__datasource_actions\"\n }, _vm._l((_vm.actions), function(btn) {\n return _c('button', {\n staticClass: \"btn btn-default\",\n class: btn.class,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n btn.event($event, _vm.selected)\n }\n }\n }, [(btn.icon) ? _c('i', {\n staticClass: \"pr1\",\n class: btn.icon\n }) : _vm._e(), _vm._v(\"\\n \" + _vm._s(btn.text) + \"\\n \")])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"pull-right\"\n }, [_c('pagination', {\n attrs: {\n \"pages\": _vm.pagination,\n \"translation\": _vm.translation.pagination\n },\n on: {\n \"change\": _vm.changePage\n }\n })], 1), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-8db43442!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Datasource.vue\n// module id = 16\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// Datasource.vue?015a03a1","\r\n \r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// Pagination.vue?f60c37d2","import Vue from 'vue/dist/vue.js';\r\nimport Datasource from './Datasource.vue';\r\n\r\nvar data = {\r\n \"pagination\": {\r\n \"total\": 4,\r\n \"per_page\": 15,\r\n \"current_page\": 1,\r\n \"last_page\": 1,\r\n \"next_page_url\": null,\r\n \"prev_page_url\": null,\r\n \"from\": 1,\r\n \"to\": 4\r\n },\r\n \"data\": [\r\n {\r\n \"id_grupo\": 1,\r\n \"tipo_grupo\": \"1\",\r\n \"nombre_grupo\": \"All\",\r\n \"estado_grupo\": \"1\",\r\n \"created_at\": \"2016-12-06 14:18:54\",\r\n \"updated_at\": \"2016-12-06 14:18:54\",\r\n \"deleted_at\": null,\r\n \"detalle_grupos_count\": \"4\"\r\n },\r\n {\r\n \"id_grupo\": 2,\r\n \"tipo_grupo\": \"1\",\r\n \"nombre_grupo\": \"Ladies\",\r\n \"estado_grupo\": \"1\",\r\n \"created_at\": \"2016-12-06 14:18:54\",\r\n \"updated_at\": \"2016-12-06 14:18:54\",\r\n \"deleted_at\": null,\r\n \"detalle_grupos_count\": \"1\"\r\n },\r\n {\r\n \"id_grupo\": 3,\r\n \"tipo_grupo\": \"2\",\r\n \"nombre_grupo\": \"Mens\",\r\n \"estado_grupo\": \"2\",\r\n \"created_at\": \"2016-12-06 14:18:54\",\r\n \"updated_at\": \"2016-12-06 14:18:54\",\r\n \"deleted_at\": null,\r\n \"detalle_grupos_count\": \"3\"\r\n },\r\n {\r\n \"id_grupo\": 4,\r\n \"tipo_grupo\": \"1\",\r\n \"nombre_grupo\": \"Chiefs\",\r\n \"estado_grupo\": \"1\",\r\n \"created_at\": \"2016-12-06 14:18:54\",\r\n \"updated_at\": \"2016-12-06 14:18:54\",\r\n \"deleted_at\": null,\r\n \"detalle_grupos_count\": \"1\"\r\n },\r\n {\r\n \"id_grupo\": 5,\r\n \"tipo_grupo\": \"2\",\r\n \"nombre_grupo\": \"Operators\",\r\n \"estado_grupo\": \"1\",\r\n \"created_at\": \"2016-12-06 14:18:54\",\r\n \"updated_at\": \"2016-12-06 14:18:54\",\r\n \"deleted_at\": null,\r\n \"detalle_grupos_count\": \"1\"\r\n }\r\n ]\r\n};\r\n\r\nnew Vue({\r\n el: '#app',\r\n components: {\r\n Datasource\r\n },\r\n data() {\r\n return {\r\n groups: {\r\n pagination: {},\r\n data: []\r\n },\r\n columns: [\r\n {\r\n name: 'Id',\r\n key: 'id_grupo',\r\n filter: false,\r\n render(value) {\r\n return `# ${value}`;\r\n }\r\n },\r\n {\r\n name: 'Name',\r\n key: 'nombre_grupo',\r\n filter: false\r\n },\r\n {\r\n name: 'Type',\r\n key: 'tipo_grupo',\r\n filter: false,\r\n render(value) {\r\n switch (value) {\r\n case '1':\r\n return 'Global';\r\n break;\r\n case '2':\r\n return 'General';\r\n break;\r\n case '3':\r\n return 'Personal';\r\n break;\r\n }\r\n }\r\n },\r\n {\r\n name: 'Total',\r\n key: 'detalle_grupos_count',\r\n filter: false,\r\n },\r\n {\r\n name: 'Date',\r\n key: 'created_at',\r\n filter: false\r\n },\r\n ],\r\n actions: [\r\n {\r\n text: 'Edit',\r\n icon: 'glyphicon glyphicon-pencil',\r\n class: 'btn-primary',\r\n event(e, row) {\r\n console.warn('Did clicked me?', e);\r\n if (row == null) {\r\n console.info('Ups.. data not found :(')\r\n } else {\r\n console.info('Yeeei, I found this :)', JSON.stringify(row));\r\n }\r\n }\r\n },\r\n {\r\n text: 'Delete',\r\n icon: 'glyphicon glyphicon-trash',\r\n class: 'btn-danger',\r\n event(e, row) {\r\n console.warn('Are you clicked me?', e);\r\n if (row == null) {\r\n console.info('Ups.. data not found :(')\r\n } else {\r\n console.info('Yeeei, I found this :)', JSON.stringify(row));\r\n }\r\n }\r\n },\r\n {\r\n text: 'Show',\r\n icon: 'glyphicon glyphicon-eye-open',\r\n class: 'btn-info',\r\n event(e, row) {\r\n console.warn('Are you clicked me?', e);\r\n if (row == null) {\r\n console.info('Ups.. data not found :(')\r\n } else {\r\n console.info('Yeeei, I found this :)', JSON.stringify(row));\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n mounted() {\r\n this.groups = data;\r\n },\r\n methods: {\r\n changePage(values) {\r\n alert(`Show limit changed, the new limit is ${values.perpage} and the current page is ${values.page}`);\r\n },\r\n onSearch(searchQuery) {\r\n alert(`Did you find this? ${searchQuery}`);\r\n }\r\n }\r\n});\n\n\n// WEBPACK FOOTER //\n// ./src/example.js","export default {\r\n translations: {\r\n // English translation\r\n 'en': {\r\n 'table': {\r\n 'label_limits': 'Show',\r\n 'label_search': 'Search',\r\n 'placeholder_search': 'Type to search..',\r\n 'records_not_found': 'No records found'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Showing',\r\n 'label_to': 'to',\r\n 'label_of': 'of',\r\n 'label_entries': 'entries',\r\n 'btn_first': 'First',\r\n 'btn_last': 'Latest'\r\n }\r\n },\r\n // Spanish translation\r\n 'es': {\r\n 'table': {\r\n 'label_limits': 'Mostrar',\r\n 'label_search': 'Buscar',\r\n 'placeholder_search': 'Buscar ..',\r\n 'records_not_found': 'No se encontraron registros.'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Mostrando',\r\n 'label_to': 'a',\r\n 'label_of': 'de',\r\n 'label_entries': 'registros',\r\n 'btn_first': 'Primero',\r\n 'btn_last': 'Último'\r\n }\r\n },\r\n // French translation\r\n 'fr': {\r\n 'table': {\r\n 'label_limits': 'Afficher',\r\n 'label_search': 'Recherche',\r\n 'placeholder_search': 'Recherche par mot-clé..',\r\n 'records_not_found': 'Aucun enregistrements trouvés'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Affichage de',\r\n 'label_to': 'à',\r\n 'label_of': 'de',\r\n 'label_entries': 'entrées',\r\n 'btn_first': 'Première',\r\n 'btn_last': 'Dernière'\r\n }\r\n },\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceLanguage.js","export default {\r\n /**\r\n * Find the element value using Recursive Method and return the value rendered if it's defined\r\n * @param obj\r\n * @param column\r\n * @param render\r\n * @returns {*}\r\n */\r\n fetchFromObject(obj, column, render) {\r\n if (typeof obj === 'undefined') return false;\r\n let _index = column.indexOf('.');\r\n if (_index > -1) {\r\n return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));\r\n }\r\n if (typeof render != 'undefined') {\r\n return render(obj[column]);\r\n }\r\n return obj[column];\r\n },\r\n\r\n /**\r\n * Emit event to change page from pagination\r\n * @param page\r\n * @return {void}\r\n */\r\n changePage(page) {\r\n this.selected = null;\r\n this.indexSelected = -1;\r\n this.$emit('change', {perpage: this.perpage, page: page});\r\n },\r\n\r\n /**\r\n * Effect toggle to selected row\r\n * @param row\r\n * @param index\r\n * @return {void}\r\n */\r\n selectRow(row, index) {\r\n if (this.indexSelected == index) {\r\n this.indexSelected = -1;\r\n this.selected = null;\r\n } else {\r\n this.indexSelected = index;\r\n this.selected = {\r\n 'row': row,\r\n 'index': index\r\n };\r\n }\r\n },\r\n\r\n /**\r\n * Computed property: Building custom string information with translation\r\n * @returns {String}\r\n */\r\n tableInfo() {\r\n let label_show = this.translation.pagination.label_show;\r\n let from = (this.pagination.from == null) ? 0 : this.pagination.from;\r\n let label_to = this.translation.pagination.label_to;\r\n let to = (this.pagination.to == null) ? 0 : this.pagination.to;\r\n let label_of = this.translation.pagination.label_of;\r\n let total = this.pagination.total;\r\n let label_entries = this.translation.pagination.label_entries;\r\n\r\n return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceUtils.js","module.exports = { \"default\": require(\"core-js/library/fn/json/stringify\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/json/stringify.js\n// module id = 8\n// module chunks = 0","var core = require('../../modules/_core')\n , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify});\nmodule.exports = function stringify(it){ // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/fn/json/stringify.js\n// module id = 9\n// module chunks = 0","var core = module.exports = {version: '2.4.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_core.js\n// module id = 10\n// module chunks = 0","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.vue-datasource .Vue__panel-body[data-v-1d79c98a] {\\n padding: 0;\\n}\\n.vue-datasource .Vue__panel-body .Vue__table[data-v-1d79c98a] {\\n margin-bottom: 0;\\n}\\n.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-1d79c98a] {\\n margin: 10px 0;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-1d79c98a&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/Datasource.vue\n// module id = 11\n// module chunks = 0","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.Vue__pagination nav .pagination[data-v-52eedd5a] {\\n margin: 10px 0 !important;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-52eedd5a&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Pagination.vue\n// module id = 12\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-1d79c98a&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Datasource.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Datasource.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-1d79c98a!vue-loader/lib/selector?type=template&index=0!./Datasource.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-1d79c98a\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Datasource.vue\n// module id = 13\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-52eedd5a&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Pagination.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Pagination.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-52eedd5a!vue-loader/lib/selector?type=template&index=0!./Pagination.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-52eedd5a\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pagination.vue\n// module id = 14\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-datasource\"\n }, [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticClass: \"form-inline\"\n }, [_c('div', {\n staticClass: \"form-group pull-left\"\n }, [_c('label', {\n staticClass: \"control-label pr2\"\n }, [_vm._v(_vm._s(_vm.translation.table.label_limits))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.perpage),\n expression: \"perpage\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"number\": \"\"\n },\n on: {\n \"change\": function($event) {\n var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) {\n return o.selected\n }).map(function(o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val\n });\n _vm.perpage = $event.target.multiple ? $$selectedVal : $$selectedVal[0]\n }\n }\n }, _vm._l((_vm.limits), function(limit) {\n return _c('option', {\n domProps: {\n \"value\": limit\n }\n }, [_vm._v(_vm._s(limit))])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group pull-right\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.search),\n expression: \"search\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.translation.table.placeholder_search\n },\n domProps: {\n \"value\": (_vm.search)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.search = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.searching($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.table.label_search) + \"\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body Vue__panel-body\"\n }, [_c('table', {\n staticClass: \"table table-striped Vue__table\"\n }, [_c('thead', [_c('tr', _vm._l((_vm.columns), function(column) {\n return _c('th', [_vm._v(_vm._s(column.name))])\n }))]), _vm._v(\" \"), _c('tbody', [(_vm.pagination.total == 0) ? _c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(_vm._s(_vm.translation.table.records_not_found))])]) : _vm._l((_vm.tableData), function(row, index) {\n return _c('tr', {\n class: {\n 'success': (index == _vm.indexSelected)\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.selectRow(row, index)\n }\n }\n }, _vm._l((_vm.columns), function(k) {\n return _c('td', [_vm._v(\"\\n \" + _vm._s(_vm.fetchFromObject(row, k.key, k.render)) + \"\\n \")])\n }))\n }), _vm._v(\" \"), _c('tr', [_c('td', {\n staticClass: \"text-center\",\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.tableInfo) + \"\\n \")])])], 2)])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-footer Vue__panel-footer\"\n }, [_c('div', {\n staticClass: \"pull-left\"\n }, [_c('div', {\n staticClass: \"btn-group Vue__datasource_actions\"\n }, _vm._l((_vm.actions), function(btn) {\n return _c('button', {\n staticClass: \"btn btn-default\",\n class: btn.class,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n btn.event($event, _vm.selected)\n }\n }\n }, [(btn.icon) ? _c('i', {\n staticClass: \"pr1\",\n class: btn.icon\n }) : _vm._e(), _vm._v(\"\\n \" + _vm._s(btn.text) + \"\\n \")])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"pull-right\"\n }, [_c('pagination', {\n attrs: {\n \"pages\": _vm.pagination,\n \"translation\": _vm.translation.pagination\n },\n on: {\n \"change\": _vm.changePage\n }\n })], 1), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-1d79c98a!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Datasource.vue\n// module id = 15\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"Vue__pagination\"\n }, [_c('nav', {\n attrs: {\n \"aria-label\": \"Page navigation\"\n }\n }, [_c('ul', {\n staticClass: \"pagination\"\n }, [_c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.firstPage($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Previous\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.previous($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"«\")])])]), _vm._v(\" \"), _vm._l((_vm.items), function(n) {\n return _c('li', {\n class: (_vm.pages.current_page == n) ? 'active' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.change(n)\n }\n }\n }, [_vm._v(_vm._s(n))])])\n }), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Next\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.next($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"»\")])])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.lastPage(_vm.pages.last_page)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-52eedd5a!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pagination.vue\n// module id = 16\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// Datasource.vue?015a03a1","\r\n \r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// Pagination.vue?f60c37d2","export default {\r\n translations: {\r\n // English translation\r\n 'en': {\r\n 'table': {\r\n 'label_limits': 'Show',\r\n 'label_search': 'Search',\r\n 'placeholder_search': 'Type to search..',\r\n 'records_not_found': 'No records found'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Showing',\r\n 'label_to': 'to',\r\n 'label_of': 'of',\r\n 'label_entries': 'entries',\r\n 'btn_first': 'First',\r\n 'btn_last': 'Latest'\r\n }\r\n },\r\n // Spanish translation\r\n 'es': {\r\n 'table': {\r\n 'label_limits': 'Mostrar',\r\n 'label_search': 'Buscar',\r\n 'placeholder_search': 'Buscar ..',\r\n 'records_not_found': 'No se encontraron registros.'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Mostrando',\r\n 'label_to': 'a',\r\n 'label_of': 'de',\r\n 'label_entries': 'registros',\r\n 'btn_first': 'Primero',\r\n 'btn_last': 'Último'\r\n }\r\n }\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceLanguage.js","export default {\r\n /**\r\n * Find the element value using Recursive Method and return the value rendered if it's defined\r\n * @param obj\r\n * @param column\r\n * @param render\r\n * @returns {*}\r\n */\r\n fetchFromObject(obj, column, render) {\r\n if (typeof obj === 'undefined') return false;\r\n let _index = column.indexOf('.');\r\n if (_index > -1) {\r\n return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));\r\n }\r\n if (typeof render != 'undefined') {\r\n return render(obj[column]);\r\n }\r\n return obj[column];\r\n },\r\n\r\n /**\r\n * Emit event to change page from pagination\r\n * @param page\r\n * @return {void}\r\n */\r\n changePage(page) {\r\n this.selected = null;\r\n this.indexSelected = -1;\r\n this.$emit('change', {perpage: this.perpage, page: page});\r\n },\r\n\r\n /**\r\n * Effect toggle to selected row\r\n * @param row\r\n * @param index\r\n * @return {void}\r\n */\r\n selectRow(row, index) {\r\n if (this.indexSelected == index) {\r\n this.indexSelected = -1;\r\n this.selected = null;\r\n } else {\r\n this.indexSelected = index;\r\n this.selected = {\r\n 'row': row,\r\n 'index': index\r\n };\r\n }\r\n },\r\n\r\n /**\r\n * Computed property: Building custom string information with translation\r\n * @returns {String}\r\n */\r\n tableInfo() {\r\n let label_show = this.translation.pagination.label_show;\r\n let from = (this.pagination.from == null) ? 0 : this.pagination.from;\r\n let label_to = this.translation.pagination.label_to;\r\n let to = (this.pagination.to == null) ? 0 : this.pagination.to;\r\n let label_of = this.translation.pagination.label_of;\r\n let total = this.pagination.total;\r\n let label_entries = this.translation.pagination.label_entries;\r\n\r\n return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceUtils.js","exports = module.exports = require(\"./../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.Vue__pagination nav .pagination[data-v-4417c436] {\\n margin: 10px 0 !important;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-4417c436&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Pagination.vue\n// module id = 7\n// module chunks = 0","exports = module.exports = require(\"./../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.vue-datasource .Vue__panel-body[data-v-8db43442] {\\n padding: 0;\\n}\\n.vue-datasource .Vue__panel-body .Vue__table[data-v-8db43442] {\\n margin-bottom: 0;\\n}\\n.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-8db43442] {\\n margin: 10px 0;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-8db43442&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/Datasource.vue\n// module id = 8\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-8db43442&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Datasource.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Datasource.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-8db43442!vue-loader/lib/selector?type=template&index=0!./Datasource.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-8db43442\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Datasource.vue\n// module id = 9\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-4417c436&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Pagination.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Pagination.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-4417c436!vue-loader/lib/selector?type=template&index=0!./Pagination.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-4417c436\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pagination.vue\n// module id = 10\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"Vue__pagination\"\n }, [_c('nav', {\n attrs: {\n \"aria-label\": \"Page navigation\"\n }\n }, [_c('ul', {\n staticClass: \"pagination\"\n }, [_c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.firstPage($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Previous\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.previous($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"«\")])])]), _vm._v(\" \"), _vm._l((_vm.items), function(n) {\n return _c('li', {\n class: (_vm.pages.current_page == n) ? 'active' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.change(n)\n }\n }\n }, [_vm._v(_vm._s(n))])])\n }), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Next\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.next($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"»\")])])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.lastPage(_vm.pages.last_page)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-4417c436!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pagination.vue\n// module id = 11\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-datasource\"\n }, [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticClass: \"form-inline\"\n }, [_c('div', {\n staticClass: \"form-group pull-left\"\n }, [_c('label', {\n staticClass: \"control-label pr2\"\n }, [_vm._v(_vm._s(_vm.translation.table.label_limits))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.perpage),\n expression: \"perpage\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"number\": \"\"\n },\n on: {\n \"change\": function($event) {\n _vm.perpage = Array.prototype.filter.call($event.target.options, function(o) {\n return o.selected\n }).map(function(o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val\n })[0]\n }\n }\n }, _vm._l((_vm.limits), function(limit) {\n return _c('option', {\n domProps: {\n \"value\": limit\n }\n }, [_vm._v(_vm._s(limit))])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group pull-right\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.search),\n expression: \"search\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.translation.table.placeholder_search\n },\n domProps: {\n \"value\": _vm._s(_vm.search)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.search = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.searching($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.table.label_search) + \"\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body Vue__panel-body\"\n }, [_c('table', {\n staticClass: \"table table-striped Vue__table\"\n }, [_c('thead', [_c('tr', _vm._l((_vm.columns), function(column) {\n return _c('th', [_vm._v(_vm._s(column.name))])\n }))]), _vm._v(\" \"), _c('tbody', [(_vm.pagination.total == 0) ? _c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(_vm._s(_vm.translation.table.records_not_found))])]) : _vm._l((_vm.tableData), function(row, index) {\n return _c('tr', {\n class: {\n 'success': (index == _vm.indexSelected)\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.selectRow(row, index)\n }\n }\n }, _vm._l((_vm.columns), function(k) {\n return _c('td', [_vm._v(\"\\n \" + _vm._s(_vm.fetchFromObject(row, k.key, k.render)) + \"\\n \")])\n }))\n }), _vm._v(\" \"), _c('tr', [_c('td', {\n staticClass: \"text-center\",\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.tableInfo) + \"\\n \")])])], 2)])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-footer Vue__panel-footer\"\n }, [_c('div', {\n staticClass: \"pull-left\"\n }, [_c('div', {\n staticClass: \"btn-group Vue__datasource_actions\"\n }, _vm._l((_vm.actions), function(btn) {\n return _c('button', {\n staticClass: \"btn btn-default\",\n class: btn.class,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n btn.event($event, _vm.selected)\n }\n }\n }, [(btn.icon) ? _c('i', {\n staticClass: \"pr1\",\n class: btn.icon\n }) : _vm._e(), _vm._v(\"\\n \" + _vm._s(btn.text) + \"\\n \")])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"pull-right\"\n }, [_c('pagination', {\n attrs: {\n \"pages\": _vm.pagination,\n \"translation\": _vm.translation.pagination\n },\n on: {\n \"change\": _vm.changePage\n }\n })], 1), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-8db43442!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Datasource.vue\n// module id = 12\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// Datasource.vue?015a03a1","\r\n \r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// Pagination.vue?f60c37d2","export default {\r\n translations: {\r\n // English translation\r\n 'en': {\r\n 'table': {\r\n 'label_limits': 'Show',\r\n 'label_search': 'Search',\r\n 'placeholder_search': 'Type to search..',\r\n 'records_not_found': 'No records found'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Showing',\r\n 'label_to': 'to',\r\n 'label_of': 'of',\r\n 'label_entries': 'entries',\r\n 'btn_first': 'First',\r\n 'btn_last': 'Latest'\r\n }\r\n },\r\n // Spanish translation\r\n 'es': {\r\n 'table': {\r\n 'label_limits': 'Mostrar',\r\n 'label_search': 'Buscar',\r\n 'placeholder_search': 'Buscar ..',\r\n 'records_not_found': 'No se encontraron registros.'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Mostrando',\r\n 'label_to': 'a',\r\n 'label_of': 'de',\r\n 'label_entries': 'registros',\r\n 'btn_first': 'Primero',\r\n 'btn_last': 'Último'\r\n }\r\n },\r\n // French translation\r\n 'fr': {\r\n 'table': {\r\n 'label_limits': 'Afficher',\r\n 'label_search': 'Recherche',\r\n 'placeholder_search': 'Recherche par mot-clé..',\r\n 'records_not_found': 'Aucun enregistrements trouvés'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Affichage de',\r\n 'label_to': 'à',\r\n 'label_of': 'de',\r\n 'label_entries': 'entrées',\r\n 'btn_first': 'Première',\r\n 'btn_last': 'Dernière'\r\n }\r\n },\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceLanguage.js","export default {\r\n /**\r\n * Find the element value using Recursive Method and return the value rendered if it's defined\r\n * @param obj\r\n * @param column\r\n * @param render\r\n * @returns {*}\r\n */\r\n fetchFromObject(obj, column, render) {\r\n if (typeof obj === 'undefined') return false;\r\n let _index = column.indexOf('.');\r\n if (_index > -1) {\r\n return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));\r\n }\r\n if (typeof render != 'undefined') {\r\n return render(obj[column]);\r\n }\r\n return obj[column];\r\n },\r\n\r\n /**\r\n * Emit event to change page from pagination\r\n * @param page\r\n * @return {void}\r\n */\r\n changePage(page) {\r\n this.selected = null;\r\n this.indexSelected = -1;\r\n this.$emit('change', {perpage: this.perpage, page: page});\r\n },\r\n\r\n /**\r\n * Effect toggle to selected row\r\n * @param row\r\n * @param index\r\n * @return {void}\r\n */\r\n selectRow(row, index) {\r\n if (this.indexSelected == index) {\r\n this.indexSelected = -1;\r\n this.selected = null;\r\n } else {\r\n this.indexSelected = index;\r\n this.selected = {\r\n 'row': row,\r\n 'index': index\r\n };\r\n }\r\n },\r\n\r\n /**\r\n * Computed property: Building custom string information with translation\r\n * @returns {String}\r\n */\r\n tableInfo() {\r\n let label_show = this.translation.pagination.label_show;\r\n let from = (this.pagination.from == null) ? 0 : this.pagination.from;\r\n let label_to = this.translation.pagination.label_to;\r\n let to = (this.pagination.to == null) ? 0 : this.pagination.to;\r\n let label_of = this.translation.pagination.label_of;\r\n let total = this.pagination.total;\r\n let label_entries = this.translation.pagination.label_entries;\r\n\r\n return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceUtils.js","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.vue-datasource .Vue__panel-body[data-v-1d79c98a] {\\n padding: 0;\\n}\\n.vue-datasource .Vue__panel-body .Vue__table[data-v-1d79c98a] {\\n margin-bottom: 0;\\n}\\n.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-1d79c98a] {\\n margin: 10px 0;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-1d79c98a&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/Datasource.vue\n// module id = 7\n// module chunks = 0","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.Vue__pagination nav .pagination[data-v-52eedd5a] {\\n margin: 10px 0 !important;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-52eedd5a&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Pagination.vue\n// module id = 8\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-1d79c98a&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Datasource.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Datasource.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-1d79c98a!vue-loader/lib/selector?type=template&index=0!./Datasource.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-1d79c98a\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Datasource.vue\n// module id = 9\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-52eedd5a&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Pagination.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Pagination.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-52eedd5a!vue-loader/lib/selector?type=template&index=0!./Pagination.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-52eedd5a\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pagination.vue\n// module id = 10\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-datasource\"\n }, [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticClass: \"form-inline\"\n }, [_c('div', {\n staticClass: \"form-group pull-left\"\n }, [_c('label', {\n staticClass: \"control-label pr2\"\n }, [_vm._v(_vm._s(_vm.translation.table.label_limits))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.perpage),\n expression: \"perpage\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"number\": \"\"\n },\n on: {\n \"change\": function($event) {\n var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) {\n return o.selected\n }).map(function(o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val\n });\n _vm.perpage = $event.target.multiple ? $$selectedVal : $$selectedVal[0]\n }\n }\n }, _vm._l((_vm.limits), function(limit) {\n return _c('option', {\n domProps: {\n \"value\": limit\n }\n }, [_vm._v(_vm._s(limit))])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group pull-right\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.search),\n expression: \"search\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.translation.table.placeholder_search\n },\n domProps: {\n \"value\": (_vm.search)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.search = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.searching($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.table.label_search) + \"\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body Vue__panel-body\"\n }, [_c('table', {\n staticClass: \"table table-striped Vue__table\"\n }, [_c('thead', [_c('tr', _vm._l((_vm.columns), function(column) {\n return _c('th', [_vm._v(_vm._s(column.name))])\n }))]), _vm._v(\" \"), _c('tbody', [(_vm.pagination.total == 0) ? _c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(_vm._s(_vm.translation.table.records_not_found))])]) : _vm._l((_vm.tableData), function(row, index) {\n return _c('tr', {\n class: {\n 'success': (index == _vm.indexSelected)\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.selectRow(row, index)\n }\n }\n }, _vm._l((_vm.columns), function(k) {\n return _c('td', [_vm._v(\"\\n \" + _vm._s(_vm.fetchFromObject(row, k.key, k.render)) + \"\\n \")])\n }))\n }), _vm._v(\" \"), _c('tr', [_c('td', {\n staticClass: \"text-center\",\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.tableInfo) + \"\\n \")])])], 2)])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-footer Vue__panel-footer\"\n }, [_c('div', {\n staticClass: \"pull-left\"\n }, [_c('div', {\n staticClass: \"btn-group Vue__datasource_actions\"\n }, _vm._l((_vm.actions), function(btn) {\n return _c('button', {\n staticClass: \"btn btn-default\",\n class: btn.class,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n btn.event($event, _vm.selected)\n }\n }\n }, [(btn.icon) ? _c('i', {\n staticClass: \"pr1\",\n class: btn.icon\n }) : _vm._e(), _vm._v(\"\\n \" + _vm._s(btn.text) + \"\\n \")])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"pull-right\"\n }, [_c('pagination', {\n attrs: {\n \"pages\": _vm.pagination,\n \"translation\": _vm.translation.pagination\n },\n on: {\n \"change\": _vm.changePage\n }\n })], 1), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-1d79c98a!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Datasource.vue\n// module id = 11\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"Vue__pagination\"\n }, [_c('nav', {\n attrs: {\n \"aria-label\": \"Page navigation\"\n }\n }, [_c('ul', {\n staticClass: \"pagination\"\n }, [_c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.firstPage($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Previous\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.previous($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"«\")])])]), _vm._v(\" \"), _vm._l((_vm.items), function(n) {\n return _c('li', {\n class: (_vm.pages.current_page == n) ? 'active' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.change(n)\n }\n }\n }, [_vm._v(_vm._s(n))])])\n }), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Next\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.next($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"»\")])])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.lastPage(_vm.pages.last_page)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-52eedd5a!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pagination.vue\n// module id = 12\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// Datasource.vue?015a03a1","\r\n \r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// Pagination.vue?f60c37d2","export default {\r\n translations: {\r\n // English translation\r\n 'en': {\r\n 'table': {\r\n 'label_limits': 'Show',\r\n 'label_search': 'Search',\r\n 'placeholder_search': 'Type to search..',\r\n 'records_not_found': 'No records found'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Showing',\r\n 'label_to': 'to',\r\n 'label_of': 'of',\r\n 'label_entries': 'entries',\r\n 'btn_first': 'First',\r\n 'btn_last': 'Latest'\r\n }\r\n },\r\n // Spanish translation\r\n 'es': {\r\n 'table': {\r\n 'label_limits': 'Mostrar',\r\n 'label_search': 'Buscar',\r\n 'placeholder_search': 'Buscar ..',\r\n 'records_not_found': 'No se encontraron registros.'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Mostrando',\r\n 'label_to': 'a',\r\n 'label_of': 'de',\r\n 'label_entries': 'registros',\r\n 'btn_first': 'Primero',\r\n 'btn_last': 'Último'\r\n }\r\n }\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceLanguage.js","export default {\r\n /**\r\n * Find the element value using Recursive Method and return the value rendered if it's defined\r\n * @param obj\r\n * @param column\r\n * @param render\r\n * @returns {*}\r\n */\r\n fetchFromObject(obj, column, render) {\r\n if (typeof obj === 'undefined') return false;\r\n let _index = column.indexOf('.');\r\n if (_index > -1) {\r\n return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));\r\n }\r\n if (typeof render != 'undefined') {\r\n return render(obj[column]);\r\n }\r\n return obj[column];\r\n },\r\n\r\n /**\r\n * Emit event to change page from pagination\r\n * @param page\r\n * @return {void}\r\n */\r\n changePage(page) {\r\n this.selected = null;\r\n this.indexSelected = -1;\r\n this.$emit('change', {perpage: this.perpage, page: page});\r\n },\r\n\r\n /**\r\n * Effect toggle to selected row\r\n * @param row\r\n * @param index\r\n * @return {void}\r\n */\r\n selectRow(row, index) {\r\n if (this.indexSelected == index) {\r\n this.indexSelected = -1;\r\n this.selected = null;\r\n } else {\r\n this.indexSelected = index;\r\n this.selected = {\r\n 'row': row,\r\n 'index': index\r\n };\r\n }\r\n },\r\n\r\n /**\r\n * Computed property: Building custom string information with translation\r\n * @returns {String}\r\n */\r\n tableInfo() {\r\n let label_show = this.translation.pagination.label_show;\r\n let from = (this.pagination.from == null) ? 0 : this.pagination.from;\r\n let label_to = this.translation.pagination.label_to;\r\n let to = (this.pagination.to == null) ? 0 : this.pagination.to;\r\n let label_of = this.translation.pagination.label_of;\r\n let total = this.pagination.total;\r\n let label_entries = this.translation.pagination.label_entries;\r\n\r\n return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceUtils.js","exports = module.exports = require(\"./../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".Vue__pagination nav .pagination[data-v-4417c436]{margin:10px 0!important}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-4417c436&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Pagination.vue\n// module id = 7\n// module chunks = 0","exports = module.exports = require(\"./../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".vue-datasource .Vue__panel-body[data-v-8db43442]{padding:0}.vue-datasource .Vue__panel-body .Vue__table[data-v-8db43442]{margin-bottom:0}.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-8db43442]{margin:10px 0}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-8db43442&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/Datasource.vue\n// module id = 8\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-8db43442&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Datasource.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Datasource.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-8db43442!vue-loader/lib/selector?type=template&index=0!./Datasource.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-8db43442\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Datasource.vue\n// module id = 9\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-4417c436&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Pagination.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Pagination.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-4417c436!vue-loader/lib/selector?type=template&index=0!./Pagination.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-4417c436\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pagination.vue\n// module id = 10\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"Vue__pagination\"\n }, [_c('nav', {\n attrs: {\n \"aria-label\": \"Page navigation\"\n }\n }, [_c('ul', {\n staticClass: \"pagination\"\n }, [_c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.firstPage($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Previous\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.previous($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"«\")])])]), _vm._v(\" \"), _vm._l((_vm.items), function(n) {\n return _c('li', {\n class: (_vm.pages.current_page == n) ? 'active' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.change(n)\n }\n }\n }, [_vm._v(_vm._s(n))])])\n }), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Next\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.next($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"»\")])])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.lastPage(_vm.pages.last_page)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-4417c436!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pagination.vue\n// module id = 11\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-datasource\"\n }, [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticClass: \"form-inline\"\n }, [_c('div', {\n staticClass: \"form-group pull-left\"\n }, [_c('label', {\n staticClass: \"control-label pr2\"\n }, [_vm._v(_vm._s(_vm.translation.table.label_limits))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.perpage),\n expression: \"perpage\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"number\": \"\"\n },\n on: {\n \"change\": function($event) {\n _vm.perpage = Array.prototype.filter.call($event.target.options, function(o) {\n return o.selected\n }).map(function(o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val\n })[0]\n }\n }\n }, _vm._l((_vm.limits), function(limit) {\n return _c('option', {\n domProps: {\n \"value\": limit\n }\n }, [_vm._v(_vm._s(limit))])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group pull-right\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.search),\n expression: \"search\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.translation.table.placeholder_search\n },\n domProps: {\n \"value\": _vm._s(_vm.search)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.search = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.searching($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.table.label_search) + \"\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body Vue__panel-body\"\n }, [_c('table', {\n staticClass: \"table table-striped Vue__table\"\n }, [_c('thead', [_c('tr', _vm._l((_vm.columns), function(column) {\n return _c('th', [_vm._v(_vm._s(column.name))])\n }))]), _vm._v(\" \"), _c('tbody', [(_vm.pagination.total == 0) ? _c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(_vm._s(_vm.translation.table.records_not_found))])]) : _vm._l((_vm.tableData), function(row, index) {\n return _c('tr', {\n class: {\n 'success': (index == _vm.indexSelected)\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.selectRow(row, index)\n }\n }\n }, _vm._l((_vm.columns), function(k) {\n return _c('td', [_vm._v(\"\\n \" + _vm._s(_vm.fetchFromObject(row, k.key, k.render)) + \"\\n \")])\n }))\n }), _vm._v(\" \"), _c('tr', [_c('td', {\n staticClass: \"text-center\",\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.tableInfo) + \"\\n \")])])], 2)])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-footer Vue__panel-footer\"\n }, [_c('div', {\n staticClass: \"pull-left\"\n }, [_c('div', {\n staticClass: \"btn-group Vue__datasource_actions\"\n }, _vm._l((_vm.actions), function(btn) {\n return _c('button', {\n staticClass: \"btn btn-default\",\n class: btn.class,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n btn.event($event, _vm.selected)\n }\n }\n }, [(btn.icon) ? _c('i', {\n staticClass: \"pr1\",\n class: btn.icon\n }) : _vm._e(), _vm._v(\"\\n \" + _vm._s(btn.text) + \"\\n \")])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"pull-right\"\n }, [_c('pagination', {\n attrs: {\n \"pages\": _vm.pagination,\n \"translation\": _vm.translation.pagination\n },\n on: {\n \"change\": _vm.changePage\n }\n })], 1), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-8db43442!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Datasource.vue\n// module id = 12\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// Datasource.vue?015a03a1","\r\n \r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// Pagination.vue?f60c37d2","export default {\r\n translations: {\r\n // English translation\r\n 'en': {\r\n 'table': {\r\n 'label_limits': 'Show',\r\n 'label_search': 'Search',\r\n 'placeholder_search': 'Type to search..',\r\n 'records_not_found': 'No records found'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Showing',\r\n 'label_to': 'to',\r\n 'label_of': 'of',\r\n 'label_entries': 'entries',\r\n 'btn_first': 'First',\r\n 'btn_last': 'Latest'\r\n }\r\n },\r\n // Spanish translation\r\n 'es': {\r\n 'table': {\r\n 'label_limits': 'Mostrar',\r\n 'label_search': 'Buscar',\r\n 'placeholder_search': 'Buscar ..',\r\n 'records_not_found': 'No se encontraron registros.'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Mostrando',\r\n 'label_to': 'a',\r\n 'label_of': 'de',\r\n 'label_entries': 'registros',\r\n 'btn_first': 'Primero',\r\n 'btn_last': 'Último'\r\n }\r\n },\r\n // French translation\r\n 'fr': {\r\n 'table': {\r\n 'label_limits': 'Afficher',\r\n 'label_search': 'Recherche',\r\n 'placeholder_search': 'Recherche par mot-clé..',\r\n 'records_not_found': 'Aucun enregistrements trouvés'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Affichage de',\r\n 'label_to': 'à',\r\n 'label_of': 'de',\r\n 'label_entries': 'entrées',\r\n 'btn_first': 'Première',\r\n 'btn_last': 'Dernière'\r\n }\r\n },\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceLanguage.js","export default {\r\n /**\r\n * Find the element value using Recursive Method and return the value rendered if it's defined\r\n * @param obj\r\n * @param column\r\n * @param render\r\n * @returns {*}\r\n */\r\n fetchFromObject(obj, column, render) {\r\n if (typeof obj === 'undefined') return false;\r\n let _index = column.indexOf('.');\r\n if (_index > -1) {\r\n return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));\r\n }\r\n if (typeof render != 'undefined') {\r\n return render(obj[column]);\r\n }\r\n return obj[column];\r\n },\r\n\r\n /**\r\n * Emit event to change page from pagination\r\n * @param page\r\n * @return {void}\r\n */\r\n changePage(page) {\r\n this.selected = null;\r\n this.indexSelected = -1;\r\n this.$emit('change', {perpage: this.perpage, page: page});\r\n },\r\n\r\n /**\r\n * Effect toggle to selected row\r\n * @param row\r\n * @param index\r\n * @return {void}\r\n */\r\n selectRow(row, index) {\r\n if (this.indexSelected == index) {\r\n this.indexSelected = -1;\r\n this.selected = null;\r\n } else {\r\n this.indexSelected = index;\r\n this.selected = {\r\n 'row': row,\r\n 'index': index\r\n };\r\n }\r\n },\r\n\r\n /**\r\n * Computed property: Building custom string information with translation\r\n * @returns {String}\r\n */\r\n tableInfo() {\r\n let label_show = this.translation.pagination.label_show;\r\n let from = (this.pagination.from == null) ? 0 : this.pagination.from;\r\n let label_to = this.translation.pagination.label_to;\r\n let to = (this.pagination.to == null) ? 0 : this.pagination.to;\r\n let label_of = this.translation.pagination.label_of;\r\n let total = this.pagination.total;\r\n let label_entries = this.translation.pagination.label_entries;\r\n\r\n return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceUtils.js","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".vue-datasource .Vue__panel-body[data-v-1d79c98a]{padding:0}.vue-datasource .Vue__panel-body .Vue__table[data-v-1d79c98a]{margin-bottom:0}.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-1d79c98a]{margin:10px 0}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-1d79c98a&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/Datasource.vue\n// module id = 7\n// module chunks = 0","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".Vue__pagination nav .pagination[data-v-52eedd5a]{margin:10px 0!important}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-52eedd5a&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Pagination.vue\n// module id = 8\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-1d79c98a&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Datasource.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Datasource.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-1d79c98a!vue-loader/lib/selector?type=template&index=0!./Datasource.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-1d79c98a\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Datasource.vue\n// module id = 9\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-52eedd5a&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Pagination.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Pagination.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-52eedd5a!vue-loader/lib/selector?type=template&index=0!./Pagination.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-52eedd5a\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pagination.vue\n// module id = 10\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-datasource\"\n }, [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticClass: \"form-inline\"\n }, [_c('div', {\n staticClass: \"form-group pull-left\"\n }, [_c('label', {\n staticClass: \"control-label pr2\"\n }, [_vm._v(_vm._s(_vm.translation.table.label_limits))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.perpage),\n expression: \"perpage\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"number\": \"\"\n },\n on: {\n \"change\": function($event) {\n var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) {\n return o.selected\n }).map(function(o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val\n });\n _vm.perpage = $event.target.multiple ? $$selectedVal : $$selectedVal[0]\n }\n }\n }, _vm._l((_vm.limits), function(limit) {\n return _c('option', {\n domProps: {\n \"value\": limit\n }\n }, [_vm._v(_vm._s(limit))])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group pull-right\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.search),\n expression: \"search\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.translation.table.placeholder_search\n },\n domProps: {\n \"value\": (_vm.search)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.search = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.searching($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.table.label_search) + \"\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body Vue__panel-body\"\n }, [_c('table', {\n staticClass: \"table table-striped Vue__table\"\n }, [_c('thead', [_c('tr', _vm._l((_vm.columns), function(column) {\n return _c('th', [_vm._v(_vm._s(column.name))])\n }))]), _vm._v(\" \"), _c('tbody', [(_vm.pagination.total == 0) ? _c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(_vm._s(_vm.translation.table.records_not_found))])]) : _vm._l((_vm.tableData), function(row, index) {\n return _c('tr', {\n class: {\n 'success': (index == _vm.indexSelected)\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.selectRow(row, index)\n }\n }\n }, _vm._l((_vm.columns), function(k) {\n return _c('td', [_vm._v(\"\\n \" + _vm._s(_vm.fetchFromObject(row, k.key, k.render)) + \"\\n \")])\n }))\n }), _vm._v(\" \"), _c('tr', [_c('td', {\n staticClass: \"text-center\",\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.tableInfo) + \"\\n \")])])], 2)])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-footer Vue__panel-footer\"\n }, [_c('div', {\n staticClass: \"pull-left\"\n }, [_c('div', {\n staticClass: \"btn-group Vue__datasource_actions\"\n }, _vm._l((_vm.actions), function(btn) {\n return _c('button', {\n staticClass: \"btn btn-default\",\n class: btn.class,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n btn.event($event, _vm.selected)\n }\n }\n }, [(btn.icon) ? _c('i', {\n staticClass: \"pr1\",\n class: btn.icon\n }) : _vm._e(), _vm._v(\"\\n \" + _vm._s(btn.text) + \"\\n \")])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"pull-right\"\n }, [_c('pagination', {\n attrs: {\n \"pages\": _vm.pagination,\n \"translation\": _vm.translation.pagination\n },\n on: {\n \"change\": _vm.changePage\n }\n })], 1), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-1d79c98a!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Datasource.vue\n// module id = 11\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"Vue__pagination\"\n }, [_c('nav', {\n attrs: {\n \"aria-label\": \"Page navigation\"\n }\n }, [_c('ul', {\n staticClass: \"pagination\"\n }, [_c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.firstPage($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Previous\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.previous($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"«\")])])]), _vm._v(\" \"), _vm._l((_vm.items), function(n) {\n return _c('li', {\n class: (_vm.pages.current_page == n) ? 'active' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.change(n)\n }\n }\n }, [_vm._v(_vm._s(n))])])\n }), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Next\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.next($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"»\")])])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.lastPage(_vm.pages.last_page)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-52eedd5a!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pagination.vue\n// module id = 12\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// Datasource.vue?015a03a1","\r\n \r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// Pagination.vue?f60c37d2","import Vue from 'vue/dist/vue.js';\r\nimport Datasource from './Datasource.vue';\r\n\r\nvar data = {\r\n \"pagination\": {\r\n \"total\": 4,\r\n \"per_page\": 15,\r\n \"current_page\": 1,\r\n \"last_page\": 1,\r\n \"next_page_url\": null,\r\n \"prev_page_url\": null,\r\n \"from\": 1,\r\n \"to\": 4\r\n },\r\n \"data\": [\r\n {\r\n \"id_grupo\": 1,\r\n \"tipo_grupo\": \"1\",\r\n \"nombre_grupo\": \"All\",\r\n \"estado_grupo\": \"1\",\r\n \"created_at\": \"2016-12-06 14:18:54\",\r\n \"updated_at\": \"2016-12-06 14:18:54\",\r\n \"deleted_at\": null,\r\n \"detalle_grupos_count\": \"4\"\r\n },\r\n {\r\n \"id_grupo\": 2,\r\n \"tipo_grupo\": \"1\",\r\n \"nombre_grupo\": \"Ladies\",\r\n \"estado_grupo\": \"1\",\r\n \"created_at\": \"2016-12-06 14:18:54\",\r\n \"updated_at\": \"2016-12-06 14:18:54\",\r\n \"deleted_at\": null,\r\n \"detalle_grupos_count\": \"1\"\r\n },\r\n {\r\n \"id_grupo\": 3,\r\n \"tipo_grupo\": \"2\",\r\n \"nombre_grupo\": \"Mens\",\r\n \"estado_grupo\": \"2\",\r\n \"created_at\": \"2016-12-06 14:18:54\",\r\n \"updated_at\": \"2016-12-06 14:18:54\",\r\n \"deleted_at\": null,\r\n \"detalle_grupos_count\": \"3\"\r\n },\r\n {\r\n \"id_grupo\": 4,\r\n \"tipo_grupo\": \"1\",\r\n \"nombre_grupo\": \"Chiefs\",\r\n \"estado_grupo\": \"1\",\r\n \"created_at\": \"2016-12-06 14:18:54\",\r\n \"updated_at\": \"2016-12-06 14:18:54\",\r\n \"deleted_at\": null,\r\n \"detalle_grupos_count\": \"1\"\r\n },\r\n {\r\n \"id_grupo\": 5,\r\n \"tipo_grupo\": \"2\",\r\n \"nombre_grupo\": \"Operators\",\r\n \"estado_grupo\": \"1\",\r\n \"created_at\": \"2016-12-06 14:18:54\",\r\n \"updated_at\": \"2016-12-06 14:18:54\",\r\n \"deleted_at\": null,\r\n \"detalle_grupos_count\": \"1\"\r\n }\r\n ]\r\n};\r\n\r\nnew Vue({\r\n el: '#app',\r\n components: {\r\n Datasource\r\n },\r\n data() {\r\n return {\r\n groups: {\r\n pagination: {},\r\n data: []\r\n },\r\n columns: [\r\n {\r\n name: 'Id',\r\n key: 'id_grupo',\r\n filter: false,\r\n render(value) {\r\n return `# ${value}`;\r\n }\r\n },\r\n {\r\n name: 'Name',\r\n key: 'nombre_grupo',\r\n filter: false\r\n },\r\n {\r\n name: 'Type',\r\n key: 'tipo_grupo',\r\n filter: false,\r\n render(value) {\r\n switch (value) {\r\n case '1':\r\n return 'Global';\r\n break;\r\n case '2':\r\n return 'General';\r\n break;\r\n case '3':\r\n return 'Personal';\r\n break;\r\n }\r\n }\r\n },\r\n {\r\n name: 'Total',\r\n key: 'detalle_grupos_count',\r\n filter: false,\r\n },\r\n {\r\n name: 'Date',\r\n key: 'created_at',\r\n filter: false\r\n },\r\n ],\r\n actions: [\r\n {\r\n text: 'Edit',\r\n icon: 'glyphicon glyphicon-pencil',\r\n class: 'btn-primary',\r\n event(e, row) {\r\n console.warn('Did clicked me?', e);\r\n if (row == null) {\r\n console.info('Ups.. data not found :(')\r\n } else {\r\n console.info('Yeeei, I found this :)', JSON.stringify(row));\r\n }\r\n }\r\n },\r\n {\r\n text: 'Delete',\r\n icon: 'glyphicon glyphicon-trash',\r\n class: 'btn-danger',\r\n event(e, row) {\r\n console.warn('Are you clicked me?', e);\r\n if (row == null) {\r\n console.info('Ups.. data not found :(')\r\n } else {\r\n console.info('Yeeei, I found this :)', JSON.stringify(row));\r\n }\r\n }\r\n },\r\n {\r\n text: 'Show',\r\n icon: 'glyphicon glyphicon-eye-open',\r\n class: 'btn-info',\r\n event(e, row) {\r\n console.warn('Are you clicked me?', e);\r\n if (row == null) {\r\n console.info('Ups.. data not found :(')\r\n } else {\r\n console.info('Yeeei, I found this :)', JSON.stringify(row));\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n },\r\n mounted() {\r\n this.groups = data;\r\n },\r\n methods: {\r\n changePage(values) {\r\n alert(`Show limit changed, the new limit is ${values.perpage} and the current page is ${values.page}`);\r\n },\r\n onSearch(searchQuery) {\r\n alert(`Did you find this? ${searchQuery}`);\r\n }\r\n }\r\n});\n\n\n// WEBPACK FOOTER //\n// ./src/example.js","export default {\r\n translations: {\r\n // English translation\r\n 'en': {\r\n 'table': {\r\n 'label_limits': 'Show',\r\n 'label_search': 'Search',\r\n 'placeholder_search': 'Type to search..',\r\n 'records_not_found': 'No records found'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Showing',\r\n 'label_to': 'to',\r\n 'label_of': 'of',\r\n 'label_entries': 'entries',\r\n 'btn_first': 'First',\r\n 'btn_last': 'Latest'\r\n }\r\n },\r\n // Spanish translation\r\n 'es': {\r\n 'table': {\r\n 'label_limits': 'Mostrar',\r\n 'label_search': 'Buscar',\r\n 'placeholder_search': 'Buscar ..',\r\n 'records_not_found': 'No se encontraron registros.'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Mostrando',\r\n 'label_to': 'a',\r\n 'label_of': 'de',\r\n 'label_entries': 'registros',\r\n 'btn_first': 'Primero',\r\n 'btn_last': 'Último'\r\n }\r\n },\r\n // French translation\r\n 'fr': {\r\n 'table': {\r\n 'label_limits': 'Afficher',\r\n 'label_search': 'Recherche',\r\n 'placeholder_search': 'Recherche par mot-clé..',\r\n 'records_not_found': 'Aucun enregistrements trouvés'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Affichage de',\r\n 'label_to': 'à',\r\n 'label_of': 'de',\r\n 'label_entries': 'entrées',\r\n 'btn_first': 'Première',\r\n 'btn_last': 'Dernière'\r\n }\r\n },\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceLanguage.js","export default {\r\n /**\r\n * Find the element value using Recursive Method and return the value rendered if it's defined\r\n * @param obj\r\n * @param column\r\n * @param render\r\n * @returns {*}\r\n */\r\n fetchFromObject(obj, column, render) {\r\n if (typeof obj === 'undefined') return false;\r\n let _index = column.indexOf('.');\r\n if (_index > -1) {\r\n return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));\r\n }\r\n if (typeof render != 'undefined') {\r\n return render(obj[column]);\r\n }\r\n return obj[column];\r\n },\r\n\r\n /**\r\n * Emit event to change page from pagination\r\n * @param page\r\n * @return {void}\r\n */\r\n changePage(page) {\r\n this.selected = null;\r\n this.indexSelected = -1;\r\n this.$emit('change', {perpage: this.perpage, page: page});\r\n },\r\n\r\n /**\r\n * Effect toggle to selected row\r\n * @param row\r\n * @param index\r\n * @return {void}\r\n */\r\n selectRow(row, index) {\r\n if (this.indexSelected == index) {\r\n this.indexSelected = -1;\r\n this.selected = null;\r\n } else {\r\n this.indexSelected = index;\r\n this.selected = {\r\n 'row': row,\r\n 'index': index\r\n };\r\n }\r\n },\r\n\r\n /**\r\n * Computed property: Building custom string information with translation\r\n * @returns {String}\r\n */\r\n tableInfo() {\r\n let label_show = this.translation.pagination.label_show;\r\n let from = (this.pagination.from == null) ? 0 : this.pagination.from;\r\n let label_to = this.translation.pagination.label_to;\r\n let to = (this.pagination.to == null) ? 0 : this.pagination.to;\r\n let label_of = this.translation.pagination.label_of;\r\n let total = this.pagination.total;\r\n let label_entries = this.translation.pagination.label_entries;\r\n\r\n return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceUtils.js","module.exports = { \"default\": require(\"core-js/library/fn/json/stringify\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/json/stringify.js\n// module id = 8\n// module chunks = 0","var core = require('../../modules/_core')\n , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify});\nmodule.exports = function stringify(it){ // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/fn/json/stringify.js\n// module id = 9\n// module chunks = 0","var core = module.exports = {version: '2.4.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_core.js\n// module id = 10\n// module chunks = 0","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.vue-datasource .Vue__panel-body[data-v-1d79c98a] {\\n padding: 0;\\n}\\n.vue-datasource .Vue__panel-body .Vue__table[data-v-1d79c98a] {\\n margin-bottom: 0;\\n}\\n.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-1d79c98a] {\\n margin: 10px 0;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-1d79c98a&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/Datasource.vue\n// module id = 11\n// module chunks = 0","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.Vue__pagination nav .pagination[data-v-52eedd5a] {\\n margin: 10px 0 !important;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-52eedd5a&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Pagination.vue\n// module id = 12\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-1d79c98a&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Datasource.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Datasource.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-1d79c98a!vue-loader/lib/selector?type=template&index=0!./Datasource.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-1d79c98a\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Datasource.vue\n// module id = 13\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-52eedd5a&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Pagination.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Pagination.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-52eedd5a!vue-loader/lib/selector?type=template&index=0!./Pagination.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-52eedd5a\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pagination.vue\n// module id = 14\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-datasource\"\n }, [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticClass: \"form-inline\"\n }, [_c('div', {\n staticClass: \"form-group pull-left\"\n }, [_c('label', {\n staticClass: \"control-label pr2\"\n }, [_vm._v(_vm._s(_vm.translation.table.label_limits))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.perpage),\n expression: \"perpage\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"number\": \"\"\n },\n on: {\n \"change\": function($event) {\n var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) {\n return o.selected\n }).map(function(o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val\n });\n _vm.perpage = $event.target.multiple ? $$selectedVal : $$selectedVal[0]\n }\n }\n }, _vm._l((_vm.limits), function(limit) {\n return _c('option', {\n domProps: {\n \"value\": limit\n }\n }, [_vm._v(_vm._s(limit))])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group pull-right\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.search),\n expression: \"search\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.translation.table.placeholder_search\n },\n domProps: {\n \"value\": (_vm.search)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.search = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.searching($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.table.label_search) + \"\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body Vue__panel-body\"\n }, [_c('table', {\n staticClass: \"table table-striped Vue__table\"\n }, [_c('thead', [_c('tr', _vm._l((_vm.columns), function(column) {\n return _c('th', [_vm._v(_vm._s(column.name))])\n }))]), _vm._v(\" \"), _c('tbody', [(_vm.pagination.total == 0) ? _c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(_vm._s(_vm.translation.table.records_not_found))])]) : _vm._l((_vm.tableData), function(row, index) {\n return _c('tr', {\n class: {\n 'success': (index == _vm.indexSelected)\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.selectRow(row, index)\n }\n }\n }, _vm._l((_vm.columns), function(k) {\n return _c('td', [_vm._v(\"\\n \" + _vm._s(_vm.fetchFromObject(row, k.key, k.render)) + \"\\n \")])\n }))\n }), _vm._v(\" \"), _c('tr', [_c('td', {\n staticClass: \"text-center\",\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.tableInfo) + \"\\n \")])])], 2)])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-footer Vue__panel-footer\"\n }, [_c('div', {\n staticClass: \"pull-left\"\n }, [_c('div', {\n staticClass: \"btn-group Vue__datasource_actions\"\n }, _vm._l((_vm.actions), function(btn) {\n return _c('button', {\n staticClass: \"btn btn-default\",\n class: btn.class,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n btn.event($event, _vm.selected)\n }\n }\n }, [(btn.icon) ? _c('i', {\n staticClass: \"pr1\",\n class: btn.icon\n }) : _vm._e(), _vm._v(\"\\n \" + _vm._s(btn.text) + \"\\n \")])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"pull-right\"\n }, [_c('pagination', {\n attrs: {\n \"pages\": _vm.pagination,\n \"translation\": _vm.translation.pagination\n },\n on: {\n \"change\": _vm.changePage\n }\n })], 1), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-1d79c98a!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Datasource.vue\n// module id = 15\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"Vue__pagination\"\n }, [_c('nav', {\n attrs: {\n \"aria-label\": \"Page navigation\"\n }\n }, [_c('ul', {\n staticClass: \"pagination\"\n }, [_c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.firstPage($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Previous\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.previous($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"«\")])])]), _vm._v(\" \"), _vm._l((_vm.items), function(n) {\n return _c('li', {\n class: (_vm.pages.current_page == n) ? 'active' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.change(n)\n }\n }\n }, [_vm._v(_vm._s(n))])])\n }), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Next\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.next($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"»\")])])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.lastPage(_vm.pages.last_page)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-52eedd5a!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pagination.vue\n// module id = 16\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// Datasource.vue?28dd5f97","\n \n\n\n\n\n\n// WEBPACK FOOTER //\n// Pagination.vue?633c2b7c","import Vue from 'vue/dist/vue.js';\nimport Datasource from './Datasource.vue';\n\nvar data = {\n \"pagination\": {\n \"total\": 4,\n \"per_page\": 15,\n \"current_page\": 1,\n \"last_page\": 1,\n \"next_page_url\": null,\n \"prev_page_url\": null,\n \"from\": 1,\n \"to\": 4\n },\n \"data\": [\n {\n \"id_grupo\": 1,\n \"tipo_grupo\": \"1\",\n \"nombre_grupo\": \"All\",\n \"estado_grupo\": \"1\",\n \"created_at\": \"2016-12-06 14:18:54\",\n \"updated_at\": \"2016-12-06 14:18:54\",\n \"deleted_at\": null,\n \"detalle_grupos_count\": \"4\"\n },\n {\n \"id_grupo\": 2,\n \"tipo_grupo\": \"1\",\n \"nombre_grupo\": \"Ladies\",\n \"estado_grupo\": \"1\",\n \"created_at\": \"2016-12-06 14:18:54\",\n \"updated_at\": \"2016-12-06 14:18:54\",\n \"deleted_at\": null,\n \"detalle_grupos_count\": \"1\"\n },\n {\n \"id_grupo\": 3,\n \"tipo_grupo\": \"2\",\n \"nombre_grupo\": \"Mens\",\n \"estado_grupo\": \"2\",\n \"created_at\": \"2016-12-06 14:18:54\",\n \"updated_at\": \"2016-12-06 14:18:54\",\n \"deleted_at\": null,\n \"detalle_grupos_count\": \"3\"\n },\n {\n \"id_grupo\": 4,\n \"tipo_grupo\": \"1\",\n \"nombre_grupo\": \"Chiefs\",\n \"estado_grupo\": \"1\",\n \"created_at\": \"2016-12-06 14:18:54\",\n \"updated_at\": \"2016-12-06 14:18:54\",\n \"deleted_at\": null,\n \"detalle_grupos_count\": \"1\"\n },\n {\n \"id_grupo\": 5,\n \"tipo_grupo\": \"2\",\n \"nombre_grupo\": \"Operators\",\n \"estado_grupo\": \"1\",\n \"created_at\": \"2016-12-06 14:18:54\",\n \"updated_at\": \"2016-12-06 14:18:54\",\n \"deleted_at\": null,\n \"detalle_grupos_count\": \"1\"\n }\n ]\n};\n\nnew Vue({\n el: '#app',\n components: {\n Datasource\n },\n data() {\n return {\n groups: {\n pagination: {},\n data: []\n },\n columns: [\n {\n name: 'Id',\n key: 'id_grupo',\n filter: false,\n render(value) {\n return `# ${value}`;\n }\n },\n {\n name: 'Name',\n key: 'nombre_grupo',\n filter: false\n },\n {\n name: 'Type',\n key: 'tipo_grupo',\n filter: false,\n render(value) {\n switch (value) {\n case '1':\n return 'Global';\n break;\n case '2':\n return 'General';\n break;\n case '3':\n return 'Personal';\n break;\n }\n }\n },\n {\n name: 'Total',\n key: 'detalle_grupos_count',\n filter: false,\n },\n {\n name: 'Date',\n key: 'created_at',\n filter: false\n },\n ],\n actions: [\n {\n text: 'Edit',\n icon: 'glyphicon glyphicon-pencil',\n class: 'btn-primary',\n event(e, row) {\n console.warn('Did clicked me?', e);\n if (row == null) {\n console.info('Ups.. data not found :(')\n } else {\n console.info('Yeeei, I found this :)', JSON.stringify(row));\n }\n }\n },\n {\n text: 'Delete',\n icon: 'glyphicon glyphicon-trash',\n class: 'btn-danger',\n event(e, row) {\n console.warn('Are you clicked me?', e);\n if (row == null) {\n console.info('Ups.. data not found :(')\n } else {\n console.info('Yeeei, I found this :)', JSON.stringify(row));\n }\n }\n },\n {\n text: 'Show',\n icon: 'glyphicon glyphicon-eye-open',\n class: 'btn-info',\n event(e, row) {\n console.warn('Are you clicked me?', e);\n if (row == null) {\n console.info('Ups.. data not found :(')\n } else {\n console.info('Yeeei, I found this :)', JSON.stringify(row));\n }\n }\n }\n ]\n }\n },\n mounted() {\n this.groups = data;\n },\n methods: {\n changePage(values) {\n alert(`Show limit changed, the new limit is ${values.perpage} and the current page is ${values.page}`);\n },\n onSearch(searchQuery) {\n alert(`Did you find this? ${searchQuery}`);\n }\n }\n});\n\n\n// WEBPACK FOOTER //\n// ./src/example.js","export default {\n translations: {\n // English translation\n 'en': {\n 'table': {\n 'label_limits': 'Show',\n 'label_search': 'Search',\n 'placeholder_search': 'Type to search..',\n 'records_not_found': 'No records found'\n },\n 'pagination': {\n 'label_show': 'Showing',\n 'label_to': 'to',\n 'label_of': 'of',\n 'label_entries': 'entries',\n 'btn_first': 'First',\n 'btn_last': 'Latest'\n }\n },\n // Spanish translation\n 'es': {\n 'table': {\n 'label_limits': 'Mostrar',\n 'label_search': 'Buscar',\n 'placeholder_search': 'Buscar ..',\n 'records_not_found': 'No se encontraron registros.'\n },\n 'pagination': {\n 'label_show': 'Mostrando',\n 'label_to': 'a',\n 'label_of': 'de',\n 'label_entries': 'registros',\n 'btn_first': 'Primero',\n 'btn_last': 'Último'\n }\n },\n // French translation\n 'fr': {\n 'table': {\n 'label_limits': 'Afficher',\n 'label_search': 'Recherche',\n 'placeholder_search': 'Recherche par mot-clé..',\n 'records_not_found': 'Aucun enregistrements trouvés'\n },\n 'pagination': {\n 'label_show': 'Affichage de',\n 'label_to': 'à',\n 'label_of': 'de',\n 'label_entries': 'entrées',\n 'btn_first': 'Première',\n 'btn_last': 'Dernière'\n }\n },\n // Chinese Simplified translation\n 'zh-CN': {\n 'table': {\n 'label_limits': '显示',\n 'label_search': '搜索',\n 'placeholder_search': '输入搜索..',\n 'records_not_found': '记录未找到'\n },\n 'pagination': {\n 'label_show': '正在显示',\n 'label_to': '到',\n 'label_of': '总共',\n 'label_entries': '条目',\n 'btn_first': '首页',\n 'btn_last': '未页'\n }\n },\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceLanguage.js","export default {\n /**\n * Find the element value using Recursive Method and return the value rendered if it's defined\n * @param obj\n * @param column\n * @param render\n * @returns {*}\n */\n fetchFromObject(obj, column, render) {\n if (typeof obj === 'undefined') return false;\n let _index = column.indexOf('.');\n if (_index > -1) {\n return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));\n }\n if (typeof render != 'undefined') {\n return render(obj[column]);\n }\n return obj[column];\n },\n\n /**\n * Emit event to change page from pagination\n * @param page\n * @return {void}\n */\n changePage(page) {\n this.selected = null;\n this.indexSelected = -1;\n this.$emit('change', {perpage: this.perpage, page: page});\n },\n\n /**\n * Effect toggle to selected row\n * @param row\n * @param index\n * @return {void}\n */\n selectRow(row, index) {\n if (this.indexSelected == index) {\n this.indexSelected = -1;\n this.selected = null;\n } else {\n this.indexSelected = index;\n this.selected = {\n 'row': row,\n 'index': index\n };\n }\n },\n\n /**\n * Computed property: Building custom string information with translation\n * @returns {String}\n */\n tableInfo() {\n let label_show = this.translation.pagination.label_show;\n let from = (this.pagination.from == null) ? 0 : this.pagination.from;\n let label_to = this.translation.pagination.label_to;\n let to = (this.pagination.to == null) ? 0 : this.pagination.to;\n let label_of = this.translation.pagination.label_of;\n let total = this.pagination.total;\n let label_entries = this.translation.pagination.label_entries;\n\n return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceUtils.js","module.exports = { \"default\": require(\"core-js/library/fn/json/stringify\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/json/stringify.js\n// module id = 8\n// module chunks = 0","var core = require('../../modules/_core')\n , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify});\nmodule.exports = function stringify(it){ // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/fn/json/stringify.js\n// module id = 9\n// module chunks = 0","var core = module.exports = {version: '2.4.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_core.js\n// module id = 10\n// module chunks = 0","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.Vue__pagination nav .pagination[data-v-1423dbfa] {\\n margin: 10px 0 !important;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-1423dbfa&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Pagination.vue\n// module id = 11\n// module chunks = 0","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.vue-datasource .Vue__panel-body[data-v-29611564] {\\n padding: 0;\\n}\\n.vue-datasource .Vue__panel-body .Vue__table[data-v-29611564] {\\n margin-bottom: 0;\\n}\\n.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-29611564] {\\n margin: 10px 0;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-29611564&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/Datasource.vue\n// module id = 12\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-29611564&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Datasource.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Datasource.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-29611564!vue-loader/lib/selector?type=template&index=0!./Datasource.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-29611564\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Datasource.vue\n// module id = 13\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-1423dbfa&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Pagination.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Pagination.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-1423dbfa!vue-loader/lib/selector?type=template&index=0!./Pagination.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-1423dbfa\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pagination.vue\n// module id = 14\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"Vue__pagination\"\n }, [_c('nav', {\n attrs: {\n \"aria-label\": \"Page navigation\"\n }\n }, [_c('ul', {\n staticClass: \"pagination\"\n }, [_c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.firstPage($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Previous\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.previous($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"«\")])])]), _vm._v(\" \"), _vm._l((_vm.items), function(n) {\n return _c('li', {\n class: (_vm.pages.current_page == n) ? 'active' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.change(n)\n }\n }\n }, [_vm._v(_vm._s(n))])])\n }), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Next\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.next($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"»\")])])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.lastPage(_vm.pages.last_page)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-1423dbfa!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pagination.vue\n// module id = 15\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-datasource\"\n }, [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticClass: \"form-inline\"\n }, [_c('div', {\n staticClass: \"form-group pull-left\"\n }, [_c('label', {\n staticClass: \"control-label pr2\"\n }, [_vm._v(_vm._s(_vm.translation.table.label_limits))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.perpage),\n expression: \"perpage\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"number\": \"\"\n },\n on: {\n \"change\": function($event) {\n var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) {\n return o.selected\n }).map(function(o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val\n });\n _vm.perpage = $event.target.multiple ? $$selectedVal : $$selectedVal[0]\n }\n }\n }, _vm._l((_vm.limits), function(limit) {\n return _c('option', {\n domProps: {\n \"value\": limit\n }\n }, [_vm._v(_vm._s(limit))])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group pull-right\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.search),\n expression: \"search\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.translation.table.placeholder_search\n },\n domProps: {\n \"value\": (_vm.search)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.search = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.searching($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.table.label_search) + \"\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body Vue__panel-body\"\n }, [_c('table', {\n staticClass: \"table table-striped Vue__table\"\n }, [_c('thead', [_c('tr', _vm._l((_vm.columns), function(column) {\n return _c('th', [_vm._v(_vm._s(column.name))])\n }))]), _vm._v(\" \"), _c('tbody', [(_vm.pagination.total == 0) ? _c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(_vm._s(_vm.translation.table.records_not_found))])]) : _vm._l((_vm.tableData), function(row, index) {\n return _c('tr', {\n class: {\n 'success': (index == _vm.indexSelected)\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.selectRow(row, index)\n }\n }\n }, _vm._l((_vm.columns), function(k) {\n return _c('td', [_vm._v(\"\\n \" + _vm._s(_vm.fetchFromObject(row, k.key, k.render)) + \"\\n \")])\n }))\n }), _vm._v(\" \"), _c('tr', [_c('td', {\n staticClass: \"text-center\",\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.tableInfo) + \"\\n \")])])], 2)])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-footer Vue__panel-footer\"\n }, [_c('div', {\n staticClass: \"pull-left\"\n }, [_c('div', {\n staticClass: \"btn-group Vue__datasource_actions\"\n }, _vm._l((_vm.actions), function(btn) {\n return _c('button', {\n staticClass: \"btn btn-default\",\n class: btn.class,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n btn.event($event, _vm.selected)\n }\n }\n }, [(btn.icon) ? _c('i', {\n staticClass: \"pr1\",\n class: btn.icon\n }) : _vm._e(), _vm._v(\"\\n \" + _vm._s(btn.text) + \"\\n \")])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"pull-right\"\n }, [_c('pagination', {\n attrs: {\n \"pages\": _vm.pagination,\n \"translation\": _vm.translation.pagination\n },\n on: {\n \"change\": _vm.changePage\n }\n })], 1), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-29611564!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Datasource.vue\n// module id = 16\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// Datasource.vue?015a03a1","\r\n \r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// Pagination.vue?f60c37d2","export default {\r\n translations: {\r\n // English translation\r\n 'en': {\r\n 'table': {\r\n 'label_limits': 'Show',\r\n 'label_search': 'Search',\r\n 'placeholder_search': 'Type to search..',\r\n 'records_not_found': 'No records found'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Showing',\r\n 'label_to': 'to',\r\n 'label_of': 'of',\r\n 'label_entries': 'entries',\r\n 'btn_first': 'First',\r\n 'btn_last': 'Latest'\r\n }\r\n },\r\n // Spanish translation\r\n 'es': {\r\n 'table': {\r\n 'label_limits': 'Mostrar',\r\n 'label_search': 'Buscar',\r\n 'placeholder_search': 'Buscar ..',\r\n 'records_not_found': 'No se encontraron registros.'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Mostrando',\r\n 'label_to': 'a',\r\n 'label_of': 'de',\r\n 'label_entries': 'registros',\r\n 'btn_first': 'Primero',\r\n 'btn_last': 'Último'\r\n }\r\n },\r\n // French translation\r\n 'fr': {\r\n 'table': {\r\n 'label_limits': 'Afficher',\r\n 'label_search': 'Recherche',\r\n 'placeholder_search': 'Recherche par mot-clé..',\r\n 'records_not_found': 'Aucun enregistrements trouvés'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Affichage de',\r\n 'label_to': 'à',\r\n 'label_of': 'de',\r\n 'label_entries': 'entrées',\r\n 'btn_first': 'Première',\r\n 'btn_last': 'Dernière'\r\n }\r\n },\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceLanguage.js","export default {\r\n /**\r\n * Find the element value using Recursive Method and return the value rendered if it's defined\r\n * @param obj\r\n * @param column\r\n * @param render\r\n * @returns {*}\r\n */\r\n fetchFromObject(obj, column, render) {\r\n if (typeof obj === 'undefined') return false;\r\n let _index = column.indexOf('.');\r\n if (_index > -1) {\r\n return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));\r\n }\r\n if (typeof render != 'undefined') {\r\n return render(obj[column]);\r\n }\r\n return obj[column];\r\n },\r\n\r\n /**\r\n * Emit event to change page from pagination\r\n * @param page\r\n * @return {void}\r\n */\r\n changePage(page) {\r\n this.selected = null;\r\n this.indexSelected = -1;\r\n this.$emit('change', {perpage: this.perpage, page: page});\r\n },\r\n\r\n /**\r\n * Effect toggle to selected row\r\n * @param row\r\n * @param index\r\n * @return {void}\r\n */\r\n selectRow(row, index) {\r\n if (this.indexSelected == index) {\r\n this.indexSelected = -1;\r\n this.selected = null;\r\n } else {\r\n this.indexSelected = index;\r\n this.selected = {\r\n 'row': row,\r\n 'index': index\r\n };\r\n }\r\n },\r\n\r\n /**\r\n * Computed property: Building custom string information with translation\r\n * @returns {String}\r\n */\r\n tableInfo() {\r\n let label_show = this.translation.pagination.label_show;\r\n let from = (this.pagination.from == null) ? 0 : this.pagination.from;\r\n let label_to = this.translation.pagination.label_to;\r\n let to = (this.pagination.to == null) ? 0 : this.pagination.to;\r\n let label_of = this.translation.pagination.label_of;\r\n let total = this.pagination.total;\r\n let label_entries = this.translation.pagination.label_entries;\r\n\r\n return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceUtils.js","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.vue-datasource .Vue__panel-body[data-v-1d79c98a] {\\n padding: 0;\\n}\\n.vue-datasource .Vue__panel-body .Vue__table[data-v-1d79c98a] {\\n margin-bottom: 0;\\n}\\n.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-1d79c98a] {\\n margin: 10px 0;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-1d79c98a&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/Datasource.vue\n// module id = 7\n// module chunks = 0","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.Vue__pagination nav .pagination[data-v-52eedd5a] {\\n margin: 10px 0 !important;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-52eedd5a&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Pagination.vue\n// module id = 8\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-1d79c98a&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Datasource.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Datasource.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-1d79c98a!vue-loader/lib/selector?type=template&index=0!./Datasource.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-1d79c98a\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Datasource.vue\n// module id = 9\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-52eedd5a&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Pagination.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Pagination.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-52eedd5a!vue-loader/lib/selector?type=template&index=0!./Pagination.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-52eedd5a\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pagination.vue\n// module id = 10\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-datasource\"\n }, [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticClass: \"form-inline\"\n }, [_c('div', {\n staticClass: \"form-group pull-left\"\n }, [_c('label', {\n staticClass: \"control-label pr2\"\n }, [_vm._v(_vm._s(_vm.translation.table.label_limits))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.perpage),\n expression: \"perpage\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"number\": \"\"\n },\n on: {\n \"change\": function($event) {\n var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) {\n return o.selected\n }).map(function(o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val\n });\n _vm.perpage = $event.target.multiple ? $$selectedVal : $$selectedVal[0]\n }\n }\n }, _vm._l((_vm.limits), function(limit) {\n return _c('option', {\n domProps: {\n \"value\": limit\n }\n }, [_vm._v(_vm._s(limit))])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group pull-right\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.search),\n expression: \"search\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.translation.table.placeholder_search\n },\n domProps: {\n \"value\": (_vm.search)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.search = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.searching($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.table.label_search) + \"\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body Vue__panel-body\"\n }, [_c('table', {\n staticClass: \"table table-striped Vue__table\"\n }, [_c('thead', [_c('tr', _vm._l((_vm.columns), function(column) {\n return _c('th', [_vm._v(_vm._s(column.name))])\n }))]), _vm._v(\" \"), _c('tbody', [(_vm.pagination.total == 0) ? _c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(_vm._s(_vm.translation.table.records_not_found))])]) : _vm._l((_vm.tableData), function(row, index) {\n return _c('tr', {\n class: {\n 'success': (index == _vm.indexSelected)\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.selectRow(row, index)\n }\n }\n }, _vm._l((_vm.columns), function(k) {\n return _c('td', [_vm._v(\"\\n \" + _vm._s(_vm.fetchFromObject(row, k.key, k.render)) + \"\\n \")])\n }))\n }), _vm._v(\" \"), _c('tr', [_c('td', {\n staticClass: \"text-center\",\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.tableInfo) + \"\\n \")])])], 2)])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-footer Vue__panel-footer\"\n }, [_c('div', {\n staticClass: \"pull-left\"\n }, [_c('div', {\n staticClass: \"btn-group Vue__datasource_actions\"\n }, _vm._l((_vm.actions), function(btn) {\n return _c('button', {\n staticClass: \"btn btn-default\",\n class: btn.class,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n btn.event($event, _vm.selected)\n }\n }\n }, [(btn.icon) ? _c('i', {\n staticClass: \"pr1\",\n class: btn.icon\n }) : _vm._e(), _vm._v(\"\\n \" + _vm._s(btn.text) + \"\\n \")])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"pull-right\"\n }, [_c('pagination', {\n attrs: {\n \"pages\": _vm.pagination,\n \"translation\": _vm.translation.pagination\n },\n on: {\n \"change\": _vm.changePage\n }\n })], 1), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-1d79c98a!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Datasource.vue\n// module id = 11\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"Vue__pagination\"\n }, [_c('nav', {\n attrs: {\n \"aria-label\": \"Page navigation\"\n }\n }, [_c('ul', {\n staticClass: \"pagination\"\n }, [_c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.firstPage($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Previous\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.previous($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"«\")])])]), _vm._v(\" \"), _vm._l((_vm.items), function(n) {\n return _c('li', {\n class: (_vm.pages.current_page == n) ? 'active' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.change(n)\n }\n }\n }, [_vm._v(_vm._s(n))])])\n }), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Next\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.next($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"»\")])])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.lastPage(_vm.pages.last_page)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-52eedd5a!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pagination.vue\n// module id = 12\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// Datasource.vue?28dd5f97","\n \n\n\n\n\n\n// WEBPACK FOOTER //\n// Pagination.vue?633c2b7c","export default {\n translations: {\n // English translation\n 'en': {\n 'table': {\n 'label_limits': 'Show',\n 'label_search': 'Search',\n 'placeholder_search': 'Type to search..',\n 'records_not_found': 'No records found'\n },\n 'pagination': {\n 'label_show': 'Showing',\n 'label_to': 'to',\n 'label_of': 'of',\n 'label_entries': 'entries',\n 'btn_first': 'First',\n 'btn_last': 'Latest'\n }\n },\n // Spanish translation\n 'es': {\n 'table': {\n 'label_limits': 'Mostrar',\n 'label_search': 'Buscar',\n 'placeholder_search': 'Buscar ..',\n 'records_not_found': 'No se encontraron registros.'\n },\n 'pagination': {\n 'label_show': 'Mostrando',\n 'label_to': 'a',\n 'label_of': 'de',\n 'label_entries': 'registros',\n 'btn_first': 'Primero',\n 'btn_last': 'Último'\n }\n },\n // French translation\n 'fr': {\n 'table': {\n 'label_limits': 'Afficher',\n 'label_search': 'Recherche',\n 'placeholder_search': 'Recherche par mot-clé..',\n 'records_not_found': 'Aucun enregistrements trouvés'\n },\n 'pagination': {\n 'label_show': 'Affichage de',\n 'label_to': 'à',\n 'label_of': 'de',\n 'label_entries': 'entrées',\n 'btn_first': 'Première',\n 'btn_last': 'Dernière'\n }\n },\n // Chinese Simplified translation\n 'zh-CN': {\n 'table': {\n 'label_limits': '显示',\n 'label_search': '搜索',\n 'placeholder_search': '输入搜索..',\n 'records_not_found': '记录未找到'\n },\n 'pagination': {\n 'label_show': '正在显示',\n 'label_to': '到',\n 'label_of': '总共',\n 'label_entries': '条目',\n 'btn_first': '首页',\n 'btn_last': '未页'\n }\n },\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceLanguage.js","export default {\n /**\n * Find the element value using Recursive Method and return the value rendered if it's defined\n * @param obj\n * @param column\n * @param render\n * @returns {*}\n */\n fetchFromObject(obj, column, render) {\n if (typeof obj === 'undefined') return false;\n let _index = column.indexOf('.');\n if (_index > -1) {\n return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));\n }\n if (typeof render != 'undefined') {\n return render(obj[column]);\n }\n return obj[column];\n },\n\n /**\n * Emit event to change page from pagination\n * @param page\n * @return {void}\n */\n changePage(page) {\n this.selected = null;\n this.indexSelected = -1;\n this.$emit('change', {perpage: this.perpage, page: page});\n },\n\n /**\n * Effect toggle to selected row\n * @param row\n * @param index\n * @return {void}\n */\n selectRow(row, index) {\n if (this.indexSelected == index) {\n this.indexSelected = -1;\n this.selected = null;\n } else {\n this.indexSelected = index;\n this.selected = {\n 'row': row,\n 'index': index\n };\n }\n },\n\n /**\n * Computed property: Building custom string information with translation\n * @returns {String}\n */\n tableInfo() {\n let label_show = this.translation.pagination.label_show;\n let from = (this.pagination.from == null) ? 0 : this.pagination.from;\n let label_to = this.translation.pagination.label_to;\n let to = (this.pagination.to == null) ? 0 : this.pagination.to;\n let label_of = this.translation.pagination.label_of;\n let total = this.pagination.total;\n let label_entries = this.translation.pagination.label_entries;\n\n return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceUtils.js","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.Vue__pagination nav .pagination[data-v-1423dbfa] {\\n margin: 10px 0 !important;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-1423dbfa&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Pagination.vue\n// module id = 7\n// module chunks = 0","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.vue-datasource .Vue__panel-body[data-v-29611564] {\\n padding: 0;\\n}\\n.vue-datasource .Vue__panel-body .Vue__table[data-v-29611564] {\\n margin-bottom: 0;\\n}\\n.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-29611564] {\\n margin: 10px 0;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-29611564&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/Datasource.vue\n// module id = 8\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-29611564&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Datasource.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Datasource.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-29611564!vue-loader/lib/selector?type=template&index=0!./Datasource.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-29611564\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Datasource.vue\n// module id = 9\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-1423dbfa&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Pagination.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Pagination.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-1423dbfa!vue-loader/lib/selector?type=template&index=0!./Pagination.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-1423dbfa\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pagination.vue\n// module id = 10\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"Vue__pagination\"\n }, [_c('nav', {\n attrs: {\n \"aria-label\": \"Page navigation\"\n }\n }, [_c('ul', {\n staticClass: \"pagination\"\n }, [_c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.firstPage($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Previous\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.previous($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"«\")])])]), _vm._v(\" \"), _vm._l((_vm.items), function(n) {\n return _c('li', {\n class: (_vm.pages.current_page == n) ? 'active' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.change(n)\n }\n }\n }, [_vm._v(_vm._s(n))])])\n }), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Next\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.next($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"»\")])])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.lastPage(_vm.pages.last_page)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-1423dbfa!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pagination.vue\n// module id = 11\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-datasource\"\n }, [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticClass: \"form-inline\"\n }, [_c('div', {\n staticClass: \"form-group pull-left\"\n }, [_c('label', {\n staticClass: \"control-label pr2\"\n }, [_vm._v(_vm._s(_vm.translation.table.label_limits))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.perpage),\n expression: \"perpage\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"number\": \"\"\n },\n on: {\n \"change\": function($event) {\n var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) {\n return o.selected\n }).map(function(o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val\n });\n _vm.perpage = $event.target.multiple ? $$selectedVal : $$selectedVal[0]\n }\n }\n }, _vm._l((_vm.limits), function(limit) {\n return _c('option', {\n domProps: {\n \"value\": limit\n }\n }, [_vm._v(_vm._s(limit))])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group pull-right\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.search),\n expression: \"search\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.translation.table.placeholder_search\n },\n domProps: {\n \"value\": (_vm.search)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.search = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.searching($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.table.label_search) + \"\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body Vue__panel-body\"\n }, [_c('table', {\n staticClass: \"table table-striped Vue__table\"\n }, [_c('thead', [_c('tr', _vm._l((_vm.columns), function(column) {\n return _c('th', [_vm._v(_vm._s(column.name))])\n }))]), _vm._v(\" \"), _c('tbody', [(_vm.pagination.total == 0) ? _c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(_vm._s(_vm.translation.table.records_not_found))])]) : _vm._l((_vm.tableData), function(row, index) {\n return _c('tr', {\n class: {\n 'success': (index == _vm.indexSelected)\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.selectRow(row, index)\n }\n }\n }, _vm._l((_vm.columns), function(k) {\n return _c('td', [_vm._v(\"\\n \" + _vm._s(_vm.fetchFromObject(row, k.key, k.render)) + \"\\n \")])\n }))\n }), _vm._v(\" \"), _c('tr', [_c('td', {\n staticClass: \"text-center\",\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.tableInfo) + \"\\n \")])])], 2)])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-footer Vue__panel-footer\"\n }, [_c('div', {\n staticClass: \"pull-left\"\n }, [_c('div', {\n staticClass: \"btn-group Vue__datasource_actions\"\n }, _vm._l((_vm.actions), function(btn) {\n return _c('button', {\n staticClass: \"btn btn-default\",\n class: btn.class,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n btn.event($event, _vm.selected)\n }\n }\n }, [(btn.icon) ? _c('i', {\n staticClass: \"pr1\",\n class: btn.icon\n }) : _vm._e(), _vm._v(\"\\n \" + _vm._s(btn.text) + \"\\n \")])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"pull-right\"\n }, [_c('pagination', {\n attrs: {\n \"pages\": _vm.pagination,\n \"translation\": _vm.translation.pagination\n },\n on: {\n \"change\": _vm.changePage\n }\n })], 1), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-29611564!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Datasource.vue\n// module id = 12\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// Datasource.vue?015a03a1","\r\n \r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// Pagination.vue?f60c37d2","export default {\r\n translations: {\r\n // English translation\r\n 'en': {\r\n 'table': {\r\n 'label_limits': 'Show',\r\n 'label_search': 'Search',\r\n 'placeholder_search': 'Type to search..',\r\n 'records_not_found': 'No records found'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Showing',\r\n 'label_to': 'to',\r\n 'label_of': 'of',\r\n 'label_entries': 'entries',\r\n 'btn_first': 'First',\r\n 'btn_last': 'Latest'\r\n }\r\n },\r\n // Spanish translation\r\n 'es': {\r\n 'table': {\r\n 'label_limits': 'Mostrar',\r\n 'label_search': 'Buscar',\r\n 'placeholder_search': 'Buscar ..',\r\n 'records_not_found': 'No se encontraron registros.'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Mostrando',\r\n 'label_to': 'a',\r\n 'label_of': 'de',\r\n 'label_entries': 'registros',\r\n 'btn_first': 'Primero',\r\n 'btn_last': 'Último'\r\n }\r\n },\r\n // French translation\r\n 'fr': {\r\n 'table': {\r\n 'label_limits': 'Afficher',\r\n 'label_search': 'Recherche',\r\n 'placeholder_search': 'Recherche par mot-clé..',\r\n 'records_not_found': 'Aucun enregistrements trouvés'\r\n },\r\n 'pagination': {\r\n 'label_show': 'Affichage de',\r\n 'label_to': 'à',\r\n 'label_of': 'de',\r\n 'label_entries': 'entrées',\r\n 'btn_first': 'Première',\r\n 'btn_last': 'Dernière'\r\n }\r\n },\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceLanguage.js","export default {\r\n /**\r\n * Find the element value using Recursive Method and return the value rendered if it's defined\r\n * @param obj\r\n * @param column\r\n * @param render\r\n * @returns {*}\r\n */\r\n fetchFromObject(obj, column, render) {\r\n if (typeof obj === 'undefined') return false;\r\n let _index = column.indexOf('.');\r\n if (_index > -1) {\r\n return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));\r\n }\r\n if (typeof render != 'undefined') {\r\n return render(obj[column]);\r\n }\r\n return obj[column];\r\n },\r\n\r\n /**\r\n * Emit event to change page from pagination\r\n * @param page\r\n * @return {void}\r\n */\r\n changePage(page) {\r\n this.selected = null;\r\n this.indexSelected = -1;\r\n this.$emit('change', {perpage: this.perpage, page: page});\r\n },\r\n\r\n /**\r\n * Effect toggle to selected row\r\n * @param row\r\n * @param index\r\n * @return {void}\r\n */\r\n selectRow(row, index) {\r\n if (this.indexSelected == index) {\r\n this.indexSelected = -1;\r\n this.selected = null;\r\n } else {\r\n this.indexSelected = index;\r\n this.selected = {\r\n 'row': row,\r\n 'index': index\r\n };\r\n }\r\n },\r\n\r\n /**\r\n * Computed property: Building custom string information with translation\r\n * @returns {String}\r\n */\r\n tableInfo() {\r\n let label_show = this.translation.pagination.label_show;\r\n let from = (this.pagination.from == null) ? 0 : this.pagination.from;\r\n let label_to = this.translation.pagination.label_to;\r\n let to = (this.pagination.to == null) ? 0 : this.pagination.to;\r\n let label_of = this.translation.pagination.label_of;\r\n let total = this.pagination.total;\r\n let label_entries = this.translation.pagination.label_entries;\r\n\r\n return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceUtils.js","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".vue-datasource .Vue__panel-body[data-v-1d79c98a]{padding:0}.vue-datasource .Vue__panel-body .Vue__table[data-v-1d79c98a]{margin-bottom:0}.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-1d79c98a]{margin:10px 0}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-1d79c98a&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/Datasource.vue\n// module id = 7\n// module chunks = 0","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".Vue__pagination nav .pagination[data-v-52eedd5a]{margin:10px 0!important}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-52eedd5a&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Pagination.vue\n// module id = 8\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-1d79c98a&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Datasource.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Datasource.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-1d79c98a!vue-loader/lib/selector?type=template&index=0!./Datasource.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-1d79c98a\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Datasource.vue\n// module id = 9\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-52eedd5a&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Pagination.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Pagination.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-52eedd5a!vue-loader/lib/selector?type=template&index=0!./Pagination.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-52eedd5a\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pagination.vue\n// module id = 10\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-datasource\"\n }, [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticClass: \"form-inline\"\n }, [_c('div', {\n staticClass: \"form-group pull-left\"\n }, [_c('label', {\n staticClass: \"control-label pr2\"\n }, [_vm._v(_vm._s(_vm.translation.table.label_limits))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.perpage),\n expression: \"perpage\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"number\": \"\"\n },\n on: {\n \"change\": function($event) {\n var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) {\n return o.selected\n }).map(function(o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val\n });\n _vm.perpage = $event.target.multiple ? $$selectedVal : $$selectedVal[0]\n }\n }\n }, _vm._l((_vm.limits), function(limit) {\n return _c('option', {\n domProps: {\n \"value\": limit\n }\n }, [_vm._v(_vm._s(limit))])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group pull-right\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.search),\n expression: \"search\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.translation.table.placeholder_search\n },\n domProps: {\n \"value\": (_vm.search)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.search = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.searching($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.table.label_search) + \"\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body Vue__panel-body\"\n }, [_c('table', {\n staticClass: \"table table-striped Vue__table\"\n }, [_c('thead', [_c('tr', _vm._l((_vm.columns), function(column) {\n return _c('th', [_vm._v(_vm._s(column.name))])\n }))]), _vm._v(\" \"), _c('tbody', [(_vm.pagination.total == 0) ? _c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(_vm._s(_vm.translation.table.records_not_found))])]) : _vm._l((_vm.tableData), function(row, index) {\n return _c('tr', {\n class: {\n 'success': (index == _vm.indexSelected)\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.selectRow(row, index)\n }\n }\n }, _vm._l((_vm.columns), function(k) {\n return _c('td', [_vm._v(\"\\n \" + _vm._s(_vm.fetchFromObject(row, k.key, k.render)) + \"\\n \")])\n }))\n }), _vm._v(\" \"), _c('tr', [_c('td', {\n staticClass: \"text-center\",\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.tableInfo) + \"\\n \")])])], 2)])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-footer Vue__panel-footer\"\n }, [_c('div', {\n staticClass: \"pull-left\"\n }, [_c('div', {\n staticClass: \"btn-group Vue__datasource_actions\"\n }, _vm._l((_vm.actions), function(btn) {\n return _c('button', {\n staticClass: \"btn btn-default\",\n class: btn.class,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n btn.event($event, _vm.selected)\n }\n }\n }, [(btn.icon) ? _c('i', {\n staticClass: \"pr1\",\n class: btn.icon\n }) : _vm._e(), _vm._v(\"\\n \" + _vm._s(btn.text) + \"\\n \")])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"pull-right\"\n }, [_c('pagination', {\n attrs: {\n \"pages\": _vm.pagination,\n \"translation\": _vm.translation.pagination\n },\n on: {\n \"change\": _vm.changePage\n }\n })], 1), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-1d79c98a!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Datasource.vue\n// module id = 11\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"Vue__pagination\"\n }, [_c('nav', {\n attrs: {\n \"aria-label\": \"Page navigation\"\n }\n }, [_c('ul', {\n staticClass: \"pagination\"\n }, [_c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.firstPage($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Previous\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.previous($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"«\")])])]), _vm._v(\" \"), _vm._l((_vm.items), function(n) {\n return _c('li', {\n class: (_vm.pages.current_page == n) ? 'active' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.change(n)\n }\n }\n }, [_vm._v(_vm._s(n))])])\n }), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Next\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.next($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"»\")])])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.lastPage(_vm.pages.last_page)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-52eedd5a!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pagination.vue\n// module id = 12\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// Datasource.vue?28dd5f97","\n \n\n\n\n\n\n// WEBPACK FOOTER //\n// Pagination.vue?633c2b7c","export default {\n translations: {\n // English translation\n 'en': {\n 'table': {\n 'label_limits': 'Show',\n 'label_search': 'Search',\n 'placeholder_search': 'Type to search..',\n 'records_not_found': 'No records found'\n },\n 'pagination': {\n 'label_show': 'Showing',\n 'label_to': 'to',\n 'label_of': 'of',\n 'label_entries': 'entries',\n 'btn_first': 'First',\n 'btn_last': 'Latest'\n }\n },\n // Spanish translation\n 'es': {\n 'table': {\n 'label_limits': 'Mostrar',\n 'label_search': 'Buscar',\n 'placeholder_search': 'Buscar ..',\n 'records_not_found': 'No se encontraron registros.'\n },\n 'pagination': {\n 'label_show': 'Mostrando',\n 'label_to': 'a',\n 'label_of': 'de',\n 'label_entries': 'registros',\n 'btn_first': 'Primero',\n 'btn_last': 'Último'\n }\n },\n // French translation\n 'fr': {\n 'table': {\n 'label_limits': 'Afficher',\n 'label_search': 'Recherche',\n 'placeholder_search': 'Recherche par mot-clé..',\n 'records_not_found': 'Aucun enregistrements trouvés'\n },\n 'pagination': {\n 'label_show': 'Affichage de',\n 'label_to': 'à',\n 'label_of': 'de',\n 'label_entries': 'entrées',\n 'btn_first': 'Première',\n 'btn_last': 'Dernière'\n }\n },\n // Chinese Simplified translation\n 'zh-CN': {\n 'table': {\n 'label_limits': '显示',\n 'label_search': '搜索',\n 'placeholder_search': '输入搜索..',\n 'records_not_found': '记录未找到'\n },\n 'pagination': {\n 'label_show': '正在显示',\n 'label_to': '到',\n 'label_of': '总共',\n 'label_entries': '条目',\n 'btn_first': '首页',\n 'btn_last': '未页'\n }\n },\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceLanguage.js","export default {\n /**\n * Find the element value using Recursive Method and return the value rendered if it's defined\n * @param obj\n * @param column\n * @param render\n * @returns {*}\n */\n fetchFromObject(obj, column, render) {\n if (typeof obj === 'undefined') return false;\n let _index = column.indexOf('.');\n if (_index > -1) {\n return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));\n }\n if (typeof render != 'undefined') {\n return render(obj[column]);\n }\n return obj[column];\n },\n\n /**\n * Emit event to change page from pagination\n * @param page\n * @return {void}\n */\n changePage(page) {\n this.selected = null;\n this.indexSelected = -1;\n this.$emit('change', {perpage: this.perpage, page: page});\n },\n\n /**\n * Effect toggle to selected row\n * @param row\n * @param index\n * @return {void}\n */\n selectRow(row, index) {\n if (this.indexSelected == index) {\n this.indexSelected = -1;\n this.selected = null;\n } else {\n this.indexSelected = index;\n this.selected = {\n 'row': row,\n 'index': index\n };\n }\n },\n\n /**\n * Computed property: Building custom string information with translation\n * @returns {String}\n */\n tableInfo() {\n let label_show = this.translation.pagination.label_show;\n let from = (this.pagination.from == null) ? 0 : this.pagination.from;\n let label_to = this.translation.pagination.label_to;\n let to = (this.pagination.to == null) ? 0 : this.pagination.to;\n let label_of = this.translation.pagination.label_of;\n let total = this.pagination.total;\n let label_entries = this.translation.pagination.label_entries;\n\n return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceUtils.js","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".Vue__pagination nav .pagination[data-v-1423dbfa]{margin:10px 0!important}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-1423dbfa&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Pagination.vue\n// module id = 7\n// module chunks = 0","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".vue-datasource .Vue__panel-body[data-v-29611564]{padding:0}.vue-datasource .Vue__panel-body .Vue__table[data-v-29611564]{margin-bottom:0}.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-29611564]{margin:10px 0}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-29611564&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/Datasource.vue\n// module id = 8\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-29611564&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Datasource.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Datasource.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-29611564!vue-loader/lib/selector?type=template&index=0!./Datasource.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-29611564\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Datasource.vue\n// module id = 9\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-1423dbfa&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Pagination.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Pagination.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-1423dbfa!vue-loader/lib/selector?type=template&index=0!./Pagination.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-1423dbfa\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pagination.vue\n// module id = 10\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"Vue__pagination\"\n }, [_c('nav', {\n attrs: {\n \"aria-label\": \"Page navigation\"\n }\n }, [_c('ul', {\n staticClass: \"pagination\"\n }, [_c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.firstPage($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Previous\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.previous($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"«\")])])]), _vm._v(\" \"), _vm._l((_vm.items), function(n) {\n return _c('li', {\n class: (_vm.pages.current_page == n) ? 'active' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.change(n)\n }\n }\n }, [_vm._v(_vm._s(n))])])\n }), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Next\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.next($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"»\")])])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.lastPage(_vm.pages.last_page)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-1423dbfa!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pagination.vue\n// module id = 11\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-datasource\"\n }, [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticClass: \"form-inline\"\n }, [_c('div', {\n staticClass: \"form-group pull-left\"\n }, [_c('label', {\n staticClass: \"control-label pr2\"\n }, [_vm._v(_vm._s(_vm.translation.table.label_limits))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.perpage),\n expression: \"perpage\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"number\": \"\"\n },\n on: {\n \"change\": function($event) {\n var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) {\n return o.selected\n }).map(function(o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val\n });\n _vm.perpage = $event.target.multiple ? $$selectedVal : $$selectedVal[0]\n }\n }\n }, _vm._l((_vm.limits), function(limit) {\n return _c('option', {\n domProps: {\n \"value\": limit\n }\n }, [_vm._v(_vm._s(limit))])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group pull-right\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.search),\n expression: \"search\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.translation.table.placeholder_search\n },\n domProps: {\n \"value\": (_vm.search)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.search = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.searching($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.table.label_search) + \"\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body Vue__panel-body\"\n }, [_c('table', {\n staticClass: \"table table-striped Vue__table\"\n }, [_c('thead', [_c('tr', _vm._l((_vm.columns), function(column) {\n return _c('th', [_vm._v(_vm._s(column.name))])\n }))]), _vm._v(\" \"), _c('tbody', [(_vm.pagination.total == 0) ? _c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(_vm._s(_vm.translation.table.records_not_found))])]) : _vm._l((_vm.tableData), function(row, index) {\n return _c('tr', {\n class: {\n 'success': (index == _vm.indexSelected)\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.selectRow(row, index)\n }\n }\n }, _vm._l((_vm.columns), function(k) {\n return _c('td', [_vm._v(\"\\n \" + _vm._s(_vm.fetchFromObject(row, k.key, k.render)) + \"\\n \")])\n }))\n }), _vm._v(\" \"), _c('tr', [_c('td', {\n staticClass: \"text-center\",\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.tableInfo) + \"\\n \")])])], 2)])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-footer Vue__panel-footer\"\n }, [_c('div', {\n staticClass: \"pull-left\"\n }, [_c('div', {\n staticClass: \"btn-group Vue__datasource_actions\"\n }, _vm._l((_vm.actions), function(btn) {\n return _c('button', {\n staticClass: \"btn btn-default\",\n class: btn.class,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n btn.event($event, _vm.selected)\n }\n }\n }, [(btn.icon) ? _c('i', {\n staticClass: \"pr1\",\n class: btn.icon\n }) : _vm._e(), _vm._v(\"\\n \" + _vm._s(btn.text) + \"\\n \")])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"pull-right\"\n }, [_c('pagination', {\n attrs: {\n \"pages\": _vm.pagination,\n \"translation\": _vm.translation.pagination\n },\n on: {\n \"change\": _vm.changePage\n }\n })], 1), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-29611564!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Datasource.vue\n// module id = 12\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// Datasource.vue?28dd5f97","\n \n\n\n\n\n\n// WEBPACK FOOTER //\n// Pagination.vue?633c2b7c","import Vue from 'vue/dist/vue.js';\nimport Datasource from './Datasource.vue';\n\nvar data = {\n \"pagination\": {\n \"total\": 4,\n \"per_page\": 15,\n \"current_page\": 1,\n \"last_page\": 1,\n \"next_page_url\": null,\n \"prev_page_url\": null,\n \"from\": 1,\n \"to\": 4\n },\n \"data\": [\n {\n \"id_grupo\": 1,\n \"tipo_grupo\": \"1\",\n \"nombre_grupo\": \"All\",\n \"estado_grupo\": \"1\",\n \"created_at\": \"2016-12-06 14:18:54\",\n \"updated_at\": \"2016-12-06 14:18:54\",\n \"deleted_at\": null,\n \"detalle_grupos_count\": \"4\"\n },\n {\n \"id_grupo\": 2,\n \"tipo_grupo\": \"1\",\n \"nombre_grupo\": \"Ladies\",\n \"estado_grupo\": \"1\",\n \"created_at\": \"2016-12-06 14:18:54\",\n \"updated_at\": \"2016-12-06 14:18:54\",\n \"deleted_at\": null,\n \"detalle_grupos_count\": \"1\"\n },\n {\n \"id_grupo\": 3,\n \"tipo_grupo\": \"2\",\n \"nombre_grupo\": \"Mens\",\n \"estado_grupo\": \"2\",\n \"created_at\": \"2016-12-06 14:18:54\",\n \"updated_at\": \"2016-12-06 14:18:54\",\n \"deleted_at\": null,\n \"detalle_grupos_count\": \"3\"\n },\n {\n \"id_grupo\": 4,\n \"tipo_grupo\": \"1\",\n \"nombre_grupo\": \"Chiefs\",\n \"estado_grupo\": \"1\",\n \"created_at\": \"2016-12-06 14:18:54\",\n \"updated_at\": \"2016-12-06 14:18:54\",\n \"deleted_at\": null,\n \"detalle_grupos_count\": \"1\"\n },\n {\n \"id_grupo\": 5,\n \"tipo_grupo\": \"2\",\n \"nombre_grupo\": \"Operators\",\n \"estado_grupo\": \"1\",\n \"created_at\": \"2016-12-06 14:18:54\",\n \"updated_at\": \"2016-12-06 14:18:54\",\n \"deleted_at\": null,\n \"detalle_grupos_count\": \"1\"\n }\n ]\n};\n\nnew Vue({\n el: '#app',\n components: {\n Datasource\n },\n data() {\n return {\n groups: {\n pagination: {},\n data: []\n },\n columns: [\n {\n name: 'Id',\n key: 'id_grupo',\n filter: false,\n render(value) {\n return `# ${value}`;\n }\n },\n {\n name: 'Name',\n key: 'nombre_grupo',\n filter: false\n },\n {\n name: 'Type',\n key: 'tipo_grupo',\n filter: false,\n render(value) {\n switch (value) {\n case '1':\n return 'Global';\n break;\n case '2':\n return 'General';\n break;\n case '3':\n return 'Personal';\n break;\n }\n }\n },\n {\n name: 'Total',\n key: 'detalle_grupos_count',\n filter: false,\n },\n {\n name: 'Date',\n key: 'created_at',\n filter: false\n },\n ],\n actions: [\n {\n text: 'Edit',\n icon: 'glyphicon glyphicon-pencil',\n class: 'btn-primary',\n event(e, row) {\n console.warn('Did clicked me?', e);\n if (row == null) {\n console.info('Ups.. data not found :(')\n } else {\n console.info('Yeeei, I found this :)', JSON.stringify(row));\n }\n }\n },\n {\n text: 'Delete',\n icon: 'glyphicon glyphicon-trash',\n class: 'btn-danger',\n event(e, row) {\n console.warn('Are you clicked me?', e);\n if (row == null) {\n console.info('Ups.. data not found :(')\n } else {\n console.info('Yeeei, I found this :)', JSON.stringify(row));\n }\n }\n },\n {\n text: 'Show',\n icon: 'glyphicon glyphicon-eye-open',\n class: 'btn-info',\n event(e, row) {\n console.warn('Are you clicked me?', e);\n if (row == null) {\n console.info('Ups.. data not found :(')\n } else {\n console.info('Yeeei, I found this :)', JSON.stringify(row));\n }\n }\n }\n ]\n }\n },\n mounted() {\n this.groups = data;\n },\n methods: {\n changePage(values) {\n alert(`Show limit changed, the new limit is ${values.perpage} and the current page is ${values.page}`);\n },\n onSearch(searchQuery) {\n alert(`Did you find this? ${searchQuery}`);\n }\n }\n});\n\n\n// WEBPACK FOOTER //\n// ./src/example.js","export default {\n translations: {\n // English translation\n 'en': {\n 'table': {\n 'label_limits': 'Show',\n 'label_search': 'Search',\n 'placeholder_search': 'Type to search..',\n 'records_not_found': 'No records found'\n },\n 'pagination': {\n 'label_show': 'Showing',\n 'label_to': 'to',\n 'label_of': 'of',\n 'label_entries': 'entries',\n 'btn_first': 'First',\n 'btn_last': 'Latest'\n }\n },\n // Spanish translation\n 'es': {\n 'table': {\n 'label_limits': 'Mostrar',\n 'label_search': 'Buscar',\n 'placeholder_search': 'Buscar ..',\n 'records_not_found': 'No se encontraron registros.'\n },\n 'pagination': {\n 'label_show': 'Mostrando',\n 'label_to': 'a',\n 'label_of': 'de',\n 'label_entries': 'registros',\n 'btn_first': 'Primero',\n 'btn_last': 'Último'\n }\n },\n // French translation\n 'fr': {\n 'table': {\n 'label_limits': 'Afficher',\n 'label_search': 'Recherche',\n 'placeholder_search': 'Recherche par mot-clé..',\n 'records_not_found': 'Aucun enregistrements trouvés'\n },\n 'pagination': {\n 'label_show': 'Affichage de',\n 'label_to': 'à',\n 'label_of': 'de',\n 'label_entries': 'entrées',\n 'btn_first': 'Première',\n 'btn_last': 'Dernière'\n }\n },\n // Chinese Simplified translation\n 'zh-CN': {\n 'table': {\n 'label_limits': '显示',\n 'label_search': '搜索',\n 'placeholder_search': '输入搜索..',\n 'records_not_found': '记录未找到'\n },\n 'pagination': {\n 'label_show': '正在显示',\n 'label_to': '到',\n 'label_of': '总共',\n 'label_entries': '条目',\n 'btn_first': '首页',\n 'btn_last': '未页'\n }\n },\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceLanguage.js","export default {\n /**\n * Find the element value using Recursive Method and return the value rendered if it's defined\n * @param obj\n * @param column\n * @param render\n * @returns {*}\n */\n fetchFromObject(obj, column, render) {\n if (typeof obj === 'undefined') return false;\n let _index = column.indexOf('.');\n if (_index > -1) {\n return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));\n }\n if (typeof render != 'undefined') {\n return render(obj[column]);\n }\n return obj[column];\n },\n\n /**\n * Emit event to change page from pagination\n * @param page\n * @return {void}\n */\n changePage(page) {\n this.selected = null;\n this.indexSelected = -1;\n this.$emit('change', {perpage: this.perpage, page: page});\n },\n\n /**\n * Effect toggle to selected row\n * @param row\n * @param index\n * @return {void}\n */\n selectRow(row, index) {\n if (this.indexSelected == index) {\n this.indexSelected = -1;\n this.selected = null;\n } else {\n this.indexSelected = index;\n this.selected = {\n 'row': row,\n 'index': index\n };\n }\n },\n\n /**\n * Computed property: Building custom string information with translation\n * @returns {String}\n */\n tableInfo() {\n let label_show = this.translation.pagination.label_show;\n let from = (this.pagination.from == null) ? 0 : this.pagination.from;\n let label_to = this.translation.pagination.label_to;\n let to = (this.pagination.to == null) ? 0 : this.pagination.to;\n let label_of = this.translation.pagination.label_of;\n let total = this.pagination.total;\n let label_entries = this.translation.pagination.label_entries;\n\n return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceUtils.js","module.exports = { \"default\": require(\"core-js/library/fn/json/stringify\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/json/stringify.js\n// module id = 8\n// module chunks = 0","var core = require('../../modules/_core')\n , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify});\nmodule.exports = function stringify(it){ // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/fn/json/stringify.js\n// module id = 9\n// module chunks = 0","var core = module.exports = {version: '2.4.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_core.js\n// module id = 10\n// module chunks = 0","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.Vue__pagination nav .pagination[data-v-1423dbfa] {\\n margin: 10px 0 !important;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-1423dbfa&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Pagination.vue\n// module id = 11\n// module chunks = 0","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.vue-datasource .Vue__panel-body[data-v-29611564] {\\n padding: 0;\\n}\\n.vue-datasource .Vue__panel-body .Vue__table[data-v-29611564] {\\n margin-bottom: 0;\\n}\\n.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-29611564] {\\n margin: 10px 0;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-29611564&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/Datasource.vue\n// module id = 12\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-29611564&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Datasource.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Datasource.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-29611564!vue-loader/lib/selector?type=template&index=0!./Datasource.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-29611564\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Datasource.vue\n// module id = 13\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-1423dbfa&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Pagination.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Pagination.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-1423dbfa!vue-loader/lib/selector?type=template&index=0!./Pagination.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-1423dbfa\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pagination.vue\n// module id = 14\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"Vue__pagination\"\n }, [_c('nav', {\n attrs: {\n \"aria-label\": \"Page navigation\"\n }\n }, [_c('ul', {\n staticClass: \"pagination\"\n }, [_c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.firstPage($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Previous\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.previous($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"«\")])])]), _vm._v(\" \"), _vm._l((_vm.items), function(n) {\n return _c('li', {\n class: (_vm.pages.current_page == n) ? 'active' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.change(n)\n }\n }\n }, [_vm._v(_vm._s(n))])])\n }), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Next\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.next($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"»\")])])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.lastPage(_vm.pages.last_page)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-1423dbfa!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pagination.vue\n// module id = 15\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-datasource\"\n }, [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticClass: \"form-inline\"\n }, [_c('div', {\n staticClass: \"form-group pull-left\"\n }, [_c('label', {\n staticClass: \"control-label pr2\"\n }, [_vm._v(_vm._s(_vm.translation.table.label_limits))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.perpage),\n expression: \"perpage\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"number\": \"\"\n },\n on: {\n \"change\": function($event) {\n var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) {\n return o.selected\n }).map(function(o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val\n });\n _vm.perpage = $event.target.multiple ? $$selectedVal : $$selectedVal[0]\n }\n }\n }, _vm._l((_vm.limits), function(limit) {\n return _c('option', {\n domProps: {\n \"value\": limit\n }\n }, [_vm._v(_vm._s(limit))])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group pull-right\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.search),\n expression: \"search\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.translation.table.placeholder_search\n },\n domProps: {\n \"value\": (_vm.search)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.search = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.searching($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.table.label_search) + \"\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body Vue__panel-body\"\n }, [_c('table', {\n staticClass: \"table table-striped Vue__table\"\n }, [_c('thead', [_c('tr', _vm._l((_vm.columns), function(column) {\n return _c('th', [_vm._v(_vm._s(column.name))])\n }))]), _vm._v(\" \"), _c('tbody', [(_vm.pagination.total == 0) ? _c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(_vm._s(_vm.translation.table.records_not_found))])]) : _vm._l((_vm.tableData), function(row, index) {\n return _c('tr', {\n class: {\n 'success': (index == _vm.indexSelected)\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.selectRow(row, index)\n }\n }\n }, _vm._l((_vm.columns), function(k) {\n return _c('td', [_vm._v(\"\\n \" + _vm._s(_vm.fetchFromObject(row, k.key, k.render)) + \"\\n \")])\n }))\n }), _vm._v(\" \"), _c('tr', [_c('td', {\n staticClass: \"text-center\",\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.tableInfo) + \"\\n \")])])], 2)])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-footer Vue__panel-footer\"\n }, [_c('div', {\n staticClass: \"pull-left\"\n }, [_c('div', {\n staticClass: \"btn-group Vue__datasource_actions\"\n }, _vm._l((_vm.actions), function(btn) {\n return _c('button', {\n staticClass: \"btn btn-default\",\n class: btn.class,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n btn.event($event, _vm.selected)\n }\n }\n }, [(btn.icon) ? _c('i', {\n staticClass: \"pr1\",\n class: btn.icon\n }) : _vm._e(), _vm._v(\"\\n \" + _vm._s(btn.text) + \"\\n \")])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"pull-right\"\n }, [_c('pagination', {\n attrs: {\n \"pages\": _vm.pagination,\n \"translation\": _vm.translation.pagination\n },\n on: {\n \"change\": _vm.changePage\n }\n })], 1), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-29611564!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Datasource.vue\n// module id = 16\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// Datasource.vue?28dd5f97","\n \n\n\n\n\n\n// WEBPACK FOOTER //\n// Pagination.vue?633c2b7c","import Vue from 'vue/dist/vue.js';\nimport Datasource from './Datasource.vue';\n\nvar data = {\n \"pagination\": {\n \"total\": 4,\n \"per_page\": 15,\n \"current_page\": 1,\n \"last_page\": 1,\n \"next_page_url\": null,\n \"prev_page_url\": null,\n \"from\": 1,\n \"to\": 4\n },\n \"data\": [\n {\n \"id_grupo\": 1,\n \"tipo_grupo\": \"1\",\n \"nombre_grupo\": \"All\",\n \"estado_grupo\": \"1\",\n \"created_at\": \"2016-12-06 14:18:54\",\n \"updated_at\": \"2016-12-06 14:18:54\",\n \"deleted_at\": null,\n \"detalle_grupos_count\": \"4\"\n },\n {\n \"id_grupo\": 2,\n \"tipo_grupo\": \"1\",\n \"nombre_grupo\": \"Ladies\",\n \"estado_grupo\": \"1\",\n \"created_at\": \"2016-12-06 14:18:54\",\n \"updated_at\": \"2016-12-06 14:18:54\",\n \"deleted_at\": null,\n \"detalle_grupos_count\": \"1\"\n },\n {\n \"id_grupo\": 3,\n \"tipo_grupo\": \"2\",\n \"nombre_grupo\": \"Mens\",\n \"estado_grupo\": \"2\",\n \"created_at\": \"2016-12-06 14:18:54\",\n \"updated_at\": \"2016-12-06 14:18:54\",\n \"deleted_at\": null,\n \"detalle_grupos_count\": \"3\"\n },\n {\n \"id_grupo\": 4,\n \"tipo_grupo\": \"1\",\n \"nombre_grupo\": \"Chiefs\",\n \"estado_grupo\": \"1\",\n \"created_at\": \"2016-12-06 14:18:54\",\n \"updated_at\": \"2016-12-06 14:18:54\",\n \"deleted_at\": null,\n \"detalle_grupos_count\": \"1\"\n },\n {\n \"id_grupo\": 5,\n \"tipo_grupo\": \"2\",\n \"nombre_grupo\": \"Operators\",\n \"estado_grupo\": \"1\",\n \"created_at\": \"2016-12-06 14:18:54\",\n \"updated_at\": \"2016-12-06 14:18:54\",\n \"deleted_at\": null,\n \"detalle_grupos_count\": \"1\"\n }\n ]\n};\n\nnew Vue({\n el: '#app',\n components: {\n Datasource\n },\n data() {\n return {\n groups: {\n pagination: {},\n data: []\n },\n columns: [\n {\n name: 'Id',\n key: 'id_grupo',\n filter: false,\n render(value) {\n return `# ${value}`;\n }\n },\n {\n name: 'Name',\n key: 'nombre_grupo',\n filter: false\n },\n {\n name: 'Type',\n key: 'tipo_grupo',\n filter: false,\n render(value) {\n switch (value) {\n case '1':\n return 'Global';\n break;\n case '2':\n return 'General';\n break;\n case '3':\n return 'Personal';\n break;\n }\n }\n },\n {\n name: 'Total',\n key: 'detalle_grupos_count',\n filter: false,\n },\n {\n name: 'Date',\n key: 'created_at',\n filter: false\n },\n ],\n actions: [\n {\n text: 'Edit',\n icon: 'glyphicon glyphicon-pencil',\n class: 'btn-primary',\n event(e, row) {\n console.warn('Did clicked me?', e);\n if (row == null) {\n console.info('Ups.. data not found :(')\n } else {\n console.info('Yeeei, I found this :)', JSON.stringify(row));\n }\n }\n },\n {\n text: 'Delete',\n icon: 'glyphicon glyphicon-trash',\n class: 'btn-danger',\n event(e, row) {\n console.warn('Are you clicked me?', e);\n if (row == null) {\n console.info('Ups.. data not found :(')\n } else {\n console.info('Yeeei, I found this :)', JSON.stringify(row));\n }\n }\n },\n {\n text: 'Show',\n icon: 'glyphicon glyphicon-eye-open',\n class: 'btn-info',\n event(e, row) {\n console.warn('Are you clicked me?', e);\n if (row == null) {\n console.info('Ups.. data not found :(')\n } else {\n console.info('Yeeei, I found this :)', JSON.stringify(row));\n }\n }\n }\n ]\n }\n },\n mounted() {\n this.groups = data;\n },\n methods: {\n changePage(values) {\n alert(`Show limit changed, the new limit is ${values.perpage} and the current page is ${values.page}`);\n },\n onSearch(searchQuery) {\n alert(`Did you find this? ${searchQuery}`);\n }\n }\n});\n\n\n// WEBPACK FOOTER //\n// ./src/example.js","export default {\n translations: {\n // English translation\n 'en': {\n 'table': {\n 'label_limits': 'Show',\n 'label_search': 'Search',\n 'placeholder_search': 'Type to search..',\n 'records_not_found': 'No records found'\n },\n 'pagination': {\n 'label_show': 'Showing',\n 'label_to': 'to',\n 'label_of': 'of',\n 'label_entries': 'entries',\n 'btn_first': 'First',\n 'btn_last': 'Latest'\n }\n },\n // Spanish translation\n 'es': {\n 'table': {\n 'label_limits': 'Mostrar',\n 'label_search': 'Buscar',\n 'placeholder_search': 'Buscar ..',\n 'records_not_found': 'No se encontraron registros.'\n },\n 'pagination': {\n 'label_show': 'Mostrando',\n 'label_to': 'a',\n 'label_of': 'de',\n 'label_entries': 'registros',\n 'btn_first': 'Primero',\n 'btn_last': 'Último'\n }\n },\n // French translation\n 'fr': {\n 'table': {\n 'label_limits': 'Afficher',\n 'label_search': 'Recherche',\n 'placeholder_search': 'Recherche par mot-clé..',\n 'records_not_found': 'Aucun enregistrements trouvés'\n },\n 'pagination': {\n 'label_show': 'Affichage de',\n 'label_to': 'à',\n 'label_of': 'de',\n 'label_entries': 'entrées',\n 'btn_first': 'Première',\n 'btn_last': 'Dernière'\n }\n },\n // Chinese Simplified translation\n 'zh-CN': {\n 'table': {\n 'label_limits': '显示',\n 'label_search': '搜索',\n 'placeholder_search': '输入搜索..',\n 'records_not_found': '记录未找到'\n },\n 'pagination': {\n 'label_show': '正在显示',\n 'label_to': '到',\n 'label_of': '总共',\n 'label_entries': '条目',\n 'btn_first': '首页',\n 'btn_last': '未页'\n }\n },\n // Catalan translation\n 'ca': {\n 'table': {\n 'label_limits': 'Mostrar',\n 'label_search': 'Buscar',\n 'placeholder_search': 'Buscar ..',\n 'records_not_found': 'No s\\'han trobat registres.'\n },\n 'pagination': {\n 'label_show': 'Mostrant',\n 'label_to': 'a',\n 'label_of': 'de',\n 'label_entries': 'registres',\n 'btn_first': 'Primer',\n 'btn_last': 'Últim'\n }\n }, \n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceLanguage.js","export default {\n /**\n * Find the element value using Recursive Method and return the value rendered if it's defined\n * @param obj\n * @param column\n * @param render\n * @returns {*}\n */\n fetchFromObject(obj, column, render) {\n if (typeof obj === 'undefined') return false;\n let _index = column.indexOf('.');\n if (_index > -1) {\n return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));\n }\n if (typeof render != 'undefined') {\n return render(obj[column]);\n }\n return obj[column];\n },\n\n /**\n * Emit event to change page from pagination\n * @param page\n * @return {void}\n */\n changePage(page) {\n this.selected = null;\n this.indexSelected = -1;\n this.$emit('change', {perpage: this.perpage, page: page});\n },\n\n /**\n * Effect toggle to selected row\n * @param row\n * @param index\n * @return {void}\n */\n selectRow(row, index) {\n if (this.indexSelected == index) {\n this.indexSelected = -1;\n this.selected = null;\n } else {\n this.indexSelected = index;\n this.selected = {\n 'row': row,\n 'index': index\n };\n }\n },\n\n /**\n * Computed property: Building custom string information with translation\n * @returns {String}\n */\n tableInfo() {\n let label_show = this.translation.pagination.label_show;\n let from = (this.pagination.from == null) ? 0 : this.pagination.from;\n let label_to = this.translation.pagination.label_to;\n let to = (this.pagination.to == null) ? 0 : this.pagination.to;\n let label_of = this.translation.pagination.label_of;\n let total = this.pagination.total;\n let label_entries = this.translation.pagination.label_entries;\n\n return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceUtils.js","module.exports = { \"default\": require(\"core-js/library/fn/json/stringify\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/json/stringify.js\n// module id = 8\n// module chunks = 0","var core = require('../../modules/_core')\n , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify});\nmodule.exports = function stringify(it){ // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/fn/json/stringify.js\n// module id = 9\n// module chunks = 0","var core = module.exports = {version: '2.4.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_core.js\n// module id = 10\n// module chunks = 0","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.Vue__pagination nav .pagination[data-v-728cbc62] {\\n margin: 10px 0 !important;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-728cbc62&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Pagination.vue\n// module id = 11\n// module chunks = 0","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.vue-datasource .Vue__panel-body[data-v-ae09face] {\\n padding: 0;\\n}\\n.vue-datasource .Vue__panel-body .Vue__table[data-v-ae09face] {\\n margin-bottom: 0;\\n}\\n.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-ae09face] {\\n margin: 10px 0;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-ae09face&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/Datasource.vue\n// module id = 12\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-ae09face&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Datasource.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Datasource.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-ae09face!vue-loader/lib/selector?type=template&index=0!./Datasource.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-ae09face\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Datasource.vue\n// module id = 13\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-728cbc62&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Pagination.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Pagination.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-728cbc62!vue-loader/lib/selector?type=template&index=0!./Pagination.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-728cbc62\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pagination.vue\n// module id = 14\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"Vue__pagination\"\n }, [_c('nav', {\n attrs: {\n \"aria-label\": \"Page navigation\"\n }\n }, [_c('ul', {\n staticClass: \"pagination\"\n }, [_c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.firstPage($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Previous\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.previous($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"«\")])])]), _vm._v(\" \"), _vm._l((_vm.items), function(n) {\n return _c('li', {\n class: (_vm.pages.current_page == n) ? 'active' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.change(n)\n }\n }\n }, [_vm._v(_vm._s(n))])])\n }), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Next\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.next($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"»\")])])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.lastPage(_vm.pages.last_page)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-728cbc62!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pagination.vue\n// module id = 15\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-datasource\"\n }, [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticClass: \"form-inline\"\n }, [_c('div', {\n staticClass: \"form-group pull-left\"\n }, [_c('label', {\n staticClass: \"control-label pr2\"\n }, [_vm._v(_vm._s(_vm.translation.table.label_limits))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.perpage),\n expression: \"perpage\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"number\": \"\"\n },\n on: {\n \"change\": function($event) {\n var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) {\n return o.selected\n }).map(function(o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val\n });\n _vm.perpage = $event.target.multiple ? $$selectedVal : $$selectedVal[0]\n }\n }\n }, _vm._l((_vm.limits), function(limit) {\n return _c('option', {\n domProps: {\n \"value\": limit\n }\n }, [_vm._v(_vm._s(limit))])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group pull-right\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.search),\n expression: \"search\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.translation.table.placeholder_search\n },\n domProps: {\n \"value\": (_vm.search)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.search = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.searching($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.table.label_search) + \"\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body Vue__panel-body\"\n }, [_c('table', {\n staticClass: \"table table-striped Vue__table\"\n }, [_c('thead', [_c('tr', _vm._l((_vm.columns), function(column) {\n return _c('th', [_vm._v(_vm._s(column.name))])\n }))]), _vm._v(\" \"), _c('tbody', [(_vm.pagination.total == 0) ? _c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(_vm._s(_vm.translation.table.records_not_found))])]) : _vm._l((_vm.tableData), function(row, index) {\n return _c('tr', {\n class: {\n 'success': (index == _vm.indexSelected)\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.selectRow(row, index)\n }\n }\n }, _vm._l((_vm.columns), function(k) {\n return _c('td', [_vm._v(\"\\n \" + _vm._s(_vm.fetchFromObject(row, k.key, k.render)) + \"\\n \")])\n }))\n }), _vm._v(\" \"), _c('tr', [_c('td', {\n staticClass: \"text-center\",\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.tableInfo) + \"\\n \")])])], 2)])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-footer Vue__panel-footer\"\n }, [_c('div', {\n staticClass: \"pull-left\"\n }, [_c('div', {\n staticClass: \"btn-group Vue__datasource_actions\"\n }, _vm._l((_vm.actions), function(btn) {\n return _c('button', {\n staticClass: \"btn btn-default\",\n class: btn.class,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n btn.event($event, _vm.selected)\n }\n }\n }, [(btn.icon) ? _c('i', {\n staticClass: \"pr1\",\n class: btn.icon\n }) : _vm._e(), _vm._v(\"\\n \" + _vm._s(btn.text) + \"\\n \")])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"pull-right\"\n }, [_c('pagination', {\n attrs: {\n \"pages\": _vm.pagination,\n \"translation\": _vm.translation.pagination\n },\n on: {\n \"change\": _vm.changePage\n }\n })], 1), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-ae09face!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Datasource.vue\n// module id = 16\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// Datasource.vue?28dd5f97","\n \n\n\n\n\n\n// WEBPACK FOOTER //\n// Pagination.vue?633c2b7c","export default {\n translations: {\n // English translation\n 'en': {\n 'table': {\n 'label_limits': 'Show',\n 'label_search': 'Search',\n 'placeholder_search': 'Type to search..',\n 'records_not_found': 'No records found'\n },\n 'pagination': {\n 'label_show': 'Showing',\n 'label_to': 'to',\n 'label_of': 'of',\n 'label_entries': 'entries',\n 'btn_first': 'First',\n 'btn_last': 'Latest'\n }\n },\n // Spanish translation\n 'es': {\n 'table': {\n 'label_limits': 'Mostrar',\n 'label_search': 'Buscar',\n 'placeholder_search': 'Buscar ..',\n 'records_not_found': 'No se encontraron registros.'\n },\n 'pagination': {\n 'label_show': 'Mostrando',\n 'label_to': 'a',\n 'label_of': 'de',\n 'label_entries': 'registros',\n 'btn_first': 'Primero',\n 'btn_last': 'Último'\n }\n },\n // French translation\n 'fr': {\n 'table': {\n 'label_limits': 'Afficher',\n 'label_search': 'Recherche',\n 'placeholder_search': 'Recherche par mot-clé..',\n 'records_not_found': 'Aucun enregistrements trouvés'\n },\n 'pagination': {\n 'label_show': 'Affichage de',\n 'label_to': 'à',\n 'label_of': 'de',\n 'label_entries': 'entrées',\n 'btn_first': 'Première',\n 'btn_last': 'Dernière'\n }\n },\n // Chinese Simplified translation\n 'zh-CN': {\n 'table': {\n 'label_limits': '显示',\n 'label_search': '搜索',\n 'placeholder_search': '输入搜索..',\n 'records_not_found': '记录未找到'\n },\n 'pagination': {\n 'label_show': '正在显示',\n 'label_to': '到',\n 'label_of': '总共',\n 'label_entries': '条目',\n 'btn_first': '首页',\n 'btn_last': '未页'\n }\n },\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceLanguage.js","export default {\n /**\n * Find the element value using Recursive Method and return the value rendered if it's defined\n * @param obj\n * @param column\n * @param render\n * @returns {*}\n */\n fetchFromObject(obj, column, render) {\n if (typeof obj === 'undefined') return false;\n let _index = column.indexOf('.');\n if (_index > -1) {\n return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));\n }\n if (typeof render != 'undefined') {\n return render(obj[column]);\n }\n return obj[column];\n },\n\n /**\n * Emit event to change page from pagination\n * @param page\n * @return {void}\n */\n changePage(page) {\n this.selected = null;\n this.indexSelected = -1;\n this.$emit('change', {perpage: this.perpage, page: page});\n },\n\n /**\n * Effect toggle to selected row\n * @param row\n * @param index\n * @return {void}\n */\n selectRow(row, index) {\n if (this.indexSelected == index) {\n this.indexSelected = -1;\n this.selected = null;\n } else {\n this.indexSelected = index;\n this.selected = {\n 'row': row,\n 'index': index\n };\n }\n },\n\n /**\n * Computed property: Building custom string information with translation\n * @returns {String}\n */\n tableInfo() {\n let label_show = this.translation.pagination.label_show;\n let from = (this.pagination.from == null) ? 0 : this.pagination.from;\n let label_to = this.translation.pagination.label_to;\n let to = (this.pagination.to == null) ? 0 : this.pagination.to;\n let label_of = this.translation.pagination.label_of;\n let total = this.pagination.total;\n let label_entries = this.translation.pagination.label_entries;\n\n return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceUtils.js","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.Vue__pagination nav .pagination[data-v-1423dbfa] {\\n margin: 10px 0 !important;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-1423dbfa&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Pagination.vue\n// module id = 7\n// module chunks = 0","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.vue-datasource .Vue__panel-body[data-v-29611564] {\\n padding: 0;\\n}\\n.vue-datasource .Vue__panel-body .Vue__table[data-v-29611564] {\\n margin-bottom: 0;\\n}\\n.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-29611564] {\\n margin: 10px 0;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-29611564&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/Datasource.vue\n// module id = 8\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-29611564&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Datasource.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Datasource.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-29611564!vue-loader/lib/selector?type=template&index=0!./Datasource.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-29611564\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Datasource.vue\n// module id = 9\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-1423dbfa&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Pagination.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Pagination.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-1423dbfa!vue-loader/lib/selector?type=template&index=0!./Pagination.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-1423dbfa\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pagination.vue\n// module id = 10\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"Vue__pagination\"\n }, [_c('nav', {\n attrs: {\n \"aria-label\": \"Page navigation\"\n }\n }, [_c('ul', {\n staticClass: \"pagination\"\n }, [_c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.firstPage($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Previous\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.previous($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"«\")])])]), _vm._v(\" \"), _vm._l((_vm.items), function(n) {\n return _c('li', {\n class: (_vm.pages.current_page == n) ? 'active' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.change(n)\n }\n }\n }, [_vm._v(_vm._s(n))])])\n }), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Next\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.next($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"»\")])])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.lastPage(_vm.pages.last_page)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-1423dbfa!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pagination.vue\n// module id = 11\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-datasource\"\n }, [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticClass: \"form-inline\"\n }, [_c('div', {\n staticClass: \"form-group pull-left\"\n }, [_c('label', {\n staticClass: \"control-label pr2\"\n }, [_vm._v(_vm._s(_vm.translation.table.label_limits))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.perpage),\n expression: \"perpage\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"number\": \"\"\n },\n on: {\n \"change\": function($event) {\n var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) {\n return o.selected\n }).map(function(o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val\n });\n _vm.perpage = $event.target.multiple ? $$selectedVal : $$selectedVal[0]\n }\n }\n }, _vm._l((_vm.limits), function(limit) {\n return _c('option', {\n domProps: {\n \"value\": limit\n }\n }, [_vm._v(_vm._s(limit))])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group pull-right\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.search),\n expression: \"search\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.translation.table.placeholder_search\n },\n domProps: {\n \"value\": (_vm.search)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.search = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.searching($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.table.label_search) + \"\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body Vue__panel-body\"\n }, [_c('table', {\n staticClass: \"table table-striped Vue__table\"\n }, [_c('thead', [_c('tr', _vm._l((_vm.columns), function(column) {\n return _c('th', [_vm._v(_vm._s(column.name))])\n }))]), _vm._v(\" \"), _c('tbody', [(_vm.pagination.total == 0) ? _c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(_vm._s(_vm.translation.table.records_not_found))])]) : _vm._l((_vm.tableData), function(row, index) {\n return _c('tr', {\n class: {\n 'success': (index == _vm.indexSelected)\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.selectRow(row, index)\n }\n }\n }, _vm._l((_vm.columns), function(k) {\n return _c('td', [_vm._v(\"\\n \" + _vm._s(_vm.fetchFromObject(row, k.key, k.render)) + \"\\n \")])\n }))\n }), _vm._v(\" \"), _c('tr', [_c('td', {\n staticClass: \"text-center\",\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.tableInfo) + \"\\n \")])])], 2)])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-footer Vue__panel-footer\"\n }, [_c('div', {\n staticClass: \"pull-left\"\n }, [_c('div', {\n staticClass: \"btn-group Vue__datasource_actions\"\n }, _vm._l((_vm.actions), function(btn) {\n return _c('button', {\n staticClass: \"btn btn-default\",\n class: btn.class,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n btn.event($event, _vm.selected)\n }\n }\n }, [(btn.icon) ? _c('i', {\n staticClass: \"pr1\",\n class: btn.icon\n }) : _vm._e(), _vm._v(\"\\n \" + _vm._s(btn.text) + \"\\n \")])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"pull-right\"\n }, [_c('pagination', {\n attrs: {\n \"pages\": _vm.pagination,\n \"translation\": _vm.translation.pagination\n },\n on: {\n \"change\": _vm.changePage\n }\n })], 1), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-29611564!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Datasource.vue\n// module id = 12\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// Datasource.vue?28dd5f97","\n \n\n\n\n\n\n// WEBPACK FOOTER //\n// Pagination.vue?633c2b7c","export default {\n translations: {\n // English translation\n 'en': {\n 'table': {\n 'label_limits': 'Show',\n 'label_search': 'Search',\n 'placeholder_search': 'Type to search..',\n 'records_not_found': 'No records found'\n },\n 'pagination': {\n 'label_show': 'Showing',\n 'label_to': 'to',\n 'label_of': 'of',\n 'label_entries': 'entries',\n 'btn_first': 'First',\n 'btn_last': 'Latest'\n }\n },\n // Spanish translation\n 'es': {\n 'table': {\n 'label_limits': 'Mostrar',\n 'label_search': 'Buscar',\n 'placeholder_search': 'Buscar ..',\n 'records_not_found': 'No se encontraron registros.'\n },\n 'pagination': {\n 'label_show': 'Mostrando',\n 'label_to': 'a',\n 'label_of': 'de',\n 'label_entries': 'registros',\n 'btn_first': 'Primero',\n 'btn_last': 'Último'\n }\n },\n // French translation\n 'fr': {\n 'table': {\n 'label_limits': 'Afficher',\n 'label_search': 'Recherche',\n 'placeholder_search': 'Recherche par mot-clé..',\n 'records_not_found': 'Aucun enregistrements trouvés'\n },\n 'pagination': {\n 'label_show': 'Affichage de',\n 'label_to': 'à',\n 'label_of': 'de',\n 'label_entries': 'entrées',\n 'btn_first': 'Première',\n 'btn_last': 'Dernière'\n }\n },\n // Chinese Simplified translation\n 'zh-CN': {\n 'table': {\n 'label_limits': '显示',\n 'label_search': '搜索',\n 'placeholder_search': '输入搜索..',\n 'records_not_found': '记录未找到'\n },\n 'pagination': {\n 'label_show': '正在显示',\n 'label_to': '到',\n 'label_of': '总共',\n 'label_entries': '条目',\n 'btn_first': '首页',\n 'btn_last': '未页'\n }\n },\n // Catalan translation\n 'ca': {\n 'table': {\n 'label_limits': 'Mostrar',\n 'label_search': 'Buscar',\n 'placeholder_search': 'Buscar ..',\n 'records_not_found': 'No s\\'han trobat registres.'\n },\n 'pagination': {\n 'label_show': 'Mostrant',\n 'label_to': 'a',\n 'label_of': 'de',\n 'label_entries': 'registres',\n 'btn_first': 'Primer',\n 'btn_last': 'Últim'\n }\n }, \n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceLanguage.js","export default {\n /**\n * Find the element value using Recursive Method and return the value rendered if it's defined\n * @param obj\n * @param column\n * @param render\n * @returns {*}\n */\n fetchFromObject(obj, column, render) {\n if (typeof obj === 'undefined') return false;\n let _index = column.indexOf('.');\n if (_index > -1) {\n return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));\n }\n if (typeof render != 'undefined') {\n return render(obj[column]);\n }\n return obj[column];\n },\n\n /**\n * Emit event to change page from pagination\n * @param page\n * @return {void}\n */\n changePage(page) {\n this.selected = null;\n this.indexSelected = -1;\n this.$emit('change', {perpage: this.perpage, page: page});\n },\n\n /**\n * Effect toggle to selected row\n * @param row\n * @param index\n * @return {void}\n */\n selectRow(row, index) {\n if (this.indexSelected == index) {\n this.indexSelected = -1;\n this.selected = null;\n } else {\n this.indexSelected = index;\n this.selected = {\n 'row': row,\n 'index': index\n };\n }\n },\n\n /**\n * Computed property: Building custom string information with translation\n * @returns {String}\n */\n tableInfo() {\n let label_show = this.translation.pagination.label_show;\n let from = (this.pagination.from == null) ? 0 : this.pagination.from;\n let label_to = this.translation.pagination.label_to;\n let to = (this.pagination.to == null) ? 0 : this.pagination.to;\n let label_of = this.translation.pagination.label_of;\n let total = this.pagination.total;\n let label_entries = this.translation.pagination.label_entries;\n\n return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceUtils.js","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.Vue__pagination nav .pagination[data-v-728cbc62] {\\n margin: 10px 0 !important;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-728cbc62&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Pagination.vue\n// module id = 7\n// module chunks = 0","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.vue-datasource .Vue__panel-body[data-v-ae09face] {\\n padding: 0;\\n}\\n.vue-datasource .Vue__panel-body .Vue__table[data-v-ae09face] {\\n margin-bottom: 0;\\n}\\n.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-ae09face] {\\n margin: 10px 0;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-ae09face&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/Datasource.vue\n// module id = 8\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-ae09face&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Datasource.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Datasource.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-ae09face!vue-loader/lib/selector?type=template&index=0!./Datasource.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-ae09face\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Datasource.vue\n// module id = 9\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-728cbc62&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Pagination.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Pagination.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-728cbc62!vue-loader/lib/selector?type=template&index=0!./Pagination.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-728cbc62\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pagination.vue\n// module id = 10\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"Vue__pagination\"\n }, [_c('nav', {\n attrs: {\n \"aria-label\": \"Page navigation\"\n }\n }, [_c('ul', {\n staticClass: \"pagination\"\n }, [_c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.firstPage($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Previous\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.previous($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"«\")])])]), _vm._v(\" \"), _vm._l((_vm.items), function(n) {\n return _c('li', {\n class: (_vm.pages.current_page == n) ? 'active' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.change(n)\n }\n }\n }, [_vm._v(_vm._s(n))])])\n }), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Next\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.next($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"»\")])])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.lastPage(_vm.pages.last_page)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-728cbc62!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pagination.vue\n// module id = 11\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-datasource\"\n }, [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticClass: \"form-inline\"\n }, [_c('div', {\n staticClass: \"form-group pull-left\"\n }, [_c('label', {\n staticClass: \"control-label pr2\"\n }, [_vm._v(_vm._s(_vm.translation.table.label_limits))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.perpage),\n expression: \"perpage\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"number\": \"\"\n },\n on: {\n \"change\": function($event) {\n var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) {\n return o.selected\n }).map(function(o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val\n });\n _vm.perpage = $event.target.multiple ? $$selectedVal : $$selectedVal[0]\n }\n }\n }, _vm._l((_vm.limits), function(limit) {\n return _c('option', {\n domProps: {\n \"value\": limit\n }\n }, [_vm._v(_vm._s(limit))])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group pull-right\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.search),\n expression: \"search\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.translation.table.placeholder_search\n },\n domProps: {\n \"value\": (_vm.search)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.search = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.searching($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.table.label_search) + \"\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body Vue__panel-body\"\n }, [_c('table', {\n staticClass: \"table table-striped Vue__table\"\n }, [_c('thead', [_c('tr', _vm._l((_vm.columns), function(column) {\n return _c('th', [_vm._v(_vm._s(column.name))])\n }))]), _vm._v(\" \"), _c('tbody', [(_vm.pagination.total == 0) ? _c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(_vm._s(_vm.translation.table.records_not_found))])]) : _vm._l((_vm.tableData), function(row, index) {\n return _c('tr', {\n class: {\n 'success': (index == _vm.indexSelected)\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.selectRow(row, index)\n }\n }\n }, _vm._l((_vm.columns), function(k) {\n return _c('td', [_vm._v(\"\\n \" + _vm._s(_vm.fetchFromObject(row, k.key, k.render)) + \"\\n \")])\n }))\n }), _vm._v(\" \"), _c('tr', [_c('td', {\n staticClass: \"text-center\",\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.tableInfo) + \"\\n \")])])], 2)])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-footer Vue__panel-footer\"\n }, [_c('div', {\n staticClass: \"pull-left\"\n }, [_c('div', {\n staticClass: \"btn-group Vue__datasource_actions\"\n }, _vm._l((_vm.actions), function(btn) {\n return _c('button', {\n staticClass: \"btn btn-default\",\n class: btn.class,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n btn.event($event, _vm.selected)\n }\n }\n }, [(btn.icon) ? _c('i', {\n staticClass: \"pr1\",\n class: btn.icon\n }) : _vm._e(), _vm._v(\"\\n \" + _vm._s(btn.text) + \"\\n \")])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"pull-right\"\n }, [_c('pagination', {\n attrs: {\n \"pages\": _vm.pagination,\n \"translation\": _vm.translation.pagination\n },\n on: {\n \"change\": _vm.changePage\n }\n })], 1), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-ae09face!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Datasource.vue\n// module id = 12\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// Datasource.vue?28dd5f97","\n \n\n\n\n\n\n// WEBPACK FOOTER //\n// Pagination.vue?633c2b7c","export default {\n translations: {\n // English translation\n 'en': {\n 'table': {\n 'label_limits': 'Show',\n 'label_search': 'Search',\n 'placeholder_search': 'Type to search..',\n 'records_not_found': 'No records found'\n },\n 'pagination': {\n 'label_show': 'Showing',\n 'label_to': 'to',\n 'label_of': 'of',\n 'label_entries': 'entries',\n 'btn_first': 'First',\n 'btn_last': 'Latest'\n }\n },\n // Spanish translation\n 'es': {\n 'table': {\n 'label_limits': 'Mostrar',\n 'label_search': 'Buscar',\n 'placeholder_search': 'Buscar ..',\n 'records_not_found': 'No se encontraron registros.'\n },\n 'pagination': {\n 'label_show': 'Mostrando',\n 'label_to': 'a',\n 'label_of': 'de',\n 'label_entries': 'registros',\n 'btn_first': 'Primero',\n 'btn_last': 'Último'\n }\n },\n // French translation\n 'fr': {\n 'table': {\n 'label_limits': 'Afficher',\n 'label_search': 'Recherche',\n 'placeholder_search': 'Recherche par mot-clé..',\n 'records_not_found': 'Aucun enregistrements trouvés'\n },\n 'pagination': {\n 'label_show': 'Affichage de',\n 'label_to': 'à',\n 'label_of': 'de',\n 'label_entries': 'entrées',\n 'btn_first': 'Première',\n 'btn_last': 'Dernière'\n }\n },\n // Chinese Simplified translation\n 'zh-CN': {\n 'table': {\n 'label_limits': '显示',\n 'label_search': '搜索',\n 'placeholder_search': '输入搜索..',\n 'records_not_found': '记录未找到'\n },\n 'pagination': {\n 'label_show': '正在显示',\n 'label_to': '到',\n 'label_of': '总共',\n 'label_entries': '条目',\n 'btn_first': '首页',\n 'btn_last': '未页'\n }\n },\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceLanguage.js","export default {\n /**\n * Find the element value using Recursive Method and return the value rendered if it's defined\n * @param obj\n * @param column\n * @param render\n * @returns {*}\n */\n fetchFromObject(obj, column, render) {\n if (typeof obj === 'undefined') return false;\n let _index = column.indexOf('.');\n if (_index > -1) {\n return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));\n }\n if (typeof render != 'undefined') {\n return render(obj[column]);\n }\n return obj[column];\n },\n\n /**\n * Emit event to change page from pagination\n * @param page\n * @return {void}\n */\n changePage(page) {\n this.selected = null;\n this.indexSelected = -1;\n this.$emit('change', {perpage: this.perpage, page: page});\n },\n\n /**\n * Effect toggle to selected row\n * @param row\n * @param index\n * @return {void}\n */\n selectRow(row, index) {\n if (this.indexSelected == index) {\n this.indexSelected = -1;\n this.selected = null;\n } else {\n this.indexSelected = index;\n this.selected = {\n 'row': row,\n 'index': index\n };\n }\n },\n\n /**\n * Computed property: Building custom string information with translation\n * @returns {String}\n */\n tableInfo() {\n let label_show = this.translation.pagination.label_show;\n let from = (this.pagination.from == null) ? 0 : this.pagination.from;\n let label_to = this.translation.pagination.label_to;\n let to = (this.pagination.to == null) ? 0 : this.pagination.to;\n let label_of = this.translation.pagination.label_of;\n let total = this.pagination.total;\n let label_entries = this.translation.pagination.label_entries;\n\n return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceUtils.js","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".Vue__pagination nav .pagination[data-v-1423dbfa]{margin:10px 0!important}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-1423dbfa&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Pagination.vue\n// module id = 7\n// module chunks = 0","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".vue-datasource .Vue__panel-body[data-v-29611564]{padding:0}.vue-datasource .Vue__panel-body .Vue__table[data-v-29611564]{margin-bottom:0}.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-29611564]{margin:10px 0}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-29611564&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/Datasource.vue\n// module id = 8\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-29611564&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Datasource.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Datasource.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-29611564!vue-loader/lib/selector?type=template&index=0!./Datasource.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-29611564\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Datasource.vue\n// module id = 9\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-1423dbfa&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Pagination.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Pagination.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-1423dbfa!vue-loader/lib/selector?type=template&index=0!./Pagination.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-1423dbfa\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pagination.vue\n// module id = 10\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"Vue__pagination\"\n }, [_c('nav', {\n attrs: {\n \"aria-label\": \"Page navigation\"\n }\n }, [_c('ul', {\n staticClass: \"pagination\"\n }, [_c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.firstPage($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Previous\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.previous($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"«\")])])]), _vm._v(\" \"), _vm._l((_vm.items), function(n) {\n return _c('li', {\n class: (_vm.pages.current_page == n) ? 'active' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.change(n)\n }\n }\n }, [_vm._v(_vm._s(n))])])\n }), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Next\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.next($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"»\")])])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.lastPage(_vm.pages.last_page)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-1423dbfa!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pagination.vue\n// module id = 11\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-datasource\"\n }, [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticClass: \"form-inline\"\n }, [_c('div', {\n staticClass: \"form-group pull-left\"\n }, [_c('label', {\n staticClass: \"control-label pr2\"\n }, [_vm._v(_vm._s(_vm.translation.table.label_limits))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.perpage),\n expression: \"perpage\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"number\": \"\"\n },\n on: {\n \"change\": function($event) {\n var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) {\n return o.selected\n }).map(function(o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val\n });\n _vm.perpage = $event.target.multiple ? $$selectedVal : $$selectedVal[0]\n }\n }\n }, _vm._l((_vm.limits), function(limit) {\n return _c('option', {\n domProps: {\n \"value\": limit\n }\n }, [_vm._v(_vm._s(limit))])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group pull-right\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.search),\n expression: \"search\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.translation.table.placeholder_search\n },\n domProps: {\n \"value\": (_vm.search)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.search = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.searching($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.table.label_search) + \"\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body Vue__panel-body\"\n }, [_c('table', {\n staticClass: \"table table-striped Vue__table\"\n }, [_c('thead', [_c('tr', _vm._l((_vm.columns), function(column) {\n return _c('th', [_vm._v(_vm._s(column.name))])\n }))]), _vm._v(\" \"), _c('tbody', [(_vm.pagination.total == 0) ? _c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(_vm._s(_vm.translation.table.records_not_found))])]) : _vm._l((_vm.tableData), function(row, index) {\n return _c('tr', {\n class: {\n 'success': (index == _vm.indexSelected)\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.selectRow(row, index)\n }\n }\n }, _vm._l((_vm.columns), function(k) {\n return _c('td', [_vm._v(\"\\n \" + _vm._s(_vm.fetchFromObject(row, k.key, k.render)) + \"\\n \")])\n }))\n }), _vm._v(\" \"), _c('tr', [_c('td', {\n staticClass: \"text-center\",\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.tableInfo) + \"\\n \")])])], 2)])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-footer Vue__panel-footer\"\n }, [_c('div', {\n staticClass: \"pull-left\"\n }, [_c('div', {\n staticClass: \"btn-group Vue__datasource_actions\"\n }, _vm._l((_vm.actions), function(btn) {\n return _c('button', {\n staticClass: \"btn btn-default\",\n class: btn.class,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n btn.event($event, _vm.selected)\n }\n }\n }, [(btn.icon) ? _c('i', {\n staticClass: \"pr1\",\n class: btn.icon\n }) : _vm._e(), _vm._v(\"\\n \" + _vm._s(btn.text) + \"\\n \")])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"pull-right\"\n }, [_c('pagination', {\n attrs: {\n \"pages\": _vm.pagination,\n \"translation\": _vm.translation.pagination\n },\n on: {\n \"change\": _vm.changePage\n }\n })], 1), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-29611564!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Datasource.vue\n// module id = 12\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// Datasource.vue?28dd5f97","\n \n\n\n\n\n\n// WEBPACK FOOTER //\n// Pagination.vue?633c2b7c","export default {\n translations: {\n // English translation\n 'en': {\n 'table': {\n 'label_limits': 'Show',\n 'label_search': 'Search',\n 'placeholder_search': 'Type to search..',\n 'records_not_found': 'No records found'\n },\n 'pagination': {\n 'label_show': 'Showing',\n 'label_to': 'to',\n 'label_of': 'of',\n 'label_entries': 'entries',\n 'btn_first': 'First',\n 'btn_last': 'Latest'\n }\n },\n // Spanish translation\n 'es': {\n 'table': {\n 'label_limits': 'Mostrar',\n 'label_search': 'Buscar',\n 'placeholder_search': 'Buscar ..',\n 'records_not_found': 'No se encontraron registros.'\n },\n 'pagination': {\n 'label_show': 'Mostrando',\n 'label_to': 'a',\n 'label_of': 'de',\n 'label_entries': 'registros',\n 'btn_first': 'Primero',\n 'btn_last': 'Último'\n }\n },\n // French translation\n 'fr': {\n 'table': {\n 'label_limits': 'Afficher',\n 'label_search': 'Recherche',\n 'placeholder_search': 'Recherche par mot-clé..',\n 'records_not_found': 'Aucun enregistrements trouvés'\n },\n 'pagination': {\n 'label_show': 'Affichage de',\n 'label_to': 'à',\n 'label_of': 'de',\n 'label_entries': 'entrées',\n 'btn_first': 'Première',\n 'btn_last': 'Dernière'\n }\n },\n // Chinese Simplified translation\n 'zh-CN': {\n 'table': {\n 'label_limits': '显示',\n 'label_search': '搜索',\n 'placeholder_search': '输入搜索..',\n 'records_not_found': '记录未找到'\n },\n 'pagination': {\n 'label_show': '正在显示',\n 'label_to': '到',\n 'label_of': '总共',\n 'label_entries': '条目',\n 'btn_first': '首页',\n 'btn_last': '未页'\n }\n },\n // Catalan translation\n 'ca': {\n 'table': {\n 'label_limits': 'Mostrar',\n 'label_search': 'Buscar',\n 'placeholder_search': 'Buscar ..',\n 'records_not_found': 'No s\\'han trobat registres.'\n },\n 'pagination': {\n 'label_show': 'Mostrant',\n 'label_to': 'a',\n 'label_of': 'de',\n 'label_entries': 'registres',\n 'btn_first': 'Primer',\n 'btn_last': 'Últim'\n }\n }, \n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceLanguage.js","export default {\n /**\n * Find the element value using Recursive Method and return the value rendered if it's defined\n * @param obj\n * @param column\n * @param render\n * @returns {*}\n */\n fetchFromObject(obj, column, render) {\n if (typeof obj === 'undefined') return false;\n let _index = column.indexOf('.');\n if (_index > -1) {\n return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));\n }\n if (typeof render != 'undefined') {\n return render(obj[column]);\n }\n return obj[column];\n },\n\n /**\n * Emit event to change page from pagination\n * @param page\n * @return {void}\n */\n changePage(page) {\n this.selected = null;\n this.indexSelected = -1;\n this.$emit('change', {perpage: this.perpage, page: page});\n },\n\n /**\n * Effect toggle to selected row\n * @param row\n * @param index\n * @return {void}\n */\n selectRow(row, index) {\n if (this.indexSelected == index) {\n this.indexSelected = -1;\n this.selected = null;\n } else {\n this.indexSelected = index;\n this.selected = {\n 'row': row,\n 'index': index\n };\n }\n },\n\n /**\n * Computed property: Building custom string information with translation\n * @returns {String}\n */\n tableInfo() {\n let label_show = this.translation.pagination.label_show;\n let from = (this.pagination.from == null) ? 0 : this.pagination.from;\n let label_to = this.translation.pagination.label_to;\n let to = (this.pagination.to == null) ? 0 : this.pagination.to;\n let label_of = this.translation.pagination.label_of;\n let total = this.pagination.total;\n let label_entries = this.translation.pagination.label_entries;\n\n return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceUtils.js","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".Vue__pagination nav .pagination[data-v-728cbc62]{margin:10px 0!important}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-728cbc62&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Pagination.vue\n// module id = 7\n// module chunks = 0","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".vue-datasource .Vue__panel-body[data-v-ae09face]{padding:0}.vue-datasource .Vue__panel-body .Vue__table[data-v-ae09face]{margin-bottom:0}.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-ae09face]{margin:10px 0}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-ae09face&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/Datasource.vue\n// module id = 8\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-ae09face&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Datasource.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Datasource.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-ae09face!vue-loader/lib/selector?type=template&index=0!./Datasource.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-ae09face\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Datasource.vue\n// module id = 9\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-728cbc62&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Pagination.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Pagination.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-728cbc62!vue-loader/lib/selector?type=template&index=0!./Pagination.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-728cbc62\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pagination.vue\n// module id = 10\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"Vue__pagination\"\n }, [_c('nav', {\n attrs: {\n \"aria-label\": \"Page navigation\"\n }\n }, [_c('ul', {\n staticClass: \"pagination\"\n }, [_c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.firstPage($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Previous\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.previous($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"«\")])])]), _vm._v(\" \"), _vm._l((_vm.items), function(n) {\n return _c('li', {\n class: (_vm.pages.current_page == n) ? 'active' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.change(n)\n }\n }\n }, [_vm._v(_vm._s(n))])])\n }), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Next\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.next($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"»\")])])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.lastPage(_vm.pages.last_page)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-728cbc62!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pagination.vue\n// module id = 11\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-datasource\"\n }, [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticClass: \"form-inline\"\n }, [_c('div', {\n staticClass: \"form-group pull-left\"\n }, [_c('label', {\n staticClass: \"control-label pr2\"\n }, [_vm._v(_vm._s(_vm.translation.table.label_limits))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.perpage),\n expression: \"perpage\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"number\": \"\"\n },\n on: {\n \"change\": function($event) {\n var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) {\n return o.selected\n }).map(function(o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val\n });\n _vm.perpage = $event.target.multiple ? $$selectedVal : $$selectedVal[0]\n }\n }\n }, _vm._l((_vm.limits), function(limit) {\n return _c('option', {\n domProps: {\n \"value\": limit\n }\n }, [_vm._v(_vm._s(limit))])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group pull-right\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.search),\n expression: \"search\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.translation.table.placeholder_search\n },\n domProps: {\n \"value\": (_vm.search)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.search = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.searching($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.table.label_search) + \"\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body Vue__panel-body\"\n }, [_c('table', {\n staticClass: \"table table-striped Vue__table\"\n }, [_c('thead', [_c('tr', _vm._l((_vm.columns), function(column) {\n return _c('th', [_vm._v(_vm._s(column.name))])\n }))]), _vm._v(\" \"), _c('tbody', [(_vm.pagination.total == 0) ? _c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(_vm._s(_vm.translation.table.records_not_found))])]) : _vm._l((_vm.tableData), function(row, index) {\n return _c('tr', {\n class: {\n 'success': (index == _vm.indexSelected)\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.selectRow(row, index)\n }\n }\n }, _vm._l((_vm.columns), function(k) {\n return _c('td', [_vm._v(\"\\n \" + _vm._s(_vm.fetchFromObject(row, k.key, k.render)) + \"\\n \")])\n }))\n }), _vm._v(\" \"), _c('tr', [_c('td', {\n staticClass: \"text-center\",\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.tableInfo) + \"\\n \")])])], 2)])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-footer Vue__panel-footer\"\n }, [_c('div', {\n staticClass: \"pull-left\"\n }, [_c('div', {\n staticClass: \"btn-group Vue__datasource_actions\"\n }, _vm._l((_vm.actions), function(btn) {\n return _c('button', {\n staticClass: \"btn btn-default\",\n class: btn.class,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n btn.event($event, _vm.selected)\n }\n }\n }, [(btn.icon) ? _c('i', {\n staticClass: \"pr1\",\n class: btn.icon\n }) : _vm._e(), _vm._v(\"\\n \" + _vm._s(btn.text) + \"\\n \")])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"pull-right\"\n }, [_c('pagination', {\n attrs: {\n \"pages\": _vm.pagination,\n \"translation\": _vm.translation.pagination\n },\n on: {\n \"change\": _vm.changePage\n }\n })], 1), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-ae09face!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Datasource.vue\n// module id = 12\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// Datasource.vue?28dd5f97","\n \n\n\n\n\n\n// WEBPACK FOOTER //\n// Pagination.vue?633c2b7c","import Vue from 'vue/dist/vue.js';\nimport Datasource from './Datasource.vue';\n\nvar data = {\n \"pagination\": {\n \"total\": 4,\n \"per_page\": 15,\n \"current_page\": 1,\n \"last_page\": 1,\n \"next_page_url\": null,\n \"prev_page_url\": null,\n \"from\": 1,\n \"to\": 4\n },\n \"data\": [\n {\n \"id_grupo\": 1,\n \"tipo_grupo\": \"1\",\n \"nombre_grupo\": \"All\",\n \"estado_grupo\": \"1\",\n \"created_at\": \"2016-12-06 14:18:54\",\n \"updated_at\": \"2016-12-06 14:18:54\",\n \"deleted_at\": null,\n \"detalle_grupos_count\": \"4\"\n },\n {\n \"id_grupo\": 2,\n \"tipo_grupo\": \"1\",\n \"nombre_grupo\": \"Ladies\",\n \"estado_grupo\": \"1\",\n \"created_at\": \"2016-12-06 14:18:54\",\n \"updated_at\": \"2016-12-06 14:18:54\",\n \"deleted_at\": null,\n \"detalle_grupos_count\": \"1\"\n },\n {\n \"id_grupo\": 3,\n \"tipo_grupo\": \"2\",\n \"nombre_grupo\": \"Mens\",\n \"estado_grupo\": \"2\",\n \"created_at\": \"2016-12-06 14:18:54\",\n \"updated_at\": \"2016-12-06 14:18:54\",\n \"deleted_at\": null,\n \"detalle_grupos_count\": \"3\"\n },\n {\n \"id_grupo\": 4,\n \"tipo_grupo\": \"1\",\n \"nombre_grupo\": \"Chiefs\",\n \"estado_grupo\": \"1\",\n \"created_at\": \"2016-12-06 14:18:54\",\n \"updated_at\": \"2016-12-06 14:18:54\",\n \"deleted_at\": null,\n \"detalle_grupos_count\": \"1\"\n },\n {\n \"id_grupo\": 5,\n \"tipo_grupo\": \"2\",\n \"nombre_grupo\": \"Operators\",\n \"estado_grupo\": \"1\",\n \"created_at\": \"2016-12-06 14:18:54\",\n \"updated_at\": \"2016-12-06 14:18:54\",\n \"deleted_at\": null,\n \"detalle_grupos_count\": \"1\"\n }\n ]\n};\n\nnew Vue({\n el: '#app',\n components: {\n Datasource\n },\n data() {\n return {\n groups: {\n pagination: {},\n data: []\n },\n columns: [\n {\n name: 'Id',\n key: 'id_grupo',\n filter: false,\n render(value) {\n return `# ${value}`;\n }\n },\n {\n name: 'Name',\n key: 'nombre_grupo',\n filter: false\n },\n {\n name: 'Type',\n key: 'tipo_grupo',\n filter: false,\n render(value) {\n switch (value) {\n case '1':\n return 'Global';\n break;\n case '2':\n return 'General';\n break;\n case '3':\n return 'Personal';\n break;\n }\n }\n },\n {\n name: 'Total',\n key: 'detalle_grupos_count',\n filter: false,\n },\n {\n name: 'Date',\n key: 'created_at',\n filter: false\n },\n ],\n actions: [\n {\n text: 'Edit',\n icon: 'glyphicon glyphicon-pencil',\n class: 'btn-primary',\n event(e, row) {\n console.warn('Did clicked me?', e);\n if (row == null) {\n console.info('Ups.. data not found :(')\n } else {\n console.info('Yeeei, I found this :)', JSON.stringify(row));\n }\n }\n },\n {\n text: 'Delete',\n icon: 'glyphicon glyphicon-trash',\n class: 'btn-danger',\n event(e, row) {\n console.warn('Are you clicked me?', e);\n if (row == null) {\n console.info('Ups.. data not found :(')\n } else {\n console.info('Yeeei, I found this :)', JSON.stringify(row));\n }\n }\n },\n {\n text: 'Show',\n icon: 'glyphicon glyphicon-eye-open',\n class: 'btn-info',\n event(e, row) {\n console.warn('Are you clicked me?', e);\n if (row == null) {\n console.info('Ups.. data not found :(')\n } else {\n console.info('Yeeei, I found this :)', JSON.stringify(row));\n }\n }\n }\n ]\n }\n },\n mounted() {\n this.groups = data;\n },\n methods: {\n changePage(values) {\n alert(`Show limit changed, the new limit is ${values.perpage} and the current page is ${values.page}`);\n },\n onSearch(searchQuery) {\n alert(`Did you find this? ${searchQuery}`);\n }\n }\n});\n\n\n// WEBPACK FOOTER //\n// ./src/example.js","export default {\n translations: {\n // English translation\n 'en': {\n 'table': {\n 'label_limits': 'Show',\n 'label_search': 'Search',\n 'placeholder_search': 'Type to search..',\n 'records_not_found': 'No records found'\n },\n 'pagination': {\n 'label_show': 'Showing',\n 'label_to': 'to',\n 'label_of': 'of',\n 'label_entries': 'entries',\n 'btn_first': 'First',\n 'btn_last': 'Latest'\n }\n },\n // Spanish translation\n 'es': {\n 'table': {\n 'label_limits': 'Mostrar',\n 'label_search': 'Buscar',\n 'placeholder_search': 'Buscar ..',\n 'records_not_found': 'No se encontraron registros.'\n },\n 'pagination': {\n 'label_show': 'Mostrando',\n 'label_to': 'a',\n 'label_of': 'de',\n 'label_entries': 'registros',\n 'btn_first': 'Primero',\n 'btn_last': 'Último'\n }\n },\n // French translation\n 'fr': {\n 'table': {\n 'label_limits': 'Afficher',\n 'label_search': 'Recherche',\n 'placeholder_search': 'Recherche par mot-clé..',\n 'records_not_found': 'Aucun enregistrements trouvés'\n },\n 'pagination': {\n 'label_show': 'Affichage de',\n 'label_to': 'à',\n 'label_of': 'de',\n 'label_entries': 'entrées',\n 'btn_first': 'Première',\n 'btn_last': 'Dernière'\n }\n },\n // Chinese Simplified translation\n 'zh-CN': {\n 'table': {\n 'label_limits': '显示',\n 'label_search': '搜索',\n 'placeholder_search': '输入搜索..',\n 'records_not_found': '记录未找到'\n },\n 'pagination': {\n 'label_show': '正在显示',\n 'label_to': '到',\n 'label_of': '总共',\n 'label_entries': '条目',\n 'btn_first': '首页',\n 'btn_last': '未页'\n }\n },\n // Catalan translation\n 'ca': {\n 'table': {\n 'label_limits': 'Mostrar',\n 'label_search': 'Buscar',\n 'placeholder_search': 'Buscar ..',\n 'records_not_found': 'No s\\'han trobat registres.'\n },\n 'pagination': {\n 'label_show': 'Mostrant',\n 'label_to': 'a',\n 'label_of': 'de',\n 'label_entries': 'registres',\n 'btn_first': 'Primer',\n 'btn_last': 'Últim'\n }\n }, \n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceLanguage.js","export default {\n /**\n * Find the element value using Recursive Method and return the value rendered if it's defined\n * @param obj\n * @param column\n * @param render\n * @returns {*}\n */\n fetchFromObject(obj, column, render) {\n if (typeof obj === 'undefined') return false;\n let _index = column.indexOf('.');\n if (_index > -1) {\n return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));\n }\n if (typeof render != 'undefined') {\n return render(obj[column]);\n }\n return obj[column];\n },\n\n /**\n * Emit event to change page from pagination\n * @param page\n * @return {void}\n */\n changePage(page) {\n this.selected = null;\n this.indexSelected = -1;\n this.$emit('change', {perpage: this.perpage, page: page});\n },\n\n /**\n * Effect toggle to selected row\n * @param row\n * @param index\n * @return {void}\n */\n selectRow(row, index) {\n if (this.indexSelected == index) {\n this.indexSelected = -1;\n this.selected = null;\n } else {\n this.indexSelected = index;\n this.selected = {\n 'row': row,\n 'index': index\n };\n }\n },\n\n /**\n * Computed property: Building custom string information with translation\n * @returns {String}\n */\n tableInfo() {\n let label_show = this.translation.pagination.label_show;\n let from = (this.pagination.from == null) ? 0 : this.pagination.from;\n let label_to = this.translation.pagination.label_to;\n let to = (this.pagination.to == null) ? 0 : this.pagination.to;\n let label_of = this.translation.pagination.label_of;\n let total = this.pagination.total;\n let label_entries = this.translation.pagination.label_entries;\n\n return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceUtils.js","module.exports = { \"default\": require(\"core-js/library/fn/json/stringify\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/json/stringify.js\n// module id = 8\n// module chunks = 0","var core = require('../../modules/_core')\n , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify});\nmodule.exports = function stringify(it){ // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/fn/json/stringify.js\n// module id = 9\n// module chunks = 0","var core = module.exports = {version: '2.4.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_core.js\n// module id = 10\n// module chunks = 0","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.Vue__pagination nav .pagination[data-v-728cbc62] {\\n margin: 10px 0 !important;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-728cbc62&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Pagination.vue\n// module id = 11\n// module chunks = 0","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.vue-datasource .Vue__panel-body[data-v-ae09face] {\\n padding: 0;\\n}\\n.vue-datasource .Vue__panel-body .Vue__table[data-v-ae09face] {\\n margin-bottom: 0;\\n}\\n.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-ae09face] {\\n margin: 10px 0;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-ae09face&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/Datasource.vue\n// module id = 12\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-ae09face&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Datasource.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Datasource.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-ae09face!vue-loader/lib/selector?type=template&index=0!./Datasource.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-ae09face\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Datasource.vue\n// module id = 13\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-728cbc62&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Pagination.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Pagination.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-728cbc62!vue-loader/lib/selector?type=template&index=0!./Pagination.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-728cbc62\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pagination.vue\n// module id = 14\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"Vue__pagination\"\n }, [_c('nav', {\n attrs: {\n \"aria-label\": \"Page navigation\"\n }\n }, [_c('ul', {\n staticClass: \"pagination\"\n }, [_c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.firstPage($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Previous\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.previous($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"«\")])])]), _vm._v(\" \"), _vm._l((_vm.items), function(n) {\n return _c('li', {\n class: (_vm.pages.current_page == n) ? 'active' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.change(n)\n }\n }\n }, [_vm._v(_vm._s(n))])])\n }), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Next\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.next($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"»\")])])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.lastPage(_vm.pages.last_page)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-728cbc62!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pagination.vue\n// module id = 15\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-datasource\"\n }, [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticClass: \"form-inline\"\n }, [_c('div', {\n staticClass: \"form-group pull-left\"\n }, [_c('label', {\n staticClass: \"control-label pr2\"\n }, [_vm._v(_vm._s(_vm.translation.table.label_limits))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.perpage),\n expression: \"perpage\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"number\": \"\"\n },\n on: {\n \"change\": function($event) {\n var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) {\n return o.selected\n }).map(function(o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val\n });\n _vm.perpage = $event.target.multiple ? $$selectedVal : $$selectedVal[0]\n }\n }\n }, _vm._l((_vm.limits), function(limit) {\n return _c('option', {\n domProps: {\n \"value\": limit\n }\n }, [_vm._v(_vm._s(limit))])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group pull-right\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.search),\n expression: \"search\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.translation.table.placeholder_search\n },\n domProps: {\n \"value\": (_vm.search)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.search = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.searching($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.table.label_search) + \"\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body Vue__panel-body\"\n }, [_c('table', {\n staticClass: \"table table-striped Vue__table\"\n }, [_c('thead', [_c('tr', _vm._l((_vm.columns), function(column) {\n return _c('th', [_vm._v(_vm._s(column.name))])\n }))]), _vm._v(\" \"), _c('tbody', [(_vm.pagination.total == 0) ? _c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(_vm._s(_vm.translation.table.records_not_found))])]) : _vm._l((_vm.tableData), function(row, index) {\n return _c('tr', {\n class: {\n 'success': (index == _vm.indexSelected)\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.selectRow(row, index)\n }\n }\n }, _vm._l((_vm.columns), function(k) {\n return _c('td', [_vm._v(\"\\n \" + _vm._s(_vm.fetchFromObject(row, k.key, k.render)) + \"\\n \")])\n }))\n }), _vm._v(\" \"), _c('tr', [_c('td', {\n staticClass: \"text-center\",\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.tableInfo) + \"\\n \")])])], 2)])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-footer Vue__panel-footer\"\n }, [_c('div', {\n staticClass: \"pull-left\"\n }, [_c('div', {\n staticClass: \"btn-group Vue__datasource_actions\"\n }, _vm._l((_vm.actions), function(btn) {\n return _c('button', {\n staticClass: \"btn btn-default\",\n class: btn.class,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n btn.event($event, _vm.selected)\n }\n }\n }, [(btn.icon) ? _c('i', {\n staticClass: \"pr1\",\n class: btn.icon\n }) : _vm._e(), _vm._v(\"\\n \" + _vm._s(btn.text) + \"\\n \")])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"pull-right\"\n }, [_c('pagination', {\n attrs: {\n \"pages\": _vm.pagination,\n \"translation\": _vm.translation.pagination\n },\n on: {\n \"change\": _vm.changePage\n }\n })], 1), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-ae09face!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Datasource.vue\n// module id = 16\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// Datasource.vue?28dd5f97","\n \n\n\n\n\n\n// WEBPACK FOOTER //\n// Pagination.vue?633c2b7c","export default {\n translations: {\n // English translation\n 'en': {\n 'table': {\n 'label_limits': 'Show',\n 'label_search': 'Search',\n 'placeholder_search': 'Type to search..',\n 'records_not_found': 'No records found'\n },\n 'pagination': {\n 'label_show': 'Showing',\n 'label_to': 'to',\n 'label_of': 'of',\n 'label_entries': 'entries',\n 'btn_first': 'First',\n 'btn_last': 'Latest'\n }\n },\n // Spanish translation\n 'es': {\n 'table': {\n 'label_limits': 'Mostrar',\n 'label_search': 'Buscar',\n 'placeholder_search': 'Buscar ..',\n 'records_not_found': 'No se encontraron registros.'\n },\n 'pagination': {\n 'label_show': 'Mostrando',\n 'label_to': 'a',\n 'label_of': 'de',\n 'label_entries': 'registros',\n 'btn_first': 'Primero',\n 'btn_last': 'Último'\n }\n },\n // French translation\n 'fr': {\n 'table': {\n 'label_limits': 'Afficher',\n 'label_search': 'Recherche',\n 'placeholder_search': 'Recherche par mot-clé..',\n 'records_not_found': 'Aucun enregistrements trouvés'\n },\n 'pagination': {\n 'label_show': 'Affichage de',\n 'label_to': 'à',\n 'label_of': 'de',\n 'label_entries': 'entrées',\n 'btn_first': 'Première',\n 'btn_last': 'Dernière'\n }\n },\n // Chinese Simplified translation\n 'zh-CN': {\n 'table': {\n 'label_limits': '显示',\n 'label_search': '搜索',\n 'placeholder_search': '输入搜索..',\n 'records_not_found': '记录未找到'\n },\n 'pagination': {\n 'label_show': '正在显示',\n 'label_to': '到',\n 'label_of': '总共',\n 'label_entries': '条目',\n 'btn_first': '首页',\n 'btn_last': '未页'\n }\n },\n // Catalan translation\n 'ca': {\n 'table': {\n 'label_limits': 'Mostrar',\n 'label_search': 'Buscar',\n 'placeholder_search': 'Buscar ..',\n 'records_not_found': 'No s\\'han trobat registres.'\n },\n 'pagination': {\n 'label_show': 'Mostrant',\n 'label_to': 'a',\n 'label_of': 'de',\n 'label_entries': 'registres',\n 'btn_first': 'Primer',\n 'btn_last': 'Últim'\n }\n }, \n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceLanguage.js","export default {\n /**\n * Find the element value using Recursive Method and return the value rendered if it's defined\n * @param obj\n * @param column\n * @param render\n * @returns {*}\n */\n fetchFromObject(obj, column, render) {\n if (typeof obj === 'undefined') return false;\n let _index = column.indexOf('.');\n if (_index > -1) {\n return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));\n }\n if (typeof render != 'undefined') {\n return render(obj[column]);\n }\n return obj[column];\n },\n\n /**\n * Emit event to change page from pagination\n * @param page\n * @return {void}\n */\n changePage(page) {\n this.selected = null;\n this.indexSelected = -1;\n this.$emit('change', {perpage: this.perpage, page: page});\n },\n\n /**\n * Effect toggle to selected row\n * @param row\n * @param index\n * @return {void}\n */\n selectRow(row, index) {\n if (this.indexSelected == index) {\n this.indexSelected = -1;\n this.selected = null;\n } else {\n this.indexSelected = index;\n this.selected = {\n 'row': row,\n 'index': index\n };\n }\n },\n\n /**\n * Computed property: Building custom string information with translation\n * @returns {String}\n */\n tableInfo() {\n let label_show = this.translation.pagination.label_show;\n let from = (this.pagination.from == null) ? 0 : this.pagination.from;\n let label_to = this.translation.pagination.label_to;\n let to = (this.pagination.to == null) ? 0 : this.pagination.to;\n let label_of = this.translation.pagination.label_of;\n let total = this.pagination.total;\n let label_entries = this.translation.pagination.label_entries;\n\n return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceUtils.js","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.Vue__pagination nav .pagination[data-v-728cbc62] {\\n margin: 10px 0 !important;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-728cbc62&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Pagination.vue\n// module id = 7\n// module chunks = 0","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.vue-datasource .Vue__panel-body[data-v-ae09face] {\\n padding: 0;\\n}\\n.vue-datasource .Vue__panel-body .Vue__table[data-v-ae09face] {\\n margin-bottom: 0;\\n}\\n.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-ae09face] {\\n margin: 10px 0;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-ae09face&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/Datasource.vue\n// module id = 8\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-ae09face&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Datasource.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Datasource.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-ae09face!vue-loader/lib/selector?type=template&index=0!./Datasource.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-ae09face\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Datasource.vue\n// module id = 9\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-728cbc62&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Pagination.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Pagination.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-728cbc62!vue-loader/lib/selector?type=template&index=0!./Pagination.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-728cbc62\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pagination.vue\n// module id = 10\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"Vue__pagination\"\n }, [_c('nav', {\n attrs: {\n \"aria-label\": \"Page navigation\"\n }\n }, [_c('ul', {\n staticClass: \"pagination\"\n }, [_c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.firstPage($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Previous\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.previous($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"«\")])])]), _vm._v(\" \"), _vm._l((_vm.items), function(n) {\n return _c('li', {\n class: (_vm.pages.current_page == n) ? 'active' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.change(n)\n }\n }\n }, [_vm._v(_vm._s(n))])])\n }), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Next\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.next($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"»\")])])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.lastPage(_vm.pages.last_page)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-728cbc62!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pagination.vue\n// module id = 11\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-datasource\"\n }, [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticClass: \"form-inline\"\n }, [_c('div', {\n staticClass: \"form-group pull-left\"\n }, [_c('label', {\n staticClass: \"control-label pr2\"\n }, [_vm._v(_vm._s(_vm.translation.table.label_limits))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.perpage),\n expression: \"perpage\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"number\": \"\"\n },\n on: {\n \"change\": function($event) {\n var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) {\n return o.selected\n }).map(function(o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val\n });\n _vm.perpage = $event.target.multiple ? $$selectedVal : $$selectedVal[0]\n }\n }\n }, _vm._l((_vm.limits), function(limit) {\n return _c('option', {\n domProps: {\n \"value\": limit\n }\n }, [_vm._v(_vm._s(limit))])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group pull-right\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.search),\n expression: \"search\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.translation.table.placeholder_search\n },\n domProps: {\n \"value\": (_vm.search)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.search = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.searching($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.table.label_search) + \"\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body Vue__panel-body\"\n }, [_c('table', {\n staticClass: \"table table-striped Vue__table\"\n }, [_c('thead', [_c('tr', _vm._l((_vm.columns), function(column) {\n return _c('th', [_vm._v(_vm._s(column.name))])\n }))]), _vm._v(\" \"), _c('tbody', [(_vm.pagination.total == 0) ? _c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(_vm._s(_vm.translation.table.records_not_found))])]) : _vm._l((_vm.tableData), function(row, index) {\n return _c('tr', {\n class: {\n 'success': (index == _vm.indexSelected)\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.selectRow(row, index)\n }\n }\n }, _vm._l((_vm.columns), function(k) {\n return _c('td', [_vm._v(\"\\n \" + _vm._s(_vm.fetchFromObject(row, k.key, k.render)) + \"\\n \")])\n }))\n }), _vm._v(\" \"), _c('tr', [_c('td', {\n staticClass: \"text-center\",\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.tableInfo) + \"\\n \")])])], 2)])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-footer Vue__panel-footer\"\n }, [_c('div', {\n staticClass: \"pull-left\"\n }, [_c('div', {\n staticClass: \"btn-group Vue__datasource_actions\"\n }, _vm._l((_vm.actions), function(btn) {\n return _c('button', {\n staticClass: \"btn btn-default\",\n class: btn.class,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n btn.event($event, _vm.selected)\n }\n }\n }, [(btn.icon) ? _c('i', {\n staticClass: \"pr1\",\n class: btn.icon\n }) : _vm._e(), _vm._v(\"\\n \" + _vm._s(btn.text) + \"\\n \")])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"pull-right\"\n }, [_c('pagination', {\n attrs: {\n \"pages\": _vm.pagination,\n \"translation\": _vm.translation.pagination\n },\n on: {\n \"change\": _vm.changePage\n }\n })], 1), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-ae09face!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Datasource.vue\n// module id = 12\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \n\n\n// WEBPACK FOOTER //\n// Datasource.vue?28dd5f97","\n \n\n\n\n\n\n// WEBPACK FOOTER //\n// Pagination.vue?633c2b7c","export default {\n translations: {\n // English translation\n 'en': {\n 'table': {\n 'label_limits': 'Show',\n 'label_search': 'Search',\n 'placeholder_search': 'Type to search..',\n 'records_not_found': 'No records found'\n },\n 'pagination': {\n 'label_show': 'Showing',\n 'label_to': 'to',\n 'label_of': 'of',\n 'label_entries': 'entries',\n 'btn_first': 'First',\n 'btn_last': 'Latest'\n }\n },\n // Spanish translation\n 'es': {\n 'table': {\n 'label_limits': 'Mostrar',\n 'label_search': 'Buscar',\n 'placeholder_search': 'Buscar ..',\n 'records_not_found': 'No se encontraron registros.'\n },\n 'pagination': {\n 'label_show': 'Mostrando',\n 'label_to': 'a',\n 'label_of': 'de',\n 'label_entries': 'registros',\n 'btn_first': 'Primero',\n 'btn_last': 'Último'\n }\n },\n // French translation\n 'fr': {\n 'table': {\n 'label_limits': 'Afficher',\n 'label_search': 'Recherche',\n 'placeholder_search': 'Recherche par mot-clé..',\n 'records_not_found': 'Aucun enregistrements trouvés'\n },\n 'pagination': {\n 'label_show': 'Affichage de',\n 'label_to': 'à',\n 'label_of': 'de',\n 'label_entries': 'entrées',\n 'btn_first': 'Première',\n 'btn_last': 'Dernière'\n }\n },\n // Chinese Simplified translation\n 'zh-CN': {\n 'table': {\n 'label_limits': '显示',\n 'label_search': '搜索',\n 'placeholder_search': '输入搜索..',\n 'records_not_found': '记录未找到'\n },\n 'pagination': {\n 'label_show': '正在显示',\n 'label_to': '到',\n 'label_of': '总共',\n 'label_entries': '条目',\n 'btn_first': '首页',\n 'btn_last': '未页'\n }\n },\n // Catalan translation\n 'ca': {\n 'table': {\n 'label_limits': 'Mostrar',\n 'label_search': 'Buscar',\n 'placeholder_search': 'Buscar ..',\n 'records_not_found': 'No s\\'han trobat registres.'\n },\n 'pagination': {\n 'label_show': 'Mostrant',\n 'label_to': 'a',\n 'label_of': 'de',\n 'label_entries': 'registres',\n 'btn_first': 'Primer',\n 'btn_last': 'Últim'\n }\n }, \n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceLanguage.js","export default {\n /**\n * Find the element value using Recursive Method and return the value rendered if it's defined\n * @param obj\n * @param column\n * @param render\n * @returns {*}\n */\n fetchFromObject(obj, column, render) {\n if (typeof obj === 'undefined') return false;\n let _index = column.indexOf('.');\n if (_index > -1) {\n return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));\n }\n if (typeof render != 'undefined') {\n return render(obj[column]);\n }\n return obj[column];\n },\n\n /**\n * Emit event to change page from pagination\n * @param page\n * @return {void}\n */\n changePage(page) {\n this.selected = null;\n this.indexSelected = -1;\n this.$emit('change', {perpage: this.perpage, page: page});\n },\n\n /**\n * Effect toggle to selected row\n * @param row\n * @param index\n * @return {void}\n */\n selectRow(row, index) {\n if (this.indexSelected == index) {\n this.indexSelected = -1;\n this.selected = null;\n } else {\n this.indexSelected = index;\n this.selected = {\n 'row': row,\n 'index': index\n };\n }\n },\n\n /**\n * Computed property: Building custom string information with translation\n * @returns {String}\n */\n tableInfo() {\n let label_show = this.translation.pagination.label_show;\n let from = (this.pagination.from == null) ? 0 : this.pagination.from;\n let label_to = this.translation.pagination.label_to;\n let to = (this.pagination.to == null) ? 0 : this.pagination.to;\n let label_of = this.translation.pagination.label_of;\n let total = this.pagination.total;\n let label_entries = this.translation.pagination.label_entries;\n\n return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DatasourceUtils.js","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".Vue__pagination nav .pagination[data-v-728cbc62]{margin:10px 0!important}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-728cbc62&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Pagination.vue\n// module id = 7\n// module chunks = 0","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".vue-datasource .Vue__panel-body[data-v-ae09face]{padding:0}.vue-datasource .Vue__panel-body .Vue__table[data-v-ae09face]{margin-bottom:0}.vue-datasource .Vue__panel-footer .Vue__datasource_actions[data-v-ae09face]{margin:10px 0}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-ae09face&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/Datasource.vue\n// module id = 8\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-ae09face&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Datasource.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Datasource.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-ae09face!vue-loader/lib/selector?type=template&index=0!./Datasource.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-ae09face\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/Datasource.vue\n// module id = 9\n// module chunks = 0","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-728cbc62&scoped=true!sass-loader!vue-loader/lib/selector?type=styles&index=0!./Pagination.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Pagination.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-728cbc62!vue-loader/lib/selector?type=template&index=0!./Pagination.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-728cbc62\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pagination.vue\n// module id = 10\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"Vue__pagination\"\n }, [_c('nav', {\n attrs: {\n \"aria-label\": \"Page navigation\"\n }\n }, [_c('ul', {\n staticClass: \"pagination\"\n }, [_c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.firstPage($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_first))])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == 1) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Previous\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.previous($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"«\")])])]), _vm._v(\" \"), _vm._l((_vm.items), function(n) {\n return _c('li', {\n class: (_vm.pages.current_page == n) ? 'active' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.change(n)\n }\n }\n }, [_vm._v(_vm._s(n))])])\n }), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\",\n \"aria-label\": \"Next\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.next($event)\n }\n }\n }, [_c('span', {\n attrs: {\n \"aria-hidden\": \"true\"\n }\n }, [_vm._v(\"»\")])])]), _vm._v(\" \"), _c('li', {\n class: (_vm.pages.current_page == _vm.pages.last_page) ? 'disabled' : ''\n }, [_c('a', {\n attrs: {\n \"href\": \"#\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.lastPage(_vm.pages.last_page)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.btn_last))])])], 2)])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-728cbc62!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pagination.vue\n// module id = 11\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-datasource\"\n }, [_c('div', {\n staticClass: \"panel panel-default\"\n }, [_c('div', {\n staticClass: \"panel-heading\"\n }, [_c('div', {\n staticClass: \"form-inline\"\n }, [_c('div', {\n staticClass: \"form-group pull-left\"\n }, [_c('label', {\n staticClass: \"control-label pr2\"\n }, [_vm._v(_vm._s(_vm.translation.table.label_limits))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.perpage),\n expression: \"perpage\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"number\": \"\"\n },\n on: {\n \"change\": function($event) {\n var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) {\n return o.selected\n }).map(function(o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val\n });\n _vm.perpage = $event.target.multiple ? $$selectedVal : $$selectedVal[0]\n }\n }\n }, _vm._l((_vm.limits), function(limit) {\n return _c('option', {\n domProps: {\n \"value\": limit\n }\n }, [_vm._v(_vm._s(limit))])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"form-group pull-right\"\n }, [_c('input', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: (_vm.search),\n expression: \"search\"\n }],\n staticClass: \"form-control\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.translation.table.placeholder_search\n },\n domProps: {\n \"value\": (_vm.search)\n },\n on: {\n \"input\": function($event) {\n if ($event.target.composing) { return; }\n _vm.search = $event.target.value\n }\n }\n }), _vm._v(\" \"), _c('button', {\n staticClass: \"btn btn-primary\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.searching($event)\n }\n }\n }, [_vm._v(_vm._s(_vm.translation.table.label_search) + \"\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-body Vue__panel-body\"\n }, [_c('table', {\n staticClass: \"table table-striped Vue__table\"\n }, [_c('thead', [_c('tr', _vm._l((_vm.columns), function(column) {\n return _c('th', [_vm._v(_vm._s(column.name))])\n }))]), _vm._v(\" \"), _c('tbody', [(_vm.pagination.total == 0) ? _c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(_vm._s(_vm.translation.table.records_not_found))])]) : _vm._l((_vm.tableData), function(row, index) {\n return _c('tr', {\n class: {\n 'success': (index == _vm.indexSelected)\n },\n on: {\n \"click\": function($event) {\n $event.preventDefault();\n _vm.selectRow(row, index)\n }\n }\n }, _vm._l((_vm.columns), function(k) {\n return _c('td', [_vm._v(\"\\n \" + _vm._s(_vm.fetchFromObject(row, k.key, k.render)) + \"\\n \")])\n }))\n }), _vm._v(\" \"), _c('tr', [_c('td', {\n staticClass: \"text-center\",\n attrs: {\n \"colspan\": _vm.columns.length\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.tableInfo) + \"\\n \")])])], 2)])]), _vm._v(\" \"), _c('div', {\n staticClass: \"panel-footer Vue__panel-footer\"\n }, [_c('div', {\n staticClass: \"pull-left\"\n }, [_c('div', {\n staticClass: \"btn-group Vue__datasource_actions\"\n }, _vm._l((_vm.actions), function(btn) {\n return _c('button', {\n staticClass: \"btn btn-default\",\n class: btn.class,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function($event) {\n btn.event($event, _vm.selected)\n }\n }\n }, [(btn.icon) ? _c('i', {\n staticClass: \"pr1\",\n class: btn.icon\n }) : _vm._e(), _vm._v(\"\\n \" + _vm._s(btn.text) + \"\\n \")])\n }))]), _vm._v(\" \"), _c('div', {\n staticClass: \"pull-right\"\n }, [_c('pagination', {\n attrs: {\n \"pages\": _vm.pagination,\n \"translation\": _vm.translation.pagination\n },\n on: {\n \"change\": _vm.changePage\n }\n })], 1), _vm._v(\" \"), _c('div', {\n staticClass: \"clearfix\"\n })])])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-ae09face!./~/vue-loader/lib/selector.js?type=template&index=0!./src/Datasource.vue\n// module id = 12\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a
\ No newline at end of file
diff --git a/src/components/Pagination.vue b/src/components/Pagination.vue
deleted file mode 100644
index 1f89899..0000000
--- a/src/components/Pagination.vue
+++ /dev/null
@@ -1,116 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/src/example.js b/src/example.js
deleted file mode 100644
index af25301..0000000
--- a/src/example.js
+++ /dev/null
@@ -1,177 +0,0 @@
-import Vue from 'vue/dist/vue.js';
-import Datasource from './Datasource.vue';
-
-var data = {
- "pagination": {
- "total": 4,
- "per_page": 15,
- "current_page": 1,
- "last_page": 1,
- "next_page_url": null,
- "prev_page_url": null,
- "from": 1,
- "to": 4
- },
- "data": [
- {
- "id_grupo": 1,
- "tipo_grupo": "1",
- "nombre_grupo": "All",
- "estado_grupo": "1",
- "created_at": "2016-12-06 14:18:54",
- "updated_at": "2016-12-06 14:18:54",
- "deleted_at": null,
- "detalle_grupos_count": "4"
- },
- {
- "id_grupo": 2,
- "tipo_grupo": "1",
- "nombre_grupo": "Ladies",
- "estado_grupo": "1",
- "created_at": "2016-12-06 14:18:54",
- "updated_at": "2016-12-06 14:18:54",
- "deleted_at": null,
- "detalle_grupos_count": "1"
- },
- {
- "id_grupo": 3,
- "tipo_grupo": "2",
- "nombre_grupo": "Mens",
- "estado_grupo": "2",
- "created_at": "2016-12-06 14:18:54",
- "updated_at": "2016-12-06 14:18:54",
- "deleted_at": null,
- "detalle_grupos_count": "3"
- },
- {
- "id_grupo": 4,
- "tipo_grupo": "1",
- "nombre_grupo": "Chiefs",
- "estado_grupo": "1",
- "created_at": "2016-12-06 14:18:54",
- "updated_at": "2016-12-06 14:18:54",
- "deleted_at": null,
- "detalle_grupos_count": "1"
- },
- {
- "id_grupo": 5,
- "tipo_grupo": "2",
- "nombre_grupo": "Operators",
- "estado_grupo": "1",
- "created_at": "2016-12-06 14:18:54",
- "updated_at": "2016-12-06 14:18:54",
- "deleted_at": null,
- "detalle_grupos_count": "1"
- }
- ]
-};
-
-new Vue({
- el: '#app',
- components: {
- Datasource
- },
- data() {
- return {
- groups: {
- pagination: {},
- data: []
- },
- columns: [
- {
- name: 'Id',
- key: 'id_grupo',
- filter: false,
- render(value) {
- return `# ${value}`;
- }
- },
- {
- name: 'Name',
- key: 'nombre_grupo',
- filter: false
- },
- {
- name: 'Type',
- key: 'tipo_grupo',
- filter: false,
- render(value) {
- switch (value) {
- case '1':
- return 'Global';
- break;
- case '2':
- return 'General';
- break;
- case '3':
- return 'Personal';
- break;
- }
- }
- },
- {
- name: 'Total',
- key: 'detalle_grupos_count',
- filter: false,
- },
- {
- name: 'Date',
- key: 'created_at',
- filter: false
- },
- ],
- actions: [
- {
- text: 'Edit',
- icon: 'glyphicon glyphicon-pencil',
- class: 'btn-primary',
- event(e, row) {
- console.warn('Did clicked me?', e);
- if (row == null) {
- console.info('Ups.. data not found :(')
- } else {
- console.info('Yeeei, I found this :)', JSON.stringify(row));
- }
- }
- },
- {
- text: 'Delete',
- icon: 'glyphicon glyphicon-trash',
- class: 'btn-danger',
- event(e, row) {
- console.warn('Are you clicked me?', e);
- if (row == null) {
- console.info('Ups.. data not found :(')
- } else {
- console.info('Yeeei, I found this :)', JSON.stringify(row));
- }
- }
- },
- {
- text: 'Show',
- icon: 'glyphicon glyphicon-eye-open',
- class: 'btn-info',
- event(e, row) {
- console.warn('Are you clicked me?', e);
- if (row == null) {
- console.info('Ups.. data not found :(')
- } else {
- console.info('Yeeei, I found this :)', JSON.stringify(row));
- }
- }
- }
- ]
- }
- },
- mounted() {
- this.groups = data;
- },
- methods: {
- changePage(values) {
- alert(`Show limit changed, the new limit is ${values.perpage} and the current page is ${values.page}`);
- },
- onSearch(searchQuery) {
- alert(`Did you find this? ${searchQuery}`);
- }
- }
-});
\ No newline at end of file
diff --git a/src/main.js b/src/main.js
deleted file mode 100644
index 122d9ae..0000000
--- a/src/main.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./Datasource.vue');
\ No newline at end of file
diff --git a/src/utils/DatasourceLanguage.js b/src/utils/DatasourceLanguage.js
deleted file mode 100644
index 8311143..0000000
--- a/src/utils/DatasourceLanguage.js
+++ /dev/null
@@ -1,89 +0,0 @@
-export default {
- translations: {
- // English translation
- 'en': {
- 'table': {
- 'label_limits': 'Show',
- 'label_search': 'Search',
- 'placeholder_search': 'Type to search..',
- 'records_not_found': 'No records found'
- },
- 'pagination': {
- 'label_show': 'Showing',
- 'label_to': 'to',
- 'label_of': 'of',
- 'label_entries': 'entries',
- 'btn_first': 'First',
- 'btn_last': 'Latest'
- }
- },
- // Spanish translation
- 'es': {
- 'table': {
- 'label_limits': 'Mostrar',
- 'label_search': 'Buscar',
- 'placeholder_search': 'Buscar ..',
- 'records_not_found': 'No se encontraron registros.'
- },
- 'pagination': {
- 'label_show': 'Mostrando',
- 'label_to': 'a',
- 'label_of': 'de',
- 'label_entries': 'registros',
- 'btn_first': 'Primero',
- 'btn_last': 'Último'
- }
- },
- // French translation
- 'fr': {
- 'table': {
- 'label_limits': 'Afficher',
- 'label_search': 'Recherche',
- 'placeholder_search': 'Recherche par mot-clé..',
- 'records_not_found': 'Aucun enregistrements trouvés'
- },
- 'pagination': {
- 'label_show': 'Affichage de',
- 'label_to': 'à',
- 'label_of': 'de',
- 'label_entries': 'entrées',
- 'btn_first': 'Première',
- 'btn_last': 'Dernière'
- }
- },
- // Chinese Simplified translation
- 'zh-CN': {
- 'table': {
- 'label_limits': '显示',
- 'label_search': '搜索',
- 'placeholder_search': '输入搜索..',
- 'records_not_found': '记录未找到'
- },
- 'pagination': {
- 'label_show': '正在显示',
- 'label_to': '到',
- 'label_of': '总共',
- 'label_entries': '条目',
- 'btn_first': '首页',
- 'btn_last': '未页'
- }
- },
- // Catalan translation
- 'ca': {
- 'table': {
- 'label_limits': 'Mostrar',
- 'label_search': 'Buscar',
- 'placeholder_search': 'Buscar ..',
- 'records_not_found': 'No s\'han trobat registres.'
- },
- 'pagination': {
- 'label_show': 'Mostrant',
- 'label_to': 'a',
- 'label_of': 'de',
- 'label_entries': 'registres',
- 'btn_first': 'Primer',
- 'btn_last': 'Últim'
- }
- },
- }
-}
diff --git a/src/utils/DatasourceUtils.js b/src/utils/DatasourceUtils.js
deleted file mode 100644
index 3e80c5c..0000000
--- a/src/utils/DatasourceUtils.js
+++ /dev/null
@@ -1,66 +0,0 @@
-export default {
- /**
- * Find the element value using Recursive Method and return the value rendered if it's defined
- * @param obj
- * @param column
- * @param render
- * @returns {*}
- */
- fetchFromObject(obj, column, render) {
- if (typeof obj === 'undefined') return false;
- let _index = column.indexOf('.');
- if (_index > -1) {
- return this.fetchFromObject(obj[column.substring(0, _index)], column.substr(_index + 1));
- }
- if (typeof render != 'undefined') {
- return render(obj[column]);
- }
- return obj[column];
- },
-
- /**
- * Emit event to change page from pagination
- * @param page
- * @return {void}
- */
- changePage(page) {
- this.selected = null;
- this.indexSelected = -1;
- this.$emit('change', {perpage: this.perpage, page: page});
- },
-
- /**
- * Effect toggle to selected row
- * @param row
- * @param index
- * @return {void}
- */
- selectRow(row, index) {
- if (this.indexSelected == index) {
- this.indexSelected = -1;
- this.selected = null;
- } else {
- this.indexSelected = index;
- this.selected = {
- 'row': row,
- 'index': index
- };
- }
- },
-
- /**
- * Computed property: Building custom string information with translation
- * @returns {String}
- */
- tableInfo() {
- let label_show = this.translation.pagination.label_show;
- let from = (this.pagination.from == null) ? 0 : this.pagination.from;
- let label_to = this.translation.pagination.label_to;
- let to = (this.pagination.to == null) ? 0 : this.pagination.to;
- let label_of = this.translation.pagination.label_of;
- let total = this.pagination.total;
- let label_entries = this.translation.pagination.label_entries;
-
- return `${label_show} ${from} ${label_to} ${to} ${label_of} ${total} ${label_entries}`;
- }
-}
\ No newline at end of file
diff --git a/webpack.config.build.js b/webpack.config.build.js
deleted file mode 100644
index 23de459..0000000
--- a/webpack.config.build.js
+++ /dev/null
@@ -1,10 +0,0 @@
-var webpack = require('webpack');
-
-module.exports = require('./webpack.config.js');
-
-module.exports.entry = {
- 'vue-datasource': './src/main.js',
-}
-
-module.exports.output.library = 'VueDatasourceComponent';
-module.exports.output.libraryTarget = 'umd';
\ No newline at end of file
diff --git a/webpack.config.build.min.js b/webpack.config.build.min.js
deleted file mode 100644
index eeea897..0000000
--- a/webpack.config.build.min.js
+++ /dev/null
@@ -1,11 +0,0 @@
-var webpack = require('webpack');
-
-module.exports = require('./webpack.config.build.js');
-
-module.exports.output.filename = "[name].min.js";
-
-module.exports.plugins.push(new webpack.optimize.UglifyJsPlugin({
- compress: {
- warnings: false,
- }
-}));
\ No newline at end of file
diff --git a/webpack.config.js b/webpack.config.js
deleted file mode 100644
index 3ed9d8a..0000000
--- a/webpack.config.js
+++ /dev/null
@@ -1,77 +0,0 @@
-var path = require('path')
-var webpack = require('webpack')
-
-module.exports = {
- entry: {
- example: ['./src/example.js'],
- },
-
- output: {
- path: './dist',
- publicPath: '/dist/',
- filename: "[name].js",
- },
-
-
- resolve: {
- root: path.join(__dirname, 'node_modules'),
- alias: {
- },
- extensions: ['', '.js', '.vue', '.json'],
- },
-
- module: {
- loaders: [
- {
- test: /\.vue$/,
- loader: 'vue'
- },
- {
- test: /\.js$/,
- loader: 'babel',
- exclude: /node_modules/
- },
- {
- test: /\.json$/,
- loader: 'json'
- },
- {
- test: /\.html$/,
- loader: 'vue-html'
- },
- {
- test: /\.(png|jpg|gif|svg)$/,
- loader: 'url',
- query: {
- limit: 10000,
- name: '[name].[ext]?[hash]'
- }
- }
- ]
- },
-
- babel: {
- presets: ['es2015', 'stage-0'],
- plugins: ['transform-runtime', 'transform-vue-jsx'],
- },
-
- devServer: {
- historyApiFallback: true,
- noInfo: true
- },
- devtool: '#eval-source-map'
-}
-
-if (process.env.NODE_ENV === 'production') {
- module.exports.devtool = '#source-map'
- // http://vuejs.github.io/vue-loader/workflow/production.html
- module.exports.plugins = (module.exports.plugins || []).concat([
- new webpack.DefinePlugin({
- 'process.env': {
- NODE_ENV: '"production"'
- }
- }),
-
- new webpack.optimize.OccurenceOrderPlugin()
- ])
-}
\ No newline at end of file
From cfd67b7e98a4ddbd423062801a8eb43fd033747f Mon Sep 17 00:00:00 2001
From: Javier Diaz
Date: Sun, 23 Apr 2017 23:51:23 -0500
Subject: [PATCH 016/122] Initial commit VueDatasource V2
---
.babelrc | 14 ++
.editorconfig | 9 +
.eslintignore | 2 +
.eslintrc.js | 27 +++
.gitignore | 9 +-
.postcssrc.js | 8 +
README.md | 77 ++++---
build/build.js | 35 ++++
build/check-versions.js | 48 +++++
build/dev-client.js | 9 +
build/dev-server.js | 91 +++++++++
build/utils.js | 71 +++++++
build/vue-loader.conf.js | 12 ++
build/webpack.base.conf.js | 67 ++++++
build/webpack.dev.conf.js | 35 ++++
build/webpack.prod.conf.js | 124 ++++++++++++
build/webpack.test.conf.js | 31 +++
config/dev.env.js | 6 +
config/index.js | 38 ++++
config/prod.env.js | 3 +
config/test.env.js | 6 +
index.html | 16 ++
index.js | 1 +
logotype.png | Bin 0 -> 9166 bytes
package.json | 121 +++++++++++
screenshot.png | Bin 0 -> 217223 bytes
src/App.vue | 119 +++++++++++
src/assets/app.css | 5 +
src/assets/logo.png | Bin 0 -> 6849 bytes
src/components/Datasource.vue | 225 +++++++++++++++++++++
src/components/Pagination.vue | 85 ++++++++
src/main.js | 13 ++
src/utils/DatasourceUtils.js | 98 +++++++++
static/.gitkeep | 0
test/e2e/custom-assertions/elementCount.js | 26 +++
test/e2e/nightwatch.conf.js | 46 +++++
test/e2e/runner.js | 33 +++
test/e2e/specs/test.js | 19 ++
test/unit/.eslintrc | 9 +
test/unit/index.js | 13 ++
test/unit/karma.conf.js | 33 +++
test/unit/specs/Hello.spec.js | 11 +
42 files changed, 1570 insertions(+), 25 deletions(-)
create mode 100644 .babelrc
create mode 100644 .editorconfig
create mode 100644 .eslintignore
create mode 100644 .eslintrc.js
create mode 100644 .postcssrc.js
create mode 100644 build/build.js
create mode 100644 build/check-versions.js
create mode 100644 build/dev-client.js
create mode 100644 build/dev-server.js
create mode 100644 build/utils.js
create mode 100644 build/vue-loader.conf.js
create mode 100644 build/webpack.base.conf.js
create mode 100644 build/webpack.dev.conf.js
create mode 100644 build/webpack.prod.conf.js
create mode 100644 build/webpack.test.conf.js
create mode 100644 config/dev.env.js
create mode 100644 config/index.js
create mode 100644 config/prod.env.js
create mode 100644 config/test.env.js
create mode 100644 index.html
create mode 100644 index.js
create mode 100644 logotype.png
create mode 100644 package.json
create mode 100644 screenshot.png
create mode 100644 src/App.vue
create mode 100644 src/assets/app.css
create mode 100644 src/assets/logo.png
create mode 100644 src/components/Datasource.vue
create mode 100644 src/components/Pagination.vue
create mode 100644 src/main.js
create mode 100644 src/utils/DatasourceUtils.js
create mode 100644 static/.gitkeep
create mode 100644 test/e2e/custom-assertions/elementCount.js
create mode 100644 test/e2e/nightwatch.conf.js
create mode 100644 test/e2e/runner.js
create mode 100644 test/e2e/specs/test.js
create mode 100644 test/unit/.eslintrc
create mode 100644 test/unit/index.js
create mode 100644 test/unit/karma.conf.js
create mode 100644 test/unit/specs/Hello.spec.js
diff --git a/.babelrc b/.babelrc
new file mode 100644
index 0000000..632558c
--- /dev/null
+++ b/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ ["env", { "modules": false }],
+ "stage-2"
+ ],
+ "plugins": ["transform-runtime", "transform-vue-jsx"],
+ "comments": false,
+ "env": {
+ "test": {
+ "presets": ["env", "stage-2"],
+ "plugins": [ "istanbul" ]
+ }
+ }
+}
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..9d08a1a
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,9 @@
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 0000000..34af377
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,2 @@
+build/*.js
+config/*.js
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..67c085d
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,27 @@
+// http://eslint.org/docs/user-guide/configuring
+
+module.exports = {
+ root: true,
+ parser: 'babel-eslint',
+ parserOptions: {
+ sourceType: 'module'
+ },
+ env: {
+ browser: true,
+ },
+ // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style
+ extends: 'standard',
+ // required to lint *.vue files
+ plugins: [
+ 'html'
+ ],
+ // add your custom rules here
+ 'rules': {
+ // allow paren-less arrow functions
+ 'arrow-parens': 0,
+ // allow async-await
+ 'generator-star-spacing': 0,
+ // allow debugger during development
+ 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0
+ }
+}
diff --git a/.gitignore b/.gitignore
index 051cb59..3e1d210 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,9 @@
.DS_Store
node_modules/
-npm-debug.log
-.idea
\ No newline at end of file
+dist/
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+test/unit/coverage
+test/e2e/reports
+selenium-debug.log
diff --git a/.postcssrc.js b/.postcssrc.js
new file mode 100644
index 0000000..ea9a5ab
--- /dev/null
+++ b/.postcssrc.js
@@ -0,0 +1,8 @@
+// https://github.com/michael-ciniawsky/postcss-load-config
+
+module.exports = {
+ "plugins": {
+ // to edit target browsers: use "browserlist" field in package.json
+ "autoprefixer": {}
+ }
+}
diff --git a/README.md b/README.md
index ccba8b8..697eef5 100644
--- a/README.md
+++ b/README.md
@@ -19,10 +19,6 @@
---
### Demo
-
-[](http://forthebadge.com)
-[](http://forthebadge.com)
-

Live: https://young-falls-97690.herokuapp.com/
@@ -72,13 +68,14 @@ new Vue({
```
### Available Props
-| Prop | Type | Default | Description |
-|-------------|---------|---------|-------------------------------------------------------------|
-| table-data | Array | | Table information |
-| language | String | es | Defines the table labels language |
-| columns | Array | | Columns to display |
-| pagination | Object | | Pagination information about the table data ([structure] (#pagination-structure)) |
-| actions | Array | | Action buttons ([structure] (#action-event-sctructure)) |
+| Prop | Type | Default | Description |
+|-------------|---------|----------------|-------------------------------------------------------------|
+| table-data | Array | | Table information |
+| translation | Object | [Object] | Defines the table labels language ([structure](#translation-structure)) |
+| limits | Array | [1,5,10,15,20] | Defines the limits to display |
+| columns | Array | | Columns to display |
+| pagination | Object | | Pagination information about the table data ([structure](#pagination-structure)) |
+| actions | Array | | Action buttons ([structure](#action-event-sctructure)) |
### Available Events
| Event | Description |
@@ -86,15 +83,6 @@ new Vue({
| change | Handle show limit changed. Gets object with new show limit and current page `{perpage: 10, page: 2}`|
| searching | Handles search input. Gets string as parameter |
-### Available Languages
-| Language | Abbr |
-|-------------|-------|
-| Spanish | es |
-| English | en |
-| French | fr |
-| Chinese (Simplified) | zh-CN |
-| Catalan | ca |
-
### Columns
Each column object needs a `name` and `key` attributes.
```javascript
@@ -171,6 +159,22 @@ This callback will modify the data for various operations. Such as applying a sp
}
```
+### Translation Structure
+```javascript
+{
+ limit: 'Limit',
+ search: 'Search',
+ placeholder_search: 'Type to search..',
+ records_not_found: 'No records found',
+ pagination: {
+ show: 'Showing',
+ to: 'to',
+ of: 'of',
+ entries: 'entries'
+ }
+}
+```
+
### Action Event Sctructure
```javascript
{
@@ -187,15 +191,42 @@ This callback will modify the data for various operations. Such as applying a sp
]
}
```
+### Development
+
+## Build Setup
+
+``` bash
+# install dependencies
+npm install
+
+# serve with hot reload at localhost:8080
+npm run dev
+
+# build for production with minification
+npm run build
+
+# build for production and view the bundle analyzer report
+npm run build --report
+
+# run unit tests
+npm run unit
+
+# run e2e tests
+npm run e2e
+
+# run all tests
+npm test
+```
+
+For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).
### Implementation examples
- Using Laravel 5.3 and pagination: [laravel-datasource-example](https://github.com/coderdiaz/laravel-datasource-example).
-
### Contributions
All contributions are welcome send your PR and Issues.
### License
-Vue Datasource is open-sourced software licensed under the [MIT license](https://raw.githubusercontent.com/coderdiaz/vue-datasource/master/LICENSE)
+This is a open-source software licensed under the [MIT license](https://raw.githubusercontent.com/coderdiaz/vue-datasource/master/LICENSE)
-##### Created by Javier Diaz. Translation enhancement by [itsuwaribito] (https://github.com/itsuwaribito)
+##### Created by Javier Diaz. Translation by [itsuwaribito](https://github.com/itsuwaribito)
\ No newline at end of file
diff --git a/build/build.js b/build/build.js
new file mode 100644
index 0000000..6b8add1
--- /dev/null
+++ b/build/build.js
@@ -0,0 +1,35 @@
+require('./check-versions')()
+
+process.env.NODE_ENV = 'production'
+
+var ora = require('ora')
+var rm = require('rimraf')
+var path = require('path')
+var chalk = require('chalk')
+var webpack = require('webpack')
+var config = require('../config')
+var webpackConfig = require('./webpack.prod.conf')
+
+var spinner = ora('building for production...')
+spinner.start()
+
+rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
+ if (err) throw err
+ webpack(webpackConfig, function (err, stats) {
+ spinner.stop()
+ if (err) throw err
+ process.stdout.write(stats.toString({
+ colors: true,
+ modules: false,
+ children: false,
+ chunks: false,
+ chunkModules: false
+ }) + '\n\n')
+
+ console.log(chalk.cyan(' Build complete.\n'))
+ console.log(chalk.yellow(
+ ' Tip: built files are meant to be served over an HTTP server.\n' +
+ ' Opening index.html over file:// won\'t work.\n'
+ ))
+ })
+})
diff --git a/build/check-versions.js b/build/check-versions.js
new file mode 100644
index 0000000..100f3a0
--- /dev/null
+++ b/build/check-versions.js
@@ -0,0 +1,48 @@
+var chalk = require('chalk')
+var semver = require('semver')
+var packageConfig = require('../package.json')
+var shell = require('shelljs')
+function exec (cmd) {
+ return require('child_process').execSync(cmd).toString().trim()
+}
+
+var versionRequirements = [
+ {
+ name: 'node',
+ currentVersion: semver.clean(process.version),
+ versionRequirement: packageConfig.engines.node
+ },
+]
+
+if (shell.which('npm')) {
+ versionRequirements.push({
+ name: 'npm',
+ currentVersion: exec('npm --version'),
+ versionRequirement: packageConfig.engines.npm
+ })
+}
+
+module.exports = function () {
+ var warnings = []
+ for (var i = 0; i < versionRequirements.length; i++) {
+ var mod = versionRequirements[i]
+ if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
+ warnings.push(mod.name + ': ' +
+ chalk.red(mod.currentVersion) + ' should be ' +
+ chalk.green(mod.versionRequirement)
+ )
+ }
+ }
+
+ if (warnings.length) {
+ console.log('')
+ console.log(chalk.yellow('To use this template, you must update following to modules:'))
+ console.log()
+ for (var i = 0; i < warnings.length; i++) {
+ var warning = warnings[i]
+ console.log(' ' + warning)
+ }
+ console.log()
+ process.exit(1)
+ }
+}
diff --git a/build/dev-client.js b/build/dev-client.js
new file mode 100644
index 0000000..18aa1e2
--- /dev/null
+++ b/build/dev-client.js
@@ -0,0 +1,9 @@
+/* eslint-disable */
+require('eventsource-polyfill')
+var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true')
+
+hotClient.subscribe(function (event) {
+ if (event.action === 'reload') {
+ window.location.reload()
+ }
+})
diff --git a/build/dev-server.js b/build/dev-server.js
new file mode 100644
index 0000000..a048169
--- /dev/null
+++ b/build/dev-server.js
@@ -0,0 +1,91 @@
+require('./check-versions')()
+
+var config = require('../config')
+if (!process.env.NODE_ENV) {
+ process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV)
+}
+
+var opn = require('opn')
+var path = require('path')
+var express = require('express')
+var webpack = require('webpack')
+var proxyMiddleware = require('http-proxy-middleware')
+var webpackConfig = process.env.NODE_ENV === 'testing'
+ ? require('./webpack.prod.conf')
+ : require('./webpack.dev.conf')
+
+// default port where dev server listens for incoming traffic
+var port = process.env.PORT || config.dev.port
+// automatically open browser, if not set will be false
+var autoOpenBrowser = !!config.dev.autoOpenBrowser
+// Define HTTP proxies to your custom API backend
+// https://github.com/chimurai/http-proxy-middleware
+var proxyTable = config.dev.proxyTable
+
+var app = express()
+var compiler = webpack(webpackConfig)
+
+var devMiddleware = require('webpack-dev-middleware')(compiler, {
+ publicPath: webpackConfig.output.publicPath,
+ quiet: true
+})
+
+var hotMiddleware = require('webpack-hot-middleware')(compiler, {
+ log: () => {}
+})
+// force page reload when html-webpack-plugin template changes
+compiler.plugin('compilation', function (compilation) {
+ compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
+ hotMiddleware.publish({ action: 'reload' })
+ cb()
+ })
+})
+
+// proxy api requests
+Object.keys(proxyTable).forEach(function (context) {
+ var options = proxyTable[context]
+ if (typeof options === 'string') {
+ options = { target: options }
+ }
+ app.use(proxyMiddleware(options.filter || context, options))
+})
+
+// handle fallback for HTML5 history API
+app.use(require('connect-history-api-fallback')())
+
+// serve webpack bundle output
+app.use(devMiddleware)
+
+// enable hot-reload and state-preserving
+// compilation error display
+app.use(hotMiddleware)
+
+// serve pure static assets
+var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory)
+app.use(staticPath, express.static('./static'))
+
+var uri = 'http://localhost:' + port
+
+var _resolve
+var readyPromise = new Promise(resolve => {
+ _resolve = resolve
+})
+
+console.log('> Starting dev server...')
+devMiddleware.waitUntilValid(() => {
+ console.log('> Listening at ' + uri + '\n')
+ // when env is testing, don't need open it
+ if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') {
+ opn(uri)
+ }
+ _resolve()
+})
+
+var server = app.listen(port)
+
+module.exports = {
+ ready: readyPromise,
+ close: () => {
+ server.close()
+ }
+}
diff --git a/build/utils.js b/build/utils.js
new file mode 100644
index 0000000..b1d54b4
--- /dev/null
+++ b/build/utils.js
@@ -0,0 +1,71 @@
+var path = require('path')
+var config = require('../config')
+var ExtractTextPlugin = require('extract-text-webpack-plugin')
+
+exports.assetsPath = function (_path) {
+ var assetsSubDirectory = process.env.NODE_ENV === 'production'
+ ? config.build.assetsSubDirectory
+ : config.dev.assetsSubDirectory
+ return path.posix.join(assetsSubDirectory, _path)
+}
+
+exports.cssLoaders = function (options) {
+ options = options || {}
+
+ var cssLoader = {
+ loader: 'css-loader',
+ options: {
+ minimize: process.env.NODE_ENV === 'production',
+ sourceMap: options.sourceMap
+ }
+ }
+
+ // generate loader string to be used with extract text plugin
+ function generateLoaders (loader, loaderOptions) {
+ var loaders = [cssLoader]
+ if (loader) {
+ loaders.push({
+ loader: loader + '-loader',
+ options: Object.assign({}, loaderOptions, {
+ sourceMap: options.sourceMap
+ })
+ })
+ }
+
+ // Extract CSS when that option is specified
+ // (which is the case during production build)
+ if (options.extract) {
+ return ExtractTextPlugin.extract({
+ use: loaders,
+ fallback: 'vue-style-loader'
+ })
+ } else {
+ return ['vue-style-loader'].concat(loaders)
+ }
+ }
+
+ // https://vue-loader.vuejs.org/en/configurations/extract-css.html
+ return {
+ css: generateLoaders(),
+ postcss: generateLoaders(),
+ less: generateLoaders('less'),
+ sass: generateLoaders('sass', { indentedSyntax: true }),
+ scss: generateLoaders('sass'),
+ stylus: generateLoaders('stylus'),
+ styl: generateLoaders('stylus')
+ }
+}
+
+// Generate loaders for standalone style files (outside of .vue)
+exports.styleLoaders = function (options) {
+ var output = []
+ var loaders = exports.cssLoaders(options)
+ for (var extension in loaders) {
+ var loader = loaders[extension]
+ output.push({
+ test: new RegExp('\\.' + extension + '$'),
+ use: loader
+ })
+ }
+ return output
+}
diff --git a/build/vue-loader.conf.js b/build/vue-loader.conf.js
new file mode 100644
index 0000000..7aee79b
--- /dev/null
+++ b/build/vue-loader.conf.js
@@ -0,0 +1,12 @@
+var utils = require('./utils')
+var config = require('../config')
+var isProduction = process.env.NODE_ENV === 'production'
+
+module.exports = {
+ loaders: utils.cssLoaders({
+ sourceMap: isProduction
+ ? config.build.productionSourceMap
+ : config.dev.cssSourceMap,
+ extract: isProduction
+ })
+}
diff --git a/build/webpack.base.conf.js b/build/webpack.base.conf.js
new file mode 100644
index 0000000..f47b326
--- /dev/null
+++ b/build/webpack.base.conf.js
@@ -0,0 +1,67 @@
+var path = require('path')
+var utils = require('./utils')
+var config = require('../config')
+var vueLoaderConfig = require('./vue-loader.conf')
+
+function resolve (dir) {
+ return path.join(__dirname, '..', dir)
+}
+
+module.exports = {
+ entry: {
+ app: './src/main.js'
+ },
+ output: {
+ path: config.build.assetsRoot,
+ filename: '[name].js',
+ publicPath: process.env.NODE_ENV === 'production'
+ ? config.build.assetsPublicPath
+ : config.dev.assetsPublicPath
+ },
+ resolve: {
+ extensions: ['.js', '.vue', '.json'],
+ alias: {
+ 'vue$': 'vue/dist/vue.esm.js',
+ '@': resolve('src')
+ }
+ },
+ module: {
+ rules: [
+ {
+ test: /\.(js|vue)$/,
+ loader: 'eslint-loader',
+ enforce: 'pre',
+ include: [resolve('src'), resolve('test')],
+ options: {
+ formatter: require('eslint-friendly-formatter')
+ }
+ },
+ {
+ test: /\.vue$/,
+ loader: 'vue-loader',
+ options: vueLoaderConfig
+ },
+ {
+ test: /\.js$/,
+ loader: 'babel-loader',
+ include: [resolve('src'), resolve('test')]
+ },
+ {
+ test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
+ loader: 'url-loader',
+ options: {
+ limit: 10000,
+ name: utils.assetsPath('img/[name].[hash:7].[ext]')
+ }
+ },
+ {
+ test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
+ loader: 'url-loader',
+ options: {
+ limit: 10000,
+ name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
+ }
+ }
+ ]
+ }
+}
diff --git a/build/webpack.dev.conf.js b/build/webpack.dev.conf.js
new file mode 100644
index 0000000..5470402
--- /dev/null
+++ b/build/webpack.dev.conf.js
@@ -0,0 +1,35 @@
+var utils = require('./utils')
+var webpack = require('webpack')
+var config = require('../config')
+var merge = require('webpack-merge')
+var baseWebpackConfig = require('./webpack.base.conf')
+var HtmlWebpackPlugin = require('html-webpack-plugin')
+var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
+
+// add hot-reload related code to entry chunks
+Object.keys(baseWebpackConfig.entry).forEach(function (name) {
+ baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name])
+})
+
+module.exports = merge(baseWebpackConfig, {
+ module: {
+ rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })
+ },
+ // cheap-module-eval-source-map is faster for development
+ devtool: '#cheap-module-eval-source-map',
+ plugins: [
+ new webpack.DefinePlugin({
+ 'process.env': config.dev.env
+ }),
+ // https://github.com/glenjamin/webpack-hot-middleware#installation--usage
+ new webpack.HotModuleReplacementPlugin(),
+ new webpack.NoEmitOnErrorsPlugin(),
+ // https://github.com/ampedandwired/html-webpack-plugin
+ new HtmlWebpackPlugin({
+ filename: 'index.html',
+ template: 'index.html',
+ inject: true
+ }),
+ new FriendlyErrorsPlugin()
+ ]
+})
diff --git a/build/webpack.prod.conf.js b/build/webpack.prod.conf.js
new file mode 100644
index 0000000..99713cc
--- /dev/null
+++ b/build/webpack.prod.conf.js
@@ -0,0 +1,124 @@
+var path = require('path')
+var utils = require('./utils')
+var webpack = require('webpack')
+var config = require('../config')
+var merge = require('webpack-merge')
+var baseWebpackConfig = require('./webpack.base.conf')
+var CopyWebpackPlugin = require('copy-webpack-plugin')
+var HtmlWebpackPlugin = require('html-webpack-plugin')
+var ExtractTextPlugin = require('extract-text-webpack-plugin')
+var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
+
+var env = process.env.NODE_ENV === 'testing'
+ ? require('../config/test.env')
+ : config.build.env
+
+var webpackConfig = merge(baseWebpackConfig, {
+ module: {
+ rules: utils.styleLoaders({
+ sourceMap: config.build.productionSourceMap,
+ extract: true
+ })
+ },
+ devtool: config.build.productionSourceMap ? '#source-map' : false,
+ output: {
+ path: config.build.assetsRoot,
+ filename: utils.assetsPath('js/[name].[chunkhash].js'),
+ chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
+ },
+ plugins: [
+ // http://vuejs.github.io/vue-loader/en/workflow/production.html
+ new webpack.DefinePlugin({
+ 'process.env': env
+ }),
+ new webpack.optimize.UglifyJsPlugin({
+ compress: {
+ warnings: false
+ },
+ sourceMap: true
+ }),
+ // extract css into its own file
+ new ExtractTextPlugin({
+ filename: utils.assetsPath('css/[name].[contenthash].css')
+ }),
+ // Compress extracted CSS. We are using this plugin so that possible
+ // duplicated CSS from different components can be deduped.
+ new OptimizeCSSPlugin({
+ cssProcessorOptions: {
+ safe: true
+ }
+ }),
+ // generate dist index.html with correct asset hash for caching.
+ // you can customize output by editing /index.html
+ // see https://github.com/ampedandwired/html-webpack-plugin
+ new HtmlWebpackPlugin({
+ filename: process.env.NODE_ENV === 'testing'
+ ? 'index.html'
+ : config.build.index,
+ template: 'index.html',
+ inject: true,
+ minify: {
+ removeComments: true,
+ collapseWhitespace: true,
+ removeAttributeQuotes: true
+ // more options:
+ // https://github.com/kangax/html-minifier#options-quick-reference
+ },
+ // necessary to consistently work with multiple chunks via CommonsChunkPlugin
+ chunksSortMode: 'dependency'
+ }),
+ // split vendor js into its own file
+ new webpack.optimize.CommonsChunkPlugin({
+ name: 'vendor',
+ minChunks: function (module, count) {
+ // any required modules inside node_modules are extracted to vendor
+ return (
+ module.resource &&
+ /\.js$/.test(module.resource) &&
+ module.resource.indexOf(
+ path.join(__dirname, '../node_modules')
+ ) === 0
+ )
+ }
+ }),
+ // extract webpack runtime and module manifest to its own file in order to
+ // prevent vendor hash from being updated whenever app bundle is updated
+ new webpack.optimize.CommonsChunkPlugin({
+ name: 'manifest',
+ chunks: ['vendor']
+ }),
+ // copy custom static assets
+ new CopyWebpackPlugin([
+ {
+ from: path.resolve(__dirname, '../static'),
+ to: config.build.assetsSubDirectory,
+ ignore: ['.*']
+ }
+ ])
+ ]
+})
+
+if (config.build.productionGzip) {
+ var CompressionWebpackPlugin = require('compression-webpack-plugin')
+
+ webpackConfig.plugins.push(
+ new CompressionWebpackPlugin({
+ asset: '[path].gz[query]',
+ algorithm: 'gzip',
+ test: new RegExp(
+ '\\.(' +
+ config.build.productionGzipExtensions.join('|') +
+ ')$'
+ ),
+ threshold: 10240,
+ minRatio: 0.8
+ })
+ )
+}
+
+if (config.build.bundleAnalyzerReport) {
+ var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
+ webpackConfig.plugins.push(new BundleAnalyzerPlugin())
+}
+
+module.exports = webpackConfig
diff --git a/build/webpack.test.conf.js b/build/webpack.test.conf.js
new file mode 100644
index 0000000..d6c8c8d
--- /dev/null
+++ b/build/webpack.test.conf.js
@@ -0,0 +1,31 @@
+// This is the webpack config used for unit tests.
+
+var utils = require('./utils')
+var webpack = require('webpack')
+var merge = require('webpack-merge')
+var baseConfig = require('./webpack.base.conf')
+
+var webpackConfig = merge(baseConfig, {
+ // use inline sourcemap for karma-sourcemap-loader
+ module: {
+ rules: utils.styleLoaders()
+ },
+ devtool: '#inline-source-map',
+ resolveLoader: {
+ alias: {
+ // necessary to to make lang="scss" work in test when using vue-loader's ?inject option
+ // see discussion at https://github.com/vuejs/vue-loader/issues/724
+ 'scss-loader': 'sass-loader'
+ }
+ },
+ plugins: [
+ new webpack.DefinePlugin({
+ 'process.env': require('../config/test.env')
+ })
+ ]
+})
+
+// no need for app entry during tests
+delete webpackConfig.entry
+
+module.exports = webpackConfig
diff --git a/config/dev.env.js b/config/dev.env.js
new file mode 100644
index 0000000..efead7c
--- /dev/null
+++ b/config/dev.env.js
@@ -0,0 +1,6 @@
+var merge = require('webpack-merge')
+var prodEnv = require('./prod.env')
+
+module.exports = merge(prodEnv, {
+ NODE_ENV: '"development"'
+})
diff --git a/config/index.js b/config/index.js
new file mode 100644
index 0000000..196da1f
--- /dev/null
+++ b/config/index.js
@@ -0,0 +1,38 @@
+// see http://vuejs-templates.github.io/webpack for documentation.
+var path = require('path')
+
+module.exports = {
+ build: {
+ env: require('./prod.env'),
+ index: path.resolve(__dirname, '../dist/index.html'),
+ assetsRoot: path.resolve(__dirname, '../dist'),
+ assetsSubDirectory: 'static',
+ assetsPublicPath: '/',
+ productionSourceMap: true,
+ // Gzip off by default as many popular static hosts such as
+ // Surge or Netlify already gzip all static assets for you.
+ // Before setting to `true`, make sure to:
+ // npm install --save-dev compression-webpack-plugin
+ productionGzip: false,
+ productionGzipExtensions: ['js', 'css'],
+ // Run the build command with an extra argument to
+ // View the bundle analyzer report after build finishes:
+ // `npm run build --report`
+ // Set to `true` or `false` to always turn it on or off
+ bundleAnalyzerReport: process.env.npm_config_report
+ },
+ dev: {
+ env: require('./dev.env'),
+ port: 8080,
+ autoOpenBrowser: true,
+ assetsSubDirectory: 'static',
+ assetsPublicPath: '/',
+ proxyTable: {},
+ // CSS Sourcemaps off by default because relative paths are "buggy"
+ // with this option, according to the CSS-Loader README
+ // (https://github.com/webpack/css-loader#sourcemaps)
+ // In our experience, they generally work as expected,
+ // just be aware of this issue when enabling this option.
+ cssSourceMap: false
+ }
+}
diff --git a/config/prod.env.js b/config/prod.env.js
new file mode 100644
index 0000000..773d263
--- /dev/null
+++ b/config/prod.env.js
@@ -0,0 +1,3 @@
+module.exports = {
+ NODE_ENV: '"production"'
+}
diff --git a/config/test.env.js b/config/test.env.js
new file mode 100644
index 0000000..89f90de
--- /dev/null
+++ b/config/test.env.js
@@ -0,0 +1,6 @@
+var merge = require('webpack-merge')
+var devEnv = require('./dev.env')
+
+module.exports = merge(devEnv, {
+ NODE_ENV: '"testing"'
+})
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..e4a7a07
--- /dev/null
+++ b/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+ VueDatasource 2
+
+
+
+
+
+
+
diff --git a/index.js b/index.js
new file mode 100644
index 0000000..8415330
--- /dev/null
+++ b/index.js
@@ -0,0 +1 @@
+modules.exports = require('./src/components/Datasource.vue');
\ No newline at end of file
diff --git a/logotype.png b/logotype.png
new file mode 100644
index 0000000000000000000000000000000000000000..4d415bf4623179929e38a04bc07e8dcee4a8a07b
GIT binary patch
literal 9166
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
O04)uD^-5I?{(k@|jlC2A
literal 0
HcmV?d00001
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..9c1bb7a
--- /dev/null
+++ b/package.json
@@ -0,0 +1,121 @@
+{
+ "name": "vue-datasource",
+ "version": "2.0.0",
+ "description": "A vue server side component to create dynamic tables",
+ "author": "Javier Diaz ",
+ "private": false,
+ "scripts": {
+ "dev": "node build/dev-server.js",
+ "start": "node build/dev-server.js",
+ "build": "node build/build.js",
+ "unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run",
+ "e2e": "node test/e2e/runner.js",
+ "test": "npm run unit && npm run e2e",
+ "lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs",
+ "lib": "vue build src/components/Datasource.vue --prod --lib vue-datasource"
+ },
+ "license": "MIT",
+ "main": "dist/src/components/Datasource.js",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/coderdiaz/vue-datasource.git"
+ },
+ "bugs": {
+ "url": "https://github.com/coderdiaz/vue-datasource/issues"
+ },
+ "keywords": [
+ "vue.js",
+ "component",
+ "vue-component",
+ "vue-datasource",
+ "table",
+ "vue-table",
+ "datatable",
+ "tables",
+ "vuejs"
+ ],
+ "homepage": "https://github.com/coderdiaz/vue-datasource#readme",
+ "dependencies": {
+ "vue": "^2.2.6"
+ },
+ "devDependencies": {
+ "autoprefixer": "^6.7.2",
+ "axios": "^0.16.1",
+ "babel-core": "^6.22.1",
+ "babel-eslint": "^7.1.1",
+ "babel-helper-vue-jsx-merge-props": "^2.0.2",
+ "babel-loader": "^6.2.10",
+ "babel-plugin-istanbul": "^4.1.1",
+ "babel-plugin-syntax-jsx": "^6.18.0",
+ "babel-plugin-transform-runtime": "^6.22.0",
+ "babel-plugin-transform-vue-jsx": "^3.4.2",
+ "babel-preset-env": "^1.3.2",
+ "babel-preset-es2015": "^6.24.1",
+ "babel-preset-stage-2": "^6.22.0",
+ "babel-register": "^6.22.0",
+ "chai": "^3.5.0",
+ "chalk": "^1.1.3",
+ "chromedriver": "^2.27.2",
+ "connect-history-api-fallback": "^1.3.0",
+ "copy-webpack-plugin": "^4.0.1",
+ "cross-env": "^4.0.0",
+ "cross-spawn": "^5.0.1",
+ "css-loader": "^0.28.0",
+ "eslint": "^3.19.0",
+ "eslint-config-standard": "^6.2.1",
+ "eslint-friendly-formatter": "^2.0.7",
+ "eslint-loader": "^1.7.1",
+ "eslint-plugin-html": "^2.0.0",
+ "eslint-plugin-promise": "^3.4.0",
+ "eslint-plugin-standard": "^2.0.1",
+ "eventsource-polyfill": "^0.9.6",
+ "express": "^4.14.1",
+ "extract-text-webpack-plugin": "^2.0.0",
+ "file-loader": "^0.11.1",
+ "friendly-errors-webpack-plugin": "^1.1.3",
+ "html-webpack-plugin": "^2.28.0",
+ "http-proxy-middleware": "^0.17.3",
+ "inject-loader": "^3.0.0",
+ "karma": "^1.4.1",
+ "karma-coverage": "^1.1.1",
+ "karma-mocha": "^1.3.0",
+ "karma-phantomjs-launcher": "^1.0.2",
+ "karma-phantomjs-shim": "^1.4.0",
+ "karma-sinon-chai": "^1.3.1",
+ "karma-sourcemap-loader": "^0.3.7",
+ "karma-spec-reporter": "0.0.30",
+ "karma-webpack": "^2.0.2",
+ "lolex": "^1.5.2",
+ "mocha": "^3.2.0",
+ "nightwatch": "^0.9.12",
+ "opn": "^4.0.2",
+ "optimize-css-assets-webpack-plugin": "^1.3.0",
+ "ora": "^1.2.0",
+ "phantomjs-prebuilt": "^2.1.14",
+ "rimraf": "^2.6.0",
+ "selenium-server": "^3.0.1",
+ "semver": "^5.3.0",
+ "shelljs": "^0.7.6",
+ "sinon": "^2.1.0",
+ "sinon-chai": "^2.8.0",
+ "style-loader": "^0.16.1",
+ "url-loader": "^0.5.8",
+ "vue-loader": "^11.3.4",
+ "vue-style-loader": "^2.0.5",
+ "vue-template-compiler": "^2.2.6",
+ "webpack": "^2.3.3",
+ "webpack-bundle-analyzer": "^2.2.1",
+ "webpack-dev-middleware": "^1.10.0",
+ "webpack-hot-middleware": "^2.18.0",
+ "webpack-merge": "^4.1.0"
+ },
+ "engines": {
+ "node": ">= 4.0.0",
+ "npm": ">= 3.0.0"
+ },
+ "browserslist": [
+ "> 1%",
+ "last 2 versions",
+ "not ie <= 8"
+ ]
+}
diff --git a/screenshot.png b/screenshot.png
new file mode 100644
index 0000000000000000000000000000000000000000..0df48e49c3a05d0d9dae99286b5c4216803be72d
GIT binary patch
literal 217223
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