@hisptz/react-ui
Version:
A collection of reusable complex DHIS2 react ui components.
152 lines (117 loc) • 3.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.db = exports.OfflineOrganisationUnitDB = void 0;
var _dexie = _interopRequireDefault(require("dexie"));
var _lodash = require("lodash");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
const defaultCount = {
orgUnits: {
total: 0,
page: 0
},
levels: {
total: 0,
page: 0
},
groups: {
total: 0,
page: 0
}
};
class OfflineOrganisationUnitDB extends _dexie.default {
constructor(name) {
super(name !== null && name !== void 0 ? name : "ou");
_defineProperty(this, "organisationUnits", void 0);
_defineProperty(this, "organisationUnitGroups", void 0);
_defineProperty(this, "organisationUnitLevels", void 0);
_defineProperty(this, "count", void 0);
_defineProperty(this, "localStorageKey", "ou");
this.version(2).stores({
organisationUnits: "&id, displayName, parent.id, *organisationUnitGroups",
organisationUnitGroups: "&id, displayName",
organisationUnitLevels: "&id, displayName"
});
this.getCount();
}
getCount() {
const count = localStorage.getItem(this.localStorageKey);
if (count) {
this.count = JSON.parse(count);
} else {
this.count = defaultCount;
}
}
clearCount() {
localStorage.setItem(this.localStorageKey, JSON.stringify(defaultCount));
}
updateCount(_ref) {
let {
resource,
key,
value
} = _ref;
const updatedCount = this.count;
(0, _lodash.set)(updatedCount, [resource, key], value);
localStorage.setItem(this.localStorageKey, JSON.stringify(updatedCount));
}
async addOrganisationUnits(organisationUnits) {
return this.organisationUnits.bulkAdd(organisationUnits);
}
async clearOrgUnits() {
return this.organisationUnits.clear();
}
async addOrganisationUnitGroups(organisationUnitGroups) {
return this.organisationUnitGroups.bulkAdd(organisationUnitGroups);
}
async clearOrgUnitGroups() {
return this.organisationUnitGroups.clear();
}
async addOrganisationUnitLevels(organisationUnitLevels) {
return this.organisationUnitLevels.bulkAdd(organisationUnitLevels);
}
async clearOrgUnitLevels() {
return this.organisationUnitLevels.clear();
}
async hasOrganisationUnitLevels() {
const {
total,
page
} = this.count.orgUnits;
if (total === 0) {
return false;
}
return total === page;
}
async hasOrganisationUnitGroups() {
const {
total,
page
} = this.count.groups;
if (total === 0) {
return false;
}
return total === page;
}
async hasOrganisationUnits() {
const {
total,
page
} = this.count.orgUnits;
if (total === 0) {
return false;
}
return total === page;
}
async clear() {
await this.organisationUnits.clear();
await this.organisationUnitLevels.clear();
await this.organisationUnitGroups.clear();
this.clearCount();
}
}
exports.OfflineOrganisationUnitDB = OfflineOrganisationUnitDB;
const db = new OfflineOrganisationUnitDB();
exports.db = db;