Esempio n. 1
0
dashboardStore.on('login_changed', function(user) {
  if (user) {
    riot.route('home');
  } else {
    riot.route('login');
  }
});
hub.init = function(){
    hub._parseRoute();
    riot.route(hub._doRoute());
    riot.route.start();
    nextTick(riot.route.exec, 0);
    function nextTick(fn){
        setTimeout(fn, 0);
    }
};
Esempio n. 3
0
 _init(){
     if(!window.riot){
         window.riot = riot;
     }
     this._parseRoute();
     riot.route(this._doRoute());
     riot.route.start(true);
     riot.mixin({router: this.router.bind(this)});
 }
 self._urlify = function(questionPayload) {
     var conversationIdComponent = questionPayload.conversationId + "/",
         messagePayloadComponent = encodeURIComponent(questionPayload.message) + "/",
         messageIdComponent      = (questionPayload.messageId ? (questionPayload.messageId) : ""),
         referrerComponent       = (questionPayload.referrer ? questionPayload.referrer + "/" : "");
     
     var routeTo = conversationIdComponent + messagePayloadComponent + messageIdComponent + referrerComponent;
     
     riot.route(routeTo);
 };
 function recursiveHints(hints){
     if(!hints.length || isBreak){
         return;
     }
     let path = hints[0];
     let request = {};
     let {route, params} = me._getMetaDataFromRouteMap(path);
     if(!route){
         return recursiveHints(hints.slice(1));
     }
     let tag = route.tag;
     isFounded = true;
     request.params = params;
     request.query = req.query;
     let ctx = {
         request
     };
     if(route.redirectTo){
         isBreak = true;
         return riot.route(route.redirectTo);
     }
     if(route.before){
         route.before.apply(tag, [done, request]);
         return;
     }
     done();
     function done(){
         if(hub.entry.middlewares.length){
             return hub._execMiddleware(hub.entry.middlewares, {path, request}, next);
         }
         next();
         function next(){
             if(tag.hasOwnProperty('hidden')){
                 tag.one('ready', ()=>{
                     hub._routeTo(tag);
                     recursiveHints(hints.slice(1));
                 });
                 tag.trigger('open', ctx);
                 return;
             }
             recursiveHints(hints.slice(1));
         }
     }
 }
Esempio n. 6
0
var pageInit = function() {
  
  riot.mount('login-modal');
  riot.mount('header');
  riot.mount('password-change');
  riot.mount('div#uci-settings', 'input-settings', { sectionName: 'uci' });
  riot.route('login');

  var sessionUsername = localStorage.getItem('sessionUsername');
  var sessionId = localStorage.getItem('sessionID');
  var sessionExpiration = localStorage.getItem('sessionExpiration');

  if (typeof sessionId === 'string' && typeof sessionExpiration === 'string') {
    RiotControl.trigger('saved_session', {
      id: sessionId, 
      expiration: sessionExpiration,
      username: sessionUsername
    });
  }
};
Esempio n. 7
0
var currentPage = null

var routes = {
    home: (id, action) => {
        var currentPage = Riot.mount('#view', 'people-index', { people: params.people });
    },
    people: function(id, action) {
        switch (action) {
            case 'detail':
                var currentPage = Riot.mount('#view', 'people-detail', { person: params.people[id] });
        }
    }
};

function handler(collection, id, action) {

    if (!Riot.mixin('peoplelistObservable')) {
        Riot.mixin('peoplelistObservable', new PeoplelistObservable());
    }

    if (currentPage) {
        currentPage.unmount(true)
    }

    var fn = routes[collection || 'home'];
    return fn ? fn(id, action) : console.error('no route found : ', collection, id, action);
}

