@KAA-habr
Бухгалтер (аутсорсинг)

Возможно совместить скрипты для IndexedDB с таблицей от w2ui?

Для создания макета клиента распределенной сети глаз упал на:
- 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 и криптографии на долгосрочной основе с соответствующим интересом.
Всем остальным - стучитесь, может получится альтернатива крипте, фиату и ЭДО.
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы