types .model('Group', { name: '', id: types.optional(types.identifier, () => uuid.v4()) }) .actions(self => ({ setName(name) { self.name = name; } }))
const typeFromEnum = (name, enumz) => types.enumeration(name, map(enumz, e => e))
types .model('String', { value: types.maybeNull(types.string) }) .actions(self => { return { clear() { self.value = undefined; }, setValue(s) { self.value = s; } }; }) .views(self => ({ get hasValue() { return self.value && self.value.trim() !== ''; } }))
types .model('Project', { id: types.optional(types.identifier, () => uuid.v4()), group: types.maybeNull(types.reference(Group)), generatorList: types.optional(types.array(Generator), []), isWebBased: false, webUrl: '', name: '', path: '', type: '', allItems: types.optional(types.frozen(), []), tabs: types.optional(types.array(Tab), []), ready: true, editingScript: types.optional(types.string, ''), addingScript: createModel(Boolean), //frozen packageJson: types.frozen(), gitConfig: types.frozen(), gitBranch: types.frozen(), contents: types.frozen() })
description: '', fullCommand: '', listOfCommands: types.optional(types.array(types.string), []) }) .actions(self => ({
types .model('ToggleArray', { items: types.optional(types.array(types.string), []) }) .actions(self => ({ toggle: id => { if (self.items.includes(id)) { self.remove(id); } else { self.add(id); } }, remove: id => { self.items = self.items.filter(i => i !== id); }, add: id => { self.items.push(id); }, reset: () => { self.items = []; } }))
types .model('SettingsStore', { editor: 'code', projectsPath: types.optional(types.string, homepath), envPath: types.optional(types.string, homepath), indexFiles: types.optional(types.boolean, false), highlightProjectsWithoutRepo: types.optional(types.boolean, false), showHomeSidebar: types.optional(types.boolean, true), horizontalLayout: types.optional(types.boolean, false), automaticallyReleasePorts: types.optional(types.boolean, true), groupScriptsByPrefix: types.optional(types.boolean, true), showScriptsDescriptions: types.optional(types.boolean, true), showScriptsCommands: types.optional(types.boolean, true), labelScriptsCommands: types.optional(types.boolean, true), verticalScriptsLayout: types.optional(types.boolean, false), openProjectWhenRunning: types.optional(types.boolean, false) }) .actions(self => ({
types .model('Process', { id: types.optional(types.identifier, () => uuid.v4()), project: types.maybeNull(types.reference(types.late(() => Project))), output: '', running: false, code: types.maybeNull(types.number), path: '', command: '', argz: types.optional(types.array(types.string), []), chunkedOutput: types.optional(types.array(types.string), []) }) .actions(self => {
types .model("CategoriesStore", { categories: types.map(Category), areCategoriesLoaded: types.boolean }) .views(self => ({ get blog() { return getParent(self); }, get allCategories() { return self.categories.values(); } })) .actions(self => { const fetchCategories = flow(function* fetchCategories() { try { const querySnapshot = yield firestore.collection("categories").get(); querySnapshot.forEach(doc => { const category = doc.data(); self.categories.put(category); }); self.areCategoriesLoaded = true; } catch (e) {} }); return { fetchCategories }; })
types.model("MemberInfo", { ID: types.identifierNumber, FirstName: types.string, LastName: types.string, }).views(self => ({ get fullName() { return `${self.FirstName} ${self.LastName}`; } }))
types.model('Counter', { count: types.number, }) .actions(self => ({ inc(delta = 1) { self.count += delta }, dec(delta = 1) { self.count -= delta } }))
types .model('Temperature', { message: types.string, location: types.string, loading: types.boolean }) .actions(self => ({ fetch() { self.loading = true window.fetch(`https://api.openweathermap.org/data/2.5/weather?q=${self.location}&units=metric`) .then(res => res.json() .then(json => { self.update(json) })) }, setLocation(city) { self.location = city self.fetch() }, update(data) { self.message = data.message self.location = data.cod self.loading = false } }))