Riot.route(handler);
Riot.route.exec(handler);
function RoutingStore() {
    riot.observable(this);
    
    var self = this;

    self._currentConversationId    = null;
    self._internalQuestionWasAsked = false;
    
    /*
     * Guarantees the question payload is valid, and not-malicious
     * @param {String} (required)requestedConversationId : The ConversationId of the requested message.
     * @param {String} (required)requestedMessageText    : The message, or question, which will be sent to the server
     * @param {String} (optional)requestedMessageId      : The messageId which will try to be matched with a cached response
     * @param {String} (optional)requestedFeedback       : Feedback, whether we're passing a referral or not
     * @returns {Object} URL in this format:  {message :  messagePayload, messageId :messageId, referrer : referrer}
     */
    self._verifyQuestionPayload = function(requestedConversationId, requestedMessageText, requestedMessageId, requestedFeedback) {
        
        var messagePayload            = {};
        messagePayload.conversationId = requestedConversationId;
        messagePayload.message        = decodeURIComponent(requestedMessageText);
    
        if (requestedFeedback && requestedFeedback === constants.needHelpFeedbackType) {
            messagePayload.referrer = requestedFeedback;
        }
        
        if (requestedMessageId) {
            messagePayload.messageId = requestedMessageId;
        }
    
        return messagePayload;
    };
    
    /*
     * Guarantees the url is properly formatted
     * @param {Object} An object with: (required)conversationId, (required)message, (optional)messageId, (optional)referrer
     * @returns {String} URL in this format:  /conversationId[/messageId/messagePayload/referrer]
     */
    self._urlify = function(questionPayload) {
        var conversationIdComponent = questionPayload.conversationId + "/",
            messagePayloadComponent = encodeURIComponent(questionPayload.message) + "/",
            messageIdComponent      = (questionPayload.messageId ? (questionPayload.messageId) : ""),
            referrerComponent       = (questionPayload.referrer ? questionPayload.referrer + "/" : "");
        
        var routeTo = conversationIdComponent + messagePayloadComponent + messageIdComponent + referrerComponent;
        
        riot.route(routeTo);
    };
    
    /*
     * Routes to the home page
     */
    self._goHome = function() {
        riot.route("#");
        self.trigger(routingAction.SHOW_HOME_PAGE_BROADCAST);
    };

    // Establish our main routing callback to handle the url resolution
    riot.route(function(requestedConversationId, requestedMessageText, requestedMessageId, requestedFeedback) {
        
        if (!requestedConversationId || !requestedMessageText || (requestedConversationId !== self._currentConversationId)) {
            self._goHome();
        }
        if (requestedConversationId && requestedMessageText) {
            
            // Verify all the payload properties before we potentially send them to a server
            var currentMessagePayload = self._verifyQuestionPayload(requestedConversationId, 
                                            requestedMessageText, 
                                            requestedMessageId, 
                                            requestedFeedback);

            // Only ask a question to the server if the user navigated here via the address bar
            if (requestedFeedback !== constants.needHelpFeedbackType && !self._internalQuestionWasAsked) {
                self.trigger(routingAction.ASK_QUESTION_BROADCAST, currentMessagePayload);
            }
            else if (requestedFeedback === constants.needHelpFeedbackType && !self._internalQuestionWasAsked) {
                self.trigger(routingAction.STILL_NEED_HELP_BROADCAST, currentMessagePayload);
            }
        }
    }.bind(self));
    
    /*
     *  Updates the url with full question data
     * @param {Object} An object with: (required)conversationId, (required)message, (optional)messageId, (optional)referrer
     */ 
    self.on(routingAction.ANSWER_RECEIVED, function(questionPayload) {
        
        // This is definitely from the server, so we can trust it's accurate
        self._currentConversationId = questionPayload.conversationId;
        
        // Build the routing string and update the browser URL
        self._internalQuestionWasAsked = true;
        self._urlify(questionPayload);
        self._internalQuestionWasAsked = false;
    });
    
    /*
     *  Responds to an action notifying this store that a conversation has been started
     * @param {String} The ID of the current conversation we need to route to 
     */ 
    self.on(routingAction.REFINEMENT_REQUESTED, function() {
        
        self._internalQuestionWasAsked = true;
        riot.route.exec(function(requestedConversationId, requestedMessageText, requestedMessageId) {
            riot.route(requestedConversationId + "/" + 
                requestedMessageText           + "/" + 
                requestedMessageId             + "/" + 
                constants.needHelpFeedbackType);
        }.bind(self));
        self._internalQuestionWasAsked = false;
    });
    
    /*
     *  A request to show the home page with the current Conversation ID
     */ 
    self.on(routingAction.SHOW_HOME_PAGE, function() {
        self._goHome();
    });
    
    /*
     * Parse the URL for the current messageId
     */
    self.on(routingAction.GET_CURRENT_MESSAGEID, function(callback) {
        riot.route.exec(function(requestedConversationId, requestedMessageText, requestedMessageId) {
            callback(requestedMessageId);
            self.trigger(routingAction.GET_CURRENT_MESSAGEID_BROADCAST, requestedMessageId);
        }.bind(self));
    });
}
 self._goHome = function() {
     riot.route("#");
     self.trigger(routingAction.SHOW_HOME_PAGE_BROADCAST);
 };
 riot.route.exec(function(requestedConversationId, requestedMessageText, requestedMessageId) {
     riot.route(requestedConversationId + "/" + 
         requestedMessageText           + "/" + 
         requestedMessageId             + "/" + 
         constants.needHelpFeedbackType);
 }.bind(self));
 return req => {
     var me = this;
     let isFounded = false;
     let isBreak = false;
     function recursiveHints(hints){
         if(!hints.length || isBreak){
             return;
         }
         let path = hints[0];
         let request = {};
         let {route, params} = me._getMetaDataFromRouteMap(path);
         if(!route){
             return recursiveHints(hints.slice(1));
         }
         let tag = route.tag;
         isFounded = true;
         request.params = params;
         request.query = req.query;
         let ctx = {
             request
         };
         if(route.redirectTo){
             isBreak = true;
             return riot.route(route.redirectTo);
         }
         if(route.before){
             route.before.apply(tag, [done, request]);
             return;
         }
         done();
         function done(){
             if(hub.entry.middlewares.length){
                 return hub._execMiddleware(hub.entry.middlewares, {path, request}, next);
             }
             next();
             function next(){
                 if(tag.hasOwnProperty('hidden')){
                     tag.one('ready', ()=>{
                         hub._routeTo(tag);
                         recursiveHints(hints.slice(1));
                     });
                     tag.trigger('open', ctx);
                     return;
                 }
                 recursiveHints(hints.slice(1));
             }
         }
     }
     recursiveHints(req.hints);
     if(!isFounded){
         try{
             let url = hub.defaultRoute.path;
             let paramsParts = url.match(/_[a-zA-Z0-9:]+/g);
             if(paramsParts && paramsParts.length){
                 paramsParts.map(part=>{
                     let key = part.slice(2);
                 let value = hub.defaultRoute.defaultRoute.params
                     && hub.defaultRoute.defaultRoute.params[key]
                     || "";
                 url = url.replace(new RegExp('_:' + key + '+'), '_' + value);
             });
             }
             riot.route('/' + url);
         }catch(e){
             console.warn(e);
             console.info('404')
         }
     }
 };
