From 8cb86ab9c24e322968f8ee182fbfda6406f30b2c Mon Sep 17 00:00:00 2001 From: rolux Date: Sun, 9 Feb 2014 06:38:18 +0000 Subject: [PATCH] add pandora.getSort, some refactoring, allow for caching url parsing related requests, if possible --- static/js/utils.js | 52 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 40 insertions(+), 12 deletions(-) diff --git a/static/js/utils.js b/static/js/utils.js index e1dcd3715..ba0fc3c90 100644 --- a/static/js/utils.js +++ b/static/js/utils.js @@ -1183,6 +1183,16 @@ pandora.getItem = function(state, str, callback) { }); } }); + } else if (state.type == 'edits') { + pandora.api.getEdit({id: str}, function(result) { + if (result.status.code == 200) { + state.item = result.data.id; + callback(); + } else { + state.item = ''; + callback(); + } + }); } else if (state.type == 'texts') { pandora.api.getText({id: str, keys: ['id', 'names', 'pages', 'type']}, function(result) { if (result.status.code == 200) { @@ -1197,16 +1207,6 @@ pandora.getItem = function(state, str, callback) { callback(); } }); - } else if (state.type == 'edits') { - pandora.api.getEdit({id: str}, function(result) { - if (result.status.code == 200) { - state.item = result.data.id; - callback(); - } else { - state.item = ''; - callback(); - } - }); } else { callback(); } @@ -1520,6 +1520,34 @@ pandora.getSmallClipTimelineURL = function(item, inPoint, outPoint, type, callba }); }; +pandora.getSort = function(state, val, callback) { + if (state.type == pandora.site.itemName.plural.toLowerCase()) { + // TODO in the future: If str is index, fall back if list is smart + // (but this can only be tested after find has been parsed) + callback(); + } else if (state.type == 'edits') { + if (val[0].key == 'index') { + pandora.api.getEdit({id: state.item}, function(result) { + if (result.data.type == 'smart') { + state.sort = state.sort.slice(1); + if (state.sort.length == 0) { + state.sort = [ + pandora.site.user.ui.editSort.filter(function(sort) { + return sort.key != 'index'; + })[0] + ]; + } + } + callback(); + }); + } else { + callback(); + } + } else if (state.type == 'texts') { + callback(); + } +}; + pandora.getSortKeyData = function(key) { return Ox.getObjectById(pandora.site.itemKeys, key) || Ox.getObjectById(pandora.site.clipKeys, key); @@ -1602,7 +1630,7 @@ pandora.getSpan = function(state, val, callback) { } } else if (state.type == 'edits') { if (isArray) { - pandora.api.getEdit({id: state.item, keys: ['duration']}, function(result) { + pandora.api.getEdit({id: state.item}, function(result) { state.span = val.map(function(number) { return Math.min(number, result.data.duration); }); @@ -1617,7 +1645,7 @@ pandora.getSpan = function(state, val, callback) { }); } } else if (state.type == 'texts') { - pandora.api.getText({id: state.item, keys: ['id', 'names', 'pages', 'type']}, function(result) { + pandora.api.getText({id: state.item}, function(result) { if (isArray) { if (result.data.type == 'html') { state.span = Ox.limit(val[0], 0, 100);