Best JavaScript code snippet using root
pull-to-refresh-test.js
Source:pull-to-refresh-test.js
1import * as PullToRefreshComponent from 'textup-frontend/components/infinite-scroll/pull-to-refresh';2import Constants from 'textup-frontend/constants';3import Ember from 'ember';4import hbs from 'htmlbars-inline-precompile';5import sinon from 'sinon';6import wait from 'ember-test-helpers/wait';7import { moduleForComponent, test } from 'ember-qunit';8const { typeOf, RSVP } = Ember;9moduleForComponent(10 'infinite-scroll/pull-to-refresh',11 'Integration | Component | infinite scroll/pull to refresh',12 {13 integration: true,14 }15);16test('inputs', function(assert) {17 this.setProperties({ direction: Constants.INFINITE_SCROLL.DIRECTION.DOWN, fn: () => null });18 this.render(hbs`{{infinite-scroll/pull-to-refresh}}`);19 assert.ok(this.$('.infinite-scroll__pull-to-refresh').length, 'did render');20 this.render(hbs`21 {{infinite-scroll/pull-to-refresh direction=direction22 disabled=true23 doRegister=fn24 onRefresh=fn25 refreshMessage="hi"}}26 `);27 assert.ok(this.$('.infinite-scroll__pull-to-refresh').length, 'did render');28 assert.throws(() => {29 this.render(hbs`30 {{infinite-scroll/pull-to-refresh direction="hi"31 disabled="hi"32 doRegister="hi"33 onRefresh="hi"34 refreshMessage=fn}}35 `);36 });37});38test('registering publicAPI', function(assert) {39 const doRegister = sinon.spy();40 this.setProperties({ doRegister });41 this.render(hbs`{{infinite-scroll/pull-to-refresh doRegister=doRegister}}`);42 assert.ok(this.$('.infinite-scroll__pull-to-refresh').length, 'did render');43 assert.ok(doRegister.calledOnce);44 assert.ok(doRegister.firstCall.args.length, 1);45 assert.equal(typeOf(doRegister.firstCall.args[0].isRefreshing), 'boolean');46});47test('customizing refresh message', function(assert) {48 const refreshMessage = Math.random() + '';49 this.setProperties({ refreshMessage });50 this.render(hbs`{{infinite-scroll/pull-to-refresh refreshMessage=refreshMessage}}`);51 assert.ok(this.$('.infinite-scroll__pull-to-refresh').length, 'did render');52 assert.ok(53 this.$()54 .text()55 .includes(refreshMessage),56 'custom refresh message'57 );58});59test('pulling via touch + refresh function returns a promise', function(assert) {60 const doRegister = sinon.spy(),61 onRefresh = sinon.stub(),62 done = assert.async();63 this.setProperties({ doRegister, onRefresh });64 this.render(hbs`{{infinite-scroll/pull-to-refresh doRegister=doRegister onRefresh=onRefresh}}`);65 assert.ok(this.$('.infinite-scroll__pull-to-refresh').length, 'did render');66 assert.ok(this.$('.infinite-scroll__pull-to-refresh__content').length, 'did render');67 assert.notOk(this.$('.infinite-scroll__pull-to-refresh--pulling').length, 'not pulling');68 assert.notOk(this.$('.infinite-scroll__pull-to-refresh--refreshing').length, 'not refreshing');69 assert.ok(doRegister.calledOnce);70 assert.ok(onRefresh.notCalled);71 const publicAPI = doRegister.firstCall.args[0];72 assert.equal(publicAPI.isRefreshing, false);73 let resolveFn;74 const $content = this.$('.infinite-scroll__pull-to-refresh__content');75 $content.trigger(Ember.$.Event('touchstart', touchEvent(0)));76 $content.trigger(77 Ember.$.Event('touchmove', touchEvent(PullToRefreshComponent.MAX_PULL_LENGTH_IN_PX * 5))78 );79 wait()80 .then(() => {81 assert.ok(this.$('.infinite-scroll__pull-to-refresh--pulling').length, 'is pulling');82 assert.equal(publicAPI.isRefreshing, false);83 assert.ok(onRefresh.notCalled);84 assert.equal(85 $content.attr('style'),86 `transform: translateY(${PullToRefreshComponent.MAX_PULL_LENGTH_IN_PX}px);`,87 'constrained to max allowed overscroll threshold'88 );89 onRefresh.callsFake(() => new RSVP.Promise(resolve => (resolveFn = resolve)));90 $content.trigger(Ember.$.Event('touchend'));91 return wait();92 })93 .then(() => {94 assert.notOk(this.$('.infinite-scroll__pull-to-refresh--pulling').length, 'not pulling');95 assert.equal(publicAPI.isRefreshing, true);96 assert.ok(onRefresh.calledOnce);97 assert.ok(this.$('.infinite-scroll__pull-to-refresh--refreshing').length, 'is refreshing');98 assert.ok(resolveFn, 'has resolve function');99 assert.notOk($content.attr('style'), '`style` attrib on content is removed when refreshing');100 resolveFn.call();101 return wait();102 })103 .then(() => {104 assert.equal(publicAPI.isRefreshing, false);105 assert.notOk(106 this.$('.infinite-scroll__pull-to-refresh--refreshing').length,107 'not refreshing'108 );109 done();110 });111});112test('pulling via mouse + refresh function does not return promise', function(assert) {113 const doRegister = sinon.spy(),114 onRefresh = sinon.spy(),115 done = assert.async();116 this.setProperties({ doRegister, onRefresh });117 this.render(hbs`{{infinite-scroll/pull-to-refresh doRegister=doRegister onRefresh=onRefresh}}`);118 assert.ok(this.$('.infinite-scroll__pull-to-refresh').length, 'did render');119 assert.ok(this.$('.infinite-scroll__pull-to-refresh__content').length, 'did render');120 assert.notOk(this.$('.infinite-scroll__pull-to-refresh--refreshing').length, 'not refreshing');121 assert.ok(doRegister.calledOnce);122 assert.ok(onRefresh.notCalled);123 const publicAPI = doRegister.firstCall.args[0];124 assert.equal(publicAPI.isRefreshing, false);125 const $content = this.$('.infinite-scroll__pull-to-refresh__content'),126 pullLength = PullToRefreshComponent.MIN_REQUIRED_PULL_LENGTH_IN_PX + 10;127 $content.trigger(Ember.$.Event('mousedown', mouseEvent(0)));128 $content.trigger(Ember.$.Event('mousemove', mouseEvent(pullLength)));129 wait()130 .then(() => {131 assert.equal(publicAPI.isRefreshing, false);132 assert.ok(onRefresh.notCalled);133 assert.equal(134 $content.attr('style'),135 `transform: translateY(${pullLength}px);`,136 'have not hit the max allowed overscroll threshold'137 );138 $content.trigger(Ember.$.Event('mouseup'));139 return wait();140 })141 .then(() => {142 assert.equal(143 publicAPI.isRefreshing,144 false,145 'immediately set to not refreshing if does not return promise'146 );147 assert.notOk(148 this.$('.infinite-scroll__pull-to-refresh--refreshing').length,149 'not refreshing'150 );151 assert.ok(onRefresh.calledOnce);152 assert.notOk($content.attr('style'), '`style` attrib on content is removed when not pulling');153 done();154 });155});156test('pulling up instead of down', function(assert) {157 const doRegister = sinon.spy(),158 onRefresh = sinon.spy(),159 done = assert.async();160 this.setProperties({ doRegister, onRefresh, direction: Constants.INFINITE_SCROLL.DIRECTION.UP });161 this.render(162 hbs`{{infinite-scroll/pull-to-refresh direction=direction doRegister=doRegister onRefresh=onRefresh}}`163 );164 assert.ok(this.$('.infinite-scroll__pull-to-refresh').length, 'did render');165 assert.ok(this.$('.infinite-scroll__pull-to-refresh--up').length, 'up direction');166 assert.ok(this.$('.infinite-scroll__pull-to-refresh__content').length, 'did render');167 assert.notOk(this.$('.infinite-scroll__pull-to-refresh--pulling').length, 'not pulling');168 assert.notOk(this.$('.infinite-scroll__pull-to-refresh--refreshing').length, 'not refreshing');169 assert.ok(doRegister.calledOnce);170 assert.ok(onRefresh.notCalled);171 const publicAPI = doRegister.firstCall.args[0];172 assert.equal(publicAPI.isRefreshing, false);173 const $content = this.$('.infinite-scroll__pull-to-refresh__content');174 $content.trigger(Ember.$.Event('touchstart', touchEvent(500)));175 $content.trigger(176 Ember.$.Event('touchmove', touchEvent(500 - PullToRefreshComponent.MAX_PULL_LENGTH_IN_PX))177 );178 wait()179 .then(() => {180 assert.ok(this.$('.infinite-scroll__pull-to-refresh--pulling').length, 'is pulling');181 assert.equal(publicAPI.isRefreshing, false);182 assert.ok(onRefresh.notCalled);183 assert.equal(184 $content.attr('style'),185 `transform: translateY(-${PullToRefreshComponent.MAX_PULL_LENGTH_IN_PX}px);`,186 'translate in the opposite direction because direction is up'187 );188 $content.trigger(Ember.$.Event('touchend'));189 return wait();190 })191 .then(() => {192 assert.notOk(this.$('.infinite-scroll__pull-to-refresh--pulling').length, 'not pulling');193 assert.ok(onRefresh.calledOnce, 'direction is valid');194 done();195 });196});197test('pulling insufficient distance', function(assert) {198 const doRegister = sinon.spy(),199 onRefresh = sinon.spy(),200 done = assert.async();201 this.setProperties({ doRegister, onRefresh });202 this.render(hbs`{{infinite-scroll/pull-to-refresh doRegister=doRegister onRefresh=onRefresh}}`);203 assert.ok(this.$('.infinite-scroll__pull-to-refresh').length, 'did render');204 assert.ok(this.$('.infinite-scroll__pull-to-refresh__content').length, 'did render');205 assert.notOk(this.$('.infinite-scroll__pull-to-refresh--refreshing').length, 'not refreshing');206 assert.ok(doRegister.calledOnce);207 assert.ok(onRefresh.notCalled);208 const publicAPI = doRegister.firstCall.args[0];209 assert.equal(publicAPI.isRefreshing, false);210 const $content = this.$('.infinite-scroll__pull-to-refresh__content'),211 pullLength = PullToRefreshComponent.MIN_REQUIRED_PULL_LENGTH_IN_PX - 10;212 $content.trigger(Ember.$.Event('mousedown', mouseEvent(0)));213 $content.trigger(Ember.$.Event('mousemove', mouseEvent(pullLength)));214 wait()215 .then(() => {216 assert.equal(publicAPI.isRefreshing, false);217 assert.ok(onRefresh.notCalled);218 assert.equal($content.attr('style'), `transform: translateY(${pullLength}px);`);219 $content.trigger(Ember.$.Event('mouseleave'));220 return wait();221 })222 .then(() => {223 assert.equal(publicAPI.isRefreshing, false);224 assert.ok(onRefresh.notCalled, 'does not exceed the minimum threshold');225 assert.notOk($content.attr('style'));226 done();227 });228});229test('pulling wrong direction', function(assert) {230 const onRefresh = sinon.spy(),231 done = assert.async();232 this.setProperties({ onRefresh, direction: Constants.INFINITE_SCROLL.DIRECTION.DOWN });233 this.render(hbs`{{infinite-scroll/pull-to-refresh direction=direction onRefresh=onRefresh}}`);234 assert.ok(this.$('.infinite-scroll__pull-to-refresh').length, 'did render');235 assert.ok(this.$('.infinite-scroll__pull-to-refresh__content').length, 'did render');236 assert.notOk(this.$('.infinite-scroll__pull-to-refresh--pulling').length, 'not pulling');237 assert.notOk(this.$('.infinite-scroll__pull-to-refresh--up').length, 'direction is down');238 assert.ok(onRefresh.notCalled);239 const $content = this.$('.infinite-scroll__pull-to-refresh__content');240 $content.trigger(Ember.$.Event('mousedown', mouseEvent(100)));241 $content.trigger(Ember.$.Event('mousemove', mouseEvent(0)));242 wait()243 .then(() => {244 assert.notOk(this.$('.infinite-scroll__pull-to-refresh--pulling').length, 'not pulling');245 assert.ok(onRefresh.notCalled);246 assert.notOk($content.attr('style'), 'pull is not right direction when direction is down');247 this.set('direction', Constants.INFINITE_SCROLL.DIRECTION.UP);248 return wait();249 })250 .then(() => {251 assert.ok(onRefresh.notCalled);252 assert.ok(this.$('.infinite-scroll__pull-to-refresh--up').length, 'direction is up');253 $content.trigger(Ember.$.Event('touchstart', touchEvent(0)));254 $content.trigger(Ember.$.Event('touchmove', touchEvent(100)));255 return wait();256 })257 .then(() => {258 assert.notOk(this.$('.infinite-scroll__pull-to-refresh--pulling').length, 'not pulling');259 assert.ok(onRefresh.notCalled);260 assert.notOk($content.attr('style'), 'pull is not right direction when direction is up');261 done();262 });263});264test('disabled', function(assert) {265 const onRefresh = sinon.spy(),266 done = assert.async();267 this.setProperties({ onRefresh, disabled: true });268 this.render(hbs`{{infinite-scroll/pull-to-refresh disabled=disabled onRefresh=onRefresh}}`);269 assert.ok(this.$('.infinite-scroll__pull-to-refresh').length, 'did render');270 assert.ok(this.$('.infinite-scroll__pull-to-refresh__content').length, 'did render');271 assert.ok(this.$('.infinite-scroll__pull-to-refresh--disabled').length, 'is disabled');272 assert.ok(onRefresh.notCalled);273 const $content = this.$('.infinite-scroll__pull-to-refresh__content');274 $content.trigger(Ember.$.Event('mousedown', mouseEvent(0)));275 $content.trigger(Ember.$.Event('mousemove', mouseEvent(100)));276 wait()277 .then(() => {278 assert.ok(onRefresh.notCalled);279 assert.notOk($content.attr('style'), 'pull is correct direction but is disabled');280 this.set('disabled', false);281 return wait();282 })283 .then(() => {284 assert.notOk(285 this.$('.infinite-scroll__pull-to-refresh--disabled').length,286 'no longer disabled'287 );288 done();289 });290});291function touchEvent(pageY) {292 return { originalEvent: { targetTouches: [{ pageY }] } };293}294function mouseEvent(pageY) {295 return { pageY };...
VoteAlert.js
Source:VoteAlert.js
1import React, { Component } from "react";2import { connect } from "react-redux";3import { withRouter } from "react-router-dom";4import StartInformalView from "./StartInformal";5import InformalView from "./Informal";6import InformalDoneView from "./InformalDone";7import FormalView from "./Formal";8import FormalDoneView from "./FormalDone";9import qs from "qs";10import "./vote-alert.scss";11// eslint-disable-next-line no-undef12import moment from "moment";13const mapStateToProps = (state) => {14 return {15 authUser: state.global.authUser,16 settings: state.global.settings,17 };18};19class VoteAlert extends Component {20 renderContent() {21 const { settings, authUser, proposal, onRefresh } = this.props;22 const {23 location: { search },24 } = this.props;25 const query = qs.parse(search, { ignoreQueryPrefix: true });26 const milestoneId = query.milestone_id;27 // Proposal Check28 if (proposal.status != "approved" && proposal.status != "completed")29 return null;30 // Settings Check31 if (32 !settings.time_before_op_informal ||33 !settings.time_unit_before_op_informal ||34 !settings.time_before_op_informal_simple ||35 !settings.time_unit_before_op_informal_simple ||36 !settings.can_op_start_informal37 )38 return null;39 if (!proposal.votes || !proposal.votes.length) {40 // No Votes41 let mins = 0;42 if (proposal.type == "grant") {43 if (settings.time_unit_before_op_informal == "min")44 mins = parseInt(settings.time_before_op_informal);45 else if (settings.time_unit_before_op_informal == "hour")46 mins = parseInt(settings.time_before_op_informal) * 60;47 else if (settings.time_unit_before_op_informal == "day")48 mins = parseInt(settings.time_before_op_informal) * 24 * 60;49 } else if (50 ["simple", "admin-grant", "advance-payment"].includes(proposal.type)51 ) {52 if (settings.time_unit_before_op_informal_simple == "min")53 mins = parseInt(settings.time_before_op_informal_simple);54 else if (settings.time_unit_before_op_informal_simple == "hour")55 mins = parseInt(settings.time_before_op_informal_simple) * 60;56 else if (settings.time_unit_before_op_informal_simple == "day")57 mins = parseInt(settings.time_before_op_informal_simple) * 24 * 60;58 }59 const diff = moment(proposal.approved_at + ".000Z")60 .add(mins, "minutes")61 .diff(moment());62 if (diff <= 0 && authUser.is_admin) {63 // Admin can start informal voting64 return <StartInformalView proposal={proposal} onRefresh={onRefresh} />;65 }66 if (67 diff <= 0 &&68 settings.can_op_start_informal == "yes" &&69 authUser.id == proposal.user_id70 ) {71 // OP can start informal voting72 return <StartInformalView proposal={proposal} onRefresh={onRefresh} />;73 }74 } else if (proposal.votes.length == 1) {75 // Informal Voting Already Started76 const informalVote = proposal.votes[0];77 let mins = 0;78 if (informalVote.content_type == "grant") {79 if (settings.time_unit_informal == "min")80 mins = parseInt(settings.time_informal);81 else if (settings.time_unit_informal == "hour")82 mins = parseInt(settings.time_informal) * 60;83 else if (settings.time_unit_informal == "day")84 mins = parseInt(settings.time_informal) * 24 * 60;85 } else if (86 ["simple", "admin-grant", "advance-payment"].includes(87 informalVote.content_type88 )89 ) {90 if (settings.time_unit_simple == "min")91 mins = parseInt(settings.time_simple);92 else if (settings.time_unit_simple == "hour")93 mins = parseInt(settings.time_simple) * 60;94 else if (settings.time_unit_simple == "day")95 mins = parseInt(settings.time_simple) * 24 * 60;96 }97 let diff = moment(informalVote.created_at)98 .add(mins, "minutes")99 .diff(moment());100 if (diff > 0 && informalVote.status == "active") {101 return (102 <InformalView103 vote={informalVote}104 mins={mins}105 proposal={proposal}106 onRefresh={onRefresh}107 />108 );109 } else110 return (111 <InformalDoneView112 onRefresh={onRefresh}113 vote={informalVote}114 proposal={proposal}115 />116 );117 } else if (proposal.votes.length == 2) {118 // Formal Voting Already Started119 const informalVote = proposal.votes[0];120 const formalVote = proposal.votes[1];121 let mins = 0;122 if (formalVote.content_type == "grant") {123 if (settings.time_unit_formal == "min")124 mins = parseInt(settings.time_formal);125 else if (settings.time_unit_formal == "hour")126 mins = parseInt(settings.time_formal) * 60;127 else if (settings.time_unit_formal == "day")128 mins = parseInt(settings.time_formal) * 24 * 60;129 } else if (130 ["simple", "admin-grant", "advance-payment"].includes(131 formalVote.content_type132 )133 ) {134 if (settings.time_unit_simple == "min")135 mins = parseInt(settings.time_simple);136 else if (settings.time_unit_simple == "hour")137 mins = parseInt(settings.time_simple) * 60;138 else if (settings.time_unit_simple == "day")139 mins = parseInt(settings.time_simple) * 24 * 60;140 }141 let diff = moment(formalVote.created_at)142 .add(mins, "minutes")143 .diff(moment());144 if (diff > 0 && formalVote.status == "active") {145 return (146 <FormalView147 informalVote={informalVote}148 vote={formalVote}149 mins={mins}150 proposal={proposal}151 onRefresh={onRefresh}152 />153 );154 } else155 return (156 <FormalDoneView157 vote={formalVote}158 proposal={proposal}159 onRefresh={onRefresh}160 />161 );162 } else if (proposal.votes.length > 2) {163 // Milestone Votes164 let milestoneVote;165 let milestoneVotes;166 if (milestoneId) {167 milestoneVotes = proposal.votes.filter(168 (x) => x.milestone_id == milestoneId169 );170 milestoneVote = milestoneVotes[milestoneVotes.length - 1];171 } else {172 milestoneVote = proposal.votes[proposal.votes.length - 1];173 milestoneVotes = proposal.votes.filter(174 (x) => x.milestone_id == milestoneVote.milestone_id175 );176 }177 let mins = 0;178 if (milestoneVote.content_type == "milestone") {179 if (settings.time_unit_milestone == "min")180 mins = parseInt(settings.time_milestone);181 else if (settings.time_unit_milestone == "hour")182 mins = parseInt(settings.time_milestone) * 60;183 else if (settings.time_unit_milestone == "day")184 mins = parseInt(settings.time_milestone) * 24 * 60;185 }186 let diff = moment(milestoneVote.created_at)187 .add(mins, "minutes")188 .diff(moment());189 if (diff > 0 && milestoneVote.status == "active") {190 if (milestoneVote.type == "informal") {191 return (192 <InformalView193 vote={milestoneVote}194 mins={mins}195 proposal={proposal}196 onRefresh={onRefresh}197 />198 );199 } else {200 const informalVote = milestoneVotes[0];201 return (202 <FormalView203 informalVote={informalVote}204 vote={milestoneVote}205 mins={mins}206 proposal={proposal}207 onRefresh={onRefresh}208 />209 );210 }211 } else {212 if (milestoneVote.type == "informal")213 return (214 <InformalDoneView215 vote={milestoneVote}216 proposal={proposal}217 onRefresh={onRefresh}218 />219 );220 else221 return (222 <FormalDoneView223 vote={milestoneVote}224 proposal={proposal}225 onRefresh={onRefresh}226 />227 );228 }229 }230 return null;231 }232 render() {233 const { proposal } = this.props;234 if (!proposal || !proposal.id) return null;235 return (236 <section id="app-single-proposal-vote-section">237 {this.renderContent()}238 </section>239 );240 }241}...
Dashboard.js
Source:Dashboard.js
1import Navigationbar from "./navigation/Navigationbar";2import 'bootstrap/dist/css/bootstrap.css'3import ManageCourse from "./Course/ManageCourse";4import ManageModules from './Modules/ManageModules'5import ManageAssessment from './Assessment/ManageAssessment'6import ManageSubmission from './Submisson/ManageSubmission'7import ManageSubscription from './Subscription/ManageSubscription'8import MarkAttendance from "./Attendance/MarkAttendance";9import ViewAttendace from "./Attendance/ViewAttendance";10import AddSchedule from "./Schedule/AddSchedule";11import CourseView from "../studentDashboard/CourseView/CourseView"12import StudentSubs from "../instDashBoard/StudentSubscription/StudentSubs"13import { BrowserRouter as Router, Route, Switch } from "react-router-dom"14import RegisterS from "../instDashBoard/RegisterStudent";15import RegisterT from "../instDashBoard/RegisterTutor";16import UserView from '../instDashBoard/RegisteredList/UsersUnderIns'17import ViewSchedule from './Schedule/Schedule'18import withAuth from "../../servicer/withAuth"19import ChangePassword from "./ChangePassword/PasswordChanger";20import { useState } from 'react'21import {useEffect} from 'react'22import {userService} from '../../servicer/UserService'23const Dashboard = ({ load, loggedOut, onMessage, onRegister, onRefresh}) => {24 const [endPath, setEndPath] = useState('')25 useEffect(()=>{26 let user=new userService();27 let type=user.getUserType();28 if(type=='student'){29 setEndPath('Course-View')30 }else if(type=='tutor'){31 setEndPath('Manage-Courses')32 }else{33 setEndPath('Sregister')34 }35 },[]);36 const setChangePath = (p) => {37 setEndPath(null)38 console.log('path nullll')39 setTimeout(()=>{40 setEndPath(p)41 console.log('setENd', p)42 },500); 43 }44 return (45 <Router>46 <Navigationbar loggedOut={loggedOut} endPath={setChangePath} />47 <div className="container-fluid">48 49 {50 endPath === 'Manage-Courses' && <ManageCourse onMessage={onMessage} onLoad={load} onRefresh={onRefresh}/>51 }52 {53 endPath === 'Manage-Modules' && <ManageModules onMessage={onMessage} onLoad={load} onRefresh={onRefresh}/>54 }55 {56 endPath === 'Manage-Assessments' && <ManageAssessment onMessage={onMessage} onLoad={load} onRefresh={onRefresh}/>57 }58 {59 endPath === 'Submissions' && <ManageSubmission onMessage={onMessage} onLoad={load} onRefresh={onRefresh}/>60 }61 {62 endPath === 'Subscriptions' && <ManageSubscription onMessage={onMessage} onLoad={load} onRefresh={onRefresh}/>63 }64 {65 endPath === 'Mark-Attendance' && <MarkAttendance onMessage={onMessage} onLoad={load} onRefresh={onRefresh}/>66 }67 {68 endPath === 'View-Attendance' && <ViewAttendace onMessage={onMessage} onLoad={load} onRefresh={onRefresh}/>69 }70 {71 endPath === 'Add-Schedule' && <AddSchedule onMessage={onMessage} onLoad={load} onRefresh={onRefresh}/>72 }73 {74 endPath === 'Course-View' && <CourseView onMessage={onMessage} onLoad={load} onRefresh={onRefresh}/>75 }76 {77 endPath === 'Student-Subscriptions' && <StudentSubs onMessage={onMessage} onLoad={load} onRefresh={onRefresh}/>78 }79 {80 endPath === 'Sregister' && <RegisterS onAdd={onRegister} onMessage={onMessage} onLoad={load}/>81 }82 {83 endPath === 'Tregister' && <RegisterT onAdd={onRegister} onMessage={onMessage} onLoad={load}/>84 }85 {86 endPath === 'UserView' && <UserView onMessage={onMessage} onLoad={load} onRefresh={onRefresh}/>87 }88 {89 endPath === 'View-ScheduleT' && <ViewSchedule onMessage={onMessage} onLoad={load} role='tutor' onRefresh={onRefresh}/>90 }91 {92 endPath === 'View-ScheduleS' && <ViewSchedule onMessage={onMessage} onLoad={load} role='student' onRefresh={onRefresh}/>93 }94 {95 endPath === 'changePassword' && <ChangePassword onMessage={onMessage} onLoad={load} onRefresh={onRefresh}/>96 }97 </div>98 </Router>99 )100}...
Using AI Code Generation
1onRefresh = () => {2 this.setState({ refreshing: true });3 this.fetchData().then(() => {4 this.setState({ refreshing: false });5 });6 };7onEndReached = () => {8 if (this.state.page < this.state.totalPages) {9 this.setState({10 });11 this.fetchData();12 }13 };14renderFooter = () => {15 if (this.state.page !== this.state.totalPages) return null;16 return (17 <View style={styles.footer}>18 <Text style={styles.footerText}>You have seen it all</Text>19 );20 };21renderHeader = () => {22 return <Text style={styles.header}>Header</Text>;23 };24renderItem = ({ item }) => {25 return (26 <View style={styles.itemContainer}>27 <Text style={styles.itemText}>{item.title}</Text>28 );29 };30fetchData = async () => {31 const response = await fetch(32 );33 const json = await response.json();34 this.setState(state => ({35 }));36 };37componentDidMount() {38 this.fetchData();39 }40render() {41 return (42 <View style={styles.container}>43 data={this.state.data}44 renderItem={this.renderItem}45 keyExtractor={(item, index) => index.toString()}46 ListHeaderComponent={this.renderHeader}47 ListFooterComponent={this.renderFooter}48 onRefresh={this.onRefresh}49 refreshing={this.state.refreshing}50 onEndReached={this.onEndReached}51 onEndReachedThreshold={0.5}52 );53 }54}55const styles = StyleSheet.create({56 container: {
Using AI Code Generation
1class App extends Component {2 constructor(props) {3 super(props);4 this.state = {5 };6 }7 onRefresh() {8 this.setState({refreshing: true});9 fetchData().then(() => {10 this.setState({refreshing: false});11 });12 }13 render() {14 return (15 refreshControl={16 refreshing={this.state.refreshing}17 onRefresh={this.onRefresh.bind(this)}18 }>19 { /* Content as before */ }20 );21 }22}23class App extends Component {24 constructor(props) {25 super(props);26 this.state = {27 };28 }29 onRefresh() {30 this.setState({refreshing: true});31 fetchData().then(() => {32 this.setState({refreshing: false});33 });34 }35 render() {36 return (37 refreshControl={38 refreshing={this.state.refreshing}39 onRefresh={this.onRefresh.bind(this)}40 }>41 { /* Content as before */ }42 );43 }44}45class App extends Component {46 constructor(props) {47 super(props);48 this.state = {49 };50 }51 onRefresh() {52 this.setState({refreshing: true});53 fetchData().then(() => {54 this.setState({refreshing: false});55 });56 }57 render() {58 return (59 refreshControl={60 refreshing={this.state.refreshing}61 onRefresh={this.onRefresh.bind(this)}62 }>63 { /* Content as before */ }64 );65 }66}67class App extends Component {68 constructor(props) {69 super(props);70 this.state = {71 };72 }73 onRefresh() {74 this.setState({refreshing: true});75 fetchData().then(() => {76 this.setState({refreshing: false});77 });78 }79 render() {80 return (81 refreshControl={
Using AI Code Generation
1var win = Ti.UI.createWindow({2});3var view = Ti.UI.createView({4});5var view2 = Ti.UI.createView({6});7var view3 = Ti.UI.createView({8});9view.addEventListener('click', function(e) {10 win.add(view2);11 win.add(view3);12});13win.add(view);14win.open();15var win = Ti.UI.createWindow({16});17var view = Ti.UI.createView({18});19var view2 = Ti.UI.createView({20});21var view3 = Ti.UI.createView({22});23view.addEventListener('click', function(e) {24 win.add(view2);25 win.add(view3);26 win.onRefresh();27});28win.add(view);29win.open();
Using AI Code Generation
1var win = Ti.UI.createWindow({2});3var view = Ti.UI.createView({4});5win.add(view);6win.addEventListener('open', function(e) {7 win.activity.actionBar.onRefresh = function() {8 Ti.API.info('onRefresh called');9 };10});11win.open();12var tabGroup = Ti.UI.createTabGroup();13var win1 = Ti.UI.createWindow({14});15var tab1 = Ti.UI.createTab({16});17tabGroup.addTab(tab1);18tabGroup.addEventListener('open', function(e) {19 tabGroup.activity.actionBar.onRefresh = function() {20 Ti.API.info('onRefresh called');21 };22});23tabGroup.open();24var tabGroup = Ti.UI.createTabGroup();25var win1 = Ti.UI.createWindow({26});27var tab1 = Ti.UI.createTab({28});29tabGroup.addTab(tab1);30tabGroup.addEventListener('open', function(e) {31 tab1.activity.actionBar.onRefresh = function() {32 Ti.API.info('onRefresh called');33 };34});35tabGroup.open();
Using AI Code Generation
1import React, { Component } from 'react';2import { Text, View, Button } from 'react-native';3import ChildComponent from './ChildComponent';4export default class App extends Component {5 constructor(props) {6 super(props);7 this.state = {8 };9 }10 onRefresh = () => {11 this.setState({ refresh: true });12 };13 render() {14 return (15 <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>16 <ChildComponent refresh={this.state.refresh} />17 <Button title="Click Here" onPress={this.onRefresh} />18 );19 }20}21import React, { Component } from 'react';22import { Text, View, Button } from 'react-native';23export default class ChildComponent extends Component {24 constructor(props) {25 super(props);26 this.state = {27 };28 }29 componentWillReceiveProps(nextProps) {30 if (nextProps.refresh !== this.props.refresh) {31 this.setState({ data: 'Data after refresh' });32 }33 }34 render() {35 return (36 <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>37 <Text>{this.state.data}</Text>38 );39 }40}
Using AI Code Generation
1import { onRefresh } from 'react-native-refresh-list-view';2onRefresh = () => {3 this.setState({ refreshing: true });4 this.setState({ refreshing: false });5};6import { onRefresh } from 'react-native-refresh-list-view';7onRefresh = () => {8 this.props.onRefresh();9};10import { onRefresh } from 'react-native-refresh-list-view';11onRefresh = () => {12 this.props.onRefresh();13};14import { onRefresh } from 'react-native-refresh-list-view';15onRefresh = () => {16 this.props.onRefresh();17};18import { onRefresh } from 'react-native-refresh-list-view';19onRefresh = () => {20 this.props.onRefresh();21};22import { onRefresh } from 'react-native-refresh-list-view';23onRefresh = () => {24 this.props.onRefresh();25};26import { onRefresh } from 'react-native-refresh-list-view';27onRefresh = () => {28 this.props.onRefresh();29};30import { onRefresh } from 'react-native-refresh-list-view';31onRefresh = () => {32 this.props.onRefresh();33};34import { onRefresh } from 'react-native-refresh-list-view';35onRefresh = () => {36 this.props.onRefresh();37};38import { onRefresh } from 'react-native-refresh-list-view';39onRefresh = () => {40 this.props.onRefresh();41};42import { onRefresh } from 'react-native-refresh-list-view';43onRefresh = () => {44 this.props.onRefresh();45};46import { onRefresh } from 'react-native-refresh-list-view';47onRefresh = () => {48 this.props.onRefresh();49};50import { onRefresh } from 'react-native-refresh-list-view';51onRefresh = () => {52 this.props.onRefresh();53};54import
Using AI Code Generation
1import { onRefresh } from 'react-native-refresh-view';2onRefresh(() => {3 console.log('refresh triggered');4});5import { onRefresh } from 'react-native-refresh-view';6onRefresh(() => {7 console.log('refresh triggered');8});9import { onRefresh } from 'react-native-refresh-view';10onRefresh(() => {11 console.log('refresh triggered');12});13import { onRefresh } from 'react-native-refresh-view';14onRefresh(() => {15 console.log('refresh triggered');16});17import { onRefresh } from 'react-native-refresh-view';18onRefresh(() => {19 console.log('refresh triggered');20});21import { onRefresh } from 'react-native-refresh-view';22onRefresh(() => {23 console.log('refresh triggered');24});25import { onRefresh } from 'react-native-refresh-view';26onRefresh(() => {27 console.log('refresh triggered');28});29import { onRefresh } from 'react-native-refresh-view';30onRefresh(() => {31 console.log('refresh triggered');32});33import { onRefresh } from 'react-native-refresh-view';34onRefresh(() => {35 console.log('refresh triggered');36});37import { onRefresh } from 'react-native-refresh-view';38onRefresh(() => {39 console.log('refresh triggered');40});41import { onRefresh } from 'react-native-refresh-view';42onRefresh(() => {43 console.log('refresh triggered');44});45import { onRefresh } from 'react-native-refresh-view';46onRefresh(() => {47 console.log('refresh triggered');48});
Using AI Code Generation
1onRefresh = () => {2 this.fetchData().then(() => {3 });4 };5 fetchData = () => {6 return new Promise((resolve, reject) => {7 setTimeout(() => {8 resolve();9 }, 3000);10 });11 };12 render() {13 return (14 data={this.state.data}15 keyExtractor={(item, index) => index.toString()}16 renderItem={({ item, index }) => (17 <Text style={styles.text}>18 {item}19 )}20 refreshState={this.state.refreshState}21 onHeaderRefresh={this.onHeaderRefresh}22 onFooterRefresh={this.onFooterRefresh}23 onEndReachedThreshold={0.5}24 );25 }26}
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!