Best JavaScript code snippet using playwright-internal
transition.spec.js
Source:transition.spec.js  
1import Vue from 'vue'2import injectStyles from './inject-styles'3import { isIE9 } from 'core/util/env'4import { nextFrame } from 'web/runtime/transition-util'5if (!isIE9) {6  describe('Transition basic', () => {7    const { duration, buffer } = injectStyles()8    const explicitDuration = duration * 29    let el10    beforeEach(() => {11      el = document.createElement('div')12      document.body.appendChild(el)13    })14    it('basic transition', done => {15      const vm = new Vue({16        template: '<div><transition><div v-if="ok" class="test">foo</div></transition></div>',17        data: { ok: true }18      }).$mount(el)19      // should not apply transition on initial render by default20      expect(vm.$el.innerHTML).toBe('<div class="test">foo</div>')21      vm.ok = false22      waitForUpdate(() => {23        expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active')24      }).thenWaitFor(nextFrame).then(() => {25        expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to')26      }).thenWaitFor(duration + buffer).then(() => {27        expect(vm.$el.children.length).toBe(0)28        vm.ok = true29      }).then(() => {30        expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active')31      }).thenWaitFor(nextFrame).then(() => {32        expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to')33      }).thenWaitFor(duration + buffer).then(() => {34        expect(vm.$el.children[0].className).toBe('test')35      }).then(done)36    })37    it('named transition', done => {38      const vm = new Vue({39        template: '<div><transition name="test"><div v-if="ok" class="test">foo</div></transition></div>',40        data: { ok: true }41      }).$mount(el)42      // should not apply transition on initial render by default43      expect(vm.$el.innerHTML).toBe('<div class="test">foo</div>')44      vm.ok = false45      waitForUpdate(() => {46        expect(vm.$el.children[0].className).toBe('test test-leave test-leave-active')47      }).thenWaitFor(nextFrame).then(() => {48        expect(vm.$el.children[0].className).toBe('test test-leave-active test-leave-to')49      }).thenWaitFor(duration + buffer).then(() => {50        expect(vm.$el.children.length).toBe(0)51        vm.ok = true52      }).then(() => {53        expect(vm.$el.children[0].className).toBe('test test-enter test-enter-active')54      }).thenWaitFor(nextFrame).then(() => {55        expect(vm.$el.children[0].className).toBe('test test-enter-active test-enter-to')56      }).thenWaitFor(duration + buffer).then(() => {57        expect(vm.$el.children[0].className).toBe('test')58      }).then(done)59    })60    it('custom transition classes', done => {61      const vm = new Vue({62        template: `63          <div>64            <transition65              enter-class="hello"66              enter-active-class="hello-active"67              enter-to-class="hello-to"68              leave-class="bye"69              leave-to-class="bye-to"70              leave-active-class="byebye active more ">71              <div v-if="ok" class="test">foo</div>72            </transition>73          </div>74        `,75        data: { ok: true }76      }).$mount(el)77      // should not apply transition on initial render by default78      expect(vm.$el.innerHTML).toBe('<div class="test">foo</div>')79      vm.ok = false80      waitForUpdate(() => {81        expect(vm.$el.children[0].className).toBe('test bye byebye active more')82      }).thenWaitFor(nextFrame).then(() => {83        expect(vm.$el.children[0].className).toBe('test byebye active more bye-to')84      }).thenWaitFor(duration + buffer).then(() => {85        expect(vm.$el.children.length).toBe(0)86        vm.ok = true87      }).then(() => {88        expect(vm.$el.children[0].className).toBe('test hello hello-active')89      }).thenWaitFor(nextFrame).then(() => {90        expect(vm.$el.children[0].className).toBe('test hello-active hello-to')91      }).thenWaitFor(duration + buffer).then(() => {92        expect(vm.$el.children[0].className).toBe('test')93      }).then(done)94    })95    it('dynamic transition', done => {96      const vm = new Vue({97        template: `98          <div>99            <transition :name="trans">100              <div v-if="ok" class="test">foo</div>101            </transition>102          </div>103        `,104        data: {105          ok: true,106          trans: 'test'107        }108      }).$mount(el)109      // should not apply transition on initial render by default110      expect(vm.$el.innerHTML).toBe('<div class="test">foo</div>')111      vm.ok = false112      waitForUpdate(() => {113        expect(vm.$el.children[0].className).toBe('test test-leave test-leave-active')114      }).thenWaitFor(nextFrame).then(() => {115        expect(vm.$el.children[0].className).toBe('test test-leave-active test-leave-to')116      }).thenWaitFor(duration + buffer).then(() => {117        expect(vm.$el.children.length).toBe(0)118        vm.ok = true119        vm.trans = 'changed'120      }).then(() => {121        expect(vm.$el.children[0].className).toBe('test changed-enter changed-enter-active')122      }).thenWaitFor(nextFrame).then(() => {123        expect(vm.$el.children[0].className).toBe('test changed-enter-active changed-enter-to')124      }).thenWaitFor(duration + buffer).then(() => {125        expect(vm.$el.children[0].className).toBe('test')126      }).then(done)127    })128    it('inline transition object', done => {129      const enter = jasmine.createSpy('enter')130      const leave = jasmine.createSpy('leave')131      const vm = new Vue({132        render (h) {133          return h('div', null, [134            h('transition', {135              props: {136                name: 'inline',137                enterClass: 'hello',138                enterToClass: 'hello-to',139                enterActiveClass: 'hello-active',140                leaveClass: 'bye',141                leaveToClass: 'bye-to',142                leaveActiveClass: 'byebye active'143              },144              on: {145                enter,146                leave147              }148            }, this.ok ? [h('div', { class: 'test' }, 'foo')] : undefined)149          ])150        },151        data: { ok: true }152      }).$mount(el)153      // should not apply transition on initial render by default154      expect(vm.$el.innerHTML).toBe('<div class="test">foo</div>')155      vm.ok = false156      waitForUpdate(() => {157        expect(vm.$el.children[0].className).toBe('test bye byebye active')158        expect(leave).toHaveBeenCalled()159      }).thenWaitFor(nextFrame).then(() => {160        expect(vm.$el.children[0].className).toBe('test byebye active bye-to')161      }).thenWaitFor(duration + buffer).then(() => {162        expect(vm.$el.children.length).toBe(0)163        vm.ok = true164      }).then(() => {165        expect(vm.$el.children[0].className).toBe('test hello hello-active')166        expect(enter).toHaveBeenCalled()167      }).thenWaitFor(nextFrame).then(() => {168        expect(vm.$el.children[0].className).toBe('test hello-active hello-to')169      }).thenWaitFor(duration + buffer).then(() => {170        expect(vm.$el.children[0].className).toBe('test')171      }).then(done)172    })173    it('transition events', done => {174      const onLeaveSpy = jasmine.createSpy('leave')175      const onEnterSpy = jasmine.createSpy('enter')176      const beforeLeaveSpy = jasmine.createSpy('beforeLeave')177      const beforeEnterSpy = jasmine.createSpy('beforeEnter')178      const afterLeaveSpy = jasmine.createSpy('afterLeave')179      const afterEnterSpy = jasmine.createSpy('afterEnter')180      const vm = new Vue({181        template: `182          <div>183            <transition184              name="test"185              @before-enter="beforeEnter"186              @enter="enter"187              @after-enter="afterEnter"188              @before-leave="beforeLeave"189              @leave="leave"190              @after-leave="afterLeave">191              <div v-if="ok" class="test">foo</div>192            </transition>193          </div>194        `,195        data: { ok: true },196        methods: {197          beforeLeave: (el) => {198            expect(el).toBe(vm.$el.children[0])199            expect(el.className).toBe('test')200            beforeLeaveSpy(el)201          },202          leave: (el) => onLeaveSpy(el),203          afterLeave: (el) => afterLeaveSpy(el),204          beforeEnter: (el) => {205            expect(vm.$el.contains(el)).toBe(false)206            expect(el.className).toBe('test')207            beforeEnterSpy(el)208          },209          enter: (el) => {210            expect(vm.$el.contains(el)).toBe(true)211            onEnterSpy(el)212          },213          afterEnter: (el) => afterEnterSpy(el)214        }215      }).$mount(el)216      // should not apply transition on initial render by default217      expect(vm.$el.innerHTML).toBe('<div class="test">foo</div>')218      let _el = vm.$el.children[0]219      vm.ok = false220      waitForUpdate(() => {221        expect(beforeLeaveSpy).toHaveBeenCalledWith(_el)222        expect(onLeaveSpy).toHaveBeenCalledWith(_el)223        expect(vm.$el.children[0].className).toBe('test test-leave test-leave-active')224      }).thenWaitFor(nextFrame).then(() => {225        expect(afterLeaveSpy).not.toHaveBeenCalled()226        expect(vm.$el.children[0].className).toBe('test test-leave-active test-leave-to')227      }).thenWaitFor(duration + buffer).then(() => {228        expect(afterLeaveSpy).toHaveBeenCalledWith(_el)229        expect(vm.$el.children.length).toBe(0)230        vm.ok = true231      }).then(() => {232        _el = vm.$el.children[0]233        expect(beforeEnterSpy).toHaveBeenCalledWith(_el)234        expect(onEnterSpy).toHaveBeenCalledWith(_el)235        expect(vm.$el.children[0].className).toBe('test test-enter test-enter-active')236      }).thenWaitFor(nextFrame).then(() => {237        expect(afterEnterSpy).not.toHaveBeenCalled()238        expect(vm.$el.children[0].className).toBe('test test-enter-active test-enter-to')239      }).thenWaitFor(duration + buffer).then(() => {240        expect(afterEnterSpy).toHaveBeenCalledWith(_el)241        expect(vm.$el.children[0].className).toBe('test')242      }).then(done)243    })244    it('transition events (v-show)', done => {245      const onLeaveSpy = jasmine.createSpy('leave')246      const onEnterSpy = jasmine.createSpy('enter')247      const beforeLeaveSpy = jasmine.createSpy('beforeLeave')248      const beforeEnterSpy = jasmine.createSpy('beforeEnter')249      const afterLeaveSpy = jasmine.createSpy('afterLeave')250      const afterEnterSpy = jasmine.createSpy('afterEnter')251      const vm = new Vue({252        template: `253          <div>254            <transition255              name="test"256              @before-enter="beforeEnter"257              @enter="enter"258              @after-enter="afterEnter"259              @before-leave="beforeLeave"260              @leave="leave"261              @after-leave="afterLeave">262              <div v-show="ok" class="test">foo</div>263            </transition>264          </div>265        `,266        data: { ok: true },267        methods: {268          beforeLeave: (el) => {269            expect(el.style.display).toBe('')270            expect(el).toBe(vm.$el.children[0])271            expect(el.className).toBe('test')272            beforeLeaveSpy(el)273          },274          leave: (el) => {275            expect(el.style.display).toBe('')276            onLeaveSpy(el)277          },278          afterLeave: (el) => {279            expect(el.style.display).toBe('none')280            afterLeaveSpy(el)281          },282          beforeEnter: (el) => {283            expect(el.className).toBe('test')284            expect(el.style.display).toBe('none')285            beforeEnterSpy(el)286          },287          enter: (el) => {288            expect(el.style.display).toBe('')289            onEnterSpy(el)290          },291          afterEnter: (el) => {292            expect(el.style.display).toBe('')293            afterEnterSpy(el)294          }295        }296      }).$mount(el)297      // should not apply transition on initial render by default298      expect(vm.$el.innerHTML).toBe('<div class="test">foo</div>')299      let _el = vm.$el.children[0]300      vm.ok = false301      waitForUpdate(() => {302        expect(beforeLeaveSpy).toHaveBeenCalledWith(_el)303        expect(onLeaveSpy).toHaveBeenCalledWith(_el)304        expect(vm.$el.children[0].className).toBe('test test-leave test-leave-active')305      }).thenWaitFor(nextFrame).then(() => {306        expect(afterLeaveSpy).not.toHaveBeenCalled()307        expect(vm.$el.children[0].className).toBe('test test-leave-active test-leave-to')308      }).thenWaitFor(duration + buffer).then(() => {309        expect(afterLeaveSpy).toHaveBeenCalledWith(_el)310        expect(vm.$el.children[0].style.display).toBe('none')311        vm.ok = true312      }).then(() => {313        _el = vm.$el.children[0]314        expect(beforeEnterSpy).toHaveBeenCalledWith(_el)315        expect(onEnterSpy).toHaveBeenCalledWith(_el)316        expect(vm.$el.children[0].className).toBe('test test-enter test-enter-active')317      }).thenWaitFor(nextFrame).then(() => {318        expect(afterEnterSpy).not.toHaveBeenCalled()319        expect(vm.$el.children[0].className).toBe('test test-enter-active test-enter-to')320      }).thenWaitFor(duration + buffer).then(() => {321        expect(afterEnterSpy).toHaveBeenCalledWith(_el)322        expect(vm.$el.children[0].className).toBe('test')323      }).then(done)324    })325    it('explicit user callback in JavaScript hooks', done => {326      let next327      const vm = new Vue({328        template: `<div>329          <transition name="test" @enter="enter" @leave="leave">330            <div v-if="ok" class="test">foo</div>331          </transition>332        </div>`,333        data: { ok: true },334        methods: {335          enter: (el, cb) => {336            next = cb337          },338          leave: (el, cb) => {339            next = cb340          }341        }342      }).$mount(el)343      vm.ok = false344      waitForUpdate(() => {345        expect(vm.$el.children[0].className).toBe('test test-leave test-leave-active')346      }).thenWaitFor(nextFrame).then(() => {347        expect(vm.$el.children[0].className).toBe('test test-leave-active test-leave-to')348      }).thenWaitFor(duration + buffer).then(() => {349        expect(vm.$el.children[0].className).toBe('test test-leave-active test-leave-to')350        expect(next).toBeTruthy()351        next()352        expect(vm.$el.children.length).toBe(0)353      }).then(() => {354        vm.ok = true355      }).then(() => {356        expect(vm.$el.children[0].className).toBe('test test-enter test-enter-active')357      }).thenWaitFor(nextFrame).then(() => {358        expect(vm.$el.children[0].className).toBe('test test-enter-active test-enter-to')359      }).thenWaitFor(duration + buffer).then(() => {360        expect(vm.$el.children[0].className).toBe('test test-enter-active test-enter-to')361        expect(next).toBeTruthy()362        next()363        expect(vm.$el.children[0].className).toBe('test')364      }).then(done)365    })366    it('css: false', done => {367      const enterSpy = jasmine.createSpy('enter')368      const leaveSpy = jasmine.createSpy('leave')369      const vm = new Vue({370        template: `371          <div>372            <transition :css="false" name="test" @enter="enter" @leave="leave">373              <div v-if="ok" class="test">foo</div>374            </transition>375          </div>376        `,377        data: { ok: true },378        methods: {379          enter: enterSpy,380          leave: leaveSpy381        }382      }).$mount(el)383      vm.ok = false384      waitForUpdate(() => {385        expect(leaveSpy).toHaveBeenCalled()386        expect(vm.$el.innerHTML).toBe('<!---->')387        vm.ok = true388      }).then(() => {389        expect(enterSpy).toHaveBeenCalled()390        expect(vm.$el.innerHTML).toBe('<div class="test">foo</div>')391      }).then(done)392    })393    it('no transition detected', done => {394      const enterSpy = jasmine.createSpy('enter')395      const leaveSpy = jasmine.createSpy('leave')396      const vm = new Vue({397        template: '<div><transition name="nope" @enter="enter" @leave="leave"><div v-if="ok">foo</div></transition></div>',398        data: { ok: true },399        methods: {400          enter: enterSpy,401          leave: leaveSpy402        }403      }).$mount(el)404      vm.ok = false405      waitForUpdate(() => {406        expect(leaveSpy).toHaveBeenCalled()407        expect(vm.$el.innerHTML).toBe('<div class="nope-leave nope-leave-active">foo</div><!---->')408      }).thenWaitFor(nextFrame).then(() => {409        expect(vm.$el.innerHTML).toBe('<!---->')410        vm.ok = true411      }).then(() => {412        expect(enterSpy).toHaveBeenCalled()413        expect(vm.$el.innerHTML).toBe('<div class="nope-enter nope-enter-active">foo</div>')414      }).thenWaitFor(nextFrame).then(() => {415        expect(vm.$el.innerHTML).toBe('<div>foo</div>')416      }).then(done)417    })418    it('enterCancelled', done => {419      const spy = jasmine.createSpy('enterCancelled')420      const vm = new Vue({421        template: `422          <div>423            <transition name="test" @enter-cancelled="enterCancelled">424              <div v-if="ok" class="test">foo</div>425            </transition>426          </div>427        `,428        data: { ok: false },429        methods: {430          enterCancelled: spy431        }432      }).$mount(el)433      expect(vm.$el.innerHTML).toBe('<!---->')434      vm.ok = true435      waitForUpdate(() => {436        expect(vm.$el.children[0].className).toBe('test test-enter test-enter-active')437      }).thenWaitFor(nextFrame).then(() => {438        expect(vm.$el.children[0].className).toBe('test test-enter-active test-enter-to')439      }).thenWaitFor(duration / 2).then(() => {440        vm.ok = false441      }).then(() => {442        expect(spy).toHaveBeenCalled()443        expect(vm.$el.children[0].className).toBe('test test-leave test-leave-active')444      }).thenWaitFor(nextFrame).then(() => {445        expect(vm.$el.children[0].className).toBe('test test-leave-active test-leave-to')446      }).thenWaitFor(duration + buffer).then(() => {447        expect(vm.$el.children.length).toBe(0)448      }).then(done)449    })450    it('should remove stale leaving elements', done => {451      const spy = jasmine.createSpy('afterLeave')452      const vm = new Vue({453        template: `454          <div>455            <transition name="test" @after-leave="afterLeave">456              <div v-if="ok" class="test">foo</div>457            </transition>458          </div>459        `,460        data: { ok: true },461        methods: {462          afterLeave: spy463        }464      }).$mount(el)465      expect(vm.$el.innerHTML).toBe('<div class="test">foo</div>')466      vm.ok = false467      waitForUpdate(() => {468        expect(vm.$el.children[0].className).toBe('test test-leave test-leave-active')469      }).thenWaitFor(duration / 2).then(() => {470        vm.ok = true471      }).then(() => {472        expect(spy).toHaveBeenCalled()473        expect(vm.$el.children.length).toBe(1) // should have removed leaving element474        expect(vm.$el.children[0].className).toBe('test test-enter test-enter-active')475      }).thenWaitFor(nextFrame).then(() => {476        expect(vm.$el.children[0].className).toBe('test test-enter-active test-enter-to')477      }).thenWaitFor(duration + buffer).then(() => {478        expect(vm.$el.innerHTML).toBe('<div class="test">foo</div>')479      }).then(done)480    })481    it('transition with v-show', done => {482      const vm = new Vue({483        template: `484          <div>485            <transition name="test">486              <div v-show="ok" class="test">foo</div>487            </transition>488          </div>489        `,490        data: { ok: true }491      }).$mount(el)492      // should not apply transition on initial render by default493      expect(vm.$el.textContent).toBe('foo')494      expect(vm.$el.children[0].style.display).toBe('')495      expect(vm.$el.children[0].className).toBe('test')496      vm.ok = false497      waitForUpdate(() => {498        expect(vm.$el.children[0].className).toBe('test test-leave test-leave-active')499      }).thenWaitFor(nextFrame).then(() => {500        expect(vm.$el.children[0].className).toBe('test test-leave-active test-leave-to')501      }).thenWaitFor(duration + buffer).then(() => {502        expect(vm.$el.children[0].style.display).toBe('none')503        vm.ok = true504      }).then(() => {505        expect(vm.$el.children[0].style.display).toBe('')506        expect(vm.$el.children[0].className).toBe('test test-enter test-enter-active')507      }).thenWaitFor(nextFrame).then(() => {508        expect(vm.$el.children[0].className).toBe('test test-enter-active test-enter-to')509      }).thenWaitFor(duration + buffer).then(() => {510        expect(vm.$el.children[0].className).toBe('test')511      }).then(done)512    })513    it('transition with v-show, inside child component', done => {514      const vm = new Vue({515        template: `516          <div>517            <test v-show="ok"></test>518          </div>519        `,520        data: { ok: true },521        components: {522          test: {523            template: `<transition name="test"><div class="test">foo</div></transition>`524          }525        }526      }).$mount(el)527      // should not apply transition on initial render by default528      expect(vm.$el.textContent).toBe('foo')529      expect(vm.$el.children[0].style.display).toBe('')530      vm.ok = false531      waitForUpdate(() => {532        expect(vm.$el.children[0].className).toBe('test test-leave test-leave-active')533      }).thenWaitFor(nextFrame).then(() => {534        expect(vm.$el.children[0].className).toBe('test test-leave-active test-leave-to')535      }).thenWaitFor(duration + buffer).then(() => {536        expect(vm.$el.children[0].style.display).toBe('none')537        vm.ok = true538      }).then(() => {539        expect(vm.$el.children[0].style.display).toBe('')540        expect(vm.$el.children[0].className).toBe('test test-enter test-enter-active')541      }).thenWaitFor(nextFrame).then(() => {542        expect(vm.$el.children[0].className).toBe('test test-enter-active test-enter-to')543      }).thenWaitFor(duration + buffer).then(() => {544        expect(vm.$el.children[0].className).toBe('test')545      }).then(done)546    })547    it('leaveCancelled (v-show only)', done => {548      const spy = jasmine.createSpy('leaveCancelled')549      const vm = new Vue({550        template: `551          <div>552            <transition name="test" @leave-cancelled="leaveCancelled">553              <div v-show="ok" class="test">foo</div>554            </transition>555          </div>556        `,557        data: { ok: true },558        methods: {559          leaveCancelled: spy560        }561      }).$mount(el)562      expect(vm.$el.children[0].style.display).toBe('')563      vm.ok = false564      waitForUpdate(() => {565        expect(vm.$el.children[0].className).toBe('test test-leave test-leave-active')566      }).thenWaitFor(nextFrame).then(() => {567        expect(vm.$el.children[0].className).toBe('test test-leave-active test-leave-to')568      }).thenWaitFor(10).then(() => {569        vm.ok = true570      }).then(() => {571        expect(spy).toHaveBeenCalled()572        expect(vm.$el.children[0].className).toBe('test test-enter test-enter-active')573      }).thenWaitFor(nextFrame).then(() => {574        expect(vm.$el.children[0].className).toBe('test test-enter-active test-enter-to')575      }).thenWaitFor(duration + buffer).then(() => {576        expect(vm.$el.children[0].style.display).toBe('')577      }).then(done)578    })579    it('leave transition with v-show: cancelled on next frame', done => {580      const vm = new Vue({581        template: `582          <div>583            <transition name="test">584              <div v-show="ok" class="test">foo</div>585            </transition>586          </div>587        `,588        data: { ok: true }589      }).$mount(el)590      vm.ok = false591      waitForUpdate(() => {592        vm.ok = true593      }).thenWaitFor(nextFrame).then(() => {594        expect(vm.$el.children[0].className).toBe('test test-enter-active test-enter-to')595      }).thenWaitFor(duration + buffer).then(() => {596        expect(vm.$el.children[0].className).toBe('test')597      }).then(done)598    })599    it('enter transition with v-show: cancelled on next frame', done => {600      const vm = new Vue({601        template: `602          <div>603            <transition name="test">604              <div v-show="ok" class="test">foo</div>605            </transition>606          </div>607        `,608        data: { ok: false }609      }).$mount(el)610      vm.ok = true611      waitForUpdate(() => {612        vm.ok = false613      }).thenWaitFor(nextFrame).then(() => {614        expect(vm.$el.children[0].className).toBe('test test-leave-active test-leave-to')615      }).thenWaitFor(duration + buffer).then(() => {616        expect(vm.$el.children[0].className).toBe('test')617      }).then(done)618    })619    it('animations', done => {620      const vm = new Vue({621        template: `622          <div>623            <transition name="test-anim">624              <div v-if="ok">foo</div>625            </transition>626          </div>627        `,628        data: { ok: true }629      }).$mount(el)630      // should not apply transition on initial render by default631      expect(vm.$el.innerHTML).toBe('<div>foo</div>')632      vm.ok = false633      waitForUpdate(() => {634        expect(vm.$el.children[0].className).toBe('test-anim-leave test-anim-leave-active')635      }).thenWaitFor(nextFrame).then(() => {636        expect(vm.$el.children[0].className).toBe('test-anim-leave-active test-anim-leave-to')637      }).thenWaitFor(duration + buffer).then(() => {638        expect(vm.$el.children.length).toBe(0)639        vm.ok = true640      }).then(() => {641        expect(vm.$el.children[0].className).toBe('test-anim-enter test-anim-enter-active')642      }).thenWaitFor(nextFrame).then(() => {643        expect(vm.$el.children[0].className).toBe('test-anim-enter-active test-anim-enter-to')644      }).thenWaitFor(duration + buffer).then(() => {645        expect(vm.$el.children[0].className).toBe('')646      }).then(done)647    })648    it('explicit transition type', done => {649      const vm = new Vue({650        template: `651          <div>652            <transition name="test-anim-long" type="animation">653              <div v-if="ok" class="test">foo</div>654            </transition>655          </div>656        `,657        data: { ok: true }658      }).$mount(el)659      // should not apply transition on initial render by default660      expect(vm.$el.innerHTML).toBe('<div class="test">foo</div>')661      vm.ok = false662      waitForUpdate(() => {663        expect(vm.$el.children[0].className).toBe('test test-anim-long-leave test-anim-long-leave-active')664      }).thenWaitFor(nextFrame).then(() => {665        expect(vm.$el.children[0].className).toBe('test test-anim-long-leave-active test-anim-long-leave-to')666      }).thenWaitFor(duration + 5).then(() => {667        // should not end early due to transition presence668        expect(vm.$el.children[0].className).toBe('test test-anim-long-leave-active test-anim-long-leave-to')669      }).thenWaitFor(duration + 5).then(() => {670        expect(vm.$el.children.length).toBe(0)671        vm.ok = true672      }).then(() => {673        expect(vm.$el.children[0].className).toBe('test test-anim-long-enter test-anim-long-enter-active')674      }).thenWaitFor(nextFrame).then(() => {675        expect(vm.$el.children[0].className).toBe('test test-anim-long-enter-active test-anim-long-enter-to')676      }).thenWaitFor(duration + 5).then(() => {677        expect(vm.$el.children[0].className).toBe('test test-anim-long-enter-active test-anim-long-enter-to')678      }).thenWaitFor(duration + 5).then(() => {679        expect(vm.$el.children[0].className).toBe('test')680      }).then(done)681    })682    it('transition on appear', done => {683      const vm = new Vue({684        template: `685          <div>686            <transition name="test"687              appear688              appear-class="test-appear"689              appear-to-class="test-appear-to"690              appear-active-class="test-appear-active">691              <div v-if="ok" class="test">foo</div>692            </transition>693          </div>694        `,695        data: { ok: true }696      }).$mount(el)697      waitForUpdate(() => {698        expect(vm.$el.children[0].className).toBe('test test-appear test-appear-active')699      }).thenWaitFor(nextFrame).then(() => {700        expect(vm.$el.children[0].className).toBe('test test-appear-active test-appear-to')701      }).thenWaitFor(duration + buffer).then(() => {702        expect(vm.$el.children[0].className).toBe('test')703      }).then(done)704    })705    it('transition on appear with v-show', done => {706      const vm = new Vue({707        template: `708          <div>709            <transition name="test" appear>710              <div v-show="ok" class="test">foo</div>711            </transition>712          </div>713        `,714        data: { ok: true }715      }).$mount(el)716      waitForUpdate(() => {717        expect(vm.$el.children[0].className).toBe('test test-enter test-enter-active')718      }).thenWaitFor(nextFrame).then(() => {719        expect(vm.$el.children[0].className).toBe('test test-enter-active test-enter-to')720      }).thenWaitFor(duration + buffer).then(() => {721        expect(vm.$el.children[0].className).toBe('test')722      }).then(done)723    })724    it('transition on SVG elements', done => {725      const vm = new Vue({726        template: `727          <svg>728            <transition>729              <circle cx="0" cy="0" r="10" v-if="ok" class="test"></circle>730            </transition>731          </svg>732        `,733        data: { ok: true }734      }).$mount(el)735      // should not apply transition on initial render by default736      expect(vm.$el.childNodes[0].getAttribute('class')).toBe('test')737      vm.ok = false738      waitForUpdate(() => {739        expect(vm.$el.childNodes[0].getAttribute('class')).toBe('test v-leave v-leave-active')740      }).thenWaitFor(nextFrame).then(() => {741        expect(vm.$el.childNodes[0].getAttribute('class')).toBe('test v-leave-active v-leave-to')742      }).thenWaitFor(duration + buffer).then(() => {743        expect(vm.$el.childNodes.length).toBe(1)744        expect(vm.$el.childNodes[0].nodeType).toBe(8) // should be an empty comment node745        expect(vm.$el.childNodes[0].textContent).toBe('')746        vm.ok = true747      }).then(() => {748        expect(vm.$el.childNodes[0].getAttribute('class')).toBe('test v-enter v-enter-active')749      }).thenWaitFor(nextFrame).then(() => {750        expect(vm.$el.childNodes[0].getAttribute('class')).toBe('test v-enter-active v-enter-to')751      }).thenWaitFor(duration + buffer).then(() => {752        expect(vm.$el.childNodes[0].getAttribute('class')).toBe('test')753      }).then(done)754    })755    it('transition on child components', done => {756      const vm = new Vue({757        template: `758          <div>759            <transition>760              <test v-if="ok" class="test"></test>761            </transition>762          </div>763        `,764        data: { ok: true },765        components: {766          test: {767            template: `768              <transition name="test">769                <div>foo</div>770              </transition>771            ` // test transition override from parent772          }773        }774      }).$mount(el)775      // should not apply transition on initial render by default776      expect(vm.$el.innerHTML).toBe('<div class="test">foo</div>')777      vm.ok = false778      waitForUpdate(() => {779        expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active')780      }).thenWaitFor(nextFrame).then(() => {781        expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to')782      }).thenWaitFor(duration + buffer).then(() => {783        expect(vm.$el.children.length).toBe(0)784        vm.ok = true785      }).then(() => {786        expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active')787      }).thenWaitFor(nextFrame).then(() => {788        expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to')789      }).thenWaitFor(duration + buffer).then(() => {790        expect(vm.$el.children[0].className).toBe('test')791      }).then(done)792    })793    it('transition inside child component', done => {794      const vm = new Vue({795        template: `796          <div>797            <test v-if="ok" class="test"></test>798          </div>799        `,800        data: { ok: true },801        components: {802          test: {803            template: `804              <transition>805                <div>foo</div>806              </transition>807            `808          }809        }810      }).$mount(el)811      // should not apply transition on initial render by default812      expect(vm.$el.innerHTML).toBe('<div class="test">foo</div>')813      vm.ok = false814      waitForUpdate(() => {815        expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active')816      }).thenWaitFor(nextFrame).then(() => {817        expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to')818      }).thenWaitFor(duration + buffer).then(() => {819        expect(vm.$el.children.length).toBe(0)820        vm.ok = true821      }).then(() => {822        expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active')823      }).thenWaitFor(nextFrame).then(() => {824        expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to')825      }).thenWaitFor(duration + buffer).then(() => {826        expect(vm.$el.children[0].className).toBe('test')827      }).then(done)828    })829    it('custom transition higher-order component', done => {830      const vm = new Vue({831        template: '<div><my-transition><div v-if="ok" class="test">foo</div></my-transition></div>',832        data: { ok: true },833        components: {834          'my-transition': {835            functional: true,836            render (h, { data, children }) {837              (data.props || (data.props = {})).name = 'test'838              return h('transition', data, children)839            }840          }841        }842      }).$mount(el)843      // should not apply transition on initial render by default844      expect(vm.$el.innerHTML).toBe('<div class="test">foo</div>')845      vm.ok = false846      waitForUpdate(() => {847        expect(vm.$el.children[0].className).toBe('test test-leave test-leave-active')848      }).thenWaitFor(nextFrame).then(() => {849        expect(vm.$el.children[0].className).toBe('test test-leave-active test-leave-to')850      }).thenWaitFor(duration + buffer).then(() => {851        expect(vm.$el.children.length).toBe(0)852        vm.ok = true853      }).then(() => {854        expect(vm.$el.children[0].className).toBe('test test-enter test-enter-active')855      }).thenWaitFor(nextFrame).then(() => {856        expect(vm.$el.children[0].className).toBe('test test-enter-active test-enter-to')857      }).thenWaitFor(duration + buffer).then(() => {858        expect(vm.$el.children[0].className).toBe('test')859      }).then(done)860    })861    it('warn when used on multiple elements', () => {862      new Vue({863        template: `<transition><p>1</p><p>2</p></transition>`864      }).$mount()865      expect(`<transition> can only be used on a single element`).toHaveBeenWarned()866    })867    describe('explicit durations -', () => {868      it('single value', done => {869        const vm = new Vue({870          template: `871            <div>872              <transition duration="${explicitDuration}">873                <div v-if="ok" class="test">foo</div>874              </transition>875            </div>876          `,877          data: { ok: true }878        }).$mount(el)879        vm.ok = false880        waitForUpdate(() => {881          expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active')882        }).thenWaitFor(nextFrame).then(() => {883          expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to')884        }).thenWaitFor(explicitDuration + buffer).then(() => {885          expect(vm.$el.children.length).toBe(0)886          vm.ok = true887        }).then(() => {888          expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active')889        }).thenWaitFor(nextFrame).then(() => {890          expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to')891        }).thenWaitFor(explicitDuration + buffer).then(() => {892          expect(vm.$el.children[0].className).toBe('test')893        }).then(done)894      })895      it('enter and auto leave', done => {896        const vm = new Vue({897          template: `898            <div>899              <transition :duration="{ enter: ${explicitDuration} }">900                <div v-if="ok" class="test">foo</div>901              </transition>902            </div>903          `,904          data: { ok: true }905        }).$mount(el)906        vm.ok = false907        waitForUpdate(() => {908          expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active')909        }).thenWaitFor(nextFrame).then(() => {910          expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to')911        }).thenWaitFor(duration + buffer).then(() => {912          expect(vm.$el.children.length).toBe(0)913          vm.ok = true914        }).then(() => {915          expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active')916        }).thenWaitFor(nextFrame).then(() => {917          expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to')918        }).thenWaitFor(explicitDuration + buffer).then(() => {919          expect(vm.$el.children[0].className).toBe('test')920        }).then(done)921      })922      it('leave and auto enter', done => {923        const vm = new Vue({924          template: `925            <div>926              <transition :duration="{ leave: ${explicitDuration} }">927                <div v-if="ok" class="test">foo</div>928              </transition>929            </div>930          `,931          data: { ok: true }932        }).$mount(el)933        vm.ok = false934        waitForUpdate(() => {935          expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active')936        }).thenWaitFor(nextFrame).then(() => {937          expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to')938        }).thenWaitFor(explicitDuration + buffer).then(() => {939          expect(vm.$el.children.length).toBe(0)940          vm.ok = true941        }).then(() => {942          expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active')943        }).thenWaitFor(nextFrame).then(() => {944          expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to')945        }).thenWaitFor(duration + buffer).then(() => {946          expect(vm.$el.children[0].className).toBe('test')947        }).then(done)948      })949      it('separate enter and leave', done => {950        const enter = explicitDuration951        const leave = explicitDuration * 2952        const vm = new Vue({953          template: `954            <div>955              <transition :duration="{ enter: ${enter}, leave: ${leave} }">956                <div v-if="ok" class="test">foo</div>957              </transition>958            </div>959          `,960          data: { ok: true }961        }).$mount(el)962        vm.ok = false963        waitForUpdate(() => {964          expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active')965        }).thenWaitFor(nextFrame).then(() => {966          expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to')967        }).thenWaitFor(leave + buffer).then(() => {968          expect(vm.$el.children.length).toBe(0)969          vm.ok = true970        }).then(() => {971          expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active')972        }).thenWaitFor(nextFrame).then(() => {973          expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to')974        }).thenWaitFor(enter + buffer).then(() => {975          expect(vm.$el.children[0].className).toBe('test')976        }).then(done)977      })978      it('enter and leave + duration change', done => {979        const enter1 = explicitDuration * 2980        const enter2 = explicitDuration981        const leave1 = explicitDuration * 0.5982        const leave2 = explicitDuration * 3983        const vm = new Vue({984          template: `985            <div>986              <transition :duration="{ enter: enter, leave: leave }">987                <div v-if="ok" class="test">foo</div>988              </transition>989            </div>990          `,991          data: {992            ok: true,993            enter: enter1,994            leave: leave1995          }996        }).$mount(el)997        vm.ok = false998        waitForUpdate(() => {999          expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active')1000        }).thenWaitFor(nextFrame).then(() => {1001          expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to')1002        }).thenWaitFor(leave1 + buffer).then(() => {1003          expect(vm.$el.children.length).toBe(0)1004          vm.ok = true1005        }).then(() => {1006          expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active')1007        }).thenWaitFor(nextFrame).then(() => {1008          expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to')1009        }).thenWaitFor(enter1 + buffer).then(() => {1010          expect(vm.$el.children[0].className).toBe('test')1011          vm.enter = enter21012          vm.leave = leave21013        }).then(() => {1014          vm.ok = false1015        }).then(() => {1016          expect(vm.$el.children[0].className).toBe('test v-leave v-leave-active')1017        }).thenWaitFor(nextFrame).then(() => {1018          expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to')1019        }).thenWaitFor(leave2 + buffer).then(() => {1020          expect(vm.$el.children.length).toBe(0)1021          vm.ok = true1022        }).then(() => {1023          expect(vm.$el.children[0].className).toBe('test v-enter v-enter-active')1024        }).thenWaitFor(nextFrame).then(() => {1025          expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to')1026        }).thenWaitFor(enter2 + buffer).then(() => {1027          expect(vm.$el.children[0].className).toBe('test')1028        }).then(done)1029      }, 10000)1030      it('warn invalid durations', done => {1031        const vm = new Vue({1032          template: `1033            <div>1034              <transition :duration="{ enter: NaN, leave: 'foo' }">1035                <div v-if="ok" class="test">foo</div>1036              </transition>1037            </div>1038          `,1039          data: {1040            ok: true1041          }1042        }).$mount(el)1043        vm.ok = false1044        waitForUpdate(() => {1045          expect(`<transition> explicit leave duration is not a valid number - got "foo"`).toHaveBeenWarned()1046        }).thenWaitFor(duration + buffer).then(() => {1047          vm.ok = true1048        }).then(() => {1049          expect(`<transition> explicit enter duration is NaN`).toHaveBeenWarned()1050        }).then(done)1051      })1052    })1053    // #66871054    it('transition on child components with empty root node', done => {1055      const vm = new Vue({1056        template: `1057          <div>1058            <transition mode="out-in">1059              <component class="test" :is="view"></component>1060            </transition>1061          </div>1062        `,1063        data: { view: 'one' },1064        components: {1065          'one': {1066            template: '<div v-if="false">one</div>'1067          },1068          'two': {1069            template: '<div>two</div>'1070          }1071        }1072      }).$mount(el)1073      // should not apply transition on initial render by default1074      expect(vm.$el.innerHTML).toBe('<!---->')1075      vm.view = 'two'1076      waitForUpdate(() => {1077        expect(vm.$el.innerHTML).toBe('<div class="test v-enter v-enter-active">two</div>')1078      }).thenWaitFor(nextFrame).then(() => {1079        expect(vm.$el.children[0].className).toBe('test v-enter-active v-enter-to')1080      }).thenWaitFor(duration + buffer).then(() => {1081        expect(vm.$el.children[0].className).toBe('test')1082        vm.view = 'one'1083      }).then(() => {1084        // incoming comment node is appended instantly because it doesn't have1085        // data and therefore doesn't go through the transition module.1086        expect(vm.$el.innerHTML).toBe('<div class="test v-leave v-leave-active">two</div><!---->')1087      }).thenWaitFor(nextFrame).then(() => {1088        expect(vm.$el.children[0].className).toBe('test v-leave-active v-leave-to')1089      }).thenWaitFor(duration + buffer).then(() => {1090        expect(vm.$el.innerHTML).toBe('<!---->')1091      }).then(done)1092    })1093  })...EmployeeLeaveSummaryMain.js
Source:EmployeeLeaveSummaryMain.js  
1Ext.define('Testl.testl.web.com.view.humanresourcecontext.attendance.EmployeeLeaveSummaryMain', {2     "extend": "Ext.tab.Panel",3     "customWidgetType": "vdTabLayout",4     "controller": "EmployeeLeaveSummaryMainController",5     "restURL": "/EmployeeLeaveSummary",6     "defaults": {7          "split": true8     },9     "requires": ["Testl.testl.web.com.controller.humanresourcecontext.attendance.EmployeeLeaveSummaryMainController", "Testl.testl.shared.com.model.humanresourcecontext.employee.EmpInformationModel", "Testl.testl.shared.com.viewmodel.humanresourcecontext.attendance.EmployeeLeaveSummaryViewModel"],10     "tabPosition": "bottom",11     "communicationLog": [],12     "itemId": "EmployeeLeaveSummaryFormGridContainer",13     "items": [{14          "title": "Data Browser",15          "layout": "border",16          "autoScroll": false,17          "customWidgetType": "vdBorderLayout",18          "items": [{19               "region": "center",20               "layout": "border",21               "customWidgetType": "vdBorderLayout",22               "items": [{23                    "customWidgetType": "vdFormpanel",24                    "viewModel": "EmployeeLeaveSummaryViewModel",25                    "xtype": "form",26                    "displayName": "Employee Leave Summary",27                    "title": "Employee Leave Summary",28                    "name": "EmployeeLeaveSummary",29                    "itemId": "EmployeeLeaveSummary",30                    "bodyPadding": 10,31                    "items": [{32                         "name": "empLeaveStatusId",33                         "itemId": "empLeaveStatusId",34                         "xtype": "textfield",35                         "customWidgetType": "vdTextfield",36                         "displayName": "attendenceId",37                         "margin": "5 5 5 5",38                         "fieldLabel": "attendenceId<font color='red'> *<\/font>",39                         "fieldId": "C08521AF-21F2-4FF0-B1F2-49EB49BDB9D6",40                         "minLength": "0",41                         "maxLength": "64",42                         "hidden": true,43                         "value": "",44                         "bindable": "empLeaveStatusId",45                         "bind": "{empLeaveStatusId}"46                    }, {47                         "name": "empId",48                         "itemId": "empId",49                         "xtype": "combo",50                         "customWidgetType": "vdCombo",51                         "displayName": "Employee",52                         "margin": "5 5 5 5",53                         "displayField": "primaryDisplay",54                         "valueField": "primaryKey",55                         "typeAhead": true,56                         "queryMode": "local",57                         "minChars": 2,58                         "store": {59                              "data": [],60                              "model": "Testl.testl.shared.com.model.humanresourcecontext.employee.EmpInformationModel"61                         },62                         "allowBlank": false,63                         "fieldLabel": "Employee<font color='red'> *<\/font>",64                         "fieldId": "9C5D4961-2F91-4612-BFE7-05DDC55105E0",65                         "restURL": "EmpInformation",66                         "bindable": "empId",67                         "bind": "{empId}"68                    }, {69                         "name": "privilege",70                         "itemId": "privilege",71                         "xtype": "numberfield",72                         "customWidgetType": "vdNumberfield",73                         "displayName": "Privilege Leave",74                         "margin": "5 5 5 5",75                         "fieldLabel": "Privilege Leave<font color='red'> *<\/font>",76                         "allowBlank": false,77                         "fieldId": "B384EB20-A834-4150-82C9-56C358CA8B92",78                         "minValue": "0",79                         "maxValue": "10",80                         "bindable": "privilege",81                         "bind": "{privilege}"82                    }, {83                         "name": "casualLeave",84                         "itemId": "casualLeave",85                         "xtype": "numberfield",86                         "customWidgetType": "vdNumberfield",87                         "displayName": "Casual Leave",88                         "margin": "5 5 5 5",89                         "fieldLabel": "Casual Leave<font color='red'> *<\/font>",90                         "allowBlank": false,91                         "fieldId": "CC6D0922-81BC-4D7F-B053-3FB79AF923C9",92                         "minValue": "0",93                         "maxValue": "10",94                         "bindable": "casualLeave",95                         "bind": "{casualLeave}"96                    }, {97                         "name": "sickLeave",98                         "itemId": "sickLeave",99                         "xtype": "numberfield",100                         "customWidgetType": "vdNumberfield",101                         "displayName": "Sick Leave",102                         "margin": "5 5 5 5",103                         "fieldLabel": "Sick Leave<font color='red'> *<\/font>",104                         "allowBlank": false,105                         "fieldId": "2679B9B3-38F3-4F86-B3EE-B63631F81D6D",106                         "minValue": "0",107                         "maxValue": "10",108                         "bindable": "sickLeave",109                         "bind": "{sickLeave}"110                    }, {111                         "name": "maternityLeave",112                         "itemId": "maternityLeave",113                         "xtype": "numberfield",114                         "customWidgetType": "vdNumberfield",115                         "displayName": "Maternity Leave",116                         "margin": "5 5 5 5",117                         "fieldLabel": "Maternity Leave<font color='red'> *<\/font>",118                         "allowBlank": false,119                         "fieldId": "C40A76D6-723E-4DA4-99AE-FCCBD485D29A",120                         "minValue": "0",121                         "maxValue": "10",122                         "bindable": "maternityLeave",123                         "bind": "{maternityLeave}"124                    }, {125                         "name": "privilegeTaken",126                         "itemId": "privilegeTaken",127                         "xtype": "numberfield",128                         "customWidgetType": "vdNumberfield",129                         "displayName": "Privilege Leave",130                         "margin": "5 5 5 5",131                         "fieldLabel": "Privilege Leave<font color='red'> *<\/font>",132                         "allowBlank": false,133                         "fieldId": "A1CF6CB7-AC47-4448-B7FC-CDD7AFB8C974",134                         "minValue": "0",135                         "maxValue": "10",136                         "bindable": "privilegeTaken",137                         "bind": "{privilegeTaken}"138                    }, {139                         "name": "casualLeaveTaken",140                         "itemId": "casualLeaveTaken",141                         "xtype": "numberfield",142                         "customWidgetType": "vdNumberfield",143                         "displayName": "Casual Leave",144                         "margin": "5 5 5 5",145                         "fieldLabel": "Casual Leave<font color='red'> *<\/font>",146                         "allowBlank": false,147                         "fieldId": "F5F84583-FFAB-4DEE-A8C4-342B86C83E04",148                         "minValue": "0",149                         "maxValue": "10",150                         "bindable": "casualLeaveTaken",151                         "bind": "{casualLeaveTaken}"152                    }, {153                         "name": "sickLeaveTaken",154                         "itemId": "sickLeaveTaken",155                         "xtype": "numberfield",156                         "customWidgetType": "vdNumberfield",157                         "displayName": "Sick Leave",158                         "margin": "5 5 5 5",159                         "fieldLabel": "Sick Leave<font color='red'> *<\/font>",160                         "allowBlank": false,161                         "fieldId": "8C5E32A7-5FD0-4423-9BF4-A5F55F1C6029",162                         "minValue": "0",163                         "maxValue": "10",164                         "bindable": "sickLeaveTaken",165                         "bind": "{sickLeaveTaken}"166                    }, {167                         "name": "maternityLeaveTaken",168                         "itemId": "maternityLeaveTaken",169                         "xtype": "numberfield",170                         "customWidgetType": "vdNumberfield",171                         "displayName": "Maternity Leave",172                         "margin": "5 5 5 5",173                         "fieldLabel": "Maternity Leave<font color='red'> *<\/font>",174                         "allowBlank": false,175                         "fieldId": "23B08B9F-8789-45DE-BB36-27212A0F231F",176                         "minValue": "0",177                         "maxValue": "10",178                         "bindable": "maternityLeaveTaken",179                         "bind": "{maternityLeaveTaken}"180                    }, {181                         "name": "year",182                         "itemId": "year",183                         "xtype": "numberfield",184                         "customWidgetType": "vdNumberfield",185                         "displayName": "Financial Year",186                         "margin": "5 5 5 5",187                         "fieldLabel": "Financial Year<font color='red'> *<\/font>",188                         "allowBlank": false,189                         "fieldId": "65774B6D-DC9D-4976-934F-7F0BD0FFB257",190                         "minValue": "0",191                         "maxValue": "10",192                         "bindable": "year",193                         "bind": "{year}"194                    }, {195                         "name": "lop",196                         "itemId": "lop",197                         "xtype": "numberfield",198                         "customWidgetType": "vdNumberfield",199                         "displayName": "Loss Of Pay",200                         "margin": "5 5 5 5",201                         "fieldLabel": "Loss Of Pay<font color='red'> *<\/font>",202                         "allowBlank": false,203                         "fieldId": "7FCCC59E-90DE-4546-BD69-03E115DBF7F0",204                         "minValue": "0",205                         "maxValue": "10",206                         "bindable": "lop",207                         "bind": "{lop}"208                    }, {209                         "name": "versionId",210                         "itemId": "versionId",211                         "xtype": "numberfield",212                         "customWidgetType": "vdNumberfield",213                         "displayName": "versionId",214                         "margin": "5 5 5 5",215                         "value": "-1",216                         "fieldLabel": "versionId",217                         "fieldId": "AC306F3F-162D-4620-BB9D-825DBE7B0BF1",218                         "bindable": "versionId",219                         "bind": "{versionId}",220                         "hidden": true221                    }],222                    "layout": "column",223                    "defaults": {224                         "columnWidth": 0.5,225                         "labelAlign": "left",226                         "labelWidth": 200227                    },228                    "autoScroll": true,229                    "dockedItems": [{230                         "xtype ": "toolbar",231                         "customWidgetType": "vdBBar",232                         "dock": "bottom",233                         "ui": "footer",234                         "isDockedItem": true,235                         "parentId": 1,236                         "customId": 210,237                         "items": [{238                              "xtype": "tbfill",239                              "customWidgetType": "vdTbFill",240                              "parentId": 210,241                              "customId": 874242                         }, {243                              "customWidgetType": "vdButton",244                              "xtype": "button",245                              "name": "saveFormButton",246                              "margin": "0 5 0 5",247                              "text": "Save",248                              "hiddenName": "button",249                              "canHaveParent": false,250                              "itemId": "saveFormButton",251                              "parentId": 210,252                              "customId": 875,253                              "listeners": {254                                   "click": "saveForm"255                              }256                         }, {257                              "customWidgetType": "vdButton",258                              "xtype": "button",259                              "name": "resetFormButton",260                              "margin": "0 5 0 5",261                              "text": "Reset",262                              "hiddenName": "button",263                              "canHaveParent": false,264                              "itemId": "resetFormButton",265                              "parentId": 210,266                              "customId": 876,267                              "listeners": {268                                   "click": "resetForm"269                              }270                         }],271                         "defaults": {}272                    }],273                    "listeners": {274                         "scope": "controller"275                    },276                    "tools": [{277                         "type": "help",278                         "tooltip": "Console",279                         "handler": "onConsoleClick"280                    }, {281                         "type": "refresh",282                         "tooltip": "Refresh Tab",283                         "handler": "init"284                    }],285                    "extend": "Ext.form.Panel",286                    "region": "center"287               }, {288                    "xtype": "panel",289                    "layout": "border",290                    "customWidgetType": "vdPanel",291                    "title": "Details Grid",292                    "columns": [{293                         "header": "attendenceId",294                         "dataIndex": "empLeaveStatusId",295                         "hidden": true,296                         "flex": 1297                    }, {298                         "header": "primaryDisplay",299                         "dataIndex": "primaryDisplay",300                         "hidden": true301                    }, {302                         "header": "primaryKey",303                         "dataIndex": "primaryKey",304                         "hidden": true305                    }, {306                         "header": "Employee",307                         "dataIndex": "empId",308                         "renderer": "renderFormValue",309                         "flex": 1310                    }, {311                         "header": "Privilege Leave",312                         "dataIndex": "privilege",313                         "flex": 1314                    }, {315                         "header": "Casual Leave",316                         "dataIndex": "casualLeave",317                         "flex": 1318                    }, {319                         "header": "Sick Leave",320                         "dataIndex": "sickLeave",321                         "flex": 1322                    }, {323                         "header": "Maternity Leave",324                         "dataIndex": "maternityLeave",325                         "flex": 1326                    }, {327                         "header": "Privilege Leave",328                         "dataIndex": "privilegeTaken",329                         "flex": 1330                    }, {331                         "header": "Casual Leave",332                         "dataIndex": "casualLeaveTaken",333                         "flex": 1334                    }, {335                         "header": "Sick Leave",336                         "dataIndex": "sickLeaveTaken",337                         "flex": 1338                    }, {339                         "header": "Maternity Leave",340                         "dataIndex": "maternityLeaveTaken",341                         "flex": 1342                    }, {343                         "header": "Financial Year",344                         "dataIndex": "year",345                         "flex": 1346                    }, {347                         "header": "Loss Of Pay",348                         "dataIndex": "lop",349                         "flex": 1350                    }, {351                         "header": "createdBy",352                         "dataIndex": "createdBy",353                         "hidden": true,354                         "flex": 1355                    }, {356                         "header": "createdDate",357                         "dataIndex": "createdDate",358                         "hidden": true,359                         "flex": 1360                    }, {361                         "header": "updatedBy",362                         "dataIndex": "updatedBy",363                         "hidden": true,364                         "flex": 1365                    }, {366                         "header": "updatedDate",367                         "dataIndex": "updatedDate",368                         "hidden": true,369                         "flex": 1370                    }, {371                         "header": "versionId",372                         "dataIndex": "versionId",373                         "hidden": true,374                         "flex": 1375                    }, {376                         "header": "activeStatus",377                         "dataIndex": "activeStatus",378                         "hidden": true,379                         "flex": 1380                    }, {381                         "header": "txnAccessCode",382                         "dataIndex": "txnAccessCode",383                         "hidden": true,384                         "flex": 1385                    }, {386                         "xtype": "actioncolumn",387                         "customWidgetType": "vdActionColumn",388                         "width": 30,389                         "sortable": false,390                         "menuDisable": true,391                         "items": [{392                              "icon": "images/delete.gif",393                              "tooltip": "Delete Record",394                              "handler": "onDeleteActionColumnClickMainGrid"395                         }]396                    }],397                    "items": [{398                         "xtype": "form",399                         "title": "Advance Search",400                         "region": "west",401                         "width": "20%",402                         "margin": "0 5 0 0",403                         "collapsible": true,404                         "collapsed": true,405                         "customWidgetType": "vdFormpanel",406                         "itemId": "queryPanel",407                         "dockedItems": [{408                              "xtype ": "toolbar",409                              "customWidgetType": "vdBBar",410                              "dock": "bottom",411                              "isDockedItem": true,412                              "items": [{413                                   "xtype": "tbfill",414                                   "customWidgetType": "vdTbFill"415                              }, {416                                   "xtype": "button",417                                   "customWidgetType": "vdButton",418                                   "text": "Filter",419                                   "name": "filterButton",420                                   "handler": "onFilterClick"421                              }]422                         }],423                         "items": [{424                              "name": "empId",425                              "itemId": "empId",426                              "xtype": "combo",427                              "customWidgetType": "vdCombo",428                              "displayName": "Employee",429                              "margin": "5 5 5 5",430                              "displayField": "primaryDisplay",431                              "valueField": "primaryKey",432                              "typeAhead": true,433                              "queryMode": "local",434                              "minChars": 2,435                              "store": {436                                   "data": [],437                                   "model": "Testl.testl.shared.com.model.humanresourcecontext.employee.EmpInformationModel"438                              },439                              "fieldLabel": "Employee",440                              "fieldId": "9C5D4961-2F91-4612-BFE7-05DDC55105E0",441                              "restURL": "EmpInformation",442                              "bindable": "empId"443                         }]444                    }, {445                         "region": "center",446                         "xtype": "gridpanel",447                         "customWidgetType": "vdGrid",448                         "displayName": "Employee Leave Summary",449                         "name": "EmployeeLeaveSummaryGrid",450                         "itemId": "EmployeeLeaveSummaryGrid",451                         "restURL": "/EmployeeLeaveSummary",452                         "store": [],453                         "bodyPadding": 10,454                         "dockedItems": [{455                              "xtype": "toolbar",456                              "dock": "top",457                              "items": [{458                                   "xtype": "triggerfield",459                                   "emptyText": "search",460                                   "triggerCls": "",461                                   "listeners": {462                                        "change": "onTriggerfieldChange",463                                        "buffer": 250464                                   }465                              }]466                         }],467                         "columns": [{468                              "header": "attendenceId",469                              "dataIndex": "empLeaveStatusId",470                              "hidden": true,471                              "flex": 1472                         }, {473                              "header": "primaryDisplay",474                              "dataIndex": "primaryDisplay",475                              "hidden": true476                         }, {477                              "header": "primaryKey",478                              "dataIndex": "primaryKey",479                              "hidden": true480                         }, {481                              "header": "Employee",482                              "dataIndex": "empId",483                              "renderer": "renderFormValue",484                              "flex": 1485                         }, {486                              "header": "Privilege Leave",487                              "dataIndex": "privilege",488                              "flex": 1489                         }, {490                              "header": "Casual Leave",491                              "dataIndex": "casualLeave",492                              "flex": 1493                         }, {494                              "header": "Sick Leave",495                              "dataIndex": "sickLeave",496                              "flex": 1497                         }, {498                              "header": "Maternity Leave",499                              "dataIndex": "maternityLeave",500                              "flex": 1501                         }, {502                              "header": "Privilege Leave",503                              "dataIndex": "privilegeTaken",504                              "flex": 1505                         }, {506                              "header": "Casual Leave",507                              "dataIndex": "casualLeaveTaken",508                              "flex": 1509                         }, {510                              "header": "Sick Leave",511                              "dataIndex": "sickLeaveTaken",512                              "flex": 1513                         }, {514                              "header": "Maternity Leave",515                              "dataIndex": "maternityLeaveTaken",516                              "flex": 1517                         }, {518                              "header": "Financial Year",519                              "dataIndex": "year",520                              "flex": 1521                         }, {522                              "header": "Loss Of Pay",523                              "dataIndex": "lop",524                              "flex": 1525                         }, {526                              "header": "createdBy",527                              "dataIndex": "createdBy",528                              "hidden": true,529                              "flex": 1530                         }, {531                              "header": "createdDate",532                              "dataIndex": "createdDate",533                              "hidden": true,534                              "flex": 1535                         }, {536                              "header": "updatedBy",537                              "dataIndex": "updatedBy",538                              "hidden": true,539                              "flex": 1540                         }, {541                              "header": "updatedDate",542                              "dataIndex": "updatedDate",543                              "hidden": true,544                              "flex": 1545                         }, {546                              "header": "versionId",547                              "dataIndex": "versionId",548                              "hidden": true,549                              "flex": 1550                         }, {551                              "header": "activeStatus",552                              "dataIndex": "activeStatus",553                              "hidden": true,554                              "flex": 1555                         }, {556                              "header": "txnAccessCode",557                              "dataIndex": "txnAccessCode",558                              "hidden": true,559                              "flex": 1560                         }, {561                              "xtype": "actioncolumn",562                              "customWidgetType": "vdActionColumn",563                              "width": 30,564                              "sortable": false,565                              "menuDisable": true,566                              "items": [{567                                   "icon": "images/delete.gif",568                                   "tooltip": "Delete Record",569                                   "handler": "onDeleteActionColumnClickMainGrid"570                              }]571                         }],572                         "listeners": {573                              "itemclick": "onGridItemClick"574                         }575                    }],576                    "tools": [{577                         "type": "refresh",578                         "tooltip": "Refresh Grid Data",579                         "handler": "onGridRefreshClick"580                    }],581                    "collapsible": true,582                    "titleCollapse": true,583                    "collapseMode": "header",584                    "region": "south",585                    "height": "40%"586               }]587          }]588     }, {589          "title": "Add New",590          "itemId": "addNewForm",591          "layout": "border",592          "customWidgetType": "vdBorderLayout",593          "autoScroll": false,594          "items": [{595               "customWidgetType": "vdFormpanel",596               "viewModel": "EmployeeLeaveSummaryViewModel",597               "xtype": "form",598               "displayName": "Employee Leave Summary",599               "title": "Employee Leave Summary",600               "name": "EmployeeLeaveSummary",601               "itemId": "EmployeeLeaveSummary",602               "bodyPadding": 10,603               "items": [{604                    "name": "empLeaveStatusId",605                    "itemId": "empLeaveStatusId",606                    "xtype": "textfield",607                    "customWidgetType": "vdTextfield",608                    "displayName": "attendenceId",609                    "margin": "5 5 5 5",610                    "fieldLabel": "attendenceId<font color='red'> *<\/font>",611                    "fieldId": "C08521AF-21F2-4FF0-B1F2-49EB49BDB9D6",612                    "minLength": "0",613                    "maxLength": "64",614                    "hidden": true,615                    "value": "",616                    "bindable": "empLeaveStatusId",617                    "bind": "{empLeaveStatusId}"618               }, {619                    "name": "empId",620                    "itemId": "empId",621                    "xtype": "combo",622                    "customWidgetType": "vdCombo",623                    "displayName": "Employee",624                    "margin": "5 5 5 5",625                    "displayField": "primaryDisplay",626                    "valueField": "primaryKey",627                    "typeAhead": true,628                    "queryMode": "local",629                    "minChars": 2,630                    "store": {631                         "data": [],632                         "model": "Testl.testl.shared.com.model.humanresourcecontext.employee.EmpInformationModel"633                    },634                    "allowBlank": false,635                    "fieldLabel": "Employee<font color='red'> *<\/font>",636                    "fieldId": "9C5D4961-2F91-4612-BFE7-05DDC55105E0",637                    "restURL": "EmpInformation",638                    "bindable": "empId",639                    "bind": "{empId}"640               }, {641                    "name": "privilege",642                    "itemId": "privilege",643                    "xtype": "numberfield",644                    "customWidgetType": "vdNumberfield",645                    "displayName": "Privilege Leave",646                    "margin": "5 5 5 5",647                    "fieldLabel": "Privilege Leave<font color='red'> *<\/font>",648                    "allowBlank": false,649                    "fieldId": "B384EB20-A834-4150-82C9-56C358CA8B92",650                    "minValue": "0",651                    "maxValue": "10",652                    "bindable": "privilege",653                    "bind": "{privilege}"654               }, {655                    "name": "casualLeave",656                    "itemId": "casualLeave",657                    "xtype": "numberfield",658                    "customWidgetType": "vdNumberfield",659                    "displayName": "Casual Leave",660                    "margin": "5 5 5 5",661                    "fieldLabel": "Casual Leave<font color='red'> *<\/font>",662                    "allowBlank": false,663                    "fieldId": "CC6D0922-81BC-4D7F-B053-3FB79AF923C9",664                    "minValue": "0",665                    "maxValue": "10",666                    "bindable": "casualLeave",667                    "bind": "{casualLeave}"668               }, {669                    "name": "sickLeave",670                    "itemId": "sickLeave",671                    "xtype": "numberfield",672                    "customWidgetType": "vdNumberfield",673                    "displayName": "Sick Leave",674                    "margin": "5 5 5 5",675                    "fieldLabel": "Sick Leave<font color='red'> *<\/font>",676                    "allowBlank": false,677                    "fieldId": "2679B9B3-38F3-4F86-B3EE-B63631F81D6D",678                    "minValue": "0",679                    "maxValue": "10",680                    "bindable": "sickLeave",681                    "bind": "{sickLeave}"682               }, {683                    "name": "maternityLeave",684                    "itemId": "maternityLeave",685                    "xtype": "numberfield",686                    "customWidgetType": "vdNumberfield",687                    "displayName": "Maternity Leave",688                    "margin": "5 5 5 5",689                    "fieldLabel": "Maternity Leave<font color='red'> *<\/font>",690                    "allowBlank": false,691                    "fieldId": "C40A76D6-723E-4DA4-99AE-FCCBD485D29A",692                    "minValue": "0",693                    "maxValue": "10",694                    "bindable": "maternityLeave",695                    "bind": "{maternityLeave}"696               }, {697                    "name": "privilegeTaken",698                    "itemId": "privilegeTaken",699                    "xtype": "numberfield",700                    "customWidgetType": "vdNumberfield",701                    "displayName": "Privilege Leave",702                    "margin": "5 5 5 5",703                    "fieldLabel": "Privilege Leave<font color='red'> *<\/font>",704                    "allowBlank": false,705                    "fieldId": "A1CF6CB7-AC47-4448-B7FC-CDD7AFB8C974",706                    "minValue": "0",707                    "maxValue": "10",708                    "bindable": "privilegeTaken",709                    "bind": "{privilegeTaken}"710               }, {711                    "name": "casualLeaveTaken",712                    "itemId": "casualLeaveTaken",713                    "xtype": "numberfield",714                    "customWidgetType": "vdNumberfield",715                    "displayName": "Casual Leave",716                    "margin": "5 5 5 5",717                    "fieldLabel": "Casual Leave<font color='red'> *<\/font>",718                    "allowBlank": false,719                    "fieldId": "F5F84583-FFAB-4DEE-A8C4-342B86C83E04",720                    "minValue": "0",721                    "maxValue": "10",722                    "bindable": "casualLeaveTaken",723                    "bind": "{casualLeaveTaken}"724               }, {725                    "name": "sickLeaveTaken",726                    "itemId": "sickLeaveTaken",727                    "xtype": "numberfield",728                    "customWidgetType": "vdNumberfield",729                    "displayName": "Sick Leave",730                    "margin": "5 5 5 5",731                    "fieldLabel": "Sick Leave<font color='red'> *<\/font>",732                    "allowBlank": false,733                    "fieldId": "8C5E32A7-5FD0-4423-9BF4-A5F55F1C6029",734                    "minValue": "0",735                    "maxValue": "10",736                    "bindable": "sickLeaveTaken",737                    "bind": "{sickLeaveTaken}"738               }, {739                    "name": "maternityLeaveTaken",740                    "itemId": "maternityLeaveTaken",741                    "xtype": "numberfield",742                    "customWidgetType": "vdNumberfield",743                    "displayName": "Maternity Leave",744                    "margin": "5 5 5 5",745                    "fieldLabel": "Maternity Leave<font color='red'> *<\/font>",746                    "allowBlank": false,747                    "fieldId": "23B08B9F-8789-45DE-BB36-27212A0F231F",748                    "minValue": "0",749                    "maxValue": "10",750                    "bindable": "maternityLeaveTaken",751                    "bind": "{maternityLeaveTaken}"752               }, {753                    "name": "year",754                    "itemId": "year",755                    "xtype": "numberfield",756                    "customWidgetType": "vdNumberfield",757                    "displayName": "Financial Year",758                    "margin": "5 5 5 5",759                    "fieldLabel": "Financial Year<font color='red'> *<\/font>",760                    "allowBlank": false,761                    "fieldId": "65774B6D-DC9D-4976-934F-7F0BD0FFB257",762                    "minValue": "0",763                    "maxValue": "10",764                    "bindable": "year",765                    "bind": "{year}"766               }, {767                    "name": "lop",768                    "itemId": "lop",769                    "xtype": "numberfield",770                    "customWidgetType": "vdNumberfield",771                    "displayName": "Loss Of Pay",772                    "margin": "5 5 5 5",773                    "fieldLabel": "Loss Of Pay<font color='red'> *<\/font>",774                    "allowBlank": false,775                    "fieldId": "7FCCC59E-90DE-4546-BD69-03E115DBF7F0",776                    "minValue": "0",777                    "maxValue": "10",778                    "bindable": "lop",779                    "bind": "{lop}"780               }, {781                    "name": "versionId",782                    "itemId": "versionId",783                    "xtype": "numberfield",784                    "customWidgetType": "vdNumberfield",785                    "displayName": "versionId",786                    "margin": "5 5 5 5",787                    "value": "-1",788                    "fieldLabel": "versionId",789                    "fieldId": "AC306F3F-162D-4620-BB9D-825DBE7B0BF1",790                    "bindable": "versionId",791                    "bind": "{versionId}",792                    "hidden": true793               }],794               "layout": "column",795               "defaults": {796                    "columnWidth": 0.5,797                    "labelAlign": "left",798                    "labelWidth": 200799               },800               "autoScroll": true,801               "dockedItems": [{802                    "xtype ": "toolbar",803                    "customWidgetType": "vdBBar",804                    "dock": "bottom",805                    "ui": "footer",806                    "isDockedItem": true,807                    "parentId": 1,808                    "customId": 210,809                    "items": [{810                         "xtype": "tbfill",811                         "customWidgetType": "vdTbFill",812                         "parentId": 210,813                         "customId": 874814                    }, {815                         "customWidgetType": "vdButton",816                         "xtype": "button",817                         "name": "saveFormButton",818                         "margin": "0 5 0 5",819                         "text": "Save",820                         "hiddenName": "button",821                         "canHaveParent": false,822                         "itemId": "saveFormButton",823                         "parentId": 210,824                         "customId": 875,825                         "listeners": {826                              "click": "saveForm"827                         }828                    }, {829                         "customWidgetType": "vdButton",830                         "xtype": "button",831                         "name": "resetFormButton",832                         "margin": "0 5 0 5",833                         "text": "Reset",834                         "hiddenName": "button",835                         "canHaveParent": false,836                         "itemId": "resetFormButton",837                         "parentId": 210,838                         "customId": 876,839                         "listeners": {840                              "click": "resetForm"841                         }842                    }],843                    "defaults": {}844               }],845               "listeners": {846                    "scope": "controller"847               },848               "tools": [{849                    "type": "help",850                    "tooltip": "Console",851                    "handler": "onConsoleClick"852               }, {853                    "type": "refresh",854                    "tooltip": "Refresh Tab",855                    "handler": "init"856               }],857               "extend": "Ext.form.Panel",858               "region": "center"859          }]860     }]...LeaveAllocationMain.js
Source:LeaveAllocationMain.js  
1Ext.define('Testl.testl.web.com.view.humanresourcecontext.attendance.LeaveAllocationMain', {2     "extend": "Ext.tab.Panel",3     "customWidgetType": "vdTabLayout",4     "autoScroll": false,5     "controller": "LeaveAllocationMainController",6     "restURL": "/LeaveAllocation",7     "defaults": {8          "split": true9     },10     "requires": ["Testl.testl.shared.com.model.humanresourcecontext.attendance.LeaveAllocationModel", "Testl.testl.web.com.controller.humanresourcecontext.attendance.LeaveAllocationMainController", "Testl.testl.shared.com.viewmodel.humanresourcecontext.attendance.LeaveAllocationViewModel"],11     "communicationLog": [],12     "tabPosition": "bottom",13     "items": [{14          "title": "Data Browser",15          "layout": "border",16          "defaults": {17               "split": true18          },19          "autoScroll": false,20          "customWidgetType": "vdBorderLayout",21          "items": [{22               "xtype": "tabpanel",23               "customWidgetType": "vdTabLayout",24               "margin": "5 0 5 5",25               "border": 1,26               "style": {27                    "borderColor": "#f6f6f6",28                    "borderStyle": "solid",29                    "borderWidth": "1px"30               },31               "displayName": "Leave Allocation",32               "name": "LeaveAllocationTreeContainer",33               "itemId": "LeaveAllocationTreeContainer",34               "restURL": "/LeaveAllocation",35               "autoScroll": false,36               "collapsible": true,37               "titleCollapse": true,38               "collapseMode": "header",39               "collapsed": false,40               "items": [{41                    "xtype": "treepanel",42                    "customWidgetType": "vdTree",43                    "title": "Browse",44                    "name": "entityTreePanel",45                    "useArrows": true,46                    "rootVisible": false,47                    "itemId": "LeaveAllocationTree",48                    "listeners": {49                         "select": "treeClick"50                    },51                    "tbar": [{52                         "xtype": "triggerfield",53                         "customWidgetType": "vdTriggerField",54                         "emptyText": "Search",55                         "triggerCls": "",56                         "listeners": {57                              "change": "onTriggerfieldChange",58                              "buffer": 25059                         }60                    }, "->", {61                         "xtype": "tool",62                         "type": "refresh",63                         "tooltip": "Refresh Tree Data",64                         "handler": "onTreeRefreshClick"65                    }]66               }, {67                    "title": "Advance Search",68                    "xtype": "form",69                    "customWidgetType": "vdFormpanel",70                    "itemId": "queryPanel",71                    "dockedItems": [{72                         "xtype ": "toolbar",73                         "customWidgetType": "vdBBar",74                         "dock": "bottom",75                         "isDockedItem": true,76                         "items": [{77                              "xtype": "tbfill",78                              "customWidgetType": "vdTbFill"79                         }, {80                              "xtype": "button",81                              "customWidgetType": "vdButton",82                              "text": "Filter",83                              "name": "filterButton",84                              "handler": "onFilterClick"85                         }]86                    }],87                    "items": []88               }],89               "region": "west",90               "width": "20%"91          }, {92               "region": "center",93               "layout": "border",94               "defaults": {95                    "split": true96               },97               "customWidgetType": "vdBorderLayout",98               "items": [{99                    "customWidgetType": "vdFormpanel",100                    "viewModel": "LeaveAllocationViewModel",101                    "xtype": "form",102                    "displayName": "Leave Allocation",103                    "title": "Leave Allocation",104                    "name": "LeaveAllocation",105                    "itemId": "LeaveAllocation",106                    "bodyPadding": 10,107                    "items": [{108                         "name": "leaveCategoryId",109                         "itemId": "leaveCategoryId",110                         "xtype": "textfield",111                         "customWidgetType": "vdTextfield",112                         "displayName": "leaveCategoryId",113                         "margin": "5 5 5 5",114                         "fieldLabel": "leaveCategoryId<font color='red'> *<\/font>",115                         "fieldId": "F4E94CAB-A7C4-4FE6-A959-0BB395300DF1",116                         "minLength": "0",117                         "maxLength": "64",118                         "hidden": true,119                         "value": "",120                         "bindable": "leaveCategoryId",121                         "bind": "{leaveCategoryId}"122                    }, {123                         "name": "privilege",124                         "itemId": "privilege",125                         "xtype": "numberfield",126                         "customWidgetType": "vdNumberfield",127                         "displayName": "Privilege Leave",128                         "margin": "5 5 5 5",129                         "fieldLabel": "Privilege Leave<font color='red'> *<\/font>",130                         "allowBlank": false,131                         "fieldId": "5F0F3B9A-C762-4CE3-829B-7B7FEDC9E9F0",132                         "minValue": "0",133                         "maxValue": "10",134                         "bindable": "privilege",135                         "bind": "{privilege}",136                         "columnWidth": 0.5137                    }, {138                         "name": "casualLeave",139                         "itemId": "casualLeave",140                         "xtype": "numberfield",141                         "customWidgetType": "vdNumberfield",142                         "displayName": "Casual Leave",143                         "margin": "5 5 5 5",144                         "fieldLabel": "Casual Leave<font color='red'> *<\/font>",145                         "allowBlank": false,146                         "fieldId": "FD61CA95-724C-4081-BAB1-60383FF2295E",147                         "minValue": "0",148                         "maxValue": "10",149                         "bindable": "casualLeave",150                         "bind": "{casualLeave}",151                         "columnWidth": 0.5152                    }, {153                         "name": "sickLeave",154                         "itemId": "sickLeave",155                         "xtype": "numberfield",156                         "customWidgetType": "vdNumberfield",157                         "displayName": "Sick Leave",158                         "margin": "5 5 5 5",159                         "fieldLabel": "Sick Leave<font color='red'> *<\/font>",160                         "allowBlank": false,161                         "fieldId": "F3B8ED07-8A1C-4711-B16B-BBD09D052CEC",162                         "minValue": "0",163                         "maxValue": "10",164                         "bindable": "sickLeave",165                         "bind": "{sickLeave}",166                         "columnWidth": 0.5167                    }, {168                         "name": "maternityLeave",169                         "itemId": "maternityLeave",170                         "xtype": "numberfield",171                         "customWidgetType": "vdNumberfield",172                         "displayName": "Maternity Leave",173                         "margin": "5 5 5 5",174                         "fieldLabel": "Maternity Leave<font color='red'> *<\/font>",175                         "allowBlank": false,176                         "fieldId": "EA153D1A-8041-43D2-8D21-BC0961E40827",177                         "minValue": "0",178                         "maxValue": "10",179                         "bindable": "maternityLeave",180                         "bind": "{maternityLeave}",181                         "columnWidth": 0.5182                    }, {183                         "name": "year",184                         "itemId": "year",185                         "xtype": "numberfield",186                         "customWidgetType": "vdNumberfield",187                         "displayName": "Financial Year",188                         "margin": "5 5 5 5",189                         "fieldLabel": "Financial Year<font color='red'> *<\/font>",190                         "allowBlank": false,191                         "fieldId": "1DEB1387-F906-427F-82BE-A5C3572E5BD3",192                         "minValue": "0",193                         "maxValue": "10",194                         "bindable": "year",195                         "bind": "{year}",196                         "columnWidth": 0.5197                    }, {198                         "name": "versionId",199                         "itemId": "versionId",200                         "xtype": "numberfield",201                         "customWidgetType": "vdNumberfield",202                         "displayName": "versionId",203                         "margin": "5 5 5 5",204                         "value": "-1",205                         "fieldLabel": "versionId",206                         "fieldId": "0E023E43-517A-42DC-A877-86A6FD461EA5",207                         "bindable": "versionId",208                         "bind": "{versionId}",209                         "hidden": true210                    }],211                    "layout": "column",212                    "defaults": {213                         "columnWidth": 0.5,214                         "labelAlign": "left",215                         "labelWidth": 200216                    },217                    "autoScroll": true,218                    "dockedItems": [{219                         "xtype ": "toolbar",220                         "customWidgetType": "vdBBar",221                         "dock": "bottom",222                         "ui": "footer",223                         "isDockedItem": true,224                         "parentId": 1,225                         "customId": 670,226                         "items": [{227                              "xtype": "tbfill",228                              "customWidgetType": "vdTbFill",229                              "parentId": 670,230                              "customId": 758231                         }, {232                              "customWidgetType": "vdButton",233                              "xtype": "button",234                              "name": "saveFormButton",235                              "margin": "0 5 0 5",236                              "text": "Save",237                              "hiddenName": "button",238                              "canHaveParent": false,239                              "itemId": "saveFormButton",240                              "parentId": 670,241                              "customId": 759,242                              "listeners": {243                                   "click": "saveForm"244                              }245                         }, {246                              "customWidgetType": "vdButton",247                              "xtype": "button",248                              "name": "resetFormButton",249                              "margin": "0 5 0 5",250                              "text": "Reset",251                              "hiddenName": "button",252                              "canHaveParent": false,253                              "itemId": "resetFormButton",254                              "parentId": 670,255                              "customId": 760,256                              "listeners": {257                                   "click": "resetForm"258                              }259                         }],260                         "defaults": {}261                    }],262                    "listeners": {263                         "scope": "controller"264                    },265                    "tools": [{266                         "type": "help",267                         "tooltip": "Console",268                         "handler": "onConsoleClick"269                    }, {270                         "type": "refresh",271                         "tooltip": "Refresh Tab",272                         "handler": "init"273                    }],274                    "extend": "Ext.form.Panel",275                    "region": "center"276               }, {277                    "xtype": "gridpanel",278                    "customWidgetType": "vdGrid",279                    "displayName": "Leave Allocation",280                    "title": "Details Grid",281                    "name": "LeaveAllocationGrid",282                    "itemId": "LeaveAllocationGrid",283                    "restURL": "/LeaveAllocation",284                    "store": [],285                    "bodyPadding": 10,286                    "columns": [{287                         "header": "leaveCategoryId",288                         "dataIndex": "leaveCategoryId",289                         "hidden": true,290                         "flex": 1291                    }, {292                         "header": "primaryDisplay",293                         "dataIndex": "primaryDisplay",294                         "hidden": true295                    }, {296                         "header": "primaryKey",297                         "dataIndex": "primaryKey",298                         "hidden": true299                    }, {300                         "header": "Privilege Leave",301                         "dataIndex": "privilege",302                         "flex": 1303                    }, {304                         "header": "Casual Leave",305                         "dataIndex": "casualLeave",306                         "flex": 1307                    }, {308                         "header": "Sick Leave",309                         "dataIndex": "sickLeave",310                         "flex": 1311                    }, {312                         "header": "Maternity Leave",313                         "dataIndex": "maternityLeave",314                         "flex": 1315                    }, {316                         "header": "Financial Year",317                         "dataIndex": "year",318                         "flex": 1319                    }, {320                         "header": "createdBy",321                         "dataIndex": "createdBy",322                         "hidden": true,323                         "flex": 1324                    }, {325                         "header": "createdDate",326                         "dataIndex": "createdDate",327                         "hidden": true,328                         "flex": 1329                    }, {330                         "header": "updatedBy",331                         "dataIndex": "updatedBy",332                         "hidden": true,333                         "flex": 1334                    }, {335                         "header": "updatedDate",336                         "dataIndex": "updatedDate",337                         "hidden": true,338                         "flex": 1339                    }, {340                         "header": "versionId",341                         "dataIndex": "versionId",342                         "hidden": true,343                         "flex": 1344                    }, {345                         "header": "activeStatus",346                         "dataIndex": "activeStatus",347                         "hidden": true,348                         "flex": 1349                    }, {350                         "header": "txnAccessCode",351                         "dataIndex": "txnAccessCode",352                         "hidden": true,353                         "flex": 1354                    }, {355                         "xtype": "actioncolumn",356                         "customWidgetType": "vdActionColumn",357                         "width": 30,358                         "sortable": false,359                         "menuDisable": true,360                         "items": [{361                              "icon": "images/delete.gif",362                              "tooltip": "Delete Record",363                              "handler": "onDeleteActionColumnClickMainGrid"364                         }]365                    }],366                    "listeners": {367                         "itemclick": "onGridItemClick"368                    },369                    "tools": [{370                         "type": "refresh",371                         "tooltip": "Refresh Grid Data",372                         "handler": "onGridRefreshClick"373                    }],374                    "collapsible": true,375                    "titleCollapse": true,376                    "collapseMode": "header",377                    "region": "south",378                    "height": "40%"379               }]380          }]381     }, {382          "title": "Add New",383          "itemId": "addNewForm",384          "layout": "border",385          "customWidgetType": "vdBorderLayout",386          "autoScroll": false,387          "items": [{388               "customWidgetType": "vdFormpanel",389               "viewModel": "LeaveAllocationViewModel",390               "xtype": "form",391               "displayName": "Leave Allocation",392               "title": "Leave Allocation",393               "name": "LeaveAllocation",394               "itemId": "LeaveAllocation",395               "bodyPadding": 10,396               "items": [{397                    "name": "leaveCategoryId",398                    "itemId": "leaveCategoryId",399                    "xtype": "textfield",400                    "customWidgetType": "vdTextfield",401                    "displayName": "leaveCategoryId",402                    "margin": "5 5 5 5",403                    "fieldLabel": "leaveCategoryId<font color='red'> *<\/font>",404                    "fieldId": "F4E94CAB-A7C4-4FE6-A959-0BB395300DF1",405                    "minLength": "0",406                    "maxLength": "64",407                    "hidden": true,408                    "value": "",409                    "bindable": "leaveCategoryId",410                    "bind": "{leaveCategoryId}"411               }, {412                    "name": "privilege",413                    "itemId": "privilege",414                    "xtype": "numberfield",415                    "customWidgetType": "vdNumberfield",416                    "displayName": "Privilege Leave",417                    "margin": "5 5 5 5",418                    "fieldLabel": "Privilege Leave<font color='red'> *<\/font>",419                    "allowBlank": false,420                    "fieldId": "5F0F3B9A-C762-4CE3-829B-7B7FEDC9E9F0",421                    "minValue": "0",422                    "maxValue": "10",423                    "bindable": "privilege",424                    "bind": "{privilege}",425                    "columnWidth": 0.5426               }, {427                    "name": "casualLeave",428                    "itemId": "casualLeave",429                    "xtype": "numberfield",430                    "customWidgetType": "vdNumberfield",431                    "displayName": "Casual Leave",432                    "margin": "5 5 5 5",433                    "fieldLabel": "Casual Leave<font color='red'> *<\/font>",434                    "allowBlank": false,435                    "fieldId": "FD61CA95-724C-4081-BAB1-60383FF2295E",436                    "minValue": "0",437                    "maxValue": "10",438                    "bindable": "casualLeave",439                    "bind": "{casualLeave}",440                    "columnWidth": 0.5441               }, {442                    "name": "sickLeave",443                    "itemId": "sickLeave",444                    "xtype": "numberfield",445                    "customWidgetType": "vdNumberfield",446                    "displayName": "Sick Leave",447                    "margin": "5 5 5 5",448                    "fieldLabel": "Sick Leave<font color='red'> *<\/font>",449                    "allowBlank": false,450                    "fieldId": "F3B8ED07-8A1C-4711-B16B-BBD09D052CEC",451                    "minValue": "0",452                    "maxValue": "10",453                    "bindable": "sickLeave",454                    "bind": "{sickLeave}",455                    "columnWidth": 0.5456               }, {457                    "name": "maternityLeave",458                    "itemId": "maternityLeave",459                    "xtype": "numberfield",460                    "customWidgetType": "vdNumberfield",461                    "displayName": "Maternity Leave",462                    "margin": "5 5 5 5",463                    "fieldLabel": "Maternity Leave<font color='red'> *<\/font>",464                    "allowBlank": false,465                    "fieldId": "EA153D1A-8041-43D2-8D21-BC0961E40827",466                    "minValue": "0",467                    "maxValue": "10",468                    "bindable": "maternityLeave",469                    "bind": "{maternityLeave}",470                    "columnWidth": 0.5471               }, {472                    "name": "year",473                    "itemId": "year",474                    "xtype": "numberfield",475                    "customWidgetType": "vdNumberfield",476                    "displayName": "Financial Year",477                    "margin": "5 5 5 5",478                    "fieldLabel": "Financial Year<font color='red'> *<\/font>",479                    "allowBlank": false,480                    "fieldId": "1DEB1387-F906-427F-82BE-A5C3572E5BD3",481                    "minValue": "0",482                    "maxValue": "10",483                    "bindable": "year",484                    "bind": "{year}",485                    "columnWidth": 0.5486               }, {487                    "name": "versionId",488                    "itemId": "versionId",489                    "xtype": "numberfield",490                    "customWidgetType": "vdNumberfield",491                    "displayName": "versionId",492                    "margin": "5 5 5 5",493                    "value": "-1",494                    "fieldLabel": "versionId",495                    "fieldId": "0E023E43-517A-42DC-A877-86A6FD461EA5",496                    "bindable": "versionId",497                    "bind": "{versionId}",498                    "hidden": true499               }],500               "layout": "column",501               "defaults": {502                    "columnWidth": 0.5,503                    "labelAlign": "left",504                    "labelWidth": 200505               },506               "autoScroll": true,507               "dockedItems": [{508                    "xtype ": "toolbar",509                    "customWidgetType": "vdBBar",510                    "dock": "bottom",511                    "ui": "footer",512                    "isDockedItem": true,513                    "parentId": 1,514                    "customId": 670,515                    "items": [{516                         "xtype": "tbfill",517                         "customWidgetType": "vdTbFill",518                         "parentId": 670,519                         "customId": 758520                    }, {521                         "customWidgetType": "vdButton",522                         "xtype": "button",523                         "name": "saveFormButton",524                         "margin": "0 5 0 5",525                         "text": "Save",526                         "hiddenName": "button",527                         "canHaveParent": false,528                         "itemId": "saveFormButton",529                         "parentId": 670,530                         "customId": 759,531                         "listeners": {532                              "click": "saveForm"533                         }534                    }, {535                         "customWidgetType": "vdButton",536                         "xtype": "button",537                         "name": "resetFormButton",538                         "margin": "0 5 0 5",539                         "text": "Reset",540                         "hiddenName": "button",541                         "canHaveParent": false,542                         "itemId": "resetFormButton",543                         "parentId": 670,544                         "customId": 760,545                         "listeners": {546                              "click": "resetForm"547                         }548                    }],549                    "defaults": {}550               }],551               "listeners": {552                    "scope": "controller"553               },554               "tools": [{555                    "type": "help",556                    "tooltip": "Console",557                    "handler": "onConsoleClick"558               }, {559                    "type": "refresh",560                    "tooltip": "Refresh Tab",561                    "handler": "init"562               }],563               "extend": "Ext.form.Panel",564               "region": "center"565          }]566     }]...leave.js
Source:leave.js  
1(function($) {2    $(document).ready(function() {3        //alert("enter to leave.js");4        let employee_id = $("input[name=employee_id]").val();5        //alert('/employee/LeaveRequestTable/' + employee_id);6        //alert(employee_id);7        /**8         * Admin Leave Type9         */10        var tableLoadLeaveType = $('#leaveTypeDT').DataTable({11            ajax: '/admin/LeaveTypeTable',12            columns: [13                { "data": "id" },14                { "data": "leavetype" },15                { "data": "limit" },16                { "data": "percalendar" },17                {18                    "data": null,19                    render: function(data, type, row) {20                        return [`<a id="editLeaveTypeModal" class="btn btn-sm btn-success" data-id="${row.id}"><i class="fa fa-edit" aria-hidden="true" data-toggle="modal" href="#"></i></a>`, `<a class="btn btn-sm btn-danger" data-id="${row.id}" id="deleteLeaveTypeModal"><i class="fa fa-times" aria-hidden="true" data-toggle="modal" href="#" ></i></a>`];21                    }22                }23            ]24        });25        $(document).on('click', '#addLeaveType', function(e) {26            e.preventDefault();27            let leave_type = $("input[name=leave_type]").val();28            let percalender = $('#percalender').val();29            let total_leave_days = $("input[name=total_leave_days]").val();30            $.ajaxSetup({31                headers: {32                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')33                }34            });35            $.ajax({36                url: '/admin/add-leaveType',37                method: 'POST',38                data: {39                    'leave_type': leave_type,40                    'percalender': percalender,41                    'total_leave_days': total_leave_days42                },43                dataType: "json",44                success: function(response) {45                    $('#add_LeaveType_modal').modal('hide');46                    tableLoadLeaveType.ajax.reload();47                    //alert(data.id);48                },49                error: function(response) {50                    alert('error');51                    console.log(response);52                }53            });54        });55        //Admin Delete Leave Type56        $(document).on('click', 'a#deleteLeaveTypeModal', function(e) {57            e.preventDefault();58            $('#delete_LeaveType_modal').modal('show');59            let leaveTypeID = $(this).attr('data-id');60            $('#delete_LeaveType_modal input[name="leaveTypeID"]').val(leaveTypeID);61            //alert(leaveTypeID);62        });63        $(document).on('click', '#deleteLeaveType', function(e) {64            e.preventDefault();65            let leaveTypeID = $('#delete_LeaveType_modal input[name="leaveTypeID"]').val();66            //alert(leaveRequestID);67            $.ajaxSetup({68                headers: {69                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')70                }71            });72            $.ajax({73                url: '/admin/delete-leaveType/' + leaveTypeID,74                method: 'POST',75                dataType: "json",76                success: function(response) {77                    $('#delete_LeaveType_modal').modal('hide');78                    tableLoadLeaveType.ajax.reload();79                    //alert(data.id);80                },81                error: function(response) {82                    alert('error');83                    console.log(response);84                }85            });86        });87        //Admin Edit Type88        $(document).on('click', 'a#editLeaveTypeModal', function(e) {89            e.preventDefault();90            $('#edit_LeaveType_modal').modal('show');91            let leaveTypeID = $(this).attr('data-id');92            $('#edit_LeaveType_modal input[name="leaveTypeID"]').val(leaveTypeID);93            //alert(leaveRequestID);94            $.ajax({95                url: '/admin/edit-LeaveType/' + leaveTypeID,96                method: 'get',97                dataType: "json",98                success: function(data) {99                    console.log(data);100                    $("#percalenderEdit").val(data.percalendar).change();;101                    $('#edit_LeaveType_modal input[name="leave_typeEdit"]').val(data.leavetype);102                    $('#edit_LeaveType_modal input[name="total_leave_daysEdit"]').val(data.limit);103                    $('#edit_leaveRequest_modal').modal('show');104                },105                error: function(data) {106                    alert('error');107                    console.log(data);108                }109            });110        });111        $(document).on('click', '#editLeaveType', function(e) {112            e.preventDefault();113            let leaveTypeID = $('#edit_LeaveType_modal input[name="leaveTypeID"]').val();114            let leave_type = $("#edit_LeaveType_modal input[name=leave_typeEdit]").val();115            let percalender = $('#percalenderEdit').val();116            let total_leave_days = $("#edit_LeaveType_modal input[name=total_leave_daysEdit]").val();117            //alert(percalender);118            //alert('/employee/edit-LeaveRequest/' + leaveRequestID);119            $.ajaxSetup({120                headers: {121                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')122                }123            });124            $.ajax({125                url: '/admin/edit-LeaveType/' + leaveTypeID,126                method: 'POST',127                data: {128                    'leaveTypeID': leaveTypeID,129                    'leave_type': leave_type,130                    'percalender': percalender,131                    'total_leave_days': total_leave_days132                },133                success: function(response) {134                    console.log(response);135                    $('#edit_LeaveType_modal').modal('hide');136                    tableLoadLeaveType.ajax.reload();137                    //alert(data.id);138                },139                error: function(response) {140                    alert('error');141                    console.log(response);142                }143            });144        });145        /**146         * Admin Leave Request147         */148        var tableLoadLeaveRequest = $('#AdminLeaveRequestDT').DataTable({149            ajax: '/admin/LeaveRequestTable',150            columns: [151                { "data": "id" },152                { "data": "employee" },153                { "data": "type" },154                { "data": "leavefrom" },155                { "data": "leaveto" },156                { "data": "reason" },157                { "data": "status" },158                {159                    "data": null,160                    render: function(data, type, row) {161                        return [`<a id="approveLeaveRequestModal" class="btn btn-sm btn-success" data-id="${row.id}"><i class="fa fa-check" aria-hidden="true" data-toggle="modal" href="#"></i></a>`, `<a class="btn btn-sm btn-danger" data-id="${row.id}" id="declineLeaveRequestModal"><i class="fa fa-times" aria-hidden="true" data-toggle="modal" href="#" ></i></a>`];162                    }163                }164            ]165        });166        //Admin Approve167        $(document).on('click', 'a#approveLeaveRequestModal', function(e) {168            e.preventDefault();169            $('#approve_LeaveRequest_modal').modal('show');170            let leaveRequestID = $(this).attr('data-id');171            //alert(assetTypeID);172            //$('#assetTypeId').val('sdfsdfsdf');173            $('#approve_LeaveRequest_modal input[name="leaveRequestID"]').val(leaveRequestID);174            // alert(assetTypeID);175        });176        $(document).on('click', '#approveLeaveRequest', function(e) {177            e.preventDefault();178            let leaveRequestID = $('#approve_LeaveRequest_modal input[name="leaveRequestID"]').val();179            $.ajaxSetup({180                headers: {181                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')182                }183            });184            $.ajax({185                url: '/admin/approve-LeaveRequest/' + leaveRequestID,186                method: 'POST',187                dataType: "json",188                success: function(response) {189                    $('#approve_LeaveRequest_modal').modal('hide');190                    //tableLoadLeaveRequest.ajax.reload();191                    $('#AdminLeaveRequestDT').DataTable().ajax.reload()192                        //tableLoadLeaveRequest.ajax.reload();193                        //alert("approved");194                },195                error: function(response) {196                    alert('error');197                    console.log(response);198                }199            });200        });201        //Admin decline202        $(document).on('click', 'a#declineLeaveRequestModal', function(e) {203            e.preventDefault();204            $('#decline_LeaveRequest_modal').modal('show');205            let leaveRequestID = $(this).attr('data-id');206            //alert(assetTypeID);207            //$('#assetTypeId').val('sdfsdfsdf');208            $('#decline_LeaveRequest_modal input[name="leaveRequestID"]').val(leaveRequestID);209            // alert(assetTypeID);210        });211        $(document).on('click', '#declineLeaveRequest', function(e) {212            e.preventDefault();213            let leaveRequestID = $('#decline_LeaveRequest_modal input[name="leaveRequestID"]').val();214            $.ajaxSetup({215                headers: {216                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')217                }218            });219            $.ajax({220                url: '/admin/decline-LeaveRequest/' + leaveRequestID,221                method: 'POST',222                dataType: "json",223                success: function(response) {224                    $('#decline_LeaveRequest_modal').modal('hide');225                    //tableLoadLeaveRequest.ajax.reload();226                    $('#AdminLeaveRequestDT').DataTable().ajax.reload()227                        //tableLoadLeaveRequest.ajax.reload();228                        //alert("approved");229                },230                error: function(response) {231                    alert('error');232                    console.log(response);233                }234            });235        });236        /**237         * employee Leave Requst238         */239        var tableLoadLeaveRequest = $('#EmployeeLeaveRequestDT').DataTable({240            ajax: '/employee/LeaveRequestTable/' + employee_id,241            columns: [242                { "data": "idno" },243                { "data": "type" },244                { "data": "leavefrom" },245                { "data": "leaveto" },246                { "data": "reason" },247                { "data": "status" },248                { "data": "comment" },249                {250                    "data": null,251                    render: function(data, type, row) {252                        return [`<a id="editLeaveRequestModal" class="btn btn-sm btn-success" data-id="${row.id}"><i class="fa fa-edit" aria-hidden="true" data-toggle="modal" href="#"></i></a>`, `<a class="btn btn-sm btn-danger" data-id="${row.id}" id="deleteLeaveRequestModal"><i class="fa fa-times" aria-hidden="true" data-toggle="modal" href="#" ></i></a>`];253                    }254                }255            ]256        });257        // Employee Add Leave Request258        $(document).on('click', '#addLeaveRequest', function(e) {259            e.preventDefault();260            //alert("eee");261            let employee_id = $("input[name=employee_id]").val();262            let employee_name = $("input[name=employee_name]").val();263            let leave_typeRequest = $('#leave_typeRequest').val();264            let leave_from = $("input[name=leave_from]").val();265            let leave_to = $("input[name=leave_to]").val();266            let reason = $("textarea#reason").val();267            //alert(leave_typeRequest);268            $.ajaxSetup({269                headers: {270                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')271                }272            });273            $.ajax({274                url: '/employee/add-leaveRequest',275                method: 'POST',276                data: {277                    'employee_id': employee_id,278                    'employee_name': employee_name,279                    'leave_typeRequest': leave_typeRequest,280                    'leave_from': leave_from,281                    'leave_to': leave_to,282                    'reason': reason283                },284                dataType: "json",285                success: function(response) {286                    $('#add_leaveRequest_modal').modal('hide');287                    tableLoadLeaveRequest.ajax.reload();288                    //alert(data.id);289                },290                error: function(response) {291                    alert('error');292                    console.log(response);293                }294            });295        });296        //Employee Leave Edit297        $(document).on('click', 'a#editLeaveRequestModal', function(e) {298            e.preventDefault();299            //$('#edit_asset_modal').modal('show');300            let leaveRequestID = $(this).attr('data-id');301            $('#edit_leaveRequest_modal input[name="leaveRequestID"]').val(leaveRequestID);302            //alert(leaveRequestID);303            $.ajax({304                url: '/employee/edit-LeaveRequest/' + leaveRequestID,305                method: 'get',306                dataType: "json",307                success: function(data) {308                    console.log(data);309                    $("#leave_typeRequestedit ").val(data.type).change();;310                    $('#edit_leaveRequest_modal input[name="leave_fromedit"]').val(data.leavefrom);311                    $('#edit_leaveRequest_modal input[name="leave_toedit"]').val(data.leaveto);312                    $('#edit_leaveRequest_modal textarea[name="reasonedit"]').val(data.reason);313                    $('#edit_leaveRequest_modal').modal('show');314                },315                error: function(data) {316                    alert('error');317                    console.log(data);318                }319            });320        });321        $(document).on('click', '#editLeaveRequest', function(e) {322            e.preventDefault();323            let leaveRequestID = $('#edit_leaveRequest_modal input[name="leaveRequestID"]').val();324            let employee_id = $("#edit_leaveRequest_modal input[name=employee_id]").val();325            let employee_name = $("#edit_leaveRequest_modal input[name=employee_name]").val();326            let leave_typeRequest = $('#leave_typeRequestedit').val();327            let leave_from = $("#edit_leaveRequest_modal input[name=leave_fromedit]").val();328            let leave_to = $("#edit_leaveRequest_modal input[name=leave_toedit]").val();329            let reason = $("#edit_leaveRequest_modal textarea#reasonedit").val();330            //alert('/employee/edit-LeaveRequest/' + leaveRequestID);331            $.ajaxSetup({332                headers: {333                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')334                }335            });336            $.ajax({337                url: '/employee/edit-LeaveRequest/' + leaveRequestID,338                method: 'POST',339                data: {340                    'employee_id': employee_id,341                    'employee_name': employee_name,342                    'leave_typeRequest': leave_typeRequest,343                    'leave_from': leave_from,344                    'leave_to': leave_to,345                    'reason': reason346                },347                success: function(response) {348                    console.log(response);349                    $('#edit_leaveRequest_modal').modal('hide');350                    tableLoadLeaveRequest.ajax.reload();351                    //alert(data.id);352                },353                error: function(response) {354                    alert('error');355                    console.log(response);356                }357            });358        });359        //Employee Delete Leave request360        $(document).on('click', 'a#deleteLeaveRequestModal', function(e) {361            e.preventDefault();362            $('#delete_leaveRequest_modal').modal('show');363            let leaveRequestID = $(this).attr('data-id');364            $('#delete_leaveRequest_modal input[name="leaveRequestID"]').val(leaveRequestID);365            //alert(leaveRequestID);366        });367        $(document).on('click', '#deleteLeaveRequest', function(e) {368            e.preventDefault();369            let leaveRequestID = $('#delete_leaveRequest_modal input[name="leaveRequestID"]').val();370            //alert(leaveRequestID);371            $.ajaxSetup({372                headers: {373                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')374                }375            });376            $.ajax({377                url: '/employee/delete-leaveRequest/' + leaveRequestID,378                method: 'POST',379                dataType: "json",380                success: function(response) {381                    $('#delete_leaveRequest_modal').modal('hide');382                    tableLoadLeaveRequest.ajax.reload();383                    //alert(data.id);384                },385                error: function(response) {386                    alert('error');387                    console.log(response);388                }389            });390        });391    });...viewLeaveListSuccess.js
Source:viewLeaveListSuccess.js  
1$(document).ready(function() {2    3    var validator = $("#frmFilterLeave").validate({4        rules: {5            'leaveList[calFromDate]' : {6                valid_date: function() {7                    return {8                        format:datepickerDateFormat,9                        required:false,10                        displayFormat:displayDateFormat11                    }12                }13            },14            'leaveList[calToDate]' : {15                valid_date: function() {16                    return {17                        format:datepickerDateFormat,18                        required:false,19                        displayFormat:displayDateFormat20                    }21                },22                date_range: function() {23                    return {24                        format:datepickerDateFormat,25                        displayFormat:displayDateFormat,26                        fromDate:$('#calFromDate').val()27                    }28                }29            }30        },31        messages: {32            'leaveList[calFromDate]' : {33                valid_date: lang_invalidDate34            },35            'leaveList[calToDate]' : {36                valid_date: lang_invalidDate ,37                date_range: lang_dateError38            }39        },40        errorPlacement: function(error, element) {41            error.appendTo(element.prev('label'));42        }43    });44    // disabling dialog by default45    $("#commentDialog").dialog({46        autoOpen: false,47        width: 350,48        height: 30049    });50    //open when the pencil mark got clicked51    $('.dialogInvoker').click(function() {52        $('#ajaxCommentSaveMsg').html('').removeAttr('class');      53        54        //removing errors message in the comment box55        $("#commentError").html("");56        57        /* Extracting the request id */58        var id = $(this).parent().siblings('input[id^="hdnLeaveRequest_"]').val();59        if (!id) {60            id = $(this).parent().siblings('input[id^="hdnLeave_"]').val();61        }62        var comment = $('#hdnLeaveComment-' + id).val();63        /* Extracting the status id */64        var statusId = $(this).closest('td').prev('td').find('input[id^="hdnLeaveRequestStatus_'+id+'"]').val();65        66        $('#commentSave').show();67        //disable edit comment for ess for pending approval leave68        if(ess_mode == 1 && statusId != leave_status_pending) {69            $('#commentSave').hide();70        }71        72        $('#leaveId').val(id);73        $('#leaveComment').val(comment);74        75        // If leave comment is empty , enable the edit mode76        if( $('#leaveComment').val().trim() =="") {77            $("#leaveComment").removeAttr("disabled");78            $("#commentSave").attr("value", lang_save);79        } else {80            $("#leaveComment").attr("disabled","disabled");81            $("#commentSave").attr("value", lang_edit);82        }83        84        $('#leaveOrRequest').val('request');85        $('#commentDialog').dialog('open');86    });87    88    //closes the dialog89    $("#commentCancel").click(function() {90        $("#commentDialog").dialog('close');91    });92    //on clicking on save button93    $("#commentSave").click(function() {94        if($("#commentSave").attr("value") == lang_edit) {95            $("#leaveComment").removeAttr("disabled");96            $("#commentSave").attr("value", lang_save);97            return;98        }99        if($('#commentSave').attr('value') == lang_save) {100            $('#commentError').html('');101            var comment = $('#leaveComment').val().trim();102            if(comment.length > 250) {103                $('#commentError').html(lang_length_exceeded_error);104                return;105            }106            /* Setting the comment in the label */107            var commentLabel = trimComment(comment);108            /* If there is no-change between original and updated comments then don't show success message */109            if($('#hdnLeaveComment-' + $("#leaveId").val()).val().trim() == comment) {110                $('#commentDialog').dialog('close');111                return;112            }113            /* We set updated comment for the hidden comment field */114            $('#hdnLeaveComment-' + $('#leaveId').val()).val(comment);115            /* Posting the comment */116            var url = commentUpdateUrl;117            var data = 'leaveRequestId=' + $('#leaveId').val() + '&leaveComment=' + encodeURIComponent(comment);118            /* This is specially for detailed view */119            if($('#leaveOrRequest').val() == 'leave') {120                data = 'leaveId=' + $('#leaveId').val() + '&leaveComment=' + encodeURIComponent(comment);121            }122            $.ajax({123                type: 'POST',124                url: url,125                data: data,126                success: function(flag) {127                    $('#ajaxCommentSaveMsg').removeAttr('class').html('');128                    $('.messageBalloon_success').remove();129                    if(flag == 1) {130                        var id = $('#leaveId').val();131                        $('#commentContainer-' + id).html(commentLabel);132                        $('#hdnLeaveComment-' + id).val(comment);133                        $('#noActionsSelectedWarning').remove();134                        $('#ajaxCommentSaveMsg').attr('class', 'messageBalloon_success')135                        .html(lang_comment_successfully_saved);136                    }137                }138            });139            $("#commentDialog").dialog('close');140            return;141        }142    });143    $('#btnSearch').click(function() {144        $('#frmFilterLeave input.inputFormatHint').val('');145        $('#frmFilterLeave').submit();146    });147    $('#btnReset').click(function(event) {        148        window.location = resetUrl;149        event.preventDefault();150        return false;151    });152    153    $('select.select_action').bind("change",function() {154        $('div#noActionsSelectedWarning').remove();155    });156});    157function trimComment(comment) {158    if (comment.length > 35) {159        comment = comment.substr(0, 35) + '...';160    }161    return comment;...viewLeaveSummarySuccess.js
Source:viewLeaveSummarySuccess.js  
1function initLeaveSummary() {2    /* Making all text boxes non editable by default */3    disableEntitlementTextboxes();4    5    /* Remove edit/save buttons if no editable leave entitlements */6    var editableRows = $('input[name="txtLeaveEntitled[]"][type="text"]').length;7    if (editableRows == 0) {8        $('div[class="actionbar"]').hide();9    }10    11    /* Clearing auto-fill fields */12    $('#leaveSummary_txtEmpName_empName').click(function(){13        $(this).attr('value', '');14        $("#leaveSummary_txtEmpName_empId").attr('value', 0);15    });16    $('#leaveSummary_cmbLeavePeriod').change(function() {17        $('#leaveSummary_hdnSubjectedLeavePeriod').val($('#leaveSummary_cmbLeavePeriod').val());18    });19    /* Search button */20    $('#btnSearch').click(function() {21        // 9706 $("#frmLeaveSummarySearch").validate().resetForm();22        if(userType != 'ESS') {23        recheckEmpId();24        adjustEmpId();25        }26        $('#hdnAction').val('search');27        28        if($("#leaveSummary_txtEmpName_empName").val() == lang_typeHint || $("#leaveSummary_txtEmpName_empName").val() =="") {29            $('#leaveSummary_txtEmpName_empId').val(0);30        }31        32        $('#frmLeaveSummarySearch input.inputFormatHint').val('');33        34        $('#frmLeaveSummarySearch').submit();35    });36    $('input[name^="txtLeaveEntitled"]').change(function() {37        var flag = validateInput();38        if(!flag) {39            $('#validationMsg').attr('class', 'messageBalloon_failure');40        }41    });42    $('#btnReset').click(function(){43        handleResetButton();44    })45}46function handleEditButton() {47    if ($(this).val() == editButtonCaption) {48        enableEntitlementTextboxes();49        $(this).val(saveButtonCaption);50        return;51    }52    53    //9706 if ($(this).val() == saveButtonCaption && $("#frmLeaveSummarySearch").valid()) {54    if ($(this).val() == saveButtonCaption) {55        var flag = validateInput();56        if(flag) {57            58            if ($('#leaveSummary_txtEmpName_empName').val() == lang_typeHint) {59                $('#leaveSummary_txtEmpName_empName').val('');60            }61            $('#hdnAction').val('save');62            $('#frmLeaveSummarySearch').attr('action', '../leave/saveLeaveEntitlements');63            $('#frmLeaveSummarySearch').submit();64        } else {65            $('#validationMsg').attr('class', 'messageBalloon_failure');66        }67    }68}69function handleResetButton() {70    $('.messageBalloon_success').remove();71    $('.messageBalloon_warning').remove();72    $('#validationMsg').removeAttr('class');73    $('#validationMsg').html('');74    $('.formInputText').removeAttr('style');  75    76    $("#leaveSummary_txtEmpName_empName").val('');77    $('#leaveSummary_txtEmpName_empId').val('0');78    $('#frmLeaveSummarySearch select').find('option:first').attr('selected','selected');79    $('#leaveSummary_cmbWithTerminated').removeAttr('checked');80    $('#frmLeaveSummarySearch').submit();81    82}83function adjustEmpId() {84    empName = $.trim($('#leaveSummary_txtEmpName_empName').val()).toLowerCase();85    if (empName != 'all' && $('#leaveSummary_txtEmpName_empId').val() == 0) {86        $('#leaveSummary_txtEmpName_empId').val('-1');87    }88}89function recheckEmpId() {90    var empDataArray = eval(employees_leaveSummary_txtEmpName); // TODO: Try to replace eval()91    var empDateCount = empDataArray.length;92    var i;93    for (i=0; i<empDateCount; i++) {94        fieldName = $.trim($('#leaveSummary_txtEmpName_empName').val()).toLowerCase();95        arrayName = empDataArray[i].name.toLowerCase();96        $('#leaveSummary_txtEmpName_empId').val(0);97        if (fieldName == arrayName) {98            $('#leaveSummary_txtEmpName_empId').val(empDataArray[i].id);99            break;100        }101    }102}103function validateInput() {104    var flag = true;105    $('.messageBalloon_success').remove();106    $('.messageBalloon_warning').remove();107    $('#validationMsg').removeAttr('class');108    $('#validationMsg').html("");109    var errorStyle = 'background-color: #FFDFDF;';110    $('.formInputText').each(function(){111        element = $(this);112        $(element).removeAttr('style');113        if(!(/^[0-9]+\.?[0-9]?[0-9]?$/).test($(element).val())) {114            $('#validationMsg').html(lang_not_numeric);115            $(element).attr('style', errorStyle);116            flag = false;117        } else {118            if(parseFloat($(element).val()) > 365) {119                $('#validationMsg').html(lang_not_numeric);120                $(element).attr('style', errorStyle);121                flag = false;122            }123        }124    });125    return flag;126}127function disableEntitlementTextboxes() {128    $('input[name^="txtLeaveEntitled"]').attr('disabled', 'disabled');129}130function enableEntitlementTextboxes() {131    $('input[name^="txtLeaveEntitled"]').removeAttr('disabled');...defineLeaveTypeSuccess.js
Source:defineLeaveTypeSuccess.js  
1$(document).ready(function(){2    //$("form#frmLeaveType :input:visible:enabled:first").focus();3    4    $('#saveButton').click(function(){5        $('#frmLeaveType').submit();6    });7    8    $.validator.addMethod("uniqueLeaveType", function(value) {9        10        var valid = true;        11        var originalName  = $.trim($("#leaveType_hdnOriginalLeaveTypeName").val()).toLowerCase();12        13        value = $.trim(value).toLowerCase();14        15        if (value != originalName) {16            for (var i = 0; i < activeLeaveTypes.length; i++) {17                if (value == activeLeaveTypes[i].toLowerCase()) {18                    valid = false;19                    break;20                }21            }22        }23        24        return valid;25    });26    27    var validator = 28    $("#frmLeaveType").validate({29        rules: {30            'leaveType[txtLeaveTypeName]': {31                required: true, 32                maxlength: 50,33                uniqueLeaveType: true34            }35        },36        messages: {37            'leaveType[txtLeaveTypeName]': {38                required: lang_LeaveTypeNameRequired,39                maxlength: lang_LeaveTypeNameTooLong,40                uniqueLeaveType: lang_LeaveTypeExists41            }42        },43        submitHandler: function(form) {44            45            var deletedId = isDeletedLeaveType();46            if (deletedId) {47                $('#undeleteLeaveType_undeleteId').val(deletedId);               48                $("#undeleteDialog").dialog("open");49            } else {50                form.submit();51            }52        },53        errorElement: 'div'54    });55    $("#resetButton").click(function() {56        validator.resetForm();57    });58    $('#backButton').click(function(){59        window.location.href = backButtonUrl;60    });61    // undeleteDialog62    $("#undeleteDialog").dialog({63        autoOpen: false,64        modal: true,65        width: 355,66        height:210,67        position: 'middle'68    });69    $("#undeleteYes").click(function(){70        $('#frmUndeleteLeaveType').submit();71    });72    $("#undeleteNo").click(function(){73        $(this).attr('disabled', true);74        $('#leaveType_txtLeaveTypeName').attr('disabled', false);75        $('#frmLeaveType').get(0).submit();76    });77    $("#undeleteCancel").click(function(){78        $("#undeleteDialog").dialog("close");79    });80    loadActiveLeaveTypes();81    loadDeletedLeaveTypes();82});83/**84 * Checks if current leave type name value matches a deleted leave type.85 * 86 * @return Leave Type ID if it matches a deleted leave type else false.87 */88function isDeletedLeaveType() {89    if ($.trim($("#leaveType_hdnOriginalLeaveTypeName").val()) ==90        $.trim($("#leaveType_txtLeaveTypeName").val())) {91        return false;92    }93    for (var i = 0; i < deletedLeaveTypes.length; i++) {94        if (deletedLeaveTypes[i].name.toLowerCase() == 95            $.trim($('#leaveType_txtLeaveTypeName').val()).toLowerCase()) {96            return deletedLeaveTypes[i].id;97        }98    }99    return false;100}101function loadActiveLeaveTypes() {102    var url = './loadActiveLeaveTypesJson';103    $.getJSON(url, function(data) {104        activeLeaveTypes = data;105    });106}107function loadDeletedLeaveTypes() {108    var url = './loadDeletedLeaveTypesJson';109    110    $.getJSON(url, function(data) {111        deletedLeaveTypes = data;112    });...setleavechannel.js
Source:setleavechannel.js  
1const Command = require('../Command.js');2const { MessageEmbed } = require('discord.js');3const { success } = require('../../utils/emojis.json');4const { oneLine, stripIndent } = require('common-tags');5module.exports = class SetLeaveChannelCommand extends Command {6  constructor(client) {7    super(client, {8      name: 'setleavechannel',9      aliases: ['setlc', 'slc'],10      usage: 'setleavechannel <channel mention/ID>',11      description: oneLine`12        Sets the leave message text channel for your server. 13        Provide no channel to clear the current \`leave channel\`.14        A \`leave message\` must also be set to enable leave messages.15      `,16      type: client.types.ADMIN,17      userPermissions: ['MANAGE_GUILD'],18      examples: ['setleavechannel #general']19    });20  }21  run(message, args) {22    let { leave_channel_id: leaveChannelId, leave_message: leaveMessage } = 23      message.client.db.settings.selectLeaveMessages.get(message.guild.id);24    const oldLeaveChannel = message.guild.channels.cache.get(leaveChannelId) || '`None`';25    // Get status26    const oldStatus = message.client.utils.getStatus(leaveChannelId, leaveMessage);27    // Trim message28    if (leaveMessage && leaveMessage.length > 1024) leaveMessage = leaveMessage.slice(0, 1021) + '...';29    30    const embed = new MessageEmbed()31      .setTitle('Settings: `Leave Messages`')32      .setDescription(`The \`leave channel\` was successfully updated. ${success}`)33      .addField('Message', message.client.utils.replaceKeywords(leaveMessage) || '`None`')34      .setThumbnail(message.guild.iconURL({ dynamic: true }))35      .setFooter(message.member.displayName,  message.author.displayAvatarURL({ dynamic: true }))36      .setTimestamp()37      .setColor(message.guild.me.displayHexColor);38    // Clear if no args provided39    if (args.length === 0) {40      message.client.db.settings.updateLeaveChannelId.run(null, message.guild.id);41      // Update status42      const status = 'disabled';43      const statusUpdate = (oldStatus != status) ? `\`${oldStatus}\` â \`${status}\`` : `\`${oldStatus}\``; 44      45      return message.channel.send(embed46        .spliceFields(0, 0, { name: 'Channel', value: `${oldLeaveChannel} â \`None\``, inline: true })47        .spliceFields(1, 0, { name: 'Status', value: statusUpdate, inline: true })48      );49    }50    const leaveChannel = this.getChannelFromMention(message, args[0]) || message.guild.channels.cache.get(args[0]);51    if (!leaveChannel || (leaveChannel.type != 'text' && leaveChannel.type != 'news') || !leaveChannel.viewable) 52      return this.sendErrorMessage(message, 0, stripIndent`53        Please mention an accessible text or announcement channel or provide a valid text or announcement channel ID54      `);55    // Update status56    const status =  message.client.utils.getStatus(leaveChannel, leaveMessage);57    const statusUpdate = (oldStatus != status) ? `\`${oldStatus}\` â \`${status}\`` : `\`${oldStatus}\``;58    message.client.db.settings.updateLeaveChannelId.run(leaveChannel.id, message.guild.id);59    message.channel.send(embed60      .spliceFields(0, 0, { name: 'Channel', value: `${oldLeaveChannel} â ${leaveChannel}`, inline: true})61      .spliceFields(1, 0, { name: 'Status', value: statusUpdate, inline: true})62    );63  }...Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3  const browser = await chromium.launch();4  const context = await browser.newContext();5  const page = await context.newPage();6  await page.click('text="Gmail"');7  await context.close();8  await browser.close();9})();Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3    const browser = await chromium.launch();4    const context = await browser.newContext();5    const page = await context.newPage();6    await page.waitForSelector('input[name="q"]');7    await page.fill('input[name="q"]', 'Playwright');8    await page.keyboard.press('Enter');9    await page.waitForSelector('text=Playwright');10    await page.click('text=Playwright');11    await page.waitForSelector('text=Playwright');12    await page.click('text=Playwright');13    await page.waitForSelector('text=Playwright');14    await page.click('text=Playwright');15    await page.waitForSelector('text=Playwright');16    await page.click('text=Playwright');17    await page.waitForSelector('text=Playwright');18    await page.click('text=Playwright');19    await page.waitForSelector('text=Playwright');20    await page.click('text=Playwright');21    await page.waitForSelector('text=Playwright');22    await page.click('text=Playwright');23    await page.waitForSelector('text=Playwright');24    await page.click('text=Playwright');25    await page.waitForSelector('text=Playwright');26    await page.click('text=Playwright');27    await context.close();28    await browser.close();29})();Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3    const browser = await chromium.launch();4    const context = await browser.newContext();5    const page = await context.newPage();6    await page.leave();7    await browser.close();8})();9const { chromium } = require('playwright');10(async () => {11    const browser = await chromium.launch();12    await browser.close();13})();14const { chromium } = require('playwright');15(async () => {16    const browser = await chromium.launch();17    const context = await browser.newContext();18    await context.close();19    await browser.close();20})();21const { chromium } = require('playwright');22(async () => {23    const browser = await chromium.launch();24    const context = await browser.newContext();25    const page = await context.newPage();26    await page.close();27    await context.close();28    await browser.close();29})();30const { chromium } = require('playwright');31(async () => {32    const browser = await chromium.launch();33    await browser.disconnect();34})();35const { chromium } = require('playwright');36(async () => {37    const browser = await chromium.launch();38    const context = await browser.newContext();39    await context.disconnect();40    await browser.close();Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3  const browser = await chromium.launch();4  const context = await browser.newContext();5  const page = await context.newPage();6  await page.screenshot({ path: 'google.png' });7  await browser.close();8})();9const { chromium } = require('playwright');10(async () => {11  const browser = await chromium.launch();12  await browser.close();13})();14const { chromium } = require('playwright');15(async () => {16  const browser = await chromium.launch();17  const context = await browser.newContext();18  await browser.close();19})();20const { chromium } = require('playwright');21(async () => {22  const browser = await chromium.launch();23  const context = await browser.newContext();24  const page = await context.newPage();25  await browser.close();26})();27const { chromium } = require('playwright');28(async () => {29  const browser = await chromium.launch();30  const context = await browser.newContext();31  const page = await context.newPage();32  await browser.close();33})();34const { chromium } = require('playwright');35(async () => {36  const browser = await chromium.launch();37  const context = await browser.newContext();38  context.route('**/*', route => {39    console.log(route.request().url());40    route.continue();41  });42  const page = await context.newPage();Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3  const browser = await chromium.launch({ headless: false });4  const context = await browser.newContext();5  const page = await context.newPage();6  await page.click('text=About');7  await page.click('text=Advertising');8  await page.click('text=Business');9  await page.click('text=How Search works');10  await page.click('text=Privacy');11  await page.click('text=Terms');12  await page.click('text=Settings');13  await page.click('text=Sign in');14  await page.click('text=Images');15  await page.click('text=Maps');16  await page.click('text=Play');17  await page.click('text=YouTube');18  await page.click('text=News');19  await page.click('text=Gmail');20  await page.click('text=Drive');21  await page.click('text=Calendar');22  await page.click('text=Translate');23  await page.click('text=Photos');24  await page.click('text=Shopping');25  await page.click('text=More');26  await page.click('text=Advertising Programs');27  await page.click('text=Business Solutions');28  await page.click('text=Google About');29  await page.click('text=How Search works');30  await page.click('text=Privacy');31  await page.click('text=Terms');32  await page.click('text=Settings');33  await page.click('text=Sign in');34  await page.click('text=Images');35  await page.click('text=Maps');36  await page.click('text=Play');37  await page.click('text=YouTube');38  await page.click('text=News');39  await page.click('text=Gmail');40  await page.click('text=Drive');41  await page.click('text=Calendar');42  await page.click('text=Translate');43  await page.click('text=Photos');44  await page.click('text=Shopping');45  await page.click('text=More');46  await page.click('text=Advertising Programs');47  await page.click('text=Business Solutions');48  await page.click('text=Google About');49  await page.click('text=How Search works');50  await page.click('text=Privacy');51  await page.click('text=Terms');52  await page.click('text=SettingsUsing AI Code Generation
1const { chromium } = require('playwright');2(async () => {3  const browser = await chromium.launch({ headless: false });4  const context = await browser.newContext();5  const page = await context.newPage();6  await page.screenshot({ path: `example.png` });7  await browser.close();8})();Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3  const browser = await chromium.launch({ headless: false });4  const context = await browser.newContext();5  const page = await context.newPage();6  const [popup] = await Promise.all([7    page.waitForEvent('popup'),8    page.click('text=Get Started >>'),9  ]);10  await popup.leave();11  await page.leave();12  await browser.close();13})();Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3    const browser = await chromium.launch();4    const context = await browser.newContext();5    const page = await context.newPage();6    await page.mouse.move(0, 0);7    await page.mouse.leave();8    await browser.close();9})();Using AI Code Generation
1const { chromium } = require('playwright');2const browser = await chromium.launch();3const page = await browser.newPage();4await page.click('text=Log in');5await page.fill('input[type="text"]', 'username');6await page.fill('input[type="password"]', 'password');7await page.click('button[type="submit"]');8await page.waitForNavigation();9await page.click('text=Profile');10await browser.close();Using AI Code Generation
1const { test, expect } = require('@playwright/test');2const { createPage } = require('@playwright/test/lib/page');3const { createTestFixtures } = require('@playwright/test/lib/test');4const { createTest } = require('@playwright/test/lib/test');5const { createFixture } = require('@playwright/test/lib/fixtures');6const { createWorkerFixture } = require('@playwright/test/lib/fixtures');7const { createTestType } = require('@playwright/test/lib/testType');8test('test', async ({ page }) => {9    await page.screenshot({ path: `example.png` });10});11const { test, expect } = require('@playwright/test');12const { createPage } = require('@playwright/test/lib/page');13const { createTestFixtures } = require('@playwright/test/lib/test');14const { createTest } = require('@playwright/test/lib/test');15const { createFixture } = require('@playwright/test/lib/fixtures');16const { createWorkerFixture } = require('@playwright/test/lib/fixtures');17const { createTestType } = require('@playwright/test/lib/testType');18test('test', async ({ page }) => {19    await page.screenshot({ path: `example.png` });20});21const { test, expect } = require('@playwright/test');22const { createPage } = require('@playwright/test/lib/page');23const { createTestFixtures } = require('@playwright/test/lib/test');24const { createTest } = require('@playwright/test/lib/test');25const { createFixture } = require('@playwright/test/lib/fixtures');26const { createWorkerFixture } = require('@playwright/test/lib/fixtures');27const { createTestType } = require('@playwright/test/lib/testType');28test('test', async ({ page }) => {29    await page.screenshot({ path: `example.png` });30});LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!
