के साथ संपादन योग्य jQuery ग्रिड सिफारिशें सबसे पहले, मैंने पहले से ही "jQuery Grid Recommendations" प्रश्न पढ़ा है, लेकिन यह मेरे प्रश्न का उत्तर नहीं देता है।आरईएसटी एपीआई
जाओ सब equipements:
GET /equipements HTTP/1.1
{{_id:key1, name:Test Document 1, plateforme:prod}, {_id:key2, name:Test Document 2, plateforme:prod}, ...}
कुंजी के साथ equipement प्राप्त करें:
मैं एक छोटे से REST API with MongoDB Backend बस है कुंजी 1
GET /equipements/key1 HTTP/1.1
{"_id": "key1", "name": "Test Document 1", "plateforme": "prod"}
नई equipement जोड़े
PUT /equipements HTTP/1.1 {"_id": "key8", "name": "Test Document 3", "plateforme": "prod"}
HTTP/1.0 200 OK
अब, मुझे लैम्ब्डा उपयोगकर्ता को जोड़ने/देखने/डेल उपकरणों की अनुमति देने का एक आसान तरीका खोजने की आवश्यकता है। तो मुझे लगता है कि यूआई जैसे jQuery के साथ एक वेब इंटरफेस सबसे अच्छा है। triedSencha Rest Proxy के साथ लेकिन मुझे जावास्क्रिप्ट नहीं पता है और मैं उदाहरण को अनुकूलित करने में विफल रहता हूं।
मेरे आरईएसटी बैकएंड के लिए मेरे जावास्क्रिप्ट को कैसे ठीक करें?
और/या
आप Sencha बाकी प्रॉक्सी के लिए एक आसान विकल्प की सिफारिश कर सकते हैं? (जो मेरे बाकी बैकएंड साथ काम करता है)
उत्तर: jqGrid
और/या
क्या jQuery ग्रिड तुम मुझे सिफारिश करेंगे? (जो मेरे बाकी बैकएंड साथ काम करता है)
उत्तर: jqGrid
अंतिम सवाल: क्यों मेरी कोशिकाओं डबल क्लिक के साथ संपादित नहीं किए?
परिशिष्ट
सर्वर साइड (संपादित करें: methode पोस्ट जोड़े)
#!/usr/bin/python
import json
import bottle
from bottle import static_file, route, run, request, abort, response
import simplejson
import pymongo
from pymongo import Connection
import datetime
class MongoEncoder(simplejson.JSONEncoder):
def default(self, obj):
# convert all iterables to lists
if hasattr(obj, '__iter__'):
return list(obj)
# convert cursors to lists
elif isinstance(obj, pymongo.cursor.Cursor):
return list(obj)
# convert ObjectId to string
elif isinstance(obj, pymongo.objectid.ObjectId):
return unicode(obj)
# dereference DBRef
elif isinstance(obj, pymongo.dbref.DBRef):
return db.dereference(obj)
# convert dates to strings
elif isinstance(obj, datetime.datetime) or isinstance(obj, datetime.date) or isinstance(obj, datetime.time):
return unicode(obj)
return simplejson.JSONEncoder.default(self, obj)
connection = Connection('localhost', 27017)
db = connection.mydatabase
@route('/static/<filename:path>')
def send_static(filename):
return static_file(filename, root='/home/igs/restlite/static')
@route('/')
def send_static():
return static_file('index.html',root='/home/igs/restlite/static/')
@route('/equipements', method='PUT')
def put_equipement():
data = request.body.readline()
if not data:
abort(400, 'No data received')
entity = json.loads(data)
if not entity.has_key('_id'):
abort(400,'No _id specified')
try:
db['equipements'].save(entity)
except ValidationError as ve:
abort(400, str(ve))
@route('/equipements', method='POST')
def post_equipement():
data = request.forms
if not data:
abort(400, 'No data received')
entity = {}
for k,v in data.items():
entity[k]=v
if not entity.has_key('_id'):
abort(400,'No _id specified')
try:
db['equipements'].save(entity)
except ValidationError as ve:
abort(400, str(ve))
@route('/equipements/:id', methodd='GET')
def get_equipement(id):
entity = db['equipements'].find_one({'_id':id})
if not entity:
abort(404, 'No equipement with id %s' % id)
return entity
@route('/equipements', methodd='GET')
def get_equipements():
entity = db['equipements'].find({})
if not entity:
abort(404, 'No equipement')
response.content_type = 'application/json'
entries = [entry for entry in entity]
return MongoEncoder().encode(entries)
run(host='0.0.0.0', port=80)
संपादित करें: JQGrid:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Rest Proxy Example</title>
<link rel="stylesheet" type="text/css" href="/static/css/ui.jqgrid.css" />
<link rel="stylesheet" type="text/css" href="/static/css/jquery-ui-1.8.20.custom.css" />
<script type="text/javascript" src="/static/js/jquery.js"></script>
<script type="text/javascript" src="/static/js/jquery.jqGrid.min.js"></script>
<script type="text/javascript" src="/static/js/grid.locale-fr.js"></script>
<script type="text/javascript">
jQuery(document).ready(function(){
var lastsel;
jQuery("#list2").jqGrid({
url:'equipements',
datatype: "json",
colNames:['Id','Name', 'Plateforme'],
colModel:[
{name:'_id',index:'_id', width:50, editable:true},
{name:'name',index:'_id', width:300, editable:true},
{name:'plateforme',index:'total', width:200,align:"right", editable:true},
],
rowNum:30,
rowList:[10,20,30],
pager:'pager2',
sortname: '_id',
viewrecords: true,
width: 600,
height: "100%",
sortorder: "desc",
onSelectRow: function(_id){
if(_id && _id!==lastsel){
jQuery('#liste2').jqGrid('restoreRow',lastsel);
jQuery('#liste2').jqGrid('editRow',_id,true);
lastsel=_id;
}
},
jsonReader: {
repeatitems: false,
id: "_id",
root: function (obj) { return obj; },
records: function (obj) { return obj.length; },
page: function (obj) { return 1; },
total: function (obj) { return 1; }
},
editurl:'equipements',
caption:"Equipements"
});
jQuery("#list2").jqGrid('navGrid','#pager2',{edit:true,add:true,del:true});
});
</script>
</head>
<body>
<table id="list2"></table>
<div id="pager2"></div>
<br />
</body>
</html>
"मुझे जावास्क्रिप्ट नहीं पता" - यदि आप एक आरईएसटी क्लाइंट के लिए फ्रंटएंड बनाने की कोशिश कर रहे हैं तो उसे बदलना होगा। जावास्क्रिप्ट सीखने के लिए समय ले लो; यह अंत में भुगतान करेगा और यह एक बहुत मुश्किल भाषा नहीं है। – RustyTheBoyRobot
यह केवल आंतरिक टीम के लिए है और वेब फ्रंटेंड लिखना मेरा काम नहीं है। एक दिन, मैं जावास्क्रिप्ट सीखूंगा। लेकिन अब, मेरे पास बहुत अधिक महत्वपूर्ण चीजें हैं। – Yohann