Всем привет. В работе использую jQuery(rapydscript) + webpy на серверной части.
Проблема следующая. Есть список проектов который сортируется по позиции. Нужно менять позицию при нажатии кнопки UP или DOWN и с помощью Ajax отправлять данные на сервер для обновления (по сути принцип Drug & Drop).
По идее задача простая, но по скольку сталкиваюсь впервые въезжаю в пня.
Пытался решить следующим образом. После переноса проекта на верх, я собираю позиции всех проектов и отправляю на сервер...
Кусок кода в rapydscript
#PROJECTS MODULE
def moveProjectUp():
parentProject = $(this).parent('div')
parentProject.insertBefore(parentProject.prev())
allProjects = $('.projects')
projectList = allProjects.find('div.single-project')
positions = []
for project in projectList:
position.push($(project).attr('position'))
data={'pojectsId': pojectsId,
'indexs': indexs}
$.post(
'/projectup',
JSON.stringify(data),
serverSuccess
)
def serverSuccess(data):
console.log(data)
return False
Компилит следующее
function moveProjectUp() {
var ՐՏitr1, ՐՏidx1;
var parentProject, allProjects, projectList, positions, project, data;
parentProject = $(this).parent("div");
parentProject.insertBefore(parentProject.prev());
allProjects = $(".projects");
projectList = allProjects.find("div.single-project");
positions = [];
ՐՏitr1 = ՐՏ_Iterable(projectList);
for (ՐՏidx1 = 0; ՐՏidx1 < ՐՏitr1.length; ՐՏidx1++) {
project = ՐՏitr1[ՐՏidx1];
position.push($(project).attr("position"));
}
data = {
"positions": positions
};
$.post("/projectup", JSON.stringify(data), serverSuccess);
function serverSuccess(data) {
console.log(data);
}
return false;
}
На серверной стороне происходит следующе
class ProjectUp:
def POST(self):
header('Content', 'text/json')
d = json.loads(web.data())
positions = d['positions']
projects = list(get_company_projects(session.username))
for p, i in zip(projects, positions):
db.update('project', where="id=$id",
vars={'id': p.id},
position=i)
return d
На выходе не получаю правильно отсортированный список проектов. Как решаются такие задачи? Помогите пожалуйста