@coon-js/extjs-lib-comp
Version:
NPM package providing component library for ExtJS projects
191 lines (147 loc) • 5.31 kB
JavaScript
/**
* coon.js
* extjs-lib-comp
* Copyright (C) 2017-2021 Thorsten Suckow-Homberg https://github.com/coon-js/extjs-lib-comp
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
* USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/**
*
*/
Ext.define("coon.comp.fixtures.sim.ItemTable", {
singleton: true,
items: null,
baseItems: null,
buildRandomNumber: function (min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
},
buildRandomDate: function () {
var me = this,
d = me.buildRandomNumber(1, 31),
m = me.buildRandomNumber(1, 12),
y = me.buildRandomNumber(2007, 2017),
h = me.buildRandomNumber(0, 23),
i = me.buildRandomNumber(0, 59),
pad = function (v) {
return v < 10 ? "0" + v : v;
};
return Ext.String.format(
"{0}-{1}-{2} {3}:{4}",
y, pad(m), pad(d), pad(h), pad(i)
);
},
updateItem: function (id, values) {
var me = this;
me.updateAllItemData(id, values);
},
updateAllItemData: function (id, values) {
var me = this,
item = me.getItem(id),
dataItems = [undefined, item];
for (var i = 0, len = dataItems.length; i < len; i++) {
item = dataItems[i];
// possible that we landed from DraftAttachment Test here and that
// items are not existing
if (!item) {
continue;
}
item["date"] = Ext.util.Format.date(new Date(), "Y-m-d H:i");
for (var prop in values) {
if (!Object.prototype.hasOwnProperty.call(item, prop)) {
continue;
}
switch (prop) {
case "to":
case "cc":
case "bcc":
if (Ext.isString(values[prop]))
item[prop] = Ext.JSON.decode(values[prop]);
break;
default:
item[prop] = values[prop];
break;
}
}
}
},
getItem: function (id) {
var me = this,
items = me.getItems();
for (var i = 0, len = items.length; i < len; i++) {
if ((items[i]["id"] + "") === (id + "")) {
return items[i];
}
}
return null;
},
getItems: function () {
var me = this,
baseItems = me.buildBaseItems(),
items = [];
if (me.items) {
return me.items;
}
for (var i = 0; i < baseItems.length; i++) {
items.push(Ext.apply({
// leave first one as unread for tests
isRead: i === 0 ? false : (me.buildRandomNumber(0, 1) ? true : false)
}, baseItems[i]));
}
me.items = items;
return me.items;
},
buildBaseItems: function () {
var me = this,
baseItems, subjects, sender;
baseItems = subjects = sender = [];
if (me.baseItems) {
return me.baseItems;
}
subjects = [
"Welcome to coon",
"Re: Ihre Buchung in der Unterkunft",
"Achtung! DVBT Antennen sind bald nutzlos, Thorsten Suckow-Homberg",
"Verbindliche Bestellung Banshee Headbadge",
"Vielen Dank für Ihre Bestellung",
"Monte Walsh [Blu Ray] und mehr aus DVD & Blu Ray Klassiker"
];
sender = [
"tsuckow@conjoon.org",
"service@bosafasf.com",
"info@eawerrrbay.de",
"mailer@msafsf.de",
"service@owrfdgso.de",
"info@dsgewtewon.de"
];
for (var i = 0; i < 10000; i++) {
baseItems.push({
id: (i + 1) + "",
date: me.buildRandomDate(),
subject: " - " + (i) + " - " + subjects[me.buildRandomNumber(0, 5)],
from: i === 0
? "from@domain.tld"
: sender[me.buildRandomNumber(0, 5)],
testProp: i
});
}
me.baseItems = baseItems;
return me.baseItems;
}
});