Для создания макета клиента распределенной сети глаз упал на:
- w2ui библиотека (минимализм, практически все нужные виджеты с настроенными действиями).
- Для "десктопизации" работает NW.JS. Кроме размера конечной сборки вопросов нет.
- Для сборки и тестирования порадовал NW.JS IDE.
- Для хранения - встроенная IndexedDB.
Текущий вопрос - как подружить скрипт записи данных в базу со скриптом создающим грид?
Скрипт таблицы. В демо библиотеки вопрос как читать базу данных как то не раскрыт.
<script type="text/javascript">
$(function () {
$('#grid').w2grid({
name: 'grid',
method: 'GET', // need this to avoid 412 error on Safari
columns: [
{ field: 'pub-biblioid', caption: 'pub-biblioid', size: '30%', sortable: true },
{ field: 'pub-title', caption: 'pub-title', size: '30%', sortable: true },
]
});
w2ui['grid'].load('data/list.json');
});
</script>
Данные пишутся из body
<tr><td><label for="pub-biblioid" class="required">ID:<br/><span class="note">(Обязательное уникальное значение)</span></label></td><td>
<input type="text" id="pub-biblioid" name="pub-biblioid"/></td></tr>
<tr><td> <label for="pub-title" class="required">Фамилия</label></td> <td>
<input type="text" id="pub-title" name="pub-title" /></td> </tr>
Скрипт записи и чтения большой, весь приводить наверное не надо. То что он работает видно по F12 и в собственной таблице. А вот встроить данные в грид с поиском, сортировкой и прочим не получается. Помогайте.
<script>
(function () {
var COMPAT_ENVS = [
['Firefox', ">= 16.0"],
['Google Chrome',
">= 24.0 (you may need to get Google Chrome Canary), NO Blob storage support"]
];
var compat = $('#compat');
compat.empty();
compat.append('<ul id="compat-list"></ul>');
COMPAT_ENVS.forEach(function(val, idx, array) {
$('#compat-list').append('<li>' + val[0] + ': ' + val[1] + '</li>');
});
const DB_NAME = 'LKI DB DEMO';
const DB_VERSION = 1; // Use a long long for this value (don't use a float)
const DB_STORE_NAME = 'publications';
var db;
// Used to keep track of which view is displayed to avoid to uselessly reload it
var current_view_pub_key;
function openDb() {
console.log("openDb ...");
var req = indexedDB.open(DB_NAME, DB_VERSION);
req.onsuccess = function (evt) {
// Better use "this" than "req" to get the result to avoid problems with
// garbage collection.
// db = req.result;
db = this.result;
console.log("openDb DONE");
};
req.onerror = function (evt) {
console.error("openDb:", evt.target.errorCode);
};
req.onupgradeneeded = function (evt) {
console.log("openDb.onupgradeneeded");
var thisDB = evt.target.result;
if (!thisDB.objectStoreNames.contains(DB_STORE_NAME)) {
var store = thisDB.createObjectStore(
DB_STORE_NAME, { keyPath: 'id', autoIncrement: true });
store.createIndex('biblioid', 'biblioid', { unique: false });
store.createIndex('title', 'title', { unique: false });
store.createIndex('year', 'year', { unique: false });
}
};
}
Буду рад если кто сможет консультировать или готов к партнерству в вопросах JS и криптографии на долгосрочной основе с соответствующим интересом.
Всем остальным - стучитесь, может получится альтернатива крипте, фиату и ЭДО.