Esempio n. 12
0
var createStoreWithMiddleware = redux.compose(
	redux.applyMiddleware(thunk)
)(redux.createStore);

var reduxStore = createStoreWithMiddleware(reducer);

riot.route(function(collection,id,action){
	if(collection == "contact"){
		reduxStore.dispatch(layoutActions.createContactPage());	
	}
	if(collection == "news"){
		reduxStore.dispatch(layoutActions.createNewsPage());
	}
	if(collection == "faq"){
		reduxStore.dispatch(layoutActions.createFaqPage());
	}
	if(collection == "products"){
		reduxStore.dispatch(layoutActions.createProductsPage());
	}
	if(collection == "checkout"){
		reduxStore.dispatch(layoutActions.createCheckOutPage());
	}
	if(!collection){
		reduxStore.dispatch(layoutActions.createHomePage());
	}
});

document.addEventListener('DOMContentLoaded', function(){
	riot.compile(function() {
		riot.mount('app-sidebar', {store:reduxStore});
		riot.mount('app-main', {store:reduxStore});
		riot.route.base('/#');
Esempio n. 13
0
const riot = require('riot');
const RiotControl = require('riotcontrol');
global.jQuery = require('jquery');

var routeStore = require('./stores/route-store');
RiotControl.addStore(routeStore);

require('./tags/app.tag');
require('./tags/main-menu.tag');
require('./tags/about-us.tag');
require('./tags/navbar.tag');

riot.mount('app');

riot.route(function(a, b, c) {
  RiotControl.trigger('route:change', {
    collection: a,
    id: b,
    action: c
  });
});
Esempio n. 14
0
 return post(this.opts.api, t).then((r) => {
   if (!r.error) return route(redirect)
   this.error = r.error
   this.errors = r.error.errors || {}
   this.update()
 })
Esempio n. 15
0
File: login.js Progetto: tscok/birds
		promise.then(function(authData) {
			console.log('login', authData);
			self.trigger('login_success');
			riot.route(route);
		}, function(error) {
Esempio n. 16
0
      params = {}

  if (qs) {
    qs.split('&').forEach(function(v) {
      var c = v.split('=')
      params[c[0]] = c[1]
    })
  }

  uri.push(params)
  return uri
});

riot.route(function(target, action, params) {
  if (target === 'login') {
    RiotControl.trigger('login_open');
  }
});

dashboardStore.on('uci_configs_changed', function(configs) {
  sections = [];
  console.log(configs);
  _.each(sectionConfigs, function(sectionConfig, sectionKey) {
    var section = {
      title: sectionConfig.title,
      uciInputs: []
    }
    _.each(configs, function(uciSetting, uciSettingKey) {
      _.each(sectionConfig.uciConfigs, function(uciConfig) {

        if (uciConfig.section === uciSettingKey) {