Advertisement
Guest User

ROLE

a guest
Jun 21st, 2018
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.15 KB | None | 0 0
  1. <template>
  2. <b-container fluid>
  3. <b-row>
  4. <b-col md='12' class='pt-5 mt-5' align='right'>
  5. <b-btn v-b-modal.addModal variant="primary">Add Role</b-btn>
  6. </b-col>
  7. <b-col md='6' class='p-0' align="left">
  8. <b-col md='6' class='p-0'>
  9. <b-input-group class='mt-2 mb-5'>
  10. <b-form-input v-model="filter" placeholder="Type to Search" />
  11. <b-input-group-append>
  12. <b-btn disabled><icon name="search" scale="1"> </icon></b-btn>
  13. </b-input-group-append>
  14. </b-input-group>
  15. </b-col>
  16. </b-col>
  17. <b-col md='6' align="right" class='p-0'>
  18. <b-form-group horizontal label="Display" class="mb-5 mt-2">
  19. <b-form-select :options="pageOptions" v-model="perPage" />
  20. </b-form-group>
  21. </b-col>
  22. <b-table hover
  23. outlined
  24. responsive
  25. bordered
  26. :items="datas"
  27. :fields="header"
  28. :per-page="perPage"
  29. :filter="filter"
  30. @filtered="onFiltered"
  31. :current-page="currentPage">
  32. <template slot="actions" slot-scope="row">
  33. <b-button v-b-modal.editModal
  34. size="sm"
  35. @click.stop="info(row.item, row.index, $event.target)"
  36. class="mr-1"
  37. variant="success">
  38. Edit
  39. </b-button>
  40. <b-button size="sm"
  41. class="mr-1"
  42. @click.stop="info(row.item, row.index, $event.target); disable(); undisplayer()"
  43. variant="danger">
  44. Delete
  45. </b-button>
  46. </template>x`
  47. </b-table>
  48. <b-col md="6">
  49. <p>Total: {{totalRows}} rows</p>
  50. </b-col>
  51. <b-col md="6" class="">
  52. <b-pagination :total-rows="totalRows"
  53. :per-page="perPage"
  54. v-model="currentPage"
  55. class="my-0"
  56. align='right'/>
  57. </b-col>
  58. </b-row>
  59. <!-- ADD ROLES MODAL -->
  60. <b-modal id="addModal"
  61. v-model="showAddModal"
  62. title="Add Roles"
  63. @show="clearAddEditDatas"
  64. @hide="clearAddEditErrorMessages"
  65. centered>
  66. <b-form>
  67. <span>Name</span>
  68. <b-input v-model="addEditDatas.name"
  69. :class="{errorInput: errorInput.nameError}">
  70. </b-input>
  71. <p class="ErrorMessage">{{ errorMessages.nameError }}</p>
  72. </b-form>
  73. <div slot="modal-footer" class="w-100">
  74. <b-btn size="sm"
  75. class="float-right"
  76. @click="closeAddModal">
  77. Cancel
  78. </b-btn>
  79. <b-btn size="sm"
  80. class="pl-3 pr-3 float-right mr-2"
  81. @click="register">
  82. Add
  83. </b-btn>
  84. </div>
  85. </b-modal>
  86.  
  87. <!-- EDIT ROLES MODAL -->
  88. <b-modal id="editModal"
  89. v-model="showEditModal"
  90. title="Edit Roles"
  91. @show="clearAddEditDatas"
  92. @hide="clearAddEditErrorMessages"
  93. centered>
  94. <b-form>
  95. <span>Name</span>
  96. <b-input :class="{errorInput: errorInput.nameError}"
  97. :placeholder="this.EditProperties.name"
  98. v-model="addEditDatas.name">
  99. </b-input>
  100. <p class="ErrorMessage">{{ errorMessages.nameError }}</p>
  101. </b-form>
  102. <div slot="modal-footer" class="w-100">
  103. <b-btn size="sm" class="float-right" @click="showEditModal=false">Cancel</b-btn>
  104. <b-btn size="sm" class="float-right mr-2" @click="update">Update</b-btn>
  105. </div>
  106. </b-modal>
  107.  
  108. </b-container>
  109. </template>
  110. <script>
  111.  
  112. import Role from '../assets/script/Roles'
  113.  
  114. export default{
  115. data(){
  116. return{
  117. header:[
  118. { key: 'name', label: 'Name', sortable: true },
  119. { key: 'created_by', label: 'Created', sortable: true },
  120. { key: 'created_at', label: 'Created by', sortable: true },
  121. { key: 'updated_by', label: 'Updated', sortable: true },
  122. { key: 'updated_at', label: 'Updated by', sortable: true },
  123. //{ key: 'deleted', label: 'Deleted', sortable: true },
  124. { key: 'actions', label: 'Actions' }
  125. ],
  126. datas: [],
  127. perPage: 5,
  128. currentPage: 1,
  129. pageOptions:[5,10,25,50,100],
  130. totalRows: 0,
  131. filter: null,
  132.  
  133. roleListItems: [],
  134. selectedRole: null,
  135.  
  136. showAddModal: false,
  137. showEditModal: false,
  138.  
  139. addEditDatas: { name: '' },
  140. EditProperties: { id: '',
  141. name: '',
  142. created: '',
  143. created_by: '',
  144. updated_by: '',
  145. updated_at: ''
  146. },
  147.  
  148. errorMessages: { nameError: '' },
  149. errorInput: { nameError: false }
  150.  
  151. }
  152. },
  153. methods:{
  154. get () {
  155. Role.get(response => {
  156. this.datas = response.data.results;
  157. this.totalRows = this.datas.length;
  158. this.undisplayer();
  159. }, error => {
  160. console.log(error)
  161. })
  162. },
  163.  
  164. undisplayer () {
  165. var x = 0;
  166. while(x < this.totalRows) {
  167. if(this.datas[x].deleted) {
  168. this.datas.splice(x, 1)
  169. x--
  170. }
  171. x++
  172. }
  173. },
  174.  
  175. disable (item,index,etc) {
  176. Role.getInstance({
  177. id: this.EditProperties.id
  178. }).disable(response => {
  179. console.log(response)
  180. this.datas.splice(index,1); //this.undisplay();
  181. }, error => {
  182. console.log(error)
  183. })
  184. },
  185.  
  186. register () {
  187. this.clearAddEditErrorMessages()
  188. Role.getInstance({
  189. name: this.addEditDatas.name,
  190. created_by: "0",
  191. updated_by: "0",
  192. }).validate().validation(response => {
  193. if(!response.has) {
  194. response.class.register(regs => {
  195. this.get()
  196. this.clearAddEditDatas()
  197. alert("Registered Succesfully")
  198. }, error => {
  199. console.log(error)
  200. });
  201. } else {
  202. this.errorMessages.nameError = response.errors.name
  203. this.errorInput.nameError = (response.errors.name != undefined) ? true : false
  204. }
  205. })
  206. },
  207.  
  208. update () {
  209. this.clearAddEditErrorMessages()
  210. Role.getInstance({
  211. id: this.EditProperties.id,
  212. name: this.addEditDatas.name,
  213. created_by: "0",
  214. updated_by: "0",
  215. }).validate().validation(response => {
  216. if(!response.has) {
  217. response.class.update(regs => {
  218. alert("Updated Succesfully")
  219. this.updateInTable();
  220. }, error => {
  221. console.log(error)
  222.  
  223. });
  224. } else {
  225. this.errorMessages.nameError = response.errors.name
  226. this.errorInput.nameError = (response.errors.name != undefined) ? true : false
  227. }
  228. })
  229. },
  230.  
  231. updateInTable () {
  232. for (var x = 0; x < this.datas.length; x++) {
  233. if (this.datas[x].id == this.EditProperties.id) {
  234. this.datas[x].name = this.addEditDatas.name
  235. return;
  236. }
  237. }
  238. },
  239.  
  240. info (item, index, button) {
  241. this.EditProperties.index = index,
  242. this.EditProperties.id = item.id,
  243. this.EditProperties.name = item.name,
  244. this.EditProperties.created = item.created,
  245. this.EditProperties.created_by = item.created_by,
  246. this.EditProperties.updated_by = item.updated_by,
  247. this.EditProperties.updated_at = item.updated_at
  248. },
  249.  
  250. onFiltered (filteredItems) {
  251. this.totalRows = filteredItems.length
  252. this.currentPage = 1
  253. },
  254. clearAddEditDatas () {
  255. this.addEditDatas.name = '';
  256. },
  257. clearAddEditErrorMessages () {
  258. this.errorMessages.nameError = '';
  259. this.errorInput.nameError = false
  260. },
  261. sortOptions () {
  262. return this.fields
  263. .filter(f => f.sortable)
  264. .map(f => { return { text: f.label, value: f.key } })
  265. },
  266. closeAddModal () {
  267. return this.showAddModal = false;
  268. }
  269. },
  270. computed: {
  271.  
  272.  
  273. },
  274. mounted () {
  275. this.get();
  276. }
  277. }
  278. </script>
  279.  
  280. <style>
  281.  
  282. @import "../assets/scss/roles.scss";
  283.  
  284. </style>
  285.  
  286.  
  287.  
  288.  
  289. import Validator from './Validator';
  290.  
  291. var Role = (function(Validator){
  292. var url = 'http://localhost:8080/keeper/api/roles/'
  293.  
  294. function Role(obj) {
  295. this.instance = null
  296. this.errors = {}
  297. this.role = {
  298. id: obj.id,
  299. name: obj.name,
  300. created_by: obj.created_by,
  301. updated_by: obj.updated_by,
  302. };
  303. }
  304.  
  305. Role.getInstance = function(obj) {
  306. if(this.instance == null) {
  307. this.instance = new Role(obj)
  308. } else {
  309. this.overrideInstance(obj)
  310. }
  311. return this.instance;
  312. }
  313.  
  314. Role.overrideInstance = function(obj) {
  315. this.instance.role = {
  316. id: obj.id,
  317. name: obj.name,
  318. created_by: obj.created_by,
  319. updated_by: obj.updated_by,
  320. };
  321. }
  322.  
  323. Role.prototype.validateRole = function(role) {
  324. var roleNameNonEmptyChecker = Validator.isEmpty(role),
  325. roleNameLengthChecker = Validator.isCharacterLengthValid(role, 4, 512);
  326. if(!roleNameNonEmptyChecker.success) {
  327. this.errors.name = roleNameNonEmptyChecker.message;
  328. } else if(!roleNameLengthChecker.success) {
  329. this.errors.name = roleNameLengthChecker.message;
  330. }
  331. this.role.name = role;
  332. }
  333.  
  334. Role.prototype.validate = function() {
  335. this.errors = {}
  336. this.validateRole(this.role.name)
  337. return this;
  338. }
  339.  
  340. Role.prototype.validation = function(cb) {
  341. cb({"errors" : this.errors, "has" : (Object.keys(this.errors).length) ? true : false, "class": this})
  342. }
  343.  
  344. Role.get = function(cb, cbe) {
  345. $http.get(url + "0/10000").then(response => {
  346. cb(response)
  347. }).catch(error => {
  348. console.log(error.response)
  349. cbe(error)
  350. })
  351. }
  352.  
  353. Role.prototype.register = function (cb, cbe) {
  354. delete this.role.id
  355. $http.patch(
  356. url, this.role
  357. ).then(response => {
  358. cb(response)
  359. }).catch(error => {
  360. cbe(error)
  361. });
  362. }
  363.  
  364. Role.prototype.update = function (cb, cbe) {
  365. $http.patch(
  366. url, this.role
  367. ).then(response => {
  368. cb(response)
  369. }).catch(error => {
  370. cbe(error)
  371. });
  372. }
  373.  
  374. Role.prototype.disable = function(cb, cbe) {
  375. console.log(this.role)
  376. $http.delete(url, {
  377. data: this.role
  378. }).then(response => {
  379. cb(response)
  380. }).catch(error => {
  381. cbe(error)
  382. })
  383. }
  384.  
  385. return Role;
  386. })(Validator);
  387.  
  388. export default Role
